ETH Price: $2,113.94 (-10.20%)

Token

xHumanity (𝕏ℍ)
 

Overview

Max Total Supply

1,000,000,000 𝕏ℍ

Holders

51

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,078,277.024857262275188952 𝕏ℍ

Value
$0.00
0xf9891c215c39ef1ff6631a5ed56835e7d6c166b8
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:
xHumanity

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-22
*/

/**
 * 
 * 𝕏ℍumanity
 * everything for humanity via reflections!
 * Taxes: 4% reflection, 1% Marketing [at launch]
 * Taxes: 2% reflection, 0% Marketing [after 24hrs, renounced]
 * 
 * Portal : https://t.me/XHumanityErcPortal
 * 
**/

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.21;
 
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
    );
}
 
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}
 
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);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function factory() external pure returns (address);
 
    function WETH() external pure returns (address);
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
 
contract xHumanity is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "xHumanity";
    string private constant _symbol = unicode'𝕏ℍ';
    uint8 private constant _decimals = 18;
 
    mapping(address => uint256) private _reflectedBal;
    mapping(address => uint256) private _totalBal;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1_000_000_000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 4;
    uint256 private _taxFeeOnBuy = 1; 
    uint256 private _redisFeeOnSell = 4;  
    uint256 private _taxFeeOnSell = 1;
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    address payable private _developmentAddress = payable(0x3429911e032b33AE5937b5fbbc20d85DB118466b); 
    address payable private _marketingAddress = payable(0x297e1E83490A71112A8C69FB85e4A79DceB22997);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
 
    uint256 public _maxTxAmount = _tTotal / 50; 
    uint256 public _maxWalletSize = _tTotal / 50; 
    uint256 public _swapTokensAtAmount = _tTotal / 100;
 
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
        _reflectedBal[_msgSender()] = _rTotal;
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function initialize(address _pair, address _router) external onlyOwner {
        require(!tradingOpen,"Cannot be called after trading is active");
        uniswapV2Pair = _pair;
        uniswapV2Router = IUniswapV2Router02(_router);
    }
 
    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 tokenFromReflection(_reflectedBal[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 tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    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 {
        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");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    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 {
        _marketingAddress.transfer(amount);
    }
 
    function openTrading() public onlyOwner {
        tradingOpen = true;
        swapEnabled = true;
    }
 
    function manualswap() external onlyOwner{
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external onlyOwner{
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _reflectedBal[sender] = _reflectedBal[sender].sub(rAmount);
        _reflectedBal[recipient] = _reflectedBal[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _reflectedBal[address(this)] = _reflectedBal[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(redisFeeOnBuy <= 5, "Buy rewards must be between less than 5%");
        require(taxFeeOnBuy <= 2, "Buy tax must be between less than 2%");
        require(redisFeeOnSell <= 5, "Sell rewards must be between less than 5%");
        require(taxFeeOnSell <= 2, "Sell tax must be between less than 2%");

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;

    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
 
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        require(maxWalletSize > _maxWalletSize,"Cannot reduce max wallet");
        _maxWalletSize = maxWalletSize;
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

API
[{"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":"_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":"_swapTokensAtAmount","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"address","name":"_router","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000375565b6200002290633b9aca006200038c565b6200002f905f19620003ba565b6200003c905f19620003d0565b6006556004600881905560016009819055600a828155600b829055600c839055600d829055600e92909255600f55601080546001600160a01b0319908116733429911e032b33ae5937b5fbbc20d85db118466b179091556011805490911673297e1e83490a71112a8c69fb85e4a79dceb229971790556013805461ffff60a81b19169055603290620000d19060129062000375565b620000e190633b9aca006200038c565b620000ed9190620003e6565b6014556032620001006012600a62000375565b6200011090633b9aca006200038c565b6200011c9190620003e6565b60155560646200012f6012600a62000375565b6200013f90633b9aca006200038c565b6200014b9190620003e6565b6016553480156200015a575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f8181526002602090815260408083209490945581546001600160a01b03908116835260059091528382208054600160ff199182168117909255308452858420805482168317905560105483168452858420805482168317905560115490921683529382208054909116909317909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200023f6012600a62000375565b6200024f90633b9aca006200038c565b60405190815260200160405180910390a3620003fc565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002ba57815f19048211156200029e576200029e62000266565b80851615620002ac57918102915b93841c93908002906200027f565b509250929050565b5f82620002d2575060016200036f565b81620002e057505f6200036f565b8160018114620002f95760028114620003045762000324565b60019150506200036f565b60ff84111562000318576200031862000266565b50506001821b6200036f565b5060208310610133831016604e8410600b841016171562000349575081810a6200036f565b6200035583836200027a565b805f19048211156200036b576200036b62000266565b0290505b92915050565b5f6200038560ff841683620002c2565b9392505050565b80820281158282048414176200036f576200036f62000266565b634e487b7160e01b5f52601260045260245ffd5b5f82620003cb57620003cb620003a6565b500690565b818103818111156200036f576200036f62000266565b5f82620003f757620003f7620003a6565b500490565b611d29806200040a5f395ff3fe60806040526004361061017e575f3560e01c80637d1db4a5116100cd578063a9059cbb11610087578063c9567bf911610062578063c9567bf91461044e578063dd62ed3e14610462578063ea1644d5146104a6578063f2fde38b146104c5575f80fd5b8063a9059cbb146103fc578063c3c8cd801461041b578063c492f0461461042f575f80fd5b80637d1db4a5146103495780638da5cb5b1461035e5780638f9a55c01461037a57806395d89b411461038f57806398a5c315146103be578063a2a957bb146103dd575f80fd5b8063313ce567116101385780636d8aa8f8116101135780636d8aa8f8146102e35780636fc3eaec1461030257806370a0823114610316578063715018a614610335575f80fd5b8063313ce56714610288578063485cc955146102a357806349bd5a5e146102c4575f80fd5b806306fdde0314610189578063095ea7b3146101cc5780631694505e146101fb57806318160ddd1461023257806323b872dd146102545780632fd689e314610273575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b506040805180820190915260098152687848756d616e69747960b81b60208201525b6040516101c39190611879565b60405180910390f35b3480156101d7575f80fd5b506101eb6101e63660046118d8565b6104e4565b60405190151581526020016101c3565b348015610206575f80fd5b5060125461021a906001600160a01b031681565b6040516001600160a01b0390911681526020016101c3565b34801561023d575f80fd5b506102466104fa565b6040519081526020016101c3565b34801561025f575f80fd5b506101eb61026e366004611902565b61051a565b34801561027e575f80fd5b5061024660165481565b348015610293575f80fd5b50604051601281526020016101c3565b3480156102ae575f80fd5b506102c26102bd366004611940565b610581565b005b3480156102cf575f80fd5b5060135461021a906001600160a01b031681565b3480156102ee575f80fd5b506102c26102fd36600461198b565b61064c565b34801561030d575f80fd5b506102c2610693565b348015610321575f80fd5b506102466103303660046119a4565b6106c9565b348015610340575f80fd5b506102c26106ea565b348015610354575f80fd5b5061024660145481565b348015610369575f80fd5b505f546001600160a01b031661021a565b348015610385575f80fd5b5061024660155481565b34801561039a575f80fd5b50604080518082019091526007815266f09d958fe2848d60c81b60208201526101b6565b3480156103c9575f80fd5b506102c26103d83660046119bf565b61075b565b3480156103e8575f80fd5b506102c26103f73660046119d6565b610789565b348015610407575f80fd5b506101eb6104163660046118d8565b610947565b348015610426575f80fd5b506102c2610953565b34801561043a575f80fd5b506102c2610449366004611a05565b610991565b348015610459575f80fd5b506102c2610a2e565b34801561046d575f80fd5b5061024661047c366004611940565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156104b1575f80fd5b506102c26104c03660046119bf565b610a70565b3480156104d0575f80fd5b506102c26104df3660046119a4565b610aef565b5f6104f0338484610bd6565b5060015b92915050565b5f6105076012600a611b76565b61051590633b9aca00611b84565b905090565b5f610526848484610cf9565b610577843361057285604051806060016040528060288152602001611ccc602891396001600160a01b038a165f908152600460209081526040808320338452909152902054919061113f565b610bd6565b5060019392505050565b5f546001600160a01b031633146105b35760405162461bcd60e51b81526004016105aa90611b9b565b60405180910390fd5b601354600160a01b900460ff161561061e5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f742062652063616c6c65642061667465722074726164696e672069604482015267732061637469766560c01b60648201526084016105aa565b601380546001600160a01b039384166001600160a01b03199182161790915560128054929093169116179055565b5f546001600160a01b031633146106755760405162461bcd60e51b81526004016105aa90611b9b565b60138054911515600160b01b0260ff60b01b19909216919091179055565b5f546001600160a01b031633146106bc5760405162461bcd60e51b81526004016105aa90611b9b565b476106c681611177565b50565b6001600160a01b0381165f908152600260205260408120546104f4906111b2565b5f546001600160a01b031633146107135760405162461bcd60e51b81526004016105aa90611b9b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107845760405162461bcd60e51b81526004016105aa90611b9b565b601655565b5f546001600160a01b031633146107b25760405162461bcd60e51b81526004016105aa90611b9b565b60058411156108145760405162461bcd60e51b815260206004820152602860248201527f4275792072657761726473206d757374206265206265747765656e206c657373604482015267207468616e20352560c01b60648201526084016105aa565b60028211156108715760405162461bcd60e51b8152602060048201526024808201527f42757920746178206d757374206265206265747765656e206c657373207468616044820152636e20322560e01b60648201526084016105aa565b60058311156108d45760405162461bcd60e51b815260206004820152602960248201527f53656c6c2072657761726473206d757374206265206265747765656e206c657360448201526873207468616e20352560b81b60648201526084016105aa565b60028111156109335760405162461bcd60e51b815260206004820152602560248201527f53656c6c20746178206d757374206265206265747765656e206c657373207468604482015264616e20322560d81b60648201526084016105aa565b600893909355600a91909155600955600b55565b5f6104f0338484610cf9565b5f546001600160a01b0316331461097c5760405162461bcd60e51b81526004016105aa90611b9b565b5f610986306106c9565b90506106c681611234565b5f546001600160a01b031633146109ba5760405162461bcd60e51b81526004016105aa90611b9b565b5f5b82811015610a28578160055f8686858181106109da576109da611bd0565b90506020020160208101906109ef91906119a4565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610a2081611be4565b9150506109bc565b50505050565b5f546001600160a01b03163314610a575760405162461bcd60e51b81526004016105aa90611b9b565b6013805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610a995760405162461bcd60e51b81526004016105aa90611b9b565b6015548111610aea5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420726564756365206d61782077616c6c6574000000000000000060448201526064016105aa565b601555565b5f546001600160a01b03163314610b185760405162461bcd60e51b81526004016105aa90611b9b565b6001600160a01b038116610b7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105aa565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610c385760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105aa565b6001600160a01b038216610c995760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105aa565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d5d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105aa565b6001600160a01b038216610dbf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105aa565b5f8111610e205760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105aa565b5f546001600160a01b03848116911614801590610e4a57505f546001600160a01b03838116911614155b1561103b57601354600160a01b900460ff16610ee2575f546001600160a01b03848116911614610ee25760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105aa565b6013546001600160a01b03838116911614610f675760155481610f04846106c9565b610f0e9190611bfc565b10610f675760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105aa565b5f610f71306106c9565b601654601454919250821015908210610f8a5760145491505b808015610fa15750601354600160a81b900460ff16155b8015610fbb57506013546001600160a01b03868116911614155b8015610fd05750601354600160b01b900460ff165b8015610ff457506001600160a01b0385165f9081526005602052604090205460ff16155b801561101857506001600160a01b0384165f9081526005602052604090205460ff16155b156110385761102682611234565b4780156110365761103647611177565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061107b57506001600160a01b0383165f9081526005602052604090205460ff165b806110ad57506013546001600160a01b038581169116148015906110ad57506013546001600160a01b03848116911614155b156110b957505f611133565b6013546001600160a01b0385811691161480156110e457506012546001600160a01b03848116911614155b156110f657600854600c55600954600d555b6013546001600160a01b03848116911614801561112157506012546001600160a01b03858116911614155b1561113357600a54600c55600b54600d555b610a28848484846113a4565b5f81848411156111625760405162461bcd60e51b81526004016105aa9190611879565b505f61116e8486611c0f565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111ae573d5f803e3d5ffd5b5050565b5f6006548211156112185760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105aa565b5f6112216113d2565b905061122d83826113f3565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061127a5761127a611bd0565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f59190611c22565b8160018151811061130857611308611bd0565b6001600160a01b03928316602091820292909201015260125461132e9130911684610bd6565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906113669085905f90869030904290600401611c3d565b5f604051808303815f87803b15801561137d575f80fd5b505af115801561138f573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b806113b1576113b1611434565b6113bc848484611461565b80610a2857610a28600e54600c55600f54600d55565b5f805f6113dd611552565b90925090506113ec82826113f3565b9250505090565b5f61122d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115d3565b600c541580156114445750600d54155b1561144b57565b600c8054600e55600d8054600f555f9182905555565b5f805f805f80611470876115ff565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506114a19087611654565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546114cf9086611695565b6001600160a01b0389165f908152600260205260409020556114f0816116f3565b6114fa8483611739565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161153f91815260200190565b60405180910390a3505050505050505050565b6006545f908190816115666012600a611b76565b61157490633b9aca00611b84565b905061159c6115856012600a611b76565b61159390633b9aca00611b84565b600654906113f3565b8210156115ca576006546115b26012600a611b76565b6115c090633b9aca00611b84565b9350935050509091565b90939092509050565b5f81836115f35760405162461bcd60e51b81526004016105aa9190611879565b505f61116e8486611cac565b5f805f805f805f805f6116178a600c54600d5461175d565b9250925092505f6116266113d2565b90505f805f6116378e8787876117af565b919e509c509a509598509396509194505050505091939550919395565b5f61122d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061113f565b5f806116a18385611bfc565b90508381101561122d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105aa565b5f6116fc6113d2565b90505f61170983836117fb565b305f908152600260205260409020549091506117259082611695565b305f90815260026020526040902055505050565b6006546117469083611654565b6006556007546117569082611695565b6007555050565b5f808080611776606461177089896117fb565b906113f3565b90505f61178860646117708a896117fb565b90505f61179f826117998b86611654565b90611654565b9992985090965090945050505050565b5f8080806117bd88866117fb565b90505f6117ca88876117fb565b90505f6117d788886117fb565b90505f6117e8826117998686611654565b939b939a50919850919650505050505050565b5f825f0361180a57505f6104f4565b5f6118158385611b84565b9050826118228583611cac565b1461122d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105aa565b5f6020808352835180828501525f5b818110156118a457858101830151858201604001528201611888565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106c6575f80fd5b5f80604083850312156118e9575f80fd5b82356118f4816118c4565b946020939093013593505050565b5f805f60608486031215611914575f80fd5b833561191f816118c4565b9250602084013561192f816118c4565b929592945050506040919091013590565b5f8060408385031215611951575f80fd5b823561195c816118c4565b9150602083013561196c816118c4565b809150509250929050565b80358015158114611986575f80fd5b919050565b5f6020828403121561199b575f80fd5b61122d82611977565b5f602082840312156119b4575f80fd5b813561122d816118c4565b5f602082840312156119cf575f80fd5b5035919050565b5f805f80608085870312156119e9575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f60408486031215611a17575f80fd5b833567ffffffffffffffff80821115611a2e575f80fd5b818601915086601f830112611a41575f80fd5b813581811115611a4f575f80fd5b8760208260051b8501011115611a63575f80fd5b602092830195509350611a799186019050611977565b90509250925092565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611ad057815f1904821115611ab657611ab6611a82565b80851615611ac357918102915b93841c9390800290611a9b565b509250929050565b5f82611ae6575060016104f4565b81611af257505f6104f4565b8160018114611b085760028114611b1257611b2e565b60019150506104f4565b60ff841115611b2357611b23611a82565b50506001821b6104f4565b5060208310610133831016604e8410600b8410161715611b51575081810a6104f4565b611b5b8383611a96565b805f1904821115611b6e57611b6e611a82565b029392505050565b5f61122d60ff841683611ad8565b80820281158282048414176104f4576104f4611a82565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611bf557611bf5611a82565b5060010190565b808201808211156104f4576104f4611a82565b818103818111156104f4576104f4611a82565b5f60208284031215611c32575f80fd5b815161122d816118c4565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611c8b5784516001600160a01b031683529383019391830191600101611c66565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611cc657634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122016d6b04681e6e71eeeeef5bbced1c7fb6f6ab3aa2ca88303ca8c6d7461579f6764736f6c63430008150033

Deployed Bytecode

0x60806040526004361061017e575f3560e01c80637d1db4a5116100cd578063a9059cbb11610087578063c9567bf911610062578063c9567bf91461044e578063dd62ed3e14610462578063ea1644d5146104a6578063f2fde38b146104c5575f80fd5b8063a9059cbb146103fc578063c3c8cd801461041b578063c492f0461461042f575f80fd5b80637d1db4a5146103495780638da5cb5b1461035e5780638f9a55c01461037a57806395d89b411461038f57806398a5c315146103be578063a2a957bb146103dd575f80fd5b8063313ce567116101385780636d8aa8f8116101135780636d8aa8f8146102e35780636fc3eaec1461030257806370a0823114610316578063715018a614610335575f80fd5b8063313ce56714610288578063485cc955146102a357806349bd5a5e146102c4575f80fd5b806306fdde0314610189578063095ea7b3146101cc5780631694505e146101fb57806318160ddd1461023257806323b872dd146102545780632fd689e314610273575f80fd5b3661018557005b5f80fd5b348015610194575f80fd5b506040805180820190915260098152687848756d616e69747960b81b60208201525b6040516101c39190611879565b60405180910390f35b3480156101d7575f80fd5b506101eb6101e63660046118d8565b6104e4565b60405190151581526020016101c3565b348015610206575f80fd5b5060125461021a906001600160a01b031681565b6040516001600160a01b0390911681526020016101c3565b34801561023d575f80fd5b506102466104fa565b6040519081526020016101c3565b34801561025f575f80fd5b506101eb61026e366004611902565b61051a565b34801561027e575f80fd5b5061024660165481565b348015610293575f80fd5b50604051601281526020016101c3565b3480156102ae575f80fd5b506102c26102bd366004611940565b610581565b005b3480156102cf575f80fd5b5060135461021a906001600160a01b031681565b3480156102ee575f80fd5b506102c26102fd36600461198b565b61064c565b34801561030d575f80fd5b506102c2610693565b348015610321575f80fd5b506102466103303660046119a4565b6106c9565b348015610340575f80fd5b506102c26106ea565b348015610354575f80fd5b5061024660145481565b348015610369575f80fd5b505f546001600160a01b031661021a565b348015610385575f80fd5b5061024660155481565b34801561039a575f80fd5b50604080518082019091526007815266f09d958fe2848d60c81b60208201526101b6565b3480156103c9575f80fd5b506102c26103d83660046119bf565b61075b565b3480156103e8575f80fd5b506102c26103f73660046119d6565b610789565b348015610407575f80fd5b506101eb6104163660046118d8565b610947565b348015610426575f80fd5b506102c2610953565b34801561043a575f80fd5b506102c2610449366004611a05565b610991565b348015610459575f80fd5b506102c2610a2e565b34801561046d575f80fd5b5061024661047c366004611940565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156104b1575f80fd5b506102c26104c03660046119bf565b610a70565b3480156104d0575f80fd5b506102c26104df3660046119a4565b610aef565b5f6104f0338484610bd6565b5060015b92915050565b5f6105076012600a611b76565b61051590633b9aca00611b84565b905090565b5f610526848484610cf9565b610577843361057285604051806060016040528060288152602001611ccc602891396001600160a01b038a165f908152600460209081526040808320338452909152902054919061113f565b610bd6565b5060019392505050565b5f546001600160a01b031633146105b35760405162461bcd60e51b81526004016105aa90611b9b565b60405180910390fd5b601354600160a01b900460ff161561061e5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f742062652063616c6c65642061667465722074726164696e672069604482015267732061637469766560c01b60648201526084016105aa565b601380546001600160a01b039384166001600160a01b03199182161790915560128054929093169116179055565b5f546001600160a01b031633146106755760405162461bcd60e51b81526004016105aa90611b9b565b60138054911515600160b01b0260ff60b01b19909216919091179055565b5f546001600160a01b031633146106bc5760405162461bcd60e51b81526004016105aa90611b9b565b476106c681611177565b50565b6001600160a01b0381165f908152600260205260408120546104f4906111b2565b5f546001600160a01b031633146107135760405162461bcd60e51b81526004016105aa90611b9b565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107845760405162461bcd60e51b81526004016105aa90611b9b565b601655565b5f546001600160a01b031633146107b25760405162461bcd60e51b81526004016105aa90611b9b565b60058411156108145760405162461bcd60e51b815260206004820152602860248201527f4275792072657761726473206d757374206265206265747765656e206c657373604482015267207468616e20352560c01b60648201526084016105aa565b60028211156108715760405162461bcd60e51b8152602060048201526024808201527f42757920746178206d757374206265206265747765656e206c657373207468616044820152636e20322560e01b60648201526084016105aa565b60058311156108d45760405162461bcd60e51b815260206004820152602960248201527f53656c6c2072657761726473206d757374206265206265747765656e206c657360448201526873207468616e20352560b81b60648201526084016105aa565b60028111156109335760405162461bcd60e51b815260206004820152602560248201527f53656c6c20746178206d757374206265206265747765656e206c657373207468604482015264616e20322560d81b60648201526084016105aa565b600893909355600a91909155600955600b55565b5f6104f0338484610cf9565b5f546001600160a01b0316331461097c5760405162461bcd60e51b81526004016105aa90611b9b565b5f610986306106c9565b90506106c681611234565b5f546001600160a01b031633146109ba5760405162461bcd60e51b81526004016105aa90611b9b565b5f5b82811015610a28578160055f8686858181106109da576109da611bd0565b90506020020160208101906109ef91906119a4565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610a2081611be4565b9150506109bc565b50505050565b5f546001600160a01b03163314610a575760405162461bcd60e51b81526004016105aa90611b9b565b6013805462ff00ff60a01b19166201000160a01b179055565b5f546001600160a01b03163314610a995760405162461bcd60e51b81526004016105aa90611b9b565b6015548111610aea5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420726564756365206d61782077616c6c6574000000000000000060448201526064016105aa565b601555565b5f546001600160a01b03163314610b185760405162461bcd60e51b81526004016105aa90611b9b565b6001600160a01b038116610b7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105aa565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610c385760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105aa565b6001600160a01b038216610c995760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105aa565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d5d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105aa565b6001600160a01b038216610dbf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105aa565b5f8111610e205760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105aa565b5f546001600160a01b03848116911614801590610e4a57505f546001600160a01b03838116911614155b1561103b57601354600160a01b900460ff16610ee2575f546001600160a01b03848116911614610ee25760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105aa565b6013546001600160a01b03838116911614610f675760155481610f04846106c9565b610f0e9190611bfc565b10610f675760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105aa565b5f610f71306106c9565b601654601454919250821015908210610f8a5760145491505b808015610fa15750601354600160a81b900460ff16155b8015610fbb57506013546001600160a01b03868116911614155b8015610fd05750601354600160b01b900460ff165b8015610ff457506001600160a01b0385165f9081526005602052604090205460ff16155b801561101857506001600160a01b0384165f9081526005602052604090205460ff16155b156110385761102682611234565b4780156110365761103647611177565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061107b57506001600160a01b0383165f9081526005602052604090205460ff165b806110ad57506013546001600160a01b038581169116148015906110ad57506013546001600160a01b03848116911614155b156110b957505f611133565b6013546001600160a01b0385811691161480156110e457506012546001600160a01b03848116911614155b156110f657600854600c55600954600d555b6013546001600160a01b03848116911614801561112157506012546001600160a01b03858116911614155b1561113357600a54600c55600b54600d555b610a28848484846113a4565b5f81848411156111625760405162461bcd60e51b81526004016105aa9190611879565b505f61116e8486611c0f565b95945050505050565b6011546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111ae573d5f803e3d5ffd5b5050565b5f6006548211156112185760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105aa565b5f6112216113d2565b905061122d83826113f3565b9392505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061127a5761127a611bd0565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156112d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f59190611c22565b8160018151811061130857611308611bd0565b6001600160a01b03928316602091820292909201015260125461132e9130911684610bd6565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac947906113669085905f90869030904290600401611c3d565b5f604051808303815f87803b15801561137d575f80fd5b505af115801561138f573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b806113b1576113b1611434565b6113bc848484611461565b80610a2857610a28600e54600c55600f54600d55565b5f805f6113dd611552565b90925090506113ec82826113f3565b9250505090565b5f61122d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115d3565b600c541580156114445750600d54155b1561144b57565b600c8054600e55600d8054600f555f9182905555565b5f805f805f80611470876115ff565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506114a19087611654565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546114cf9086611695565b6001600160a01b0389165f908152600260205260409020556114f0816116f3565b6114fa8483611739565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161153f91815260200190565b60405180910390a3505050505050505050565b6006545f908190816115666012600a611b76565b61157490633b9aca00611b84565b905061159c6115856012600a611b76565b61159390633b9aca00611b84565b600654906113f3565b8210156115ca576006546115b26012600a611b76565b6115c090633b9aca00611b84565b9350935050509091565b90939092509050565b5f81836115f35760405162461bcd60e51b81526004016105aa9190611879565b505f61116e8486611cac565b5f805f805f805f805f6116178a600c54600d5461175d565b9250925092505f6116266113d2565b90505f805f6116378e8787876117af565b919e509c509a509598509396509194505050505091939550919395565b5f61122d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061113f565b5f806116a18385611bfc565b90508381101561122d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105aa565b5f6116fc6113d2565b90505f61170983836117fb565b305f908152600260205260409020549091506117259082611695565b305f90815260026020526040902055505050565b6006546117469083611654565b6006556007546117569082611695565b6007555050565b5f808080611776606461177089896117fb565b906113f3565b90505f61178860646117708a896117fb565b90505f61179f826117998b86611654565b90611654565b9992985090965090945050505050565b5f8080806117bd88866117fb565b90505f6117ca88876117fb565b90505f6117d788886117fb565b90505f6117e8826117998686611654565b939b939a50919850919650505050505050565b5f825f0361180a57505f6104f4565b5f6118158385611b84565b9050826118228583611cac565b1461122d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105aa565b5f6020808352835180828501525f5b818110156118a457858101830151858201604001528201611888565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106c6575f80fd5b5f80604083850312156118e9575f80fd5b82356118f4816118c4565b946020939093013593505050565b5f805f60608486031215611914575f80fd5b833561191f816118c4565b9250602084013561192f816118c4565b929592945050506040919091013590565b5f8060408385031215611951575f80fd5b823561195c816118c4565b9150602083013561196c816118c4565b809150509250929050565b80358015158114611986575f80fd5b919050565b5f6020828403121561199b575f80fd5b61122d82611977565b5f602082840312156119b4575f80fd5b813561122d816118c4565b5f602082840312156119cf575f80fd5b5035919050565b5f805f80608085870312156119e9575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f60408486031215611a17575f80fd5b833567ffffffffffffffff80821115611a2e575f80fd5b818601915086601f830112611a41575f80fd5b813581811115611a4f575f80fd5b8760208260051b8501011115611a63575f80fd5b602092830195509350611a799186019050611977565b90509250925092565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611ad057815f1904821115611ab657611ab6611a82565b80851615611ac357918102915b93841c9390800290611a9b565b509250929050565b5f82611ae6575060016104f4565b81611af257505f6104f4565b8160018114611b085760028114611b1257611b2e565b60019150506104f4565b60ff841115611b2357611b23611a82565b50506001821b6104f4565b5060208310610133831016604e8410600b8410161715611b51575081810a6104f4565b611b5b8383611a96565b805f1904821115611b6e57611b6e611a82565b029392505050565b5f61122d60ff841683611ad8565b80820281158282048414176104f4576104f4611a82565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611bf557611bf5611a82565b5060010190565b808201808211156104f4576104f4611a82565b818103818111156104f4576104f4611a82565b5f60208284031215611c32575f80fd5b815161122d816118c4565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611c8b5784516001600160a01b031683529383019391830191600101611c66565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611cc657634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122016d6b04681e6e71eeeeef5bbced1c7fb6f6ab3aa2ca88303ca8c6d7461579f6764736f6c63430008150033

Deployed Bytecode Sourcemap

4346:13086:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6698:83;;;;;;;;;;-1:-1:-1;6768:5:0;;;;;;;;;;;;-1:-1:-1;;;6768:5:0;;;;6698:83;;;;;;;:::i;:::-;;;;;;;;7636:193;;;;;;;;;;-1:-1:-1;7636:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7636:193:0;1023:187:1;5642:41:0;;;;;;;;;;-1:-1:-1;5642:41:0;;;;-1:-1:-1;;;;;5642:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5642:41:0;1215:229:1;6978:95:0;;;;;;;;;;;;;:::i;:::-;;;1595:25:1;;;1583:2;1568:18;6978:95:0;1449:177:1;7838:446:0;;;;;;;;;;-1:-1:-1;7838:446:0;;;;;:::i;:::-;;:::i;5937:50::-;;;;;;;;;;;;;;;;6886:83;;;;;;;;;;-1:-1:-1;6886:83:0;;4581:2;2234:36:1;;2222:2;2207:18;6886:83:0;2092:184:1;6447:242:0;;;;;;;;;;-1:-1:-1;6447:242:0;;;;;:::i;:::-;;:::i;:::-;;5690:28;;;;;;;;;;-1:-1:-1;5690:28:0;;;;-1:-1:-1;;;;;5690:28:0;;;16882:101;;;;;;;;;;-1:-1:-1;16882:101:0;;;;;:::i;:::-;;:::i;12417:152::-;;;;;;;;;;;;;:::i;7082:144::-;;;;;;;;;;-1:-1:-1;7082:144:0;;;;;:::i;:::-;;:::i;1819:148::-;;;;;;;;;;;;;:::i;5835:42::-;;;;;;;;;;;;;;;;1603:79;;;;;;;;;;-1:-1:-1;1641:7:0;1668:6;-1:-1:-1;;;;;1668:6:0;1603:79;;5885:44;;;;;;;;;;;;;;;;6790:87;;;;;;;;;;-1:-1:-1;6862:7:0;;;;;;;;;;;;-1:-1:-1;;;6862:7:0;;;;6790:87;;16690:139;;;;;;;;;;-1:-1:-1;16690:139:0;;;;;:::i;:::-;;:::i;16022:615::-;;;;;;;;;;-1:-1:-1;16022:615:0;;;;;:::i;:::-;;:::i;7235:199::-;;;;;;;;;;-1:-1:-1;7235:199:0;;;;;:::i;:::-;;:::i;12255:153::-;;;;;;;;;;;;;:::i;17193:234::-;;;;;;;;;;-1:-1:-1;17193:234:0;;;;;:::i;:::-;;:::i;12140:106::-;;;;;;;;;;;;;:::i;7443:184::-;;;;;;;;;;-1:-1:-1;7443:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7592:18:0;;;7560:7;7592:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7443:184;16992:192;;;;;;;;;;-1:-1:-1;16992:192:0;;;;;:::i;:::-;;:::i;1976:244::-;;;;;;;;;;-1:-1:-1;1976:244:0;;;;;:::i;:::-;;:::i;7636:193::-;7738:4;7760:39;432:10;7783:7;7792:6;7760:8;:39::i;:::-;-1:-1:-1;7817:4:0;7636:193;;;;;:::o;6978:95::-;7031:7;4933:13;4581:2;4933;:13;:::i;:::-;4917:29;;:13;:29;:::i;:::-;7051:14;;6978:95;:::o;7838:446::-;7970:4;7987:36;7997:6;8005:9;8016:6;7987:9;:36::i;:::-;8034:220;8057:6;432:10;8105:138;8161:6;8105:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8105:19:0;;;;;;:11;:19;;;;;;;;432:10;8105:33;;;;;;;;;;:37;:138::i;:::-;8034:8;:220::i;:::-;-1:-1:-1;8272:4:0;7838:446;;;;;:::o;6447:242::-;1731:6;;-1:-1:-1;;;;;1731:6:0;432:10;1731:22;1723:67;;;;-1:-1:-1;;;1723:67:0;;;;;;;:::i;:::-;;;;;;;;;6538:11:::1;::::0;-1:-1:-1;;;6538:11:0;::::1;;;6537:12;6529:64;;;::::0;-1:-1:-1;;;6529:64:0;;7004:2:1;6529:64:0::1;::::0;::::1;6986:21:1::0;7043:2;7023:18;;;7016:30;7082:34;7062:18;;;7055:62;-1:-1:-1;;;7133:18:1;;;7126:38;7181:19;;6529:64:0::1;6802:404:1::0;6529:64:0::1;6604:13;:21:::0;;-1:-1:-1;;;;;6604:21:0;;::::1;-1:-1:-1::0;;;;;;6604:21:0;;::::1;;::::0;;;6636:15:::1;:45:::0;;;;;::::1;::::0;::::1;;::::0;;6447:242::o;16882:101::-;1731:6;;-1:-1:-1;;;;;1731:6:0;432:10;1731:22;1723:67;;;;-1:-1:-1;;;1723:67:0;;;;;;;:::i;:::-;16949:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16949:26:0::1;-1:-1:-1::0;;;;16949:26:0;;::::1;::::0;;;::::1;::::0;;16882:101::o;12417:152::-;1731:6;;-1:-1:-1;;;;;1731:6:0;432:10;1731:22;1723:67;;;;-1:-1:-1;;;1723:67:0;;;;;;;:::i;:::-;12497:21:::1;12529:32;12497:21:::0;12529:12:::1;:32::i;:::-;12457:112;12417:152::o:0;7082:144::-;-1:-1:-1;;;;;7195:22:0;;7148:7;7195:22;;;:13;:22;;;;;;7175:43;;:19;:43::i;1819:148::-;1731:6;;-1:-1:-1;;;;;1731:6:0;432:10;1731:22;1723:67;;;;-1:-1:-1;;;1723:67:0;;;;;;;:::i;:::-;1926:1:::1;1910:6:::0;;1889:40:::1;::::0;-1:-1:-1;;;;;1910:6:0;;::::1;::::0;1889:40:::1;::::0;1926:1;;1889:40:::1;1957:1;1940:19:::0;;-1:-1:-1;;;;;;1940:19:0::1;::::0;;1819:148::o;16690:139::-;1731:6;;-1:-1:-1;;;;;1731:6:0;432:10;1731:22;1723:67;;;;-1:-1:-1;;;1723:67:0;;;;;;;:::i;:::-;16781:19:::1;:40:::0;16690:139::o;16022:615::-;1731:6;;-1:-1:-1;;;;;1731:6:0;432:10;1731:22;1723:67;;;;-1:-1:-1;;;1723:67:0;;;;;;;:::i;:::-;16181:1:::1;16164:13;:18;;16156:71;;;::::0;-1:-1:-1;;;16156:71:0;;7413:2:1;16156:71:0::1;::::0;::::1;7395:21:1::0;7452:2;7432:18;;;7425:30;7491:34;7471:18;;;7464:62;-1:-1:-1;;;7542:18:1;;;7535:38;7590:19;;16156:71:0::1;7211:404:1::0;16156:71:0::1;16261:1;16246:11;:16;;16238:65;;;::::0;-1:-1:-1;;;16238:65:0;;7822:2:1;16238:65:0::1;::::0;::::1;7804:21:1::0;7861:2;7841:18;;;7834:30;7900:34;7880:18;;;7873:62;-1:-1:-1;;;7951:18:1;;;7944:34;7995:19;;16238:65:0::1;7620:400:1::0;16238:65:0::1;16340:1;16322:14;:19;;16314:73;;;::::0;-1:-1:-1;;;16314:73:0;;8227:2:1;16314:73:0::1;::::0;::::1;8209:21:1::0;8266:2;8246:18;;;8239:30;8305:34;8285:18;;;8278:62;-1:-1:-1;;;8356:18:1;;;8349:39;8405:19;;16314:73:0::1;8025:405:1::0;16314:73:0::1;16422:1;16406:12;:17;;16398:67;;;::::0;-1:-1:-1;;;16398:67:0;;8637:2:1;16398:67:0::1;::::0;::::1;8619:21:1::0;8676:2;8656:18;;;8649:30;8715:34;8695:18;;;8688:62;-1:-1:-1;;;8766:18:1;;;8759:35;8811:19;;16398:67:0::1;8435:401:1::0;16398:67:0::1;16478:14;:30:::0;;;;16519:15:::1;:32:::0;;;;16562:12:::1;:26:::0;16599:13:::1;:28:::0;16022:615::o;7235:199::-;7340:4;7362:42;432:10;7386:9;7397:6;7362:9;:42::i;12255:153::-;1731:6;;-1:-1:-1;;;;;1731:6:0;432:10;1731:22;1723:67;;;;-1:-1:-1;;;1723:67:0;;;;;;;:::i;:::-;12306:23:::1;12332:24;12350:4;12332:9;:24::i;:::-;12306:50;;12367:33;12384:15;12367:16;:33::i;17193:234::-:0;1731:6;;-1:-1:-1;;;;;1731:6:0;432:10;1731:22;1723:67;;;;-1:-1:-1;;;1723:67:0;;;;;;;:::i;:::-;17310:9:::1;17306:114;17325:19:::0;;::::1;17306:114;;;17400:8;17366:18;:31;17385:8;;17394:1;17385:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17366:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17366:31:0;:42;;-1:-1:-1;;17366:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17346:3;::::1;::::0;::::1;:::i;:::-;;;;17306:114;;;;17193:234:::0;;;:::o;12140:106::-;1731:6;;-1:-1:-1;;;;;1731:6:0;432:10;1731:22;1723:67;;;;-1:-1:-1;;;1723:67:0;;;;;;;:::i;:::-;12191:11:::1;:18:::0;;-1:-1:-1;;;;12220:18:0;-1:-1:-1;;;12220:18:0;;;12140:106::o;16992:192::-;1731:6;;-1:-1:-1;;;;;1731:6:0;432:10;1731:22;1723:67;;;;-1:-1:-1;;;1723:67:0;;;;;;;:::i;:::-;17093:14:::1;;17077:13;:30;17069:66;;;::::0;-1:-1:-1;;;17069:66:0;;9315:2:1;17069:66:0::1;::::0;::::1;9297:21:1::0;9354:2;9334:18;;;9327:30;9393:26;9373:18;;;9366:54;9437:18;;17069:66:0::1;9113:348:1::0;17069:66:0::1;17146:14;:30:::0;16992:192::o;1976:244::-;1731:6;;-1:-1:-1;;;;;1731:6:0;432:10;1731:22;1723:67;;;;-1:-1:-1;;;1723:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2065:22:0;::::1;2057:73;;;::::0;-1:-1:-1;;;2057:73:0;;9668:2:1;2057:73:0::1;::::0;::::1;9650:21:1::0;9707:2;9687:18;;;9680:30;9746:34;9726:18;;;9719:62;-1:-1:-1;;;9797:18:1;;;9790:36;9843:19;;2057:73:0::1;9466:402:1::0;2057:73:0::1;2167:6;::::0;;2146:38:::1;::::0;-1:-1:-1;;;;;2146:38:0;;::::1;::::0;2167:6;::::1;::::0;2146:38:::1;::::0;::::1;2195:6;:17:::0;;-1:-1:-1;;;;;;2195:17:0::1;-1:-1:-1::0;;;;;2195:17:0;;;::::1;::::0;;;::::1;::::0;;1976:244::o;8981:369::-;-1:-1:-1;;;;;9108:19:0;;9100:68;;;;-1:-1:-1;;;9100:68:0;;10075:2:1;9100:68:0;;;10057:21:1;10114:2;10094:18;;;10087:30;10153:34;10133:18;;;10126:62;-1:-1:-1;;;10204:18:1;;;10197:34;10248:19;;9100:68:0;9873:400:1;9100:68:0;-1:-1:-1;;;;;9187:21:0;;9179:68;;;;-1:-1:-1;;;9179:68:0;;10480:2:1;9179:68:0;;;10462:21:1;10519:2;10499:18;;;10492:30;10558:34;10538:18;;;10531:62;-1:-1:-1;;;10609:18:1;;;10602:32;10651:19;;9179:68:0;10278:398:1;9179:68:0;-1:-1:-1;;;;;9258:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9310:32;;1595:25:1;;;9310:32:0;;1568:18:1;9310:32:0;;;;;;;8981:369;;;:::o;9359:2172::-;-1:-1:-1;;;;;9481:18:0;;9473:68;;;;-1:-1:-1;;;9473:68:0;;10883:2:1;9473:68:0;;;10865:21:1;10922:2;10902:18;;;10895:30;10961:34;10941:18;;;10934:62;-1:-1:-1;;;11012:18:1;;;11005:35;11057:19;;9473:68:0;10681:401:1;9473:68:0;-1:-1:-1;;;;;9560:16:0;;9552:64;;;;-1:-1:-1;;;9552:64:0;;11289:2:1;9552:64:0;;;11271:21:1;11328:2;11308:18;;;11301:30;11367:34;11347:18;;;11340:62;-1:-1:-1;;;11418:18:1;;;11411:33;11461:19;;9552:64:0;11087:399:1;9552:64:0;9644:1;9635:6;:10;9627:64;;;;-1:-1:-1;;;9627:64:0;;11693:2:1;9627:64:0;;;11675:21:1;11732:2;11712:18;;;11705:30;11771:34;11751:18;;;11744:62;-1:-1:-1;;;11822:18:1;;;11815:39;11871:19;;9627:64:0;11491:405:1;9627:64:0;1641:7;1668:6;-1:-1:-1;;;;;9709:15:0;;;1668:6;;9709:15;;;;:32;;-1:-1:-1;1641:7:0;1668:6;-1:-1:-1;;;;;9728:13:0;;;1668:6;;9728:13;;9709:32;9705:1097;;;9799:11;;-1:-1:-1;;;9799:11:0;;;;9794:144;;1641:7;1668:6;-1:-1:-1;;;;;9839:15:0;;;1668:6;;9839:15;9831:91;;;;-1:-1:-1;;;9831:91:0;;12103:2:1;9831:91:0;;;12085:21:1;12142:2;12122:18;;;12115:30;12181:34;12161:18;;;12154:62;12252:33;12232:18;;;12225:61;12303:19;;9831:91:0;11901:427:1;9831:91:0;9964:13;;-1:-1:-1;;;;;9958:19:0;;;9964:13;;9958:19;9955:146;;10031:14;;10022:6;10006:13;10016:2;10006:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9998:87;;;;-1:-1:-1;;;9998:87:0;;12665:2:1;9998:87:0;;;12647:21:1;12704:2;12684:18;;;12677:30;12743:34;12723:18;;;12716:62;-1:-1:-1;;;12794:18:1;;;12787:33;12837:19;;9998:87:0;12463:399:1;9998:87:0;10118:28;10149:24;10167:4;10149:9;:24::i;:::-;10227:19;;10291:12;;10118:55;;-1:-1:-1;10203:43:0;;;;10267:36;;10264:124;;10360:12;;10337:35;;10264:124;10409:7;:18;;;;-1:-1:-1;10421:6:0;;-1:-1:-1;;;10421:6:0;;;;10420:7;10409:18;:43;;;;-1:-1:-1;10439:13:0;;-1:-1:-1;;;;;10431:21:0;;;10439:13;;10431:21;;10409:43;:58;;;;-1:-1:-1;10456:11:0;;-1:-1:-1;;;10456:11:0;;;;10409:58;:87;;;;-1:-1:-1;;;;;;10472:24:0;;;;;;:18;:24;;;;;;;;10471:25;10409:87;:114;;;;-1:-1:-1;;;;;;10501:22:0;;;;;;:18;:22;;;;;;;;10500:23;10409:114;10405:386;;;10544:38;10561:20;10544:16;:38::i;:::-;10630:21;10674:22;;10670:106;;10721:35;10734:21;10721:12;:35::i;:::-;10525:266;10405:386;9743:1059;;9705:1097;-1:-1:-1;;;;;10880:24:0;;10815:12;10880:24;;;:18;:24;;;;;;10830:4;;10880:24;;;:50;;-1:-1:-1;;;;;;10908:22:0;;;;;;:18;:22;;;;;;;;10880:50;10879:102;;;-1:-1:-1;10944:13:0;;-1:-1:-1;;;;;10936:21:0;;;10944:13;;10936:21;;;;:44;;-1:-1:-1;10967:13:0;;-1:-1:-1;;;;;10961:19:0;;;10967:13;;10961:19;;10936:44;10875:594;;;-1:-1:-1;11008:5:0;10875:594;;;11092:13;;-1:-1:-1;;;;;11084:21:0;;;11092:13;;11084:21;:55;;;;-1:-1:-1;11123:15:0;;-1:-1:-1;;;;;11109:30:0;;;11123:15;;11109:30;;11084:55;11081:162;;;11172:14;;11160:9;:26;11215:12;;11205:7;:22;11081:162;11303:13;;-1:-1:-1;;;;;11297:19:0;;;11303:13;;11297:19;:55;;;;-1:-1:-1;11336:15:0;;-1:-1:-1;;;;;11320:32:0;;;11336:15;;11320:32;;11297:55;11293:165;;;11385:15;;11373:9;:27;11429:13;;11419:7;:23;11293:165;11482:41;11497:4;11503:2;11507:6;11515:7;11482:14;:41::i;2588:224::-;2708:7;2744:12;2736:6;;;;2728:29;;;;-1:-1:-1;;;2728:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2768:9:0;2780:5;2784:1;2780;:5;:::i;:::-;2768:17;2588:224;-1:-1:-1;;;;;2588:224:0:o;12032:99::-;12089:17;;:34;;-1:-1:-1;;;;;12089:17:0;;;;:34;;;;;12116:6;;12089:17;:34;:17;:34;12116:6;12089:17;:34;;;;;;;;;;;;;;;;;;;;;12032:99;:::o;8293:323::-;8388:7;8446;;8435;:18;;8413:110;;;;-1:-1:-1;;;8413:110:0;;13202:2:1;8413:110:0;;;13184:21:1;13241:2;13221:18;;;13214:30;13280:34;13260:18;;;13253:62;-1:-1:-1;;;13331:18:1;;;13324:40;13381:19;;8413:110:0;13000:406:1;8413:110:0;8534:19;8556:10;:8;:10::i;:::-;8534:32;-1:-1:-1;8584:24:0;:7;8534:32;8584:11;:24::i;:::-;8577:31;8293:323;-1:-1:-1;;;8293:323:0:o;11540:483::-;6029:6;:13;;-1:-1:-1;;;;6029:13:0;-1:-1:-1;;;6029:13:0;;;11642:16:::1;::::0;;11656:1:::1;11642:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11642:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11642:16:0::1;11618:40;;11687:4;11669;11674:1;11669:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11669:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11713:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11713:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11669:7;;11713:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11703:4;11708:1;11703:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11703:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11778:15:::1;::::0;11746:62:::1;::::0;11763:4:::1;::::0;11778:15:::1;11796:11:::0;11746:8:::1;:62::i;:::-;11819:15;::::0;:196:::1;::::0;-1:-1:-1;;;11819:196:0;;-1:-1:-1;;;;;11819:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11900:11;;11819:15:::1;::::0;11942:4;;11969::::1;::::0;11989:15:::1;::::0;11819:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6065:6:0;:14;;-1:-1:-1;;;;6065:14:0;;;-1:-1:-1;;;;11540:483:0:o;12578:282::-;12734:7;12729:28;;12743:14;:12;:14::i;:::-;12768:44;12786:6;12794:9;12805:6;12768:17;:44::i;:::-;12828:7;12823:29;;12837:15;8911:17;;8899:9;:29;8949:15;;8939:7;:25;8855:117;15583:164;15625:7;15646:15;15663;15682:19;:17;:19::i;:::-;15645:56;;-1:-1:-1;15645:56:0;-1:-1:-1;15719:20:0;15645:56;;15719:11;:20::i;:::-;15712:27;;;;15583:164;:::o;3076:132::-;3134:7;3161:39;3165:1;3168;3161:39;;;;;;;;;;;;;;;;;:3;:39::i;8625:221::-;8672:9;;:14;:30;;;;-1:-1:-1;8690:7:0;;:12;8672:30;8668:43;;;8625:221::o;8668:43::-;8744:9;;;8724:17;:29;8782:7;;;8764:15;:25;-1:-1:-1;8803:13:0;;;;8827:11;8625:221::o;12869:634::-;13016:15;13046:23;13084:12;13111:23;13149:12;13176:13;13203:19;13214:7;13203:10;:19::i;:::-;-1:-1:-1;;;;;13257:21:0;;;;;;:13;:21;;;;;;13001:221;;-1:-1:-1;13001:221:0;;-1:-1:-1;13001:221:0;;-1:-1:-1;13001:221:0;-1:-1:-1;13001:221:0;-1:-1:-1;13001:221:0;-1:-1:-1;13257:34:0;;13001:221;13257:25;:34::i;:::-;-1:-1:-1;;;;;13233:21:0;;;;;;;:13;:21;;;;;;:58;;;;13329:24;;;;;;;:45;;13358:15;13329:28;:45::i;:::-;-1:-1:-1;;;;;13302:24:0;;;;;;:13;:24;;;;;:72;13385:16;13395:5;13385:9;:16::i;:::-;13412:23;13424:4;13430;13412:11;:23::i;:::-;13468:9;-1:-1:-1;;;;;13451:44:0;13460:6;-1:-1:-1;;;;;13451:44:0;;13479:15;13451:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;13451:44:0;;;;;;;;12990:513;;;;;;12869:634;;;:::o;15756:257::-;15854:7;;15807;;;;;4933:13;4581:2;4933;:13;:::i;:::-;4917:29;;:13;:29;:::i;:::-;15872:25;-1:-1:-1;15922:20:0;4933:13;4581:2;4933;:13;:::i;:::-;4917:29;;:13;:29;:::i;:::-;15922:7;;;:11;:20::i;:::-;15912:7;:30;15908:61;;;15952:7;;4933:13;4581:2;4933;:13;:::i;:::-;4917:29;;:13;:29;:::i;:::-;15944:25;;;;;;15756:257;;:::o;15908:61::-;15988:7;;15997;;-1:-1:-1;15756:257:0;-1:-1:-1;15756:257:0:o;3217:223::-;3337:7;3372:12;3365:5;3357:28;;;;-1:-1:-1;;;3357:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3396:9:0;3408:5;3412:1;3408;:5;:::i;13938:615::-;14038:7;14060;14082;14104;14126;14148;14184:23;14209:12;14223:13;14253:40;14265:7;14274:9;;14285:7;;14253:11;:40::i;:::-;14183:110;;;;;;14304:19;14326:10;:8;:10::i;:::-;14304:32;;14348:15;14365:23;14390:12;14419:46;14431:7;14440:4;14446:5;14453:11;14419;:46::i;:::-;14347:118;;-1:-1:-1;14347:118:0;-1:-1:-1;14347:118:0;-1:-1:-1;14516:15:0;;-1:-1:-1;14533:4:0;;-1:-1:-1;14539:5:0;;-1:-1:-1;;;;;13938:615:0;;;;;;;:::o;2443:136::-;2501:7;2528:43;2532:1;2535;2528:43;;;;;;;;;;;;;;;;;:3;:43::i;2255:179::-;2313:7;;2345:5;2349:1;2345;:5;:::i;:::-;2333:17;;2374:1;2369;:6;;2361:46;;;;-1:-1:-1;;;2361:46:0;;15208:2:1;2361:46:0;;;15190:21:1;15247:2;15227:18;;;15220:30;15286:29;15266:18;;;15259:57;15333:18;;2361:46:0;15006:351:1;13512:223:0;13565:19;13587:10;:8;:10::i;:::-;13565:32;-1:-1:-1;13608:13:0;13624:22;:5;13565:32;13624:9;:22::i;:::-;13710:4;13688:28;;;;:13;:28;;;;;;13608:38;;-1:-1:-1;13688:39:0;;13608:38;13688:32;:39::i;:::-;13679:4;13657:28;;;;:13;:28;;;;;:70;-1:-1:-1;;;13512:223:0:o;13744:147::-;13822:7;;:17;;13834:4;13822:11;:17::i;:::-;13812:7;:27;13863:10;;:20;;13878:4;13863:14;:20::i;:::-;13850:10;:33;-1:-1:-1;;13744:147:0:o;14562:469::-;14731:7;;;;14825:30;14851:3;14825:21;:7;14837:8;14825:11;:21::i;:::-;:25;;:30::i;:::-;14810:45;-1:-1:-1;14866:13:0;14882:28;14906:3;14882:19;:7;14894:6;14882:11;:19::i;:28::-;14866:44;-1:-1:-1;14921:23:0;14947:28;14866:44;14947:17;:7;14959:4;14947:11;:17::i;:::-;:21;;:28::i;:::-;14921:54;15011:4;;-1:-1:-1;15017:5:0;;-1:-1:-1;14562:469:0;;-1:-1:-1;;;;;14562:469:0:o;15040:534::-;15234:7;;;;15331:24;:7;15343:11;15331;:24::i;:::-;15313:42;-1:-1:-1;15366:12:0;15381:21;:4;15390:11;15381:8;:21::i;:::-;15366:36;-1:-1:-1;15413:13:0;15429:22;:5;15439:11;15429:9;:22::i;:::-;15413:38;-1:-1:-1;15462:23:0;15488:28;15413:38;15488:17;:7;15500:4;15488:11;:17::i;:28::-;15535:7;;;;-1:-1:-1;15561:4:0;;-1:-1:-1;15040:534:0;;-1:-1:-1;;;;;;;15040:534:0:o;2821:246::-;2879:7;2903:1;2908;2903:6;2899:47;;-1:-1:-1;2933:1:0;2926:8;;2899:47;2956:9;2968:5;2972:1;2968;:5;:::i;:::-;2956:17;-1:-1:-1;3001:1:0;2992:5;2996:1;2956:17;2992:5;:::i;:::-;:10;2984:56;;;;-1:-1:-1;;;2984:56:0;;15564:2:1;2984:56:0;;;15546:21:1;15603:2;15583:18;;;15576:30;15642:34;15622:18;;;15615:62;-1:-1:-1;;;15693:18:1;;;15686:31;15734:19;;2984:56:0;15362:397:1;14:548;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;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2281:388::-;2349:6;2357;2410:2;2398:9;2389:7;2385:23;2381:32;2378:52;;;2426:1;2423;2416:12;2378:52;2465:9;2452:23;2484:31;2509:5;2484:31;:::i;:::-;2534:5;-1:-1:-1;2591:2:1;2576:18;;2563:32;2604:33;2563:32;2604:33;:::i;:::-;2656:7;2646:17;;;2281:388;;;;;:::o;2882:160::-;2947:20;;3003:13;;2996:21;2986:32;;2976:60;;3032:1;3029;3022:12;2976:60;2882:160;;;:::o;3047:180::-;3103:6;3156:2;3144:9;3135:7;3131:23;3127:32;3124:52;;;3172:1;3169;3162:12;3124:52;3195:26;3211:9;3195:26;:::i;3232:247::-;3291:6;3344:2;3332:9;3323:7;3319:23;3315:32;3312:52;;;3360:1;3357;3350:12;3312:52;3399:9;3386:23;3418:31;3443:5;3418:31;:::i;3484:180::-;3543:6;3596:2;3584:9;3575:7;3571:23;3567:32;3564:52;;;3612:1;3609;3602:12;3564:52;-1:-1:-1;3635:23:1;;3484:180;-1:-1:-1;3484:180:1:o;3669:385::-;3755:6;3763;3771;3779;3832:3;3820:9;3811:7;3807:23;3803:33;3800:53;;;3849:1;3846;3839:12;3800:53;-1:-1:-1;;3872:23:1;;;3942:2;3927:18;;3914:32;;-1:-1:-1;3993:2:1;3978:18;;3965:32;;4044:2;4029:18;4016:32;;-1:-1:-1;3669:385:1;-1:-1:-1;3669:385:1:o;4059:689::-;4151:6;4159;4167;4220:2;4208:9;4199:7;4195:23;4191:32;4188:52;;;4236:1;4233;4226:12;4188:52;4276:9;4263:23;4305:18;4346:2;4338:6;4335:14;4332:34;;;4362:1;4359;4352:12;4332:34;4400:6;4389:9;4385:22;4375:32;;4445:7;4438:4;4434:2;4430:13;4426:27;4416:55;;4467:1;4464;4457:12;4416:55;4507:2;4494:16;4533:2;4525:6;4522:14;4519:34;;;4549:1;4546;4539:12;4519:34;4604:7;4597:4;4587:6;4584:1;4580:14;4576:2;4572:23;4568:34;4565:47;4562:67;;;4625:1;4622;4615:12;4562:67;4656:4;4648:13;;;;-1:-1:-1;4680:6:1;-1:-1:-1;4705:37:1;;4721:20;;;-1:-1:-1;4705:37:1;:::i;:::-;4695:47;;4059:689;;;;;:::o;4753:127::-;4814:10;4809:3;4805:20;4802:1;4795:31;4845:4;4842:1;4835:15;4869:4;4866:1;4859:15;4885:422;4974:1;5017:5;4974:1;5031:270;5052:7;5042:8;5039:21;5031:270;;;5111:4;5107:1;5103:6;5099:17;5093:4;5090:27;5087:53;;;5120:18;;:::i;:::-;5170:7;5160:8;5156:22;5153:55;;;5190:16;;;;5153:55;5269:22;;;;5229:15;;;;5031:270;;;5035:3;4885:422;;;;;:::o;5312:806::-;5361:5;5391:8;5381:80;;-1:-1:-1;5432:1:1;5446:5;;5381:80;5480:4;5470:76;;-1:-1:-1;5517:1:1;5531:5;;5470:76;5562:4;5580:1;5575:59;;;;5648:1;5643:130;;;;5555:218;;5575:59;5605:1;5596:10;;5619:5;;;5643:130;5680:3;5670:8;5667:17;5664:43;;;5687:18;;:::i;:::-;-1:-1:-1;;5743:1:1;5729:16;;5758:5;;5555:218;;5857:2;5847:8;5844:16;5838:3;5832:4;5829:13;5825:36;5819:2;5809:8;5806:16;5801:2;5795:4;5792:12;5788:35;5785:77;5782:159;;;-1:-1:-1;5894:19:1;;;5926:5;;5782:159;5973:34;5998:8;5992:4;5973:34;:::i;:::-;6043:6;6039:1;6035:6;6031:19;6022:7;6019:32;6016:58;;;6054:18;;:::i;:::-;6092:20;;5312:806;-1:-1:-1;;;5312:806:1:o;6123:140::-;6181:5;6210:47;6251:4;6241:8;6237:19;6231:4;6210:47;:::i;6268:168::-;6341:9;;;6372;;6389:15;;;6383:22;;6369:37;6359:71;;6410:18;;:::i;6441:356::-;6643:2;6625:21;;;6662:18;;;6655:30;6721:34;6716:2;6701:18;;6694:62;6788:2;6773:18;;6441:356::o;8841:127::-;8902:10;8897:3;8893:20;8890:1;8883:31;8933:4;8930:1;8923:15;8957:4;8954:1;8947:15;8973:135;9012:3;9033:17;;;9030:43;;9053:18;;:::i;:::-;-1:-1:-1;9100:1:1;9089:13;;8973:135::o;12333:125::-;12398:9;;;12419:10;;;12416:36;;;12432:18;;:::i;12867:128::-;12934:9;;;12955:11;;;12952:37;;;12969:18;;:::i;13543:251::-;13613:6;13666:2;13654:9;13645:7;13641:23;13637:32;13634:52;;;13682:1;13679;13672:12;13634:52;13714:9;13708:16;13733:31;13758:5;13733:31;:::i;13799:980::-;14061:4;14109:3;14098:9;14094:19;14140:6;14129:9;14122:25;14166:2;14204:6;14199:2;14188:9;14184:18;14177:34;14247:3;14242:2;14231:9;14227:18;14220:31;14271:6;14306;14300:13;14337:6;14329;14322:22;14375:3;14364:9;14360:19;14353:26;;14414:2;14406:6;14402:15;14388:29;;14435:1;14445:195;14459:6;14456:1;14453:13;14445:195;;;14524:13;;-1:-1:-1;;;;;14520:39:1;14508:52;;14615:15;;;;14580:12;;;;14556:1;14474:9;14445:195;;;-1:-1:-1;;;;;;;14696:32:1;;;;14691:2;14676:18;;14669:60;-1:-1:-1;;;14760:3:1;14745:19;14738:35;14657:3;13799:980;-1:-1:-1;;;13799:980:1:o;14784:217::-;14824:1;14850;14840:132;;14894:10;14889:3;14885:20;14882:1;14875:31;14929:4;14926:1;14919:15;14957:4;14954:1;14947:15;14840:132;-1:-1:-1;14986:9:1;;14784:217::o

Swarm Source

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