ETH Price: $3,274.76 (+0.92%)

Token

Lunatics (LunaT)
 

Overview

Max Total Supply

100,000,000,000 LunaT

Holders

132

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,941,071.575684891 LunaT

Value
$0.00
0xec2f96f3ea6d7c5fc30fad378a7f06b30f668d90
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x7F7056a6...ee127B3C8
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
LUNATICS

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : LUNATICS.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.8.15;

// SAFEMATH LIBRARY
// This version of SafeMath should only be used with Solidity 0.8 or later

library SafeMath {
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address _owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

abstract contract Auth {
    address internal owner;
    mapping(address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "Not owner");
        _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "Not authorized");
        _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

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

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

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

interface IDividendDistributor {
    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external;

    function setShare(address shareholder, uint256 amount) external;

    function deposit() external payable;

    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

     IERC20 LUNC_WORMHOLE = IERC20(0xbd31EA8212119f94A611FA969881CBa3EA06Fa3d); //mainnet
     address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; //mainnet

    
    IDEXRouter router;

    address[] shareholders;
    mapping(address => uint256) shareholderIndexes;
    mapping(address => uint256) shareholderClaims;

    mapping(address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10**36;

    uint256 public minPeriod = 1 hours;
    uint256 public minDistribution = 1 * (10**18);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token);
        _;
    }

    constructor(address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _token = msg.sender;
    }

    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount)
        external
        override
        onlyToken
    {
        if (shares[shareholder].amount > 0) {
            distributeDividend(shareholder);
        }

        if (amount > 0 && shares[shareholder].amount == 0) {
            addShareholder(shareholder);
        } else if (amount == 0 && shares[shareholder].amount > 0) {
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(
            shares[shareholder].amount
        );
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = LUNC_WORMHOLE.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WETH;
        path[1] = address(LUNC_WORMHOLE);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: msg.value
        }(0, path, address(this), block.timestamp);

        uint256 amount = LUNC_WORMHOLE.balanceOf(address(this)).sub(
            balanceBefore
        );

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(
            dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)
        );
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if (shareholderCount == 0) {
            return;
        }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }

            if (shouldDistribute(shareholders[currentIndex])) {
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(address shareholder)
        internal
        view
        returns (bool)
    {
        return
            shareholderClaims[shareholder] + minPeriod < block.timestamp &&
            getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if (shares[shareholder].amount == 0) {
            return;
        }

        uint256 amount = getUnpaidEarnings(shareholder);
        if (amount > 0) {
            totalDistributed = totalDistributed.add(amount);
            LUNC_WORMHOLE.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder]
                .totalRealised
                .add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(
                shares[shareholder].amount
            );
        }
    }

    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder)
        public
        view
        returns (uint256)
    {
        if (shares[shareholder].amount == 0) {
            return 0;
        }

        uint256 shareholderTotalDividends = getCumulativeDividends(
            shares[shareholder].amount
        );
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if (shareholderTotalDividends <= shareholderTotalExcluded) {
            return 0;
        }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share)
        internal
        view
        returns (uint256)
    {
        return
            share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[
            shareholders.length - 1
        ];
        shareholderIndexes[
            shareholders[shareholders.length - 1]
        ] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract LUNATICS is IERC20, Auth {
    using SafeMath for uint256;

    uint256 public constant MASK = type(uint128).max;
    address LUNC_WORMHOLE = 0xbd31EA8212119f94A611FA969881CBa3EA06Fa3d; //mainnet
    address public WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; //mainnet

   
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Lunatics";
    string constant _symbol = "LunaT";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_00_000_000_000 * (10**_decimals);

    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;

    mapping(address => bool) public isFeeExempt;

    mapping(address => bool) public isDividendExempt;

    uint256 liquidityFee = 100;
    uint256 reflectionFee = 300;
    uint256 marketingFee = 300;
    uint256 burnFee = 100;
    uint256 totalFee = 800;
    uint256 feeDenominator = 10000;

    address public marketingFeeReceiver;

    IDEXRouter public router;
    address public pair;

    bool public tradingEnabled = false;

    DividendDistributor distributor;
    address public distributorAddress;

    uint256 distributorGas = 500000;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 2000; // 0.005%
    bool inSwap;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = _totalSupply;
        WETH = router.WETH();
        distributor = new DividendDistributor(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        distributorAddress = address(distributor);

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[DEAD] = true;
        isFeeExempt[ZERO] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isFeeExempt[ZERO] = true;

        marketingFeeReceiver = 0x5bc9cF0933adFeFC9F5ea55E294c4Cd580b97Dfd;

        approve(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, _totalSupply);
        approve(address(pair), _totalSupply);
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

    function getOwner() external view override returns (address) {
        return owner;
    }

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

    function allowance(address holder, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowances[holder][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != _totalSupply) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {

        if (!isOwner(sender)) {
            require(tradingEnabled, "Trading is disabled");
        }
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        if(sender != pair && recipient != pair)
        {
            return _basicTransfer(sender, recipient, amount);
        }
      

        if (shouldSwapBack()) {
            swapBack();
        }

        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
      
        uint256 amountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, amount)
            : amount;

        _balances[recipient] = _balances[recipient].add(amountReceived);

        if (!isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }
        if (!isDividendExempt[recipient]) {
            try
                distributor.setShare(recipient, _balances[recipient])
            {} catch {}
        }

        try distributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

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

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isFeeExempt[sender] || isFeeExempt[recipient]){return false;}
        else{return true;}
        
    }

    function takeFee(address sender, uint256 amount)
        internal
        returns (uint256)
    {
        uint256 feeAmount = amount.mul(totalFee - burnFee).div(feeDenominator);
        uint256 burnFeeAmount = amount.mul(burnFee).div(feeDenominator);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        _balances[DEAD] = _balances[DEAD].add(burnFeeAmount);
        emit Transfer(sender, DEAD, burnFeeAmount);

        return amount.sub(feeAmount + burnFeeAmount);
    }

    function setIsFeeExempt(address wallet, bool value) external authorized {
        isFeeExempt[wallet] = value;
    }

    function shouldSwapBack() internal view returns (bool) {
        return
            msg.sender != pair &&
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 amountToLiquify = swapThreshold
            .mul(liquidityFee)
            .div(totalFee)
            .div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH
            .mul(liquidityFee)
            .div(totalETHFee)
            .div(2);
        uint256 amountETHReflection = amountETH.mul(reflectionFee).div(
            totalETHFee
        );
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(
            totalETHFee
        );

        try distributor.deposit{value: amountETHReflection}() {} catch {}
        payable(marketingFeeReceiver).transfer(amountETHMarketing);

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                owner,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    // Trading once enabled, can't be disabled
    function enableTrading() external onlyOwner {
        tradingEnabled = true;
    }

    function setIsDividendExempt(address holder, bool exempt)
        external
        authorized
    {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if (exempt) {
            distributor.setShare(holder, 0);
        } else {
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function setFees(
        uint256 _liquidityFee,
        uint256 _reflectionFee,
        uint256 _marketingFee,
        uint256 _burnFee
    ) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(
            burnFee
        );
        require(totalFee <= 2500, "Fees must be less than 25%");
    }

    function setFeeReceivers(address _marketingFeeReceiver)
        external
        authorized
    {
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount)
        external
        authorized
    {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000, "Inappropriate gas amount");
        distributorGas = gas;
    }

    function clearStuckBalance() external authorized {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH);
    }

    function clearStuckTokens(address _tokenContract) public authorized {
        require(
            _tokenContract != address(this),
            "Cannot withdraw native token"
        );
        IERC20 tokenContract = IERC20(_tokenContract);
        tokenContract.transfer(
            msg.sender,
            tokenContract.balanceOf(address(this))
        );
    }

    event AutoLiquify(uint256 amountETH, uint256 amount);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"MASK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"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":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811673bd31ea8212119f94a611fa969881cba3ea06fa3d179091556003805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556200005a6009600a62000653565b6200006b9064174876e8006200066b565b60048190556064600981905561012c600a819055600b55600c55610320600d55612710600e556011805460ff60a01b191690556207a1206014556015805460ff19166001179055620000c1906107d0906200068d565b601655348015620000d157600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560108054737a250d5630b4cf539739df2c5dacb4c659f2488d931683179055825163c45a015560e01b81529251919263c45a015592600480830193928290030181865afa15801562000158573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017e9190620006b0565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015620001d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f69190620006b0565b601180546001600160a01b0319166001600160a01b039283161790556004805430600090815260066020908152604080832060108054881685529083529281902093909355905482516315ab88c960e31b8152925194169363ad5c464893838101938290030181865afa15801562000272573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002989190620006b0565b600380546001600160a01b0319166001600160a01b0392909216919091179055604051737a250d5630b4cf539739df2c5dacb4c659f2488d90620002dc9062000532565b6001600160a01b039091168152602001604051809103906000f08015801562000309573d6000803e3d6000fd5b50601280546001600160a01b039283166001600160a01b03199182168117909255601380548216909217909155336000908152600760208181526040808420805460ff1990811660019081179092553080875283872080548316841790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548316841790557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df80548316841781556011549099168752600885528387208054831684179055865291852080548316821790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd09334299805483168217905593805291905283541617909155600f8054909116735bc9cf0933adfefc9f5ea55e294c4cd580b97dfd1790556004546200045690737a250d5630b4cf539739df2c5dacb4c659f2488d90620004c4565b5060115460045462000472916001600160a01b031690620004c4565b5060045433600081815260056020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620006db565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620005209086815260200190565b60405180910390a35060015b92915050565b610e31806200247883390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005975781600019048211156200057b576200057b62000540565b808516156200058957918102915b93841c93908002906200055b565b509250929050565b600082620005b0575060016200052c565b81620005bf575060006200052c565b8160018114620005d85760028114620005e35762000603565b60019150506200052c565b60ff841115620005f757620005f762000540565b50506001821b6200052c565b5060208310610133831016604e8410600b841016171562000628575081810a6200052c565b62000634838362000556565b80600019048211156200064b576200064b62000540565b029392505050565b60006200066460ff8416836200059f565b9392505050565b600081600019048311821515161562000688576200068862000540565b500290565b600082620006ab57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620006c357600080fd5b81516001600160a01b03811681146200066457600080fd5b611d8d80620006eb6000396000f3fe60806040526004361061021e5760003560e01c8063893d20e811610123578063dd62ed3e116100ab578063f0b37c041161006f578063f0b37c04146106c4578063f2fde38b146106e4578063f708a64f14610704578063f887ea4014610724578063fe9fbb801461074457600080fd5b8063dd62ed3e146105fa578063df20fd4914610640578063e01bb68814610660578063e91f214e14610680578063e96fada2146106a457600080fd5b8063a51af4c5116100f2578063a51af4c51461055a578063a8aa1b311461057a578063a9059cbb1461059a578063ad5c4648146105ba578063b6a5d7de146105da57600080fd5b8063893d20e8146104c55780638a8c523c146104f757806395d89b411461050c5780639d1944f51461053a57600080fd5b8063364333f4116101a6578063571ac8b011610175578063571ac8b014610415578063658d4b7f146104355780636ddd1713146104555780636fcba3771461046f57806370a082311461048f57600080fd5b8063364333f41461037f5780633f4218e0146103945780634355855a146103c45780634ada218b146103f457600080fd5b806323b872dd116101ed57806323b872dd146102d25780632d48e896146102f25780632f54bf6e14610314578063313ce56714610343578063346cc7be1461035f57600080fd5b80630445b6671461022a57806306fdde0314610253578063095ea7b31461028d57806318160ddd146102bd57600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024060165481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b506040805180820190915260088152674c756e617469637360c01b60208201525b60405161024a9190611984565b34801561029957600080fd5b506102ad6102a83660046119f1565b610764565b604051901515815260200161024a565b3480156102c957600080fd5b50600454610240565b3480156102de57600080fd5b506102ad6102ed366004611a1d565b6107d1565b3480156102fe57600080fd5b5061031261030d366004611a5e565b610895565b005b34801561032057600080fd5b506102ad61032f366004611a80565b6000546001600160a01b0391821691161490565b34801561034f57600080fd5b506040516009815260200161024a565b34801561036b57600080fd5b5061031261037a366004611a80565b61092d565b34801561038b57600080fd5b50610312610a92565b3480156103a057600080fd5b506102ad6103af366004611a80565b60076020526000908152604090205460ff1681565b3480156103d057600080fd5b506102ad6103df366004611a80565b60086020526000908152604090205460ff1681565b34801561040057600080fd5b506011546102ad90600160a01b900460ff1681565b34801561042157600080fd5b506102ad610430366004611a80565b610aea565b34801561044157600080fd5b50610312610450366004611aab565b610af8565b34801561046157600080fd5b506015546102ad9060ff1681565b34801561047b57600080fd5b5061031261048a366004611ae4565b610b48565b34801561049b57600080fd5b506102406104aa366004611a80565b6001600160a01b031660009081526005602052604090205490565b3480156104d157600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161024a565b34801561050357600080fd5b50610312610bf3565b34801561051857600080fd5b50604080518082019091526005815264131d5b985560da1b6020820152610280565b34801561054657600080fd5b50610312610555366004611b16565b610c32565b34801561056657600080fd5b506013546104df906001600160a01b031681565b34801561058657600080fd5b506011546104df906001600160a01b031681565b3480156105a657600080fd5b506102ad6105b53660046119f1565b610cae565b3480156105c657600080fd5b506003546104df906001600160a01b031681565b3480156105e657600080fd5b506103126105f5366004611a80565b610cbb565b34801561060657600080fd5b50610240610615366004611b2f565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561064c57600080fd5b5061031261065b366004611b5d565b610d0c565b34801561066c57600080fd5b5061031261067b366004611a80565b610d48565b34801561068c57600080fd5b506102406fffffffffffffffffffffffffffffffff81565b3480156106b057600080fd5b50600f546104df906001600160a01b031681565b3480156106d057600080fd5b506103126106df366004611a80565b610d8f565b3480156106f057600080fd5b506103126106ff366004611a80565b610dda565b34801561071057600080fd5b5061031261071f366004611aab565b610e70565b34801561073057600080fd5b506010546104df906001600160a01b031681565b34801561075057600080fd5b506102ad61075f366004611a80565b610f74565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107bf9086815260200190565b60405180910390a35060015b92915050565b6004546001600160a01b0384166000908152600660209081526040808320338452909152812054909114610880576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260068252838120338252909152919091205461085b918490610f92565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b61088b848484610fbe565b90505b9392505050565b61089e33610f74565b6108c35760405162461bcd60e51b81526004016108ba90611b7b565b60405180910390fd5b6012546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801561091157600080fd5b505af1158015610925573d6000803e3d6000fd5b505050505050565b61093633610f74565b6109525760405162461bcd60e51b81526004016108ba90611b7b565b306001600160a01b038216036109aa5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e0000000060448201526064016108ba565b6040516370a0823160e01b815230600482015281906001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156109fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1e9190611ba3565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610a69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8d9190611bbc565b505050565b610a9b33610f74565b610ab75760405162461bcd60e51b81526004016108ba90611b7b565b6040514790339082156108fc029083906000818181858888f19350505050158015610ae6573d6000803e3d6000fd5b5050565b60006107cb82600454610764565b610b0133610f74565b610b1d5760405162461bcd60e51b81526004016108ba90611b7b565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b610b5133610f74565b610b6d5760405162461bcd60e51b81526004016108ba90611b7b565b6009849055600a839055600b829055600c819055610b9781610b9184818888611322565b90611322565b600d8190556109c41015610bed5760405162461bcd60e51b815260206004820152601a60248201527f46656573206d757374206265206c657373207468616e2032352500000000000060448201526064016108ba565b50505050565b6000546001600160a01b03163314610c1d5760405162461bcd60e51b81526004016108ba90611bd9565b6011805460ff60a01b1916600160a01b179055565b610c3b33610f74565b610c575760405162461bcd60e51b81526004016108ba90611b7b565b620b71b08110610ca95760405162461bcd60e51b815260206004820152601860248201527f496e617070726f7072696174652067617320616d6f756e74000000000000000060448201526064016108ba565b601455565b600061088e338484610fbe565b6000546001600160a01b03163314610ce55760405162461bcd60e51b81526004016108ba90611bd9565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b610d1533610f74565b610d315760405162461bcd60e51b81526004016108ba90611b7b565b6015805460ff191692151592909217909155601655565b610d5133610f74565b610d6d5760405162461bcd60e51b81526004016108ba90611b7b565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610db95760405162461bcd60e51b81526004016108ba90611bd9565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314610e045760405162461bcd60e51b81526004016108ba90611bd9565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610e7933610f74565b610e955760405162461bcd60e51b81526004016108ba90611b7b565b6001600160a01b0382163014801590610ebc57506011546001600160a01b03838116911614155b610ec557600080fd5b6001600160a01b0382166000908152600860205260409020805460ff19168215801591909117909155610f2b57601254604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044016108f7565b6012546001600160a01b0383811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044016108f7565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115610fb65760405162461bcd60e51b81526004016108ba9190611984565b505050900390565b600080546001600160a01b0385811691161461102357601154600160a01b900460ff166110235760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b60448201526064016108ba565b60175460ff16156110405761103984848461132e565b905061088e565b6011546001600160a01b0385811691161480159061106c57506011546001600160a01b03848116911614155b1561107c5761103984848461132e565b611084611402565b1561109157611091611453565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600590915291909120546110e3918490610f92565b6001600160a01b03851660009081526005602052604081209190915561110985856117ad565b611113578261111d565b61111d8584611801565b6001600160a01b0385166000908152600560205260409020549091506111439082611322565b6001600160a01b0380861660009081526005602090815260408083209490945591881681526008909152205460ff166111e7576012546001600160a01b0386811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156111d457600080fd5b505af19250505080156111e5575060015b505b6001600160a01b03841660009081526008602052604090205460ff16611278576012546001600160a01b0385811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561126557600080fd5b505af1925050508015611276575060015b505b6012546014546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916112b09160040190815260200190565b600060405180830381600087803b1580156112ca57600080fd5b505af19250505080156112db575060015b50836001600160a01b0316856001600160a01b0316600080516020611d388339815191528360405161130f91815260200190565b60405180910390a3506001949350505050565b600061088e8284611c12565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260059091529182205461137f918490610f92565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546113ae9083611322565b6001600160a01b038085166000818152600560205260409081902093909355915190861690600080516020611d38833981519152906113f09086815260200190565b60405180910390a35060019392505050565b6011546000906001600160a01b03163314801590611423575060175460ff16155b8015611431575060155460ff165b801561144e57506016543060009081526005602052604090205410155b905090565b6017805460ff19166001179055600d54600954601654600092611486926002926114809291839190611960565b9061196c565b9050600061149f8260165461197890919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106114d9576114d9611c2a565b6001600160a01b03928316602091820292909201015260035482519116908290600190811061150a5761150a611c2a565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b81524792919091169063791ac94790611554908690600090879030904290600401611c40565b600060405180830381600087803b15801561156e57600080fd5b505af1158015611582573d6000803e3d6000fd5b50505050600061159b824761197890919063ffffffff16565b905060006115c16115b8600260095461196c90919063ffffffff16565b600d5490611978565b905060006115e36002611480846114806009548861196090919063ffffffff16565b9050600061160083611480600a548761196090919063ffffffff16565b9050600061161d84611480600b548861196090919063ffffffff16565b9050601260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561166f57600080fd5b505af193505050508015611681575060015b50600f546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156116bc573d6000803e3d6000fd5b508815611798576010546000805460405163f305d71960e01b8152306004820152602481018d90526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af1158015611736573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061175b9190611cb1565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506017805460ff1916905550505050505050565b6001600160a01b03821660009081526007602052604081205460ff16806117ec57506001600160a01b03821660009081526007602052604090205460ff165b156117f9575060006107cb565b5060016107cb565b600080611824600e54611480600c54600d5461181d9190611cdf565b8690611960565b90506000611843600e54611480600c548761196090919063ffffffff16565b306000908152600560205260409020549091506118609083611322565b30600081815260056020526040908190209290925590516001600160a01b03871690600080516020611d388339815191529061189f9086815260200190565b60405180910390a361dead60005260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba546118de9082611322565b61dead600081905260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba919091556040516001600160a01b03871690600080516020611d388339815191529061193b9085815260200190565b60405180910390a36119576119508284611c12565b8590611978565b95945050505050565b600061088e8284611cf6565b600061088e8284611d15565b600061088e8284611cdf565b600060208083528351808285015260005b818110156119b157858101830151858201604001528201611995565b818111156119c3576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146119ee57600080fd5b50565b60008060408385031215611a0457600080fd5b8235611a0f816119d9565b946020939093013593505050565b600080600060608486031215611a3257600080fd5b8335611a3d816119d9565b92506020840135611a4d816119d9565b929592945050506040919091013590565b60008060408385031215611a7157600080fd5b50508035926020909101359150565b600060208284031215611a9257600080fd5b813561088e816119d9565b80151581146119ee57600080fd5b60008060408385031215611abe57600080fd5b8235611ac9816119d9565b91506020830135611ad981611a9d565b809150509250929050565b60008060008060808587031215611afa57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215611b2857600080fd5b5035919050565b60008060408385031215611b4257600080fd5b8235611b4d816119d9565b91506020830135611ad9816119d9565b60008060408385031215611b7057600080fd5b8235611a0f81611a9d565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600060208284031215611bb557600080fd5b5051919050565b600060208284031215611bce57600080fd5b815161088e81611a9d565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611c2557611c25611bfc565b500190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c905784516001600160a01b031683529383019391830191600101611c6b565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611cc657600080fd5b8351925060208401519150604084015190509250925092565b600082821015611cf157611cf1611bfc565b500390565b6000816000190483118215151615611d1057611d10611bfc565b500290565b600082611d3257634e487b7160e01b600052601260045260246000fd5b50049056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b60a622e1c3b4f9cbd8a51c22c68719c398d1a6d2a3b0b5524550492262afaeb64736f6c634300080f00336080604052600180546001600160a01b031990811673bd31ea8212119f94a611fa969881cba3ea06fa3d179091556002805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556ec097ce7bc90715b34b9f1000000000600c55610e10600d55670de0b6b3a7640000600e5534801561007d57600080fd5b50604051610e31380380610e3183398101604081905261009c916100f6565b6001600160a01b0381166100c457737a250d5630b4cf539739df2c5dacb4c659f2488d6100c6565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610126565b60006020828403121561010857600080fd5b81516001600160a01b038116811461011f57600080fd5b9392505050565b610cfc806101356000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610224578063f0fc6bca1461023a578063ffb2c4791461024f578063ffd49c841461026f57600080fd5b8063ce7c2ac2146101af578063d0e30db014610206578063e2d2e2191461020e57600080fd5b80632d48e896116100bb5780632d48e8961461014d5780633a98ef391461016d5780634fab0ae814610183578063997664d71461019957600080fd5b806311ce023d146100e257806314b6ca961461010b57806328fd31981461012d575b600080fd5b3480156100ee57600080fd5b506100f8600c5481565b6040519081526020015b60405180910390f35b34801561011757600080fd5b5061012b610126366004610ad6565b610285565b005b34801561013957600080fd5b506100f8610148366004610b00565b6103fd565b34801561015957600080fd5b5061012b610168366004610b1b565b610488565b34801561017957600080fd5b506100f860085481565b34801561018f57600080fd5b506100f8600e5481565b3480156101a557600080fd5b506100f860095481565b3480156101bb57600080fd5b506101eb6101ca366004610b00565b60076020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610102565b61012b6104aa565b34801561021a57600080fd5b506100f8600b5481565b34801561023057600080fd5b506100f8600a5481565b34801561024657600080fd5b5061012b6106d9565b34801561025b57600080fd5b5061012b61026a366004610b3d565b6106e4565b34801561027b57600080fd5b506100f8600d5481565b6000546001600160a01b0316331461029c57600080fd5b6001600160a01b038216600090815260076020526040902054156102c3576102c3826107e8565b6000811180156102e957506001600160a01b038216600090815260076020526040902054155b1561034f57600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055610382565b8015801561037457506001600160a01b03821660009081526007602052604090205415155b156103825761038282610906565b6001600160a01b0382166000908152600760205260409020546008546103b39183916103ad91610a1b565b90610a2e565b6008556001600160a01b03821660009081526007602052604090208190556103da81610a3a565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b038116600090815260076020526040812054810361042457506000919050565b6001600160a01b03821660009081526007602052604081205461044690610a3a565b6001600160a01b038416600090815260076020526040902060010154909150808211610476575060009392505050565b6104808282610a1b565b949350505050565b6000546001600160a01b0316331461049f57600080fd5b600d91909155600e55565b6000546001600160a01b031633146104c157600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561050a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052e9190610b56565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061057457610574610b6f565b6001600160a01b03928316602091820292909201015260018054835192169183919081106105a4576105a4610b6f565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de959034906105ea90600090869030904290600401610b85565b6000604051808303818588803b15801561060357600080fd5b505af1158015610617573d6000803e3d6000fd5b50506001546040516370a0823160e01b81523060048201526000945061069793508692506001600160a01b03909116906370a0823190602401602060405180830381865afa15801561066d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106919190610b56565b90610a1b565b6009549091506106a79082610a2e565b600955600854600c546106d1916106c8916106c29085610a5d565b90610a69565b600b5490610a2e565b600b55505050565b6106e2336107e8565b565b6000546001600160a01b031633146106fb57600080fd5b600454600081900361070b575050565b6000805a905060005b848310801561072257508381105b156107e15783600f5410610736576000600f555b6107686004600f548154811061074e5761074e610b6f565b6000918252602090912001546001600160a01b0316610a75565b1561079f5761079f6004600f548154811061078557610785610b6f565b6000918252602090912001546001600160a01b03166107e8565b6107b46107ad5a8490610a1b565b8490610a2e565b92505a600f805491935060006107c983610c05565b919050555080806107d990610c05565b915050610714565b5050505050565b6001600160a01b038116600090815260076020526040812054900361080a5750565b6000610815826103fd565b9050801561090257600a5461082a9082610a2e565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a49190610c1e565b506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546108d89082610a2e565b6001600160a01b03831660009081526007602052604090206002810191909155546103da90610a3a565b5050565b6004805461091690600190610c40565b8154811061092657610926610b6f565b60009182526020808320909101546001600160a01b038481168452600590925260409092205460048054929093169291811061096457610964610b6f565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916109b090600190610c40565b815481106109c0576109c0610b6f565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560048054806109f6576109f6610c57565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610a278284610c40565b9392505050565b6000610a278284610c6d565b6000610a57600c546106c2600b5485610a5d90919063ffffffff16565b92915050565b6000610a278284610c85565b6000610a278284610ca4565b600d546001600160a01b03821660009081526006602052604081205490914291610a9f9190610c6d565b108015610a575750600e54610ab3836103fd565b1192915050565b80356001600160a01b0381168114610ad157600080fd5b919050565b60008060408385031215610ae957600080fd5b610af283610aba565b946020939093013593505050565b600060208284031215610b1257600080fd5b610a2782610aba565b60008060408385031215610b2e57600080fd5b50508035926020909101359150565b600060208284031215610b4f57600080fd5b5035919050565b600060208284031215610b6857600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610bcf5784516001600160a01b031683529383019391830191600101610baa565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b600060018201610c1757610c17610bef565b5060010190565b600060208284031215610c3057600080fd5b81518015158114610a2757600080fd5b600082821015610c5257610c52610bef565b500390565b634e487b7160e01b600052603160045260246000fd5b60008219821115610c8057610c80610bef565b500190565b6000816000190483118215151615610c9f57610c9f610bef565b500290565b600082610cc157634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220198936138caa33428bfe915924b10b426f4f46c64f9255751ce73beee8f71e7664736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c8063893d20e811610123578063dd62ed3e116100ab578063f0b37c041161006f578063f0b37c04146106c4578063f2fde38b146106e4578063f708a64f14610704578063f887ea4014610724578063fe9fbb801461074457600080fd5b8063dd62ed3e146105fa578063df20fd4914610640578063e01bb68814610660578063e91f214e14610680578063e96fada2146106a457600080fd5b8063a51af4c5116100f2578063a51af4c51461055a578063a8aa1b311461057a578063a9059cbb1461059a578063ad5c4648146105ba578063b6a5d7de146105da57600080fd5b8063893d20e8146104c55780638a8c523c146104f757806395d89b411461050c5780639d1944f51461053a57600080fd5b8063364333f4116101a6578063571ac8b011610175578063571ac8b014610415578063658d4b7f146104355780636ddd1713146104555780636fcba3771461046f57806370a082311461048f57600080fd5b8063364333f41461037f5780633f4218e0146103945780634355855a146103c45780634ada218b146103f457600080fd5b806323b872dd116101ed57806323b872dd146102d25780632d48e896146102f25780632f54bf6e14610314578063313ce56714610343578063346cc7be1461035f57600080fd5b80630445b6671461022a57806306fdde0314610253578063095ea7b31461028d57806318160ddd146102bd57600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024060165481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b506040805180820190915260088152674c756e617469637360c01b60208201525b60405161024a9190611984565b34801561029957600080fd5b506102ad6102a83660046119f1565b610764565b604051901515815260200161024a565b3480156102c957600080fd5b50600454610240565b3480156102de57600080fd5b506102ad6102ed366004611a1d565b6107d1565b3480156102fe57600080fd5b5061031261030d366004611a5e565b610895565b005b34801561032057600080fd5b506102ad61032f366004611a80565b6000546001600160a01b0391821691161490565b34801561034f57600080fd5b506040516009815260200161024a565b34801561036b57600080fd5b5061031261037a366004611a80565b61092d565b34801561038b57600080fd5b50610312610a92565b3480156103a057600080fd5b506102ad6103af366004611a80565b60076020526000908152604090205460ff1681565b3480156103d057600080fd5b506102ad6103df366004611a80565b60086020526000908152604090205460ff1681565b34801561040057600080fd5b506011546102ad90600160a01b900460ff1681565b34801561042157600080fd5b506102ad610430366004611a80565b610aea565b34801561044157600080fd5b50610312610450366004611aab565b610af8565b34801561046157600080fd5b506015546102ad9060ff1681565b34801561047b57600080fd5b5061031261048a366004611ae4565b610b48565b34801561049b57600080fd5b506102406104aa366004611a80565b6001600160a01b031660009081526005602052604090205490565b3480156104d157600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161024a565b34801561050357600080fd5b50610312610bf3565b34801561051857600080fd5b50604080518082019091526005815264131d5b985560da1b6020820152610280565b34801561054657600080fd5b50610312610555366004611b16565b610c32565b34801561056657600080fd5b506013546104df906001600160a01b031681565b34801561058657600080fd5b506011546104df906001600160a01b031681565b3480156105a657600080fd5b506102ad6105b53660046119f1565b610cae565b3480156105c657600080fd5b506003546104df906001600160a01b031681565b3480156105e657600080fd5b506103126105f5366004611a80565b610cbb565b34801561060657600080fd5b50610240610615366004611b2f565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561064c57600080fd5b5061031261065b366004611b5d565b610d0c565b34801561066c57600080fd5b5061031261067b366004611a80565b610d48565b34801561068c57600080fd5b506102406fffffffffffffffffffffffffffffffff81565b3480156106b057600080fd5b50600f546104df906001600160a01b031681565b3480156106d057600080fd5b506103126106df366004611a80565b610d8f565b3480156106f057600080fd5b506103126106ff366004611a80565b610dda565b34801561071057600080fd5b5061031261071f366004611aab565b610e70565b34801561073057600080fd5b506010546104df906001600160a01b031681565b34801561075057600080fd5b506102ad61075f366004611a80565b610f74565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107bf9086815260200190565b60405180910390a35060015b92915050565b6004546001600160a01b0384166000908152600660209081526040808320338452909152812054909114610880576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260068252838120338252909152919091205461085b918490610f92565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b61088b848484610fbe565b90505b9392505050565b61089e33610f74565b6108c35760405162461bcd60e51b81526004016108ba90611b7b565b60405180910390fd5b6012546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801561091157600080fd5b505af1158015610925573d6000803e3d6000fd5b505050505050565b61093633610f74565b6109525760405162461bcd60e51b81526004016108ba90611b7b565b306001600160a01b038216036109aa5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e0000000060448201526064016108ba565b6040516370a0823160e01b815230600482015281906001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156109fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1e9190611ba3565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610a69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8d9190611bbc565b505050565b610a9b33610f74565b610ab75760405162461bcd60e51b81526004016108ba90611b7b565b6040514790339082156108fc029083906000818181858888f19350505050158015610ae6573d6000803e3d6000fd5b5050565b60006107cb82600454610764565b610b0133610f74565b610b1d5760405162461bcd60e51b81526004016108ba90611b7b565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b610b5133610f74565b610b6d5760405162461bcd60e51b81526004016108ba90611b7b565b6009849055600a839055600b829055600c819055610b9781610b9184818888611322565b90611322565b600d8190556109c41015610bed5760405162461bcd60e51b815260206004820152601a60248201527f46656573206d757374206265206c657373207468616e2032352500000000000060448201526064016108ba565b50505050565b6000546001600160a01b03163314610c1d5760405162461bcd60e51b81526004016108ba90611bd9565b6011805460ff60a01b1916600160a01b179055565b610c3b33610f74565b610c575760405162461bcd60e51b81526004016108ba90611b7b565b620b71b08110610ca95760405162461bcd60e51b815260206004820152601860248201527f496e617070726f7072696174652067617320616d6f756e74000000000000000060448201526064016108ba565b601455565b600061088e338484610fbe565b6000546001600160a01b03163314610ce55760405162461bcd60e51b81526004016108ba90611bd9565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b610d1533610f74565b610d315760405162461bcd60e51b81526004016108ba90611b7b565b6015805460ff191692151592909217909155601655565b610d5133610f74565b610d6d5760405162461bcd60e51b81526004016108ba90611b7b565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610db95760405162461bcd60e51b81526004016108ba90611bd9565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314610e045760405162461bcd60e51b81526004016108ba90611bd9565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610e7933610f74565b610e955760405162461bcd60e51b81526004016108ba90611b7b565b6001600160a01b0382163014801590610ebc57506011546001600160a01b03838116911614155b610ec557600080fd5b6001600160a01b0382166000908152600860205260409020805460ff19168215801591909117909155610f2b57601254604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044016108f7565b6012546001600160a01b0383811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044016108f7565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115610fb65760405162461bcd60e51b81526004016108ba9190611984565b505050900390565b600080546001600160a01b0385811691161461102357601154600160a01b900460ff166110235760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b60448201526064016108ba565b60175460ff16156110405761103984848461132e565b905061088e565b6011546001600160a01b0385811691161480159061106c57506011546001600160a01b03848116911614155b1561107c5761103984848461132e565b611084611402565b1561109157611091611453565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600590915291909120546110e3918490610f92565b6001600160a01b03851660009081526005602052604081209190915561110985856117ad565b611113578261111d565b61111d8584611801565b6001600160a01b0385166000908152600560205260409020549091506111439082611322565b6001600160a01b0380861660009081526005602090815260408083209490945591881681526008909152205460ff166111e7576012546001600160a01b0386811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156111d457600080fd5b505af19250505080156111e5575060015b505b6001600160a01b03841660009081526008602052604090205460ff16611278576012546001600160a01b0385811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561126557600080fd5b505af1925050508015611276575060015b505b6012546014546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916112b09160040190815260200190565b600060405180830381600087803b1580156112ca57600080fd5b505af19250505080156112db575060015b50836001600160a01b0316856001600160a01b0316600080516020611d388339815191528360405161130f91815260200190565b60405180910390a3506001949350505050565b600061088e8284611c12565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260059091529182205461137f918490610f92565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546113ae9083611322565b6001600160a01b038085166000818152600560205260409081902093909355915190861690600080516020611d38833981519152906113f09086815260200190565b60405180910390a35060019392505050565b6011546000906001600160a01b03163314801590611423575060175460ff16155b8015611431575060155460ff165b801561144e57506016543060009081526005602052604090205410155b905090565b6017805460ff19166001179055600d54600954601654600092611486926002926114809291839190611960565b9061196c565b9050600061149f8260165461197890919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106114d9576114d9611c2a565b6001600160a01b03928316602091820292909201015260035482519116908290600190811061150a5761150a611c2a565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b81524792919091169063791ac94790611554908690600090879030904290600401611c40565b600060405180830381600087803b15801561156e57600080fd5b505af1158015611582573d6000803e3d6000fd5b50505050600061159b824761197890919063ffffffff16565b905060006115c16115b8600260095461196c90919063ffffffff16565b600d5490611978565b905060006115e36002611480846114806009548861196090919063ffffffff16565b9050600061160083611480600a548761196090919063ffffffff16565b9050600061161d84611480600b548861196090919063ffffffff16565b9050601260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561166f57600080fd5b505af193505050508015611681575060015b50600f546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156116bc573d6000803e3d6000fd5b508815611798576010546000805460405163f305d71960e01b8152306004820152602481018d90526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af1158015611736573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061175b9190611cb1565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506017805460ff1916905550505050505050565b6001600160a01b03821660009081526007602052604081205460ff16806117ec57506001600160a01b03821660009081526007602052604090205460ff165b156117f9575060006107cb565b5060016107cb565b600080611824600e54611480600c54600d5461181d9190611cdf565b8690611960565b90506000611843600e54611480600c548761196090919063ffffffff16565b306000908152600560205260409020549091506118609083611322565b30600081815260056020526040908190209290925590516001600160a01b03871690600080516020611d388339815191529061189f9086815260200190565b60405180910390a361dead60005260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba546118de9082611322565b61dead600081905260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba919091556040516001600160a01b03871690600080516020611d388339815191529061193b9085815260200190565b60405180910390a36119576119508284611c12565b8590611978565b95945050505050565b600061088e8284611cf6565b600061088e8284611d15565b600061088e8284611cdf565b600060208083528351808285015260005b818110156119b157858101830151858201604001528201611995565b818111156119c3576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146119ee57600080fd5b50565b60008060408385031215611a0457600080fd5b8235611a0f816119d9565b946020939093013593505050565b600080600060608486031215611a3257600080fd5b8335611a3d816119d9565b92506020840135611a4d816119d9565b929592945050506040919091013590565b60008060408385031215611a7157600080fd5b50508035926020909101359150565b600060208284031215611a9257600080fd5b813561088e816119d9565b80151581146119ee57600080fd5b60008060408385031215611abe57600080fd5b8235611ac9816119d9565b91506020830135611ad981611a9d565b809150509250929050565b60008060008060808587031215611afa57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215611b2857600080fd5b5035919050565b60008060408385031215611b4257600080fd5b8235611b4d816119d9565b91506020830135611ad9816119d9565b60008060408385031215611b7057600080fd5b8235611a0f81611a9d565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600060208284031215611bb557600080fd5b5051919050565b600060208284031215611bce57600080fd5b815161088e81611a9d565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611c2557611c25611bfc565b500190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c905784516001600160a01b031683529383019391830191600101611c6b565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611cc657600080fd5b8351925060208401519150604084015190509250925092565b600082821015611cf157611cf1611bfc565b500390565b6000816000190483118215151615611d1057611d10611bfc565b500290565b600082611d3257634e487b7160e01b600052601260045260246000fd5b50049056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b60a622e1c3b4f9cbd8a51c22c68719c398d1a6d2a3b0b5524550492262afaeb64736f6c634300080f0033

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.