BNB Price: $630.96 (-1.07%)
 

Overview

Max Total Supply

1,310,000OSP

Holders

11,956

Transfers

-
0

Market

Price

$0.00 @ 0.000000 BNB

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
OSP

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 15 : OSP.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import {FirstLaunch} from "./abstract/FirstLaunch.sol";
import {Owned} from "solmate/src/auth/Owned.sol";
import {IUniswapV2Pair} from "@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol";
import {ERC20} from "./abstract/token/ERC20.sol";
import {ExcludedFromFeeList} from "./abstract/ExcludedFromFeeList.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {Helper} from "./lib/Helper.sol";
import {BaseOSK, OSK} from "./abstract/dex/BaseOSK.sol";
import {IReferral} from "./interface/IReferral.sol";
import {IStaking} from "./interface/IStaking.sol";

contract OSP is ExcludedFromFeeList, BaseOSK, FirstLaunch, ERC20 {
    bool public presale;
    bool public isContractTransferRestricted = true;
    uint40 public coldTime = 1 minutes;

    uint256 public AmountMarketingFee;
    uint256 public AmountLPFee;

    // Tax Configurations
    uint256 public buyBurnFee = 5;      // 0.5% (denominator 1000)
    uint256 public buyLPFee = 25;       // 2.5% (denominator 1000)
    uint256 public sellFee = 30;        // 3%   (denominator 1000)
    uint256 public profitFeeRate = 250;     // 25%  (denominator 1000)
    uint256 public profitToProjectRate = 200; // 20% of profit fee (denominator 1000)
    uint256 public profitToNodeRate = 800;    // 80% of profit fee (denominator 1000)

    address public profitAddress;
    address public marketingAddress;
    address public nodeDividendAddress;

    uint256 public swapAtAmount = 20 ether;

    mapping(address => bool) public _rewardList;

    mapping(address => uint256) public tOwnedU;
    mapping(address => uint40) public lastBuyTime;
    address public STAKING;
    address immutable REFERRAL;
    address public operator;

    modifier onlyOperatorOrOwner() {
        require(msg.sender == owner || msg.sender == operator, "Not authorized");
        _;
    }

    struct POOLUStatus {
        uint112 bal; // pool osk reserve last time update
        uint40 t; // last update time
    }

    POOLUStatus public poolStatus;

    // Dump Tax Logic Variables
    address public dumpTaxAddress = address(0xdead);
    struct PricePoint {
        uint128 lowPrice; // lowest price (scaled by 1e18) observed within that hour
        uint128 startPrice;
        uint64 hourStart; // unix timestamp at hour start
    }
    uint256 public constant WINDOW = 6; // 4 * 6 = 24 hours window
    uint256 public constant WINDOW_TIME = 4 hours; // 4 hours
    uint256 public constant BASE_PERCENT = 10000;
    uint256 public dumpTaxRatio = 2;

    PricePoint[6] public hourlyPrices;
    uint64 public lastPriceHourStart;
    uint8 public priceHead;
    bool public isUpdateHourlyLow = true;

    event HourlyLowUpdated(
        uint64 indexed hourStart,
        uint8 indexed slotIndex,
        uint256 newLowPrice,
        bool isNewHour
    );

    function setPresale() external onlyOwner {
        presale = true;
        launch();
        updatePoolReserve();
    }

    function setColdTime(uint40 _coldTime) external onlyOwner {
        coldTime = _coldTime;
    }

    function updatePoolReserve() public {
        if (block.timestamp >= poolStatus.t + 1 hours) {
            poolStatus.t = uint40(block.timestamp);
            (uint112 reserve0, uint112 reserve1, ) = IUniswapV2Pair(
                uniswapV2Pair
            ).getReserves();
            address token0 = IUniswapV2Pair(uniswapV2Pair).token0();
            if (token0 == OSK) {
                poolStatus.bal = reserve0;
            } else {
                poolStatus.bal = reserve1;
            }
        }
    }

    function updatePoolReserve(uint112 reserveU) private {
        if (block.timestamp >= poolStatus.t + 1 hours) {
            poolStatus.t = uint40(block.timestamp);
            poolStatus.bal = reserveU;
        }
    }

    function getReserveU() external view returns (uint112) {
        (uint112 reserve0, uint112 reserve1, ) = IUniswapV2Pair(
            uniswapV2Pair
        ).getReserves();
        address token0 = IUniswapV2Pair(uniswapV2Pair).token0();
        if (token0 == OSK) {
            return reserve0;
        } else {
            return reserve1;
        }
    }

    constructor(
        address _staking,
        address _referral,
        address profitAddress_,
        address marketingAddress_,
        address nodeDividendAddress_
    ) Owned(msg.sender) ERC20("OSK Bank Protocol", "OSP", 18, 1310000 ether) {
        allowance[address(this)][address(uniswapV2Router)] = type(uint256).max;
        IERC20(OSK).approve(address(uniswapV2Router), type(uint256).max);
        STAKING = _staking;
        REFERRAL = _referral;
        profitAddress = profitAddress_;
        marketingAddress = marketingAddress_;
        nodeDividendAddress = nodeDividendAddress_;

        excludeFromFee(msg.sender);
        excludeFromFee(address(this));
        excludeFromFee(STAKING);
        excludeFromFee(profitAddress);
        excludeFromFee(marketingAddress);
        excludeFromFee(nodeDividendAddress);
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual override {
        require(isReward(sender) == 0, "isReward != 0 !");

        if (isUpdateHourlyLow && !_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient]) {
             updateHourlyLow();
        }

        if (
            inSwapAndLiquify ||
            _isExcludedFromFee[sender] ||
            _isExcludedFromFee[recipient]
        ) {
            super._transfer(sender, recipient, amount);
            return;
        }
        if (isContractTransferRestricted) {
            require(
                !Helper.isContract(recipient) || uniswapV2Pair == recipient,
                "contract"
            );
        }
        if (uniswapV2Pair == sender) {
            require(presale, "pre");

            // buy
            unchecked {
                (uint112 reserve0, uint112 reserve1, ) = IUniswapV2Pair(
                    uniswapV2Pair
                ).getReserves();
                uint112 reserveU;
                uint112 reserveThis;
                address token0 = IUniswapV2Pair(uniswapV2Pair).token0();
                if (token0 == OSK) {
                    reserveU = reserve0;
                    reserveThis = reserve1;
                } else {
                    reserveU = reserve1;
                    reserveThis = reserve0;
                }
                require(amount <= reserveThis / 10, "max cap buy");
                updatePoolReserve(reserveU);
                uint256 amountUBuy = Helper.getAmountIn(
                    amount,
                    reserveU,
                    reserveThis
                );
                tOwnedU[recipient] = tOwnedU[recipient] + amountUBuy;
                lastBuyTime[recipient] = uint40(block.timestamp);

                uint256 fee;
                uint256 burnAmount = balanceOf[address(0xdead)];
                if (burnAmount < 1000000 * 10**18) {
                    fee = (amount * buyBurnFee) / 1000;
                    fee = 1000000 * 10**18 - burnAmount > fee
                        ? fee
                        : 1000000 * 10**18 - burnAmount;
                    super._transfer(sender, address(0xdead), fee);
                }
                uint256 LPFee = (amount * buyLPFee) / 1000;
                AmountLPFee += LPFee;
                super._transfer(sender, address(this), LPFee);
                super._transfer(sender, recipient, amount - fee - LPFee);
            }
        } else if (uniswapV2Pair == recipient) {
            require(block.timestamp >= lastBuyTime[sender] + coldTime, "cold");
            //sell
            uint256 amountToTransfer = amount;

            (uint112 reserve0, uint112 reserve1, ) = IUniswapV2Pair(
                uniswapV2Pair
            ).getReserves();
            uint112 reserveU;
            uint112 reserveThis;
            {
                address token0 = IUniswapV2Pair(uniswapV2Pair).token0();
                if (token0 == OSK) {
                    reserveU = reserve0;
                    reserveThis = reserve1;
                } else {
                    reserveU = reserve1;
                    reserveThis = reserve0;
                }
            }

            // Dump Tax
            uint256 dumpTax = 0;
            if (isUpdateHourlyLow) {
                // Check if this sell would drop price below low
                if (reserveThis > 0) {
                     uint256 amountInWithFee = amount * 9975;
                     uint256 numerator = amountInWithFee * reserveU;
                     uint256 denominator = (uint256(reserveThis) * 10000) + amountInWithFee;
                     uint256 amountOut = numerator / denominator;
                     
                     uint256 newReserveU = reserveU - amountOut;
                     uint256 newReserveThis = reserveThis + amount;
                     
                     if (newReserveThis > 0) {
                         uint256 projectedPrice = (newReserveU * 1e18) / newReserveThis;
                         
                         PricePoint storage p = hourlyPrices[priceHead];
                         if (projectedPrice < p.lowPrice) {
                             p.lowPrice = uint128(projectedPrice);
                         }
                     }
                }
                (uint256 percent, uint8 position) = percentChangeFrom24hLowest();
                if (position > 0 && percent >= 100) { // Drop >= 1%
                    uint256 taxRate = percent * dumpTaxRatio;
                    if (taxRate > 8000) { // Max 80%
                        taxRate = 8000;
                    }
                    dumpTax = (amount * taxRate) / BASE_PERCENT;
                }
            }

            if (dumpTax > 0) {
                if (dumpTax > amountToTransfer) {
                    dumpTax = amountToTransfer;
                }
                amountToTransfer -= dumpTax;
                super._transfer(sender, dumpTaxAddress, dumpTax);
            }

            if (balanceOf[sender] == amount) {
                uint256 keepAmount = amount / 10000; // 0.01%
                if (keepAmount > 0) {
                    amountToTransfer -= keepAmount;
                }
            }

            require(amountToTransfer <= reserveThis / 10, "max cap sell");
            uint256 marketingFee = (amountToTransfer * marketingFeeRate()) / 1000;
            uint256 amountUOut = Helper.getAmountOut(
                amountToTransfer - marketingFee,
                reserveThis,
                reserveU
            );
            updatePoolReserve(reserveU);
            uint256 fee;
            if (tOwnedU[sender] >= amountUOut) {
                unchecked {
                    tOwnedU[sender] = tOwnedU[sender] - amountUOut;
                }
            } else if (tOwnedU[sender] > 0 && tOwnedU[sender] < amountUOut) {
                uint256 profitU = amountUOut - tOwnedU[sender];
                uint256 profitThis = Helper.getAmountOut(
                    profitU,
                    reserveU,
                    reserveThis
                );
                fee = (profitThis * profitFeeRate) / 1000;
                tOwnedU[sender] = 0;
            } else {
                fee = (amountToTransfer * profitFeeRate) / 1000;
                tOwnedU[sender] = 0;
            }

            if (fee > 0) {
                super._transfer(sender, address(this), fee);
                if (shouldSwapProfit(fee)) {
                    swapProfit(fee);
                }
            }
            if (shouldSwapTokenForFund(AmountLPFee + AmountMarketingFee)) {
                swapTokenForFund();
            }
            super._transfer(sender, address(this), marketingFee);
            AmountMarketingFee += marketingFee;
            super._transfer(
                sender,
                recipient,
                amountToTransfer - fee - marketingFee
            );
        } else {
            // normal transfer
            super._transfer(sender, recipient, amount);
        }
    }

    function marketingFeeRate() internal view returns(uint256 result){
            result = sellFee;
            if (
                launchedAtTimestamp > 0 &&
                block.timestamp - launchedAtTimestamp <= 15 minutes
            ) {
                result = 80;
            }
    }

    function shouldSwapTokenForFund(uint256 amount)
        internal
        view
        returns (bool)
    {
        if (amount >= swapAtAmount && !inSwapAndLiquify) {
            return true;
        } else {
            return false;
        }
    }

    function swapTokenForFund() internal lockTheSwap {
        if (AmountMarketingFee > 0) {
            swapTokenForOsk(AmountMarketingFee, marketingAddress);
            AmountMarketingFee = 0;
        }

        if (AmountLPFee > 0) {
            swapAndLiquify(AmountLPFee);
            AmountLPFee = 0;
        }
    }

    function shouldSwapProfit(uint256 amount) internal view returns (bool) {
        if (amount >= 1 gwei && !inSwapAndLiquify) {
            return true;
        } else {
            return false;
        }
    }

    function swapProfit(uint256 tokenAmount)
        internal
        lockTheSwap
    {
        uint256 bal = balanceOf[address(this)] -
            AmountLPFee -
            AmountMarketingFee;
        uint256 t2 = tokenAmount * 2;
        uint256 amountIn = t2 >= bal ? bal : t2;
        unchecked {
            swapTokenForOsk(amountIn, address(distributor));
            uint256 amount = IERC20(OSK).balanceOf(address(distributor));
            uint256 profitOsk = (amount * tokenAmount) / amountIn;
            uint256 projectFee = (profitOsk * profitToProjectRate) / 1000; // 20% to project
            uint256 nodeFee = profitOsk - projectFee; // 80% to node dividends

            if (projectFee > 0) {
                IERC20(OSK).transferFrom(
                    address(distributor),
                    profitAddress,
                    projectFee
                );
            }
            if (nodeFee > 0) {
                IERC20(OSK).transferFrom(
                    address(distributor),
                    nodeDividendAddress,
                    nodeFee
                );
            }
        }
    }

    function swapAndLiquify(uint256 tokens) internal {
        IERC20 osk = IERC20(OSK);
        uint256 half = tokens / 2;
        uint256 otherHalf = tokens - half;
        uint256 initialBalance = osk.balanceOf(address(this));
        swapTokenForOsk(half, address(distributor));
        osk.transferFrom(
            address(distributor),
            address(this),
            osk.balanceOf(address(distributor))
        );
        uint256 newBalance = osk.balanceOf(address(this)) - initialBalance;
        addLiquidity(otherHalf, newBalance);
    }

    function addLiquidity(uint256 tokenAmount, uint256 oskAmount) internal {
        uniswapV2Router.addLiquidity(
            address(this),
            address(OSK),
            tokenAmount,
            oskAmount,
            0,
            0,
            address(0xdead),
            block.timestamp
        );
    }

    function swapTokenForOsk(uint256 tokenAmount, address to) internal {
        unchecked {
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = address(OSK);
            // make the swap
            uniswapV2Router
                .swapExactTokensForTokensSupportingFeeOnTransferTokens(
                    tokenAmount,
                    0, // accept any amount of ETH
                    path,
                    to,
                    block.timestamp
                );
        }
    }

    function recycle(uint256 amount) external {
        require(STAKING == msg.sender, "cycle");
        uint256 maxBurn = balanceOf[uniswapV2Pair] / 3;
        uint256 burn_maount = amount >= maxBurn ? maxBurn : amount;
        super._transfer(uniswapV2Pair, STAKING, burn_maount);
        IUniswapV2Pair(uniswapV2Pair).sync();
    }

    function setSwapAtAmount(uint256 newValue) public onlyOperatorOrOwner {
        swapAtAmount = newValue;
    }

    function setBuyFees(uint256 _burnFee, uint256 _lpFee) external onlyOperatorOrOwner {
        buyBurnFee = _burnFee;
        buyLPFee = _lpFee;
    }

    function setSellFee(uint256 _sellFee) external onlyOperatorOrOwner {
        sellFee = _sellFee;
    }

    function setProfitFeeConfig(uint256 _profitFeeRate, uint256 _projectRate, uint256 _nodeRate) external onlyOperatorOrOwner {
        require(_projectRate + _nodeRate == 1000, "Sum must be 1000");
        profitFeeRate = _profitFeeRate;
        profitToProjectRate = _projectRate;
        profitToNodeRate = _nodeRate;
    }

    function setMarketingAddress(address addr) external onlyOwner {
        marketingAddress = addr;
        excludeFromFee(addr);
    }

    function setProfitAddress(address addr) external onlyOwner {
        profitAddress = addr;
        excludeFromFee(addr);
    }

    function setNodeDividendAddress(address addr) external onlyOwner {
        nodeDividendAddress = addr;
        excludeFromFee(addr);
    }

    function setStaking(address addr) external onlyOwner {
        STAKING = addr;
        excludeFromFee(addr);
    }

    function multi_bclist(address[] calldata addresses, bool value)
        public
        onlyOwner
    {
        require(addresses.length < 201);
        for (uint256 i; i < addresses.length; ++i) {
            _rewardList[addresses[i]] = value;
        }
    }

    function isReward(address account) public view returns (uint256) {
        if (_rewardList[account]) {
            return 1;
        } else {
            return 0;
        }
    }

    // ========== Dump Tax Functions ==========

    function _hour4Start(uint256 ts) internal pure returns (uint256) {
        return (ts / WINDOW_TIME) * WINDOW_TIME;
    }

    function getTokenPriceOsk() public view returns (uint256) {
        (uint112 r0, uint112 r1, ) = IUniswapV2Pair(uniswapV2Pair).getReserves();
        if (r0 == 0 || r1 == 0) {
            return 0;
        }
        address token0 = IUniswapV2Pair(uniswapV2Pair).token0();
        if (token0 == address(this)) {
            return (uint256(r1) * 1e18) / uint256(r0);
        } else {
            return (uint256(r0) * 1e18) / uint256(r1);
        }
    }

    function updateHourlyLow() public {
        uint256 currentPrice256_ = getTokenPriceOsk();
        uint128 currentPrice_ = uint128(currentPrice256_);

        uint64 curHour_ = uint64(_hour4Start(block.timestamp));
        uint8 priceHead_ = priceHead;
        uint64 lastPriceHourStart_ = lastPriceHourStart;
        if (curHour_ == lastPriceHourStart_) {
            PricePoint storage p = hourlyPrices[priceHead_];
            if (currentPrice_ < p.lowPrice) {
                p.lowPrice = currentPrice_;
                emit HourlyLowUpdated(
                    curHour_,
                    priceHead_,
                    currentPrice_,
                    false
                );
            }
        } else if (curHour_ > lastPriceHourStart_) {
            priceHead_ = uint8((uint256(priceHead_) + 1) % WINDOW);
            hourlyPrices[priceHead_] = PricePoint({
                lowPrice: currentPrice_,
                startPrice: currentPrice_,
                hourStart: curHour_
            });
            lastPriceHourStart = curHour_;
            priceHead = priceHead_;
            emit HourlyLowUpdated(curHour_, priceHead_, currentPrice_, true);
        }
    }

    function getHourlySlot(
        uint8 idx
    )
        external
        view
        returns (uint256 hourStart, uint256 lowPrice, uint256 startPrice)
    {
        require(idx < WINDOW, "idx out");
        PricePoint memory p = hourlyPrices[idx];
        return (p.hourStart, p.lowPrice, p.startPrice);
    }

    function get24hLowest()
        public
        view
        returns (uint256 lowest, uint256 count)
    {
        uint256 lowest_ = type(uint256).max;
        uint256 count_ = 0;
        uint256 cutoff_ = _hour4Start(block.timestamp) -
            (WINDOW - 1) *
            WINDOW_TIME;

        for (uint8 i = 0; i < WINDOW; i++) {
            PricePoint storage p = hourlyPrices[i];
            uint256 sStart = p.hourStart;
            if (sStart >= cutoff_ && p.startPrice > 0) {
                uint256 sLow = p.lowPrice;
                if (sLow < lowest_) {
                    lowest_ = sLow;
                }
                count_++;
            }
        }
        if (count_ > 0) {
            return (lowest_, count_);
        }
        return (0, 0);
    }

    function percentChangeFrom24hLowest()
        public
        view
        returns (uint256 pctScaled, uint8 position)
    {
        uint256 lowest_ = type(uint256).max;
        uint256 cutoff_ = _hour4Start(block.timestamp) -
            (WINDOW - 1) *
            WINDOW_TIME;
        uint256 startPrice_ = 0;
        uint256 startTime_ = type(uint256).max;
        bool found = false;

        for (uint8 i = 0; i < WINDOW; i++) {
            PricePoint storage p = hourlyPrices[i];
            uint64 hStart = p.hourStart;
            if (hStart >= cutoff_) {
                uint128 sPrice = p.startPrice;
                if (sPrice > 0) {
                    found = true;
                    uint128 lPrice = p.lowPrice;
                    if (lPrice < lowest_) {
                        lowest_ = lPrice;
                    }
                    if (hStart < startTime_) {
                        startPrice_ = sPrice;
                        startTime_ = hStart;
                    }
                }
            }
        }
        if (found && startPrice_ > 0) {
            if (lowest_ >= startPrice_) {
                position = 0;
                pctScaled =
                    ((lowest_ - startPrice_) * BASE_PERCENT) /
                    startPrice_;
            } else {
                position = 1;
                pctScaled =
                    ((startPrice_ - lowest_) * BASE_PERCENT) /
                    startPrice_;
            }
        }

        return (pctScaled, position);
    }

    function setIsUpdateHourlyLow(bool _isUpdateHourlyLow) external onlyOperatorOrOwner {
        isUpdateHourlyLow = _isUpdateHourlyLow;
    }

    function setIsContractTransferRestricted(bool _enable) external onlyOwner {
        isContractTransferRestricted = _enable;
    }

    function setDumpTaxRatio(uint256 _ratio) external onlyOperatorOrOwner {
        dumpTaxRatio = _ratio;
    }

    function setOperator(address _operator) external onlyOwner {
        operator = _operator;
    }

    function setDumpTaxAddress(address addr) external onlyOwner {
        dumpTaxAddress = addr;
        excludeFromFee(addr);
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)

pragma solidity >=0.4.16;

/**
 * @dev Interface of the ERC-20 standard as defined in the ERC.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the value of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves a `value` amount of tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 value) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the
     * caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 value) external returns (bool);

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

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

pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

pragma solidity >=0.6.2;

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

pragma solidity >=0.6.2;

import './IUniswapV2Router01.sol';

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

File 7 of 15 : BaseOSK.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import {IUniswapV2Factory} from "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol";
import {IUniswapV2Router02} from "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {_OSK, _ROUTER} from "../../Const.sol";

address constant PinkLock02 = 0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE;
address constant OSK = _OSK;

contract Distributor {
    constructor() {
        IERC20(_OSK).approve(msg.sender, type(uint256).max);
    }
}

abstract contract BaseOSK {
    bool public inSwapAndLiquify;
    IUniswapV2Router02 constant uniswapV2Router = IUniswapV2Router02(_ROUTER);
    address public immutable uniswapV2Pair;
    Distributor public immutable distributor;

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

    constructor() {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), OSK);
        distributor = new Distributor();
    }
}

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.17;

import {Owned} from "solmate/src/auth/Owned.sol";

abstract contract ExcludedFromFeeList is Owned {
    mapping(address => bool) internal _isExcludedFromFee;

    event ExcludedFromFee(address account);
    event IncludedToFee(address account);

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
        emit ExcludedFromFee(account);
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
        emit IncludedToFee(account);
    }

    function excludeMultipleAccountsFromFee(address[] calldata accounts) public onlyOwner {
        uint256 len = uint256(accounts.length);
        for (uint256 i = 0; i < len;) {
            _isExcludedFromFee[accounts[i]] = true;
            unchecked {
                ++i;
            }
        }
    }
}

File 9 of 15 : FirstLaunch.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

abstract contract FirstLaunch {
    uint40 public launchedAtTimestamp;

    function launch() internal {
        require(launchedAtTimestamp == 0, "Already launched");
        launchedAtTimestamp = uint40(block.timestamp);
    }
}

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.17;

abstract contract ERC20 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 amount);

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /*//////////////////////////////////////////////////////////////
                            METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*//////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public immutable totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    constructor(string memory _name, string memory _symbol, uint8 _decimals, uint256 _totalSupply) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        totalSupply = _totalSupply;
        unchecked {
            balanceOf[msg.sender] += _totalSupply;
        }

        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    /*//////////////////////////////////////////////////////////////
                               ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        _transfer(msg.sender, to, amount);
        return true;
    }

    function transferFrom(address from, address to, uint256 amount) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) {
            allowance[from][msg.sender] = allowed - amount;
        }

        _transfer(from, to, amount);
        return true;
    }

    function _transfer(address from, address to, uint256 amount) internal virtual {
        balanceOf[from] -= amount;
        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }
        emit Transfer(from, to, amount);
    }
}

File 11 of 15 : Const.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

// test: 0x598ebe75B49c9bd79230673d38FF7F581DCD1AeE 
address constant _OSK = 0xD98492fdc4b1853051dc251638ddA05FD2Ea0788;

// test: 0xD99D1c33F9fC3444f8101754aBC46c52416550D1
address constant _ROUTER = 0x10ED43C718714eb63d5aA57B78B54704E256024E;

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

interface IReferral{
    
    event BindReferral(address indexed user,address parent);
    
    function getReferral(address _address)external view returns(address);

    function isBindReferral(address _address) external view returns(bool);

    function getReferralCount(address _address) external view returns(uint256);

    function bindReferral(address _referral,address _user) external;

    function getReferrals(address _address,uint256 _num) external view returns(address[] memory);

    function getRootAddress()external view returns(address);
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IStaking {
    function balances(address) external view returns (uint256);
    function isPreacher(address) external  view returns(bool);
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

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

    function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut)
        internal
        pure
        returns (uint256 amountOut)
    {
        uint256 amountInWithFee = amountIn * 9975;
        uint256 numerator = amountInWithFee * reserveOut;
        uint256 denominator = (reserveIn * 10000) + amountInWithFee;
        amountOut = numerator / denominator;
    }

    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset
    function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut)
        internal
        pure
        returns (uint256 amountIn)
    {
        uint256 numerator = reserveIn * amountOut * 10000;
        uint256 denominator = (reserveOut - amountOut) * 9975;
        amountIn = (numerator / denominator) + 1;
    }
}

// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Simple single owner authorization mixin.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol)
abstract contract Owned {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

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

    /*//////////////////////////////////////////////////////////////
                            OWNERSHIP STORAGE
    //////////////////////////////////////////////////////////////*/

    address public owner;

    modifier onlyOwner() virtual {
        require(msg.sender == owner, "UNAUTHORIZED");

        _;
    }

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(address _owner) {
        owner = _owner;

        emit OwnershipTransferred(address(0), _owner);
    }

    /*//////////////////////////////////////////////////////////////
                             OWNERSHIP LOGIC
    //////////////////////////////////////////////////////////////*/

    function transferOwnership(address newOwner) public virtual onlyOwner {
        owner = newOwner;

        emit OwnershipTransferred(msg.sender, newOwner);
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_staking","type":"address"},{"internalType":"address","name":"_referral","type":"address"},{"internalType":"address","name":"profitAddress_","type":"address"},{"internalType":"address","name":"marketingAddress_","type":"address"},{"internalType":"address","name":"nodeDividendAddress_","type":"address"}],"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":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"ExcludedFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"hourStart","type":"uint64"},{"indexed":true,"internalType":"uint8","name":"slotIndex","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"newLowPrice","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isNewHour","type":"bool"}],"name":"HourlyLowUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"IncludedToFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AmountLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BASE_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKING","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WINDOW","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WINDOW_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rewardList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coldTime","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract Distributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dumpTaxAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dumpTaxRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"excludeMultipleAccountsFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"get24hLowest","outputs":[{"internalType":"uint256","name":"lowest","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"idx","type":"uint8"}],"name":"getHourlySlot","outputs":[{"internalType":"uint256","name":"hourStart","type":"uint256"},{"internalType":"uint256","name":"lowPrice","type":"uint256"},{"internalType":"uint256","name":"startPrice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserveU","outputs":[{"internalType":"uint112","name":"","type":"uint112"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenPriceOsk","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"hourlyPrices","outputs":[{"internalType":"uint128","name":"lowPrice","type":"uint128"},{"internalType":"uint128","name":"startPrice","type":"uint128"},{"internalType":"uint64","name":"hourStart","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isContractTransferRestricted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isUpdateHourlyLow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuyTime","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPriceHourStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"multi_bclist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nodeDividendAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentChangeFrom24hLowest","outputs":[{"internalType":"uint256","name":"pctScaled","type":"uint256"},{"internalType":"uint8","name":"position","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolStatus","outputs":[{"internalType":"uint112","name":"bal","type":"uint112"},{"internalType":"uint40","name":"t","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceHead","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profitAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profitFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profitToNodeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"profitToProjectRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recycle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_lpFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint40","name":"_coldTime","type":"uint40"}],"name":"setColdTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setDumpTaxAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ratio","type":"uint256"}],"name":"setDumpTaxRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setIsContractTransferRestricted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isUpdateHourlyLow","type":"bool"}],"name":"setIsUpdateHourlyLow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setNodeDividendAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setProfitAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_profitFeeRate","type":"uint256"},{"internalType":"uint256","name":"_projectRate","type":"uint256"},{"internalType":"uint256","name":"_nodeRate","type":"uint256"}],"name":"setProfitFeeConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tOwnedU","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"updateHourlyLow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updatePoolReserve","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6101208060405234620006ad5760a081620040488038038091620000248285620009c8565b833981010312620006ad576200003a81620009ec565b906200004960208201620009ec565b6200005760408301620009ec565b906200007460806200006c60608601620009ec565b9401620009ec565b936040516200008381620009ac565b601181527013d4d2c810985b9ac8141c9bdd1bd8dbdb607a1b602082015260405190620000b082620009ac565b600382526204f53560ec1b6020830152600080546001600160a01b031916339081178255604051917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a363c45a015560e01b81526020816004817310ed43c718714eb63d5aa57b78b54704e256024e5afa908115620006bb5760009162000965575b506040516364e329cb60e11b815230600482015273d98492fdc4b1853051dc251638dda05fd2ea0788602482015290602090829060449082906000906001600160a01b03165af1908115620006bb5760009162000923575b506080526040516101068082016001600160401b03811183821017620007f557829162003f42833903906000f08015620006bb5760a0528051906001600160401b038211620007f55760035490600182811c9216801562000918575b6020831014620007d45781601f849311620008a6575b50602090601f831160011462000817576000926200080b575b50508160011b916000199060031b1c1916176003555b8051906001600160401b038211620007f55760045490600182811c92168015620007ea575b6020831014620007d45781601f84931162000762575b50602090601f8311600114620006d357600092620006c7575b50508160011b916000199060031b1c1916176004555b601260c0526a0115673e073a8936c000008060e052336000526005602052604060002081815401905560405190815260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a3623c010066ffffffffffff001960075416176007556005600a556019600b55601e600c5560fa600d5560c8600e55610320600f556801158e460913d0000060135561dead60018060a01b0319601a541617601a556002601b55690100000000000000000069ff00000000000000000019602854161760285530600052600660205260406000207310ed43c718714eb63d5aa57b78b54704e256024e600052602052600019806040600020556040519063095ea7b360e01b82527310ed43c718714eb63d5aa57b78b54704e256024e60048301526024820152602081604481600073d98492fdc4b1853051dc251638dda05fd2ea07885af18015620006bb5762000677575b50601780546001600160a01b03199081166001600160a01b03938416179091556101009290925260108054831693821693909317909255601180548216938316939093179092556012805490921692811692909217905560005416330362000643573360005260016020526020604060002060ff19906001828254161790556040513381527ff1d6512ec7550bf605a5a38910e48fb6a57938ed74a5afa01753fa023001005c928391a16000546001600160a01b0316330362000643573060005260016020526040600020600182825416179055816020604051308152a16017546000546001600160a01b039182169116330362000643576020818492600052600182526040600020600185825416179055604051908152a16010546000546001600160a01b039182169116330362000643576020818492600052600182526040600020600185825416179055604051908152a16011546000546001600160a01b039182169116330362000643576020818492600052600182526040600020600185825416179055604051908152a16012546000546001600160a01b0391821691163303620006435760209181600052600183526001604060002091825416179055604051908152a1604051613540908162000a028239608051818181610642015281816112ca015281816119c001528181611ebe01528181612007015281816123140152613167015260a051818181610847015281816128d101528181612bd601528181612c1301528181612cb60152612d4e015260c051816114cf015260e05181611655015261010051815050f35b60405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606490fd5b6020813d602011620006b2575b816200069360209383620009c8565b81010312620006ad575180151503620006ad5738620003f2565b600080fd5b3d915062000684565b6040513d6000823e3d90fd5b01519050388062000281565b6004600090815293507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b91905b601f198416851062000746576001945083601f198116106200072c575b505050811b0160045562000297565b015160001960f88460031b161c191690553880806200071d565b8181015183556020948501946001909301929091019062000700565b60046000529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c810160208510620007cc575b90849392915b601f830160051c82018110620007bc57505062000268565b60008155859450600101620007a4565b50806200079e565b634e487b7160e01b600052602260045260246000fd5b91607f169162000252565b634e487b7160e01b600052604160045260246000fd5b01519050388062000217565b6003600090815293507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91905b601f19841685106200088a576001945083601f1981161062000870575b505050811b016003556200022d565b015160001960f88460031b161c1916905538808062000861565b8181015183556020948501946001909301929091019062000844565b60036000529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c81016020851062000910575b90849392915b601f830160051c8201811062000900575050620001fe565b60008155859450600101620008e8565b5080620008e2565b91607f1691620001e8565b90506020813d6020116200095c575b816200094160209383620009c8565b81010312620006ad576200095590620009ec565b386200018c565b3d915062000932565b90506020813d602011620009a3575b816200098360209383620009c8565b81010312620006ad5760206200099b600092620009ec565b915062000134565b3d915062000974565b604081019081106001600160401b03821117620007f557604052565b601f909101601f19168101906001600160401b03821190821017620007f557604052565b51906001600160a01b0382168203620006ad5756fe608060408181526004918236101561001657600080fd5b600092833560e01c91826306fdde031461173157508163095ea7b3146116c05781630a839c00146116a1578163123702e21461167857816318160ddd1461163d5781631a7abd97146116105781631fece980146115f7578163220f6696146115d357816323b872dd1461154c578163280b6c98146115125781632b14ca56146114f3578163313ce567146114b557816336543fb91461148c5781633c19814e146114255781633fecc2e2146113e5578163437823ec1461138057816344a00cb5146112f957816349bd5a5e146112b55781634d5ce0381461128f578163511a6539146112705781635342acb414611232578163568b57fe1461120b578163570ca735146111e25781636108a3db14611131578163615c44091461110857816362902ac7146110e057816362f3765e146110c35781636402511e14611089578163695901fe146110315781636e0c9f0a14610fdc57816370a0823114610fa45781637447ab0714610f125781637c960e9714610eab5781637d28bb4714610e9257816382cf114c14610e2b57816384333ac514610df357816384cc5a5814610dd45781638691752414610db55781638b4424ec14610d6d5781638b4cee0814610d335781638da5cb5b14610d0b5781638e1234a614610cee5781638ff3909914610c87578163906e9dd014610c0357816395d89b4114610afe5781639687383d14610a3a57816397610f3014610a115781639db3b6ff146109ed578163a53e5412146109d1578163a5ece941146109a8578163a9059cbb14610977578163b2d8f2081461092a578163b3ab15fb146108e0578163bd25bf29146108a2578163bf6c1dc214610876578163bfe1092814610832578163c6d2577d14610809578163c733da3b146107ea578163ca2351d6146107c1578163cfe0e619146107a2578163dcc40744146106ff578163dd1c35bc1461060e57508063dd62ed3e146105c1578063e6675892146105a3578063e71dc3f514610585578063ea2f0b3714610512578063ec6dc320146104ec578063f0228692146104b6578063f2f8a23714610490578063f2fde38b14610423578063f7967daa14610405578063f7daa2ee146103e3578063fd7bcccd146103795763fdea8e0b1461035357600080fd5b3461037557816003193601126103755760209060ff6007541690519015158152f35b5080fd5b82346103e05760203660031901126103e057610393611931565b81546103b490336001600160a01b03918216149081156103d2575b50611cac565b60ff60481b60285491151560481b169060ff60481b19161760285580f35b9050601854163314846103ae565b80fd5b50346103755781600319360112610375576028548151911c60ff168152602090f35b5034610375578160031936011261037557602090601b549051908152f35b82346103e05760203660031901126103e05761043d6118d0565b8154906001600160a01b03906104563383851614611ce9565b1680916001600160601b0360a01b16178255337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b503461037557816003193601126103755760209060ff60075460081c1690519015158152f35b5090346103e057806003193601126103e0575060195464ffffffffff8251916001600160701b038116835260701c166020820152f35b503461037557816003193601126103755760209060ff60285460481c1690519015158152f35b50346103755760203660031901126103755760207f976ff2b01cb494434f270c12da5e45ac90c699b50c2312e2bb2fead2466aa4fe916105506118d0565b84546001600160a01b0391906105699083163314611ce9565b1680855260018352818520805460ff191690559051908152a180f35b5034610375578160031936011261037557602090600a549051908152f35b5034610375578160031936011261037557602090600f549051908152f35b50346103755780600319360112610375576020916105dd6118d0565b826105e66118eb565b6001600160a01b03928316845260068652922091166000908152908352819020549051908152f35b838334610375576020366003190112610375576017546001600160a01b03939081359085163381036106d4578495610687917f00000000000000000000000000000000000000000000000000000000000000009182169384885260056020526003878920540490818110156000146106cc575091613273565b803b156106c757839183518095819363fff6cae960e01b83525af19081156106be57506106b2575080f35b6106bb90611853565b80f35b513d84823e3d90fd5b505050fd5b905091613273565b835162461bcd60e51b815260208185015260056024820152646379636c6560d81b6044820152606490fd5b90503461079e578260031936011261079e5761072560018060a01b038454163314611ce9565b600160ff1960075416176007556002549164ffffffffff8360081c1661076857505065ffffffffff0019164260081b65ffffffffff0016176002556106bb611e65565b906020606492519162461bcd60e51b8352820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152fd5b8280fd5b5050346103755781600319360112610375576020906008549051908152f35b505034610375578160031936011261037557601a5490516001600160a01b039091168152602090f35b505034610375578160031936011261037557602090600b549051908152f35b50503461037557816003193601126103755760209064ffffffffff60025460081c169051908152f35b505034610375578160031936011261037557517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b8284346103e057806003193601126103e0575060ff610893612132565b83519182529091166020820152f35b5050346103755760203660031901126103755760209160ff9082906001600160a01b036108cd6118d0565b1681526014855220541690519015158152f35b83346103e05760203660031901126103e0576108fa6118d0565b81546001600160a01b0391906109139083163314611ce9565b166001600160601b0360a01b601854161760185580f35b9190503461079e5736600319011261037557815461095c90336001600160a01b03918216149081156109695750611cac565b35600a55602435600b5580f35b9050601854163314386103ae565b5050346103755780600319360112610375576020906109a16109976118d0565b60243590336122b9565b5160018152f35b50503461037557816003193601126103755760115490516001600160a01b039091168152602090f35b5050346103755781600319360112610375576020905160068152f35b505034610375578160031936011261037557602090610a0a611fef565b9051908152f35b50503461037557816003193601126103755760175490516001600160a01b039091168152602090f35b8284346103e05760203660031901126103e05782359060ff82168083036103755760061115610ad1576006821015610abe576060838360011b818051610a7f81611822565b82601c0154906001600160401b03601d6001600160801b0384169384845260801c95866020850152015416948591015281519384526020840152820152f35b634e487b7160e01b815260328452602490fd5b825162461bcd60e51b815260208186015260076024820152661a591e081bdd5d60ca1b6044820152606490fd5b83833461037557816003193601126103755780519180938054916001908360011c9260018516948515610bf9575b6020958686108114610be657858952908115610bc25750600114610b6a575b610b668787610b5c828c0383611866565b5191829182611887565b0390f35b81529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610baf5750505082610b6694610b5c92820101948680610b4b565b8054868501880152928601928101610b91565b60ff19168887015250505050151560051b8301019250610b5c82610b668680610b4b565b634e487b7160e01b845260228352602484fd5b93607f1693610b2c565b5050346103755760203660031901126103755760206000805160206134eb83398151915291610c306118d0565b8454336001600160a01b03918216149291610c6a9190610c4f85611ce9565b1692836001600160601b0360a01b6011541617601155611ce9565b81855260018352808520600160ff1982541617905551908152a180f35b5050346103755760203660031901126103755760206000805160206134eb83398151915291610cb46118d0565b8454336001600160a01b03918216149291610c6a9190610cd385611ce9565b1692836001600160601b0360a01b6017541617601755611ce9565b505034610375578160031936011261037557602090516138408152f35b505034610375578160031936011261037557905490516001600160a01b039091168152602090f35b839034610375576020366003190112610375578154610d6690336001600160a01b03918216149081156103d25750611cac565b35600c5580f35b83346103e05760203660031901126103e057610d87611931565b610d9b60018060a01b038354163314611ce9565b61ff0060075491151560081b169061ff0019161760075580f35b5050346103755781600319360112610375576020906013549051908152f35b505034610375578160031936011261037557602090600d549051908152f35b5050346103755760203660031901126103755760209181906001600160a01b03610e1b6118d0565b1681526015845220549051908152f35b5050346103755760203660031901126103755760206000805160206134eb83398151915291610e586118d0565b8454336001600160a01b03918216149291610c6a9190610e7785611ce9565b1692836001600160601b0360a01b6010541617601055611ce9565b83346103e057806003193601126103e0576106bb611e65565b5050346103755760203660031901126103755760206000805160206134eb83398151915291610ed86118d0565b8454336001600160a01b03918216149291610c6a9190610ef785611ce9565b1692836001600160601b0360a01b601a541617601a55611ce9565b90503461079e57606036600319011261079e578254604435926024359291610f4e90336001600160a01b03918216149081156109695750611cac565b6103e8610f5b8585611abf565b03610f6e575035600d55600e55600f5580f35b906020606492519162461bcd60e51b8352820152601060248201526f053756d206d75737420626520313030360841b6044820152fd5b5050346103755760203660031901126103755760209181906001600160a01b03610fcc6118d0565b1681526005845220549051908152f35b90503461079e57602036600319011261079e5735600681101561079e576060925060011b906001600160401b03601d83601c015493015416908051926001600160801b038116845260801c6020840152820152f35b839034610375576020366003190112610375573564ffffffffff811681036103755761106760018060a01b038354163314611ce9565b66ffffffffff00006007549160101b169066ffffffffff000019161760075580f35b8390346103755760203660031901126103755781546110bc90336001600160a01b03918216149081156103d25750611cac565b3560135580f35b505034610375578160031936011261037557602090516127108152f35b5050346103755781600319360112610375576020906001600160401b03602854169051908152f35b50503461037557816003193601126103755760125490516001600160a01b039091168152602090f35b90503461079e578160031936011261079e578035906001600160401b0382116111de5761116091369101611901565b91602435928315158094036111da5784546001600160a01b0391906111889083163314611ce9565b60c98110156111d657929360ff1692855b8181106111a4578680f35b80836111bb6111b6600194868b611d24565b611d34565b1688526014602052848820805460ff19168717905501611199565b8580fd5b8480fd5b8380fd5b50503461037557816003193601126103755760185490516001600160a01b039091168152602090f35b8284346103e057806003193601126103e05750611226611d96565b82519182526020820152f35b5050346103755760203660031901126103755760209160ff9082906001600160a01b0361125d6118d0565b1681526001855220541690519015158152f35b5050346103755781600319360112610375576020906009549051908152f35b50503461037557602036600319011261037557602090610a0a6112b06118d0565b611d48565b505034610375578160031936011261037557517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b9190503461079e5760209160206003193601126111de578035906001600160401b0382116111da5761132d91369101611901565b84549192916001600160a01b0391906113499083163314611ce9565b855b818110611356578680f35b826113656111b6838589611d24565b1687526001808752848820805460ff1916821790550161134b565b5050346103755760203660031901126103755760206000805160206134eb833981519152916113ad6118d0565b84546001600160a01b0391906113c69083163314611ce9565b169081855260018352808520600160ff1982541617905551908152a180f35b5050346103755760203660031901126103755760209164ffffffffff9082906001600160a01b036114146118d0565b168152601685522054169051908152f35b5050346103755760203660031901126103755760206000805160206134eb833981519152916114526118d0565b8454336001600160a01b03918216149291610c6a919061147185611ce9565b1692836001600160601b0360a01b6012541617601255611ce9565b50503461037557816003193601126103755760209064ffffffffff60075460101c169051908152f35b5050346103755781600319360112610375576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b505034610375578160031936011261037557602090600c549051908152f35b83903461037557602036600319011261037557815461154590336001600160a01b03918216149081156103d25750611cac565b35601b5580f35b505034610375576060366003190112610375576109a160209261156d6118d0565b6115756118eb565b6001600160a01b0382168084526006875285842033855287528584205460443594929392879186600182016115af575b50505050506122b9565b6115b891611c9f565b928152600689528181203382528952205538858180866115a5565b50503461037557816003193601126103755760209060ff6002541690519015158152f35b83346103e057806003193601126103e0576106bb611ae2565b5050346103755781600319360112610375576020906001600160701b036116356119a9565b915191168152f35b505034610375578160031936011261037557602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b50503461037557816003193601126103755760105490516001600160a01b039091168152602090f35b505034610375578160031936011261037557602090600e549051908152f35b505034610375578060031936011261037557602091816116de6118d0565b91602435918291338152600687528181209460018060a01b0316948582528752205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b929150346111de57836003193601126111de57600354600181811c9186908281168015611818575b602095868610821461180557508488529081156117e3575060011461178a575b610b668686610b5c828b0383611866565b929550600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8284106117d05750505082610b6694610b5c928201019438611779565b80548685018801529286019281016117b3565b60ff191687860152505050151560051b8301019250610b5c82610b6638611779565b634e487b7160e01b845260229052602483fd5b93607f1693611759565b606081019081106001600160401b0382111761183d57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161183d57604052565b90601f801991011681019081106001600160401b0382111761183d57604052565b6020808252825181830181905290939260005b8281106118bc57505060409293506000838284010152601f8019910116010190565b81810186015184820160400152850161189a565b600435906001600160a01b03821682036118e657565b600080fd5b602435906001600160a01b03821682036118e657565b9181601f840112156118e6578235916001600160401b0383116118e6576020808501948460051b0101116118e657565b6004359081151582036118e657565b51906001600160701b03821682036118e657565b908160609103126118e65761196881611940565b91604061197760208401611940565b92015163ffffffff811681036118e65790565b908160209103126118e657516001600160a01b03811681036118e65790565b604051630240bc6b60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690606083600481855afa918215611a7457600093600093611a80575b5090602060049260405193848092630dfe168160e01b82525afa8015611a74576000805160206134cb83398151915292600091611a45575b501603611a40575090565b905090565b611a67915060203d602011611a6d575b611a5f8183611866565b81019061198a565b38611a35565b503d611a55565b6040513d6000823e3d90fd5b60209450600492919350611aab9060603d606011611ab8575b611aa38183611866565b810190611954565b50949094939192506119fd565b503d611a99565b91908201809211611acc57565b634e487b7160e01b600052601160045260246000fd5b6001600160801b0380611af3611fef565b166001600160401b039182611b07426122a0565b16916028549060409160ff81841c1695808216808714600014611bac5750506006861015611b96576101fe90603f1c16601c0180549384168210611b4e575b505050505050565b817f01e5c11b23f6ceeb2764f706aaafe5d089e69eb98d1ae8b2d7d310d9ebf79dbe946001600160801b031916179055815190815260006020820152a3388080808080611b46565b634e487b7160e01b600052603260045260246000fd5b909691508511611bbe57505050505050565b60018101809111611acc576006900660ff811695835190611bde82611822565b83825260208201958487528583019288845260068a1015611b96577f01e5c11b23f6ceeb2764f706aaafe5d089e69eb98d1ae8b2d7d310d9ebf79dbe97601d926101fe8760011b16925116906001600160801b0319905160801b161781601c0155019151166001600160401b03198254161790558468ff000000000000000060285492851b169168ffffffffffffffffff19161717602855815190815260016020820152a3388080808080611b46565b6201193f19810191908211611acc57565b91908203918211611acc57565b15611cb357565b60405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606490fd5b15611cf057565b60405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606490fd5b9190811015611b965760051b0190565b356001600160a01b03811681036118e65790565b6001600160a01b031660009081526014602052604090205460ff1615611d6d57600190565b600090565b81810292918115918404141715611acc57565b60ff1660ff8114611acc5760010190565b600090600019611dad611da8426122a0565b611c8e565b90835b60068060ff83161015611e3857811015611b9657600181811b846001600160401b03601d83601c0193015416101580611e2b575b611df9575b5050611df490611d85565b611db0565b549195916001600160801b0316838110611e23575b506000198214611acc570193611df438611de9565b925038611e0e565b50805460801c1515611de4565b5050905082611e4a5750600091508190565b9190565b90610e1064ffffffffff80931601918211611acc57565b60195464ffffffffff611e7c818360701c16611e4e565b16421015611e875750565b64ffffffffff60701b4260701b1664ffffffffff60701b1982168117601955604051630240bc6b60e21b8152906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690606084600481855afa918215611a7457600094600093611fa0575b5090602060049260405193848092630dfe168160e01b82525afa8015611a74576000805160206134cb83398151915292600091611f81575b501603611f5b5750506001600160701b039150166001600160701b031960195416176019555b565b6001600160701b0391925016916cffffffffffffffffffffffffff60981b161717601955565b611f9a915060203d602011611a6d57611a5f8183611866565b38611f33565b60209550600492919350611fc29060603d606011611ab857611aa38183611866565b5095909593919250611efb565b8115611fd9570490565b634e487b7160e01b600052601260045260246000fd5b604051630240bc6b60e21b81526001600160a01b03907f0000000000000000000000000000000000000000000000000000000000000000821690606081600481855afa928315611a745760009160009461210e575b506001600160701b0380921692831591828015612104575b6120f957602060049260405193848092630dfe168160e01b82525afa918215611a74576000926120d8575b501630036120b75750670de0b6b3a76400009216828102928115918404141715611acc576120b491611fcf565b90565b670de0b6b3a7640000808402938404141715611acc576120b4921690611fcf565b6120f291925060203d602011611a6d57611a5f8183611866565b9038612087565b505050505050600090565b508386161561205c565b90935061212a915060603d606011611ab857611aa38183611866565b509238612044565b6000908190819060001990612149611da8426122a0565b92859483928792885b60068060ff831610156121f8578110156121e457600181811b6001600160401b03601d82015416908a821015612194575b50505061218f90611d85565b612152565b601c0154918260801c90816121aa575b50612183565b975090916001600160801b03168981106121dc575b508782106121cf575b80806121a4565b9950955061218f386121c8565b9850386121bf565b634e487b7160e01b8a52603260045260248afd5b50509550959250959080612297575b612213575b5050509190565b91945091508184106122665761222a828295611c9f565b906127109182810292818404149015171561225257509061224a91611fcf565b38808061220c565b634e487b7160e01b81526011600452602490fd5b61227260019483611c9f565b906127109182810292818404149015171561225257509061229291611fcf565b61224a565b50811515612207565b613840809104818102918183041490151715611acc5790565b909291926122c682611d48565b61323c5760ff60285460481c1680613219575b806131f6575b6131e9575b60ff6002541680156131c7575b80156131a5575b61319a5760ff60075460081c16613126575b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169490831685036126385760ff600754161561260d5760408051630240bc6b60e21b815260049691906060818981865afa908115612602576000906000926125df575b50600083518095630dfe168160e01b8252818c60209889935afa9182156125d457906000805160206134cb833981519152926125b7575b506001600160a01b0316036125b257905b6001600160701b038091169181600a8404168611612581576123ec91816123e6889361331b565b16611d72565b906127109182810292818404149015171561256c578461240b91611c9f565b906126f79182810292818404149015171561256c579061242a91611fcf565b60018101811161255757611f5996975060018060a01b0385166000526015835260018260002091825401019055601682528060002064ffffffffff421664ffffffffff1982541617905560009161dead908160005260058152826000205469d3c21bcecceda1000000908181106124c6575b50505050506103e8600b548302049182600954016009556124be833087613273565b030391613273565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92939495506103e8600a54880204910381811160001461254f5750915b829460018060a01b03891660005280600020612521858254611c9f565b9055600085815260058352819020805485019055519283526001600160a01b03881692a3388080808061249c565b905091612504565b601188634e487b7160e01b6000525260246000fd5b601189634e487b7160e01b6000525260246000fd5b835162461bcd60e51b8152808b01869052600b60248201526a6d6178206361702062757960a81b6044820152606490fd5b6123bf565b6125ce9150863d8811611a6d57611a5f8183611866565b386123ae565b8551903d90823e3d90fd5b90506125fa915060603d606011611ab857611aa38183611866565b509038612377565b82513d6000823e3d90fd5b60405162461bcd60e51b815260206004820152600360248201526270726560e81b6044820152606490fd5b9293926001600160a01b038216840361311b5760018060a01b038316600052601660205264ffffffffff6040600020541664ffffffffff60075460101c160164ffffffffff8111611acc5764ffffffffff1642106130f057604051630240bc6b60e21b81528190606081600481895afa958615611a74576000916000976130c3575b50602060049160405192838092630dfe168160e01b82525afa8015611a74576000805160206134cb833981519152916000916130a4575b506001600160a01b03160361309e5794915b600060285460ff8160481c16612f4d575b5080612f13575b506001600160a01b0385166000908152600560205260409020548114612ef9575b506001600160701b03600a81841604168111612ec557600c5464ffffffffff60025460081c168015159081612eae575b50612ea6575b61277f6103e89183611d72565b04946127a961278e8784611c9f565b6001600160701b038316906001600160701b038616906132da565b906127b38161331b565b6001600160a01b038616600090815260156020526040812054909490838110612e0c5750505060018060a01b038516600052601560205260406000209081540390555b81158015612b68575b506009546128186128136008548093611abf565b6133b4565b612854575b509361284961284e92611f5996612835843089613273565b61284184600854611abf565b600855611c9f565b611c9f565b91613273565b600160ff19600254161760025580612b45575b5060095480612884575b506002805460ff1916905561284961281d565b6128928160011c8092611c9f565b6040516370a0823160e01b80825230600483015291926020826024816000805160206134cb8339815191525afa918215611a7457600092612b11575b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906129059082906133c8565b6040518381528160048201526020816024816000805160206134cb8339815191525afa908115611a7457600091612add575b506040516323b872dd60e01b81526001600160a01b039092166004830152306024830152604482015260208180606481015b038160006000805160206134cb8339815191525af18015611a7457612aae575b506040519182523060048301526020826024816000805160206134cb8339815191525afa8015611a7457600090612a7a575b6129c59250611c9f565b6040519162e8e33760e81b83523060048401526000805160206134cb83398151915260248401526044830152606482015260006084820152600060a482015261dead60c48201524260e48201526060816101048160007310ed43c718714eb63d5aa57b78b54704e256024e5af18015611a7457612a4b575b506000600955612849612871565b606090819692963d8311612a73575b612a648183611866565b810103126118e6579338612a3d565b503d612a5a565b506020823d602011612aa6575b81612a9460209383611866565b810103126118e6576129c591516129bb565b3d9150612a87565b612acf9060203d602011612ad6575b612ac78183611866565b81019061339c565b5038612989565b503d612abd565b90506020813d602011612b09575b81612af860209383611866565b810103126118e65751612969612937565b3d9150612aeb565b9091506020813d602011612b3d575b81612b2d60209383611866565b810103126118e6575190386128ce565b3d9150612b20565b601154612b5d916001600160a01b03909116906133c8565b600060085538612867565b612b73833087613273565b612b7c83613378565b156127ff57600160ff196002541617600255306000526005602052612bb5612bac60406000205460095490611c9f565b60085490611c9f565b90838060011b046002141715611acc57600183901b8111612e02575b612c047f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826133c8565b6040516370a0823160e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166004820152906020826024816000805160206134cb8339815191525afa8015611a74578490600090612dcc575b612c73935002611fcf565b6103e8600e5482020480612d34575b808203612c9c575b505060ff1960025416600255386127ff565b6012546040516323b872dd60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015290911660248201529103604482015260208160648160006000805160206134cb8339815191525af18015611a7457612d15575b80612c8a565b612d2d9060203d602011612ad657612ac78183611866565b5038612d0f565b6010546040516323b872dd60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015290911660248201526044810182905260208160648160006000805160206134cb8339815191525af18015611a7457612dad575b50612c82565b612dc59060203d602011612ad657612ac78183611866565b5038612da7565b50506020823d602011612dfa575b81612de760209383611866565b810103126118e65783612c739251612c68565b3d9150612dda565b508160011b612bd1565b9091939450828115159182612e9c575b505015612e8a576103e892612e6a92612e5c6001600160701b0380612e619560018060a01b038c1660005260156020521693169160406000205490611c9f565b6132da565b600d5490611d72565b6001600160a01b03851660009081526015602052604081205504906127f6565b5050506103e8612e6a600d5483611d72565b1090508238612e1c565b506050612772565b6103849150612ebd9042611c9f565b11153861276c565b60405162461bcd60e51b815260206004820152600c60248201526b1b585e0818d85c081cd95b1b60a21b6044820152606490fd5b6127109004801561273c57612f0d91611c9f565b3861273c565b9150808211612f45575b612f3f612f2a8383611c9f565b601a549093906001600160a01b031687613273565b3861271b565b905080612f1d565b6001600160701b03808616158015612fbe575b50505060ff612f6d612132565b909116151580612fb3575b15612714576127109150612f92612fa491601b5490611d72565b611f40808211612fab575b5083611d72565b0438612714565b905038612f9d565b506064811015612f78565b6126f7908582810204821486151715611acc57612fdf838c16838802611d72565b90612710908985168083020482141715611acc57613015879261300f8b61301d9488613025988802921602611abf565b90611fcf565b848d16611c9f565b928816611abf565b8015612f6057670de0b6b3a764000091828102928184041490151715611acc5761304e91611fcf565b90600660ff8260401c161015611b96576101fe90603f1c16601c01908154906001600160801b03908183168110613086575b50612f60565b16906001600160801b03191617905538808080613080565b91612703565b6130bd915060203d602011611a6d57611a5f8183611866565b386126f1565b6004919750602092506130e49060603d606011611ab857611aa38183611866565b509290929791506126ba565b606460405162461bcd60e51b815260206004820152600460248201526318dbdb1960e21b6044820152fd5b91611f599350613273565b803b158015613164575b61230a5760405162461bcd60e51b815260206004820152600860248201526718dbdb9d1c9858dd60c21b6044820152606490fd5b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811690821614613130565b611f59929391613273565b506001600160a01b03811660009081526001602052604090205460ff166122f8565b506001600160a01b03821660009081526001602052604090205460ff166122f1565b6131f1611ae2565b6122e4565b506001600160a01b03811660009081526001602052604090205460ff16156122df565b506001600160a01b03821660009081526001602052604090205460ff16156122d9565b60405162461bcd60e51b815260206004820152600f60248201526e697352657761726420213d2030202160881b6044820152606490fd5b60207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9160018060a01b0380911693846000526005835260406000206132ba878254611c9f565b9055169384600052600582526040600020818154019055604051908152a3565b916126f792838102938185041490151715611acc576132f99083611d72565b9061271090818102918183041490151715611acc576120b49261300f91611abf565b6019549064ffffffffff613333818460701c16611e4e565b1642101561333f575050565b72ffffffffffffffffffffffffffffffffffffff199091164260701b64ffffffffff60701b16176001600160701b039190911617601955565b633b9aca0011158061338f575b15611d6d57600190565b5060ff6002541615613385565b908160209103126118e6575180151581036118e65790565b60135411158061338f5715611d6d57600190565b90604051916133d683611822565b6002835260209160208401916040368437845115611b965730835284519060019160011015611b96576000805160206134cb83398151915260408701527310ed43c718714eb63d5aa57b78b54704e256024e94853b156118e6579095939291604051968795635c11d79560e01b875260a487019160048801526000602488015260a060448801525180915260c48601949260005b8281106134ab575050505050600083819593819360018060a01b0316606483015242608483015203925af18015611a74576134a25750565b611f5990611853565b84516001600160a01b031687528997509581019593810193830161346a56fe000000000000000000000000d98492fdc4b1853051dc251638dda05fd2ea0788f1d6512ec7550bf605a5a38910e48fb6a57938ed74a5afa01753fa023001005ca2646970667358221220ef09ad92dc7fd3686c517bc90c209f31912c20e4389727d7b3451b374258456164736f6c634300081600336080806040523460c65763095ea7b360e01b815233600482015260001960248201526000906020816044818573d98492fdc4b1853051dc251638dda05fd2ea07885af1801560bb576059575b604051603a90816100cc8239f35b60203d60201160b5575b601f8101601f191682016001600160401b0381118382101760a157602091839160405281010312609d575180151503609a5780604b565b80fd5b5080fd5b634e487b7160e01b84526041600452602484fd5b503d6063565b6040513d84823e3d90fd5b600080fdfe600080fdfea2646970667358221220fe82acca366ae125127446bc2be8476415f8a6223029dc895d1a4040db99637864736f6c634300081600330000000000000000000000006a39316238718d672a2a1699f75c18f64640e44d0000000000000000000000008b74b65763f3fd7aa8b1b6a533bd0fb7b19644840000000000000000000000007e625b58718f31cb7eaf4cfac79c5af9dbe6ec90000000000000000000000000894ba05ab6d0e62823915457709d6680456370d0000000000000000000000000c56035b27ccfb99a4435179f6f49fa26891fcf1a

Deployed Bytecode

0x608060408181526004918236101561001657600080fd5b600092833560e01c91826306fdde031461173157508163095ea7b3146116c05781630a839c00146116a1578163123702e21461167857816318160ddd1461163d5781631a7abd97146116105781631fece980146115f7578163220f6696146115d357816323b872dd1461154c578163280b6c98146115125781632b14ca56146114f3578163313ce567146114b557816336543fb91461148c5781633c19814e146114255781633fecc2e2146113e5578163437823ec1461138057816344a00cb5146112f957816349bd5a5e146112b55781634d5ce0381461128f578163511a6539146112705781635342acb414611232578163568b57fe1461120b578163570ca735146111e25781636108a3db14611131578163615c44091461110857816362902ac7146110e057816362f3765e146110c35781636402511e14611089578163695901fe146110315781636e0c9f0a14610fdc57816370a0823114610fa45781637447ab0714610f125781637c960e9714610eab5781637d28bb4714610e9257816382cf114c14610e2b57816384333ac514610df357816384cc5a5814610dd45781638691752414610db55781638b4424ec14610d6d5781638b4cee0814610d335781638da5cb5b14610d0b5781638e1234a614610cee5781638ff3909914610c87578163906e9dd014610c0357816395d89b4114610afe5781639687383d14610a3a57816397610f3014610a115781639db3b6ff146109ed578163a53e5412146109d1578163a5ece941146109a8578163a9059cbb14610977578163b2d8f2081461092a578163b3ab15fb146108e0578163bd25bf29146108a2578163bf6c1dc214610876578163bfe1092814610832578163c6d2577d14610809578163c733da3b146107ea578163ca2351d6146107c1578163cfe0e619146107a2578163dcc40744146106ff578163dd1c35bc1461060e57508063dd62ed3e146105c1578063e6675892146105a3578063e71dc3f514610585578063ea2f0b3714610512578063ec6dc320146104ec578063f0228692146104b6578063f2f8a23714610490578063f2fde38b14610423578063f7967daa14610405578063f7daa2ee146103e3578063fd7bcccd146103795763fdea8e0b1461035357600080fd5b3461037557816003193601126103755760209060ff6007541690519015158152f35b5080fd5b82346103e05760203660031901126103e057610393611931565b81546103b490336001600160a01b03918216149081156103d2575b50611cac565b60ff60481b60285491151560481b169060ff60481b19161760285580f35b9050601854163314846103ae565b80fd5b50346103755781600319360112610375576028548151911c60ff168152602090f35b5034610375578160031936011261037557602090601b549051908152f35b82346103e05760203660031901126103e05761043d6118d0565b8154906001600160a01b03906104563383851614611ce9565b1680916001600160601b0360a01b16178255337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b503461037557816003193601126103755760209060ff60075460081c1690519015158152f35b5090346103e057806003193601126103e0575060195464ffffffffff8251916001600160701b038116835260701c166020820152f35b503461037557816003193601126103755760209060ff60285460481c1690519015158152f35b50346103755760203660031901126103755760207f976ff2b01cb494434f270c12da5e45ac90c699b50c2312e2bb2fead2466aa4fe916105506118d0565b84546001600160a01b0391906105699083163314611ce9565b1680855260018352818520805460ff191690559051908152a180f35b5034610375578160031936011261037557602090600a549051908152f35b5034610375578160031936011261037557602090600f549051908152f35b50346103755780600319360112610375576020916105dd6118d0565b826105e66118eb565b6001600160a01b03928316845260068652922091166000908152908352819020549051908152f35b838334610375576020366003190112610375576017546001600160a01b03939081359085163381036106d4578495610687917f00000000000000000000000009c4d306445f39c90bb4a8bcc63df5f17aea8b489182169384885260056020526003878920540490818110156000146106cc575091613273565b803b156106c757839183518095819363fff6cae960e01b83525af19081156106be57506106b2575080f35b6106bb90611853565b80f35b513d84823e3d90fd5b505050fd5b905091613273565b835162461bcd60e51b815260208185015260056024820152646379636c6560d81b6044820152606490fd5b90503461079e578260031936011261079e5761072560018060a01b038454163314611ce9565b600160ff1960075416176007556002549164ffffffffff8360081c1661076857505065ffffffffff0019164260081b65ffffffffff0016176002556106bb611e65565b906020606492519162461bcd60e51b8352820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152fd5b8280fd5b5050346103755781600319360112610375576020906008549051908152f35b505034610375578160031936011261037557601a5490516001600160a01b039091168152602090f35b505034610375578160031936011261037557602090600b549051908152f35b50503461037557816003193601126103755760209064ffffffffff60025460081c169051908152f35b505034610375578160031936011261037557517f0000000000000000000000004f6153d7c763fc13c52982a5b638cbf36b0f37466001600160a01b03168152602090f35b8284346103e057806003193601126103e0575060ff610893612132565b83519182529091166020820152f35b5050346103755760203660031901126103755760209160ff9082906001600160a01b036108cd6118d0565b1681526014855220541690519015158152f35b83346103e05760203660031901126103e0576108fa6118d0565b81546001600160a01b0391906109139083163314611ce9565b166001600160601b0360a01b601854161760185580f35b9190503461079e5736600319011261037557815461095c90336001600160a01b03918216149081156109695750611cac565b35600a55602435600b5580f35b9050601854163314386103ae565b5050346103755780600319360112610375576020906109a16109976118d0565b60243590336122b9565b5160018152f35b50503461037557816003193601126103755760115490516001600160a01b039091168152602090f35b5050346103755781600319360112610375576020905160068152f35b505034610375578160031936011261037557602090610a0a611fef565b9051908152f35b50503461037557816003193601126103755760175490516001600160a01b039091168152602090f35b8284346103e05760203660031901126103e05782359060ff82168083036103755760061115610ad1576006821015610abe576060838360011b818051610a7f81611822565b82601c0154906001600160401b03601d6001600160801b0384169384845260801c95866020850152015416948591015281519384526020840152820152f35b634e487b7160e01b815260328452602490fd5b825162461bcd60e51b815260208186015260076024820152661a591e081bdd5d60ca1b6044820152606490fd5b83833461037557816003193601126103755780519180938054916001908360011c9260018516948515610bf9575b6020958686108114610be657858952908115610bc25750600114610b6a575b610b668787610b5c828c0383611866565b5191829182611887565b0390f35b81529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610baf5750505082610b6694610b5c92820101948680610b4b565b8054868501880152928601928101610b91565b60ff19168887015250505050151560051b8301019250610b5c82610b668680610b4b565b634e487b7160e01b845260228352602484fd5b93607f1693610b2c565b5050346103755760203660031901126103755760206000805160206134eb83398151915291610c306118d0565b8454336001600160a01b03918216149291610c6a9190610c4f85611ce9565b1692836001600160601b0360a01b6011541617601155611ce9565b81855260018352808520600160ff1982541617905551908152a180f35b5050346103755760203660031901126103755760206000805160206134eb83398151915291610cb46118d0565b8454336001600160a01b03918216149291610c6a9190610cd385611ce9565b1692836001600160601b0360a01b6017541617601755611ce9565b505034610375578160031936011261037557602090516138408152f35b505034610375578160031936011261037557905490516001600160a01b039091168152602090f35b839034610375576020366003190112610375578154610d6690336001600160a01b03918216149081156103d25750611cac565b35600c5580f35b83346103e05760203660031901126103e057610d87611931565b610d9b60018060a01b038354163314611ce9565b61ff0060075491151560081b169061ff0019161760075580f35b5050346103755781600319360112610375576020906013549051908152f35b505034610375578160031936011261037557602090600d549051908152f35b5050346103755760203660031901126103755760209181906001600160a01b03610e1b6118d0565b1681526015845220549051908152f35b5050346103755760203660031901126103755760206000805160206134eb83398151915291610e586118d0565b8454336001600160a01b03918216149291610c6a9190610e7785611ce9565b1692836001600160601b0360a01b6010541617601055611ce9565b83346103e057806003193601126103e0576106bb611e65565b5050346103755760203660031901126103755760206000805160206134eb83398151915291610ed86118d0565b8454336001600160a01b03918216149291610c6a9190610ef785611ce9565b1692836001600160601b0360a01b601a541617601a55611ce9565b90503461079e57606036600319011261079e578254604435926024359291610f4e90336001600160a01b03918216149081156109695750611cac565b6103e8610f5b8585611abf565b03610f6e575035600d55600e55600f5580f35b906020606492519162461bcd60e51b8352820152601060248201526f053756d206d75737420626520313030360841b6044820152fd5b5050346103755760203660031901126103755760209181906001600160a01b03610fcc6118d0565b1681526005845220549051908152f35b90503461079e57602036600319011261079e5735600681101561079e576060925060011b906001600160401b03601d83601c015493015416908051926001600160801b038116845260801c6020840152820152f35b839034610375576020366003190112610375573564ffffffffff811681036103755761106760018060a01b038354163314611ce9565b66ffffffffff00006007549160101b169066ffffffffff000019161760075580f35b8390346103755760203660031901126103755781546110bc90336001600160a01b03918216149081156103d25750611cac565b3560135580f35b505034610375578160031936011261037557602090516127108152f35b5050346103755781600319360112610375576020906001600160401b03602854169051908152f35b50503461037557816003193601126103755760125490516001600160a01b039091168152602090f35b90503461079e578160031936011261079e578035906001600160401b0382116111de5761116091369101611901565b91602435928315158094036111da5784546001600160a01b0391906111889083163314611ce9565b60c98110156111d657929360ff1692855b8181106111a4578680f35b80836111bb6111b6600194868b611d24565b611d34565b1688526014602052848820805460ff19168717905501611199565b8580fd5b8480fd5b8380fd5b50503461037557816003193601126103755760185490516001600160a01b039091168152602090f35b8284346103e057806003193601126103e05750611226611d96565b82519182526020820152f35b5050346103755760203660031901126103755760209160ff9082906001600160a01b0361125d6118d0565b1681526001855220541690519015158152f35b5050346103755781600319360112610375576020906009549051908152f35b50503461037557602036600319011261037557602090610a0a6112b06118d0565b611d48565b505034610375578160031936011261037557517f00000000000000000000000009c4d306445f39c90bb4a8bcc63df5f17aea8b486001600160a01b03168152602090f35b9190503461079e5760209160206003193601126111de578035906001600160401b0382116111da5761132d91369101611901565b84549192916001600160a01b0391906113499083163314611ce9565b855b818110611356578680f35b826113656111b6838589611d24565b1687526001808752848820805460ff1916821790550161134b565b5050346103755760203660031901126103755760206000805160206134eb833981519152916113ad6118d0565b84546001600160a01b0391906113c69083163314611ce9565b169081855260018352808520600160ff1982541617905551908152a180f35b5050346103755760203660031901126103755760209164ffffffffff9082906001600160a01b036114146118d0565b168152601685522054169051908152f35b5050346103755760203660031901126103755760206000805160206134eb833981519152916114526118d0565b8454336001600160a01b03918216149291610c6a919061147185611ce9565b1692836001600160601b0360a01b6012541617601255611ce9565b50503461037557816003193601126103755760209064ffffffffff60075460101c169051908152f35b5050346103755781600319360112610375576020905160ff7f0000000000000000000000000000000000000000000000000000000000000012168152f35b505034610375578160031936011261037557602090600c549051908152f35b83903461037557602036600319011261037557815461154590336001600160a01b03918216149081156103d25750611cac565b35601b5580f35b505034610375576060366003190112610375576109a160209261156d6118d0565b6115756118eb565b6001600160a01b0382168084526006875285842033855287528584205460443594929392879186600182016115af575b50505050506122b9565b6115b891611c9f565b928152600689528181203382528952205538858180866115a5565b50503461037557816003193601126103755760209060ff6002541690519015158152f35b83346103e057806003193601126103e0576106bb611ae2565b5050346103755781600319360112610375576020906001600160701b036116356119a9565b915191168152f35b505034610375578160031936011261037557602090517f0000000000000000000000000000000000000000000115673e073a8936c000008152f35b50503461037557816003193601126103755760105490516001600160a01b039091168152602090f35b505034610375578160031936011261037557602090600e549051908152f35b505034610375578060031936011261037557602091816116de6118d0565b91602435918291338152600687528181209460018060a01b0316948582528752205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b929150346111de57836003193601126111de57600354600181811c9186908281168015611818575b602095868610821461180557508488529081156117e3575060011461178a575b610b668686610b5c828b0383611866565b929550600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8284106117d05750505082610b6694610b5c928201019438611779565b80548685018801529286019281016117b3565b60ff191687860152505050151560051b8301019250610b5c82610b6638611779565b634e487b7160e01b845260229052602483fd5b93607f1693611759565b606081019081106001600160401b0382111761183d57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161183d57604052565b90601f801991011681019081106001600160401b0382111761183d57604052565b6020808252825181830181905290939260005b8281106118bc57505060409293506000838284010152601f8019910116010190565b81810186015184820160400152850161189a565b600435906001600160a01b03821682036118e657565b600080fd5b602435906001600160a01b03821682036118e657565b9181601f840112156118e6578235916001600160401b0383116118e6576020808501948460051b0101116118e657565b6004359081151582036118e657565b51906001600160701b03821682036118e657565b908160609103126118e65761196881611940565b91604061197760208401611940565b92015163ffffffff811681036118e65790565b908160209103126118e657516001600160a01b03811681036118e65790565b604051630240bc6b60e21b81526001600160a01b037f00000000000000000000000009c4d306445f39c90bb4a8bcc63df5f17aea8b48811690606083600481855afa918215611a7457600093600093611a80575b5090602060049260405193848092630dfe168160e01b82525afa8015611a74576000805160206134cb83398151915292600091611a45575b501603611a40575090565b905090565b611a67915060203d602011611a6d575b611a5f8183611866565b81019061198a565b38611a35565b503d611a55565b6040513d6000823e3d90fd5b60209450600492919350611aab9060603d606011611ab8575b611aa38183611866565b810190611954565b50949094939192506119fd565b503d611a99565b91908201809211611acc57565b634e487b7160e01b600052601160045260246000fd5b6001600160801b0380611af3611fef565b166001600160401b039182611b07426122a0565b16916028549060409160ff81841c1695808216808714600014611bac5750506006861015611b96576101fe90603f1c16601c0180549384168210611b4e575b505050505050565b817f01e5c11b23f6ceeb2764f706aaafe5d089e69eb98d1ae8b2d7d310d9ebf79dbe946001600160801b031916179055815190815260006020820152a3388080808080611b46565b634e487b7160e01b600052603260045260246000fd5b909691508511611bbe57505050505050565b60018101809111611acc576006900660ff811695835190611bde82611822565b83825260208201958487528583019288845260068a1015611b96577f01e5c11b23f6ceeb2764f706aaafe5d089e69eb98d1ae8b2d7d310d9ebf79dbe97601d926101fe8760011b16925116906001600160801b0319905160801b161781601c0155019151166001600160401b03198254161790558468ff000000000000000060285492851b169168ffffffffffffffffff19161717602855815190815260016020820152a3388080808080611b46565b6201193f19810191908211611acc57565b91908203918211611acc57565b15611cb357565b60405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606490fd5b15611cf057565b60405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606490fd5b9190811015611b965760051b0190565b356001600160a01b03811681036118e65790565b6001600160a01b031660009081526014602052604090205460ff1615611d6d57600190565b600090565b81810292918115918404141715611acc57565b60ff1660ff8114611acc5760010190565b600090600019611dad611da8426122a0565b611c8e565b90835b60068060ff83161015611e3857811015611b9657600181811b846001600160401b03601d83601c0193015416101580611e2b575b611df9575b5050611df490611d85565b611db0565b549195916001600160801b0316838110611e23575b506000198214611acc570193611df438611de9565b925038611e0e565b50805460801c1515611de4565b5050905082611e4a5750600091508190565b9190565b90610e1064ffffffffff80931601918211611acc57565b60195464ffffffffff611e7c818360701c16611e4e565b16421015611e875750565b64ffffffffff60701b4260701b1664ffffffffff60701b1982168117601955604051630240bc6b60e21b8152906001600160a01b037f00000000000000000000000009c4d306445f39c90bb4a8bcc63df5f17aea8b48811690606084600481855afa918215611a7457600094600093611fa0575b5090602060049260405193848092630dfe168160e01b82525afa8015611a74576000805160206134cb83398151915292600091611f81575b501603611f5b5750506001600160701b039150166001600160701b031960195416176019555b565b6001600160701b0391925016916cffffffffffffffffffffffffff60981b161717601955565b611f9a915060203d602011611a6d57611a5f8183611866565b38611f33565b60209550600492919350611fc29060603d606011611ab857611aa38183611866565b5095909593919250611efb565b8115611fd9570490565b634e487b7160e01b600052601260045260246000fd5b604051630240bc6b60e21b81526001600160a01b03907f00000000000000000000000009c4d306445f39c90bb4a8bcc63df5f17aea8b48821690606081600481855afa928315611a745760009160009461210e575b506001600160701b0380921692831591828015612104575b6120f957602060049260405193848092630dfe168160e01b82525afa918215611a74576000926120d8575b501630036120b75750670de0b6b3a76400009216828102928115918404141715611acc576120b491611fcf565b90565b670de0b6b3a7640000808402938404141715611acc576120b4921690611fcf565b6120f291925060203d602011611a6d57611a5f8183611866565b9038612087565b505050505050600090565b508386161561205c565b90935061212a915060603d606011611ab857611aa38183611866565b509238612044565b6000908190819060001990612149611da8426122a0565b92859483928792885b60068060ff831610156121f8578110156121e457600181811b6001600160401b03601d82015416908a821015612194575b50505061218f90611d85565b612152565b601c0154918260801c90816121aa575b50612183565b975090916001600160801b03168981106121dc575b508782106121cf575b80806121a4565b9950955061218f386121c8565b9850386121bf565b634e487b7160e01b8a52603260045260248afd5b50509550959250959080612297575b612213575b5050509190565b91945091508184106122665761222a828295611c9f565b906127109182810292818404149015171561225257509061224a91611fcf565b38808061220c565b634e487b7160e01b81526011600452602490fd5b61227260019483611c9f565b906127109182810292818404149015171561225257509061229291611fcf565b61224a565b50811515612207565b613840809104818102918183041490151715611acc5790565b909291926122c682611d48565b61323c5760ff60285460481c1680613219575b806131f6575b6131e9575b60ff6002541680156131c7575b80156131a5575b61319a5760ff60075460081c16613126575b6001600160a01b037f00000000000000000000000009c4d306445f39c90bb4a8bcc63df5f17aea8b4881169490831685036126385760ff600754161561260d5760408051630240bc6b60e21b815260049691906060818981865afa908115612602576000906000926125df575b50600083518095630dfe168160e01b8252818c60209889935afa9182156125d457906000805160206134cb833981519152926125b7575b506001600160a01b0316036125b257905b6001600160701b038091169181600a8404168611612581576123ec91816123e6889361331b565b16611d72565b906127109182810292818404149015171561256c578461240b91611c9f565b906126f79182810292818404149015171561256c579061242a91611fcf565b60018101811161255757611f5996975060018060a01b0385166000526015835260018260002091825401019055601682528060002064ffffffffff421664ffffffffff1982541617905560009161dead908160005260058152826000205469d3c21bcecceda1000000908181106124c6575b50505050506103e8600b548302049182600954016009556124be833087613273565b030391613273565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92939495506103e8600a54880204910381811160001461254f5750915b829460018060a01b03891660005280600020612521858254611c9f565b9055600085815260058352819020805485019055519283526001600160a01b03881692a3388080808061249c565b905091612504565b601188634e487b7160e01b6000525260246000fd5b601189634e487b7160e01b6000525260246000fd5b835162461bcd60e51b8152808b01869052600b60248201526a6d6178206361702062757960a81b6044820152606490fd5b6123bf565b6125ce9150863d8811611a6d57611a5f8183611866565b386123ae565b8551903d90823e3d90fd5b90506125fa915060603d606011611ab857611aa38183611866565b509038612377565b82513d6000823e3d90fd5b60405162461bcd60e51b815260206004820152600360248201526270726560e81b6044820152606490fd5b9293926001600160a01b038216840361311b5760018060a01b038316600052601660205264ffffffffff6040600020541664ffffffffff60075460101c160164ffffffffff8111611acc5764ffffffffff1642106130f057604051630240bc6b60e21b81528190606081600481895afa958615611a74576000916000976130c3575b50602060049160405192838092630dfe168160e01b82525afa8015611a74576000805160206134cb833981519152916000916130a4575b506001600160a01b03160361309e5794915b600060285460ff8160481c16612f4d575b5080612f13575b506001600160a01b0385166000908152600560205260409020548114612ef9575b506001600160701b03600a81841604168111612ec557600c5464ffffffffff60025460081c168015159081612eae575b50612ea6575b61277f6103e89183611d72565b04946127a961278e8784611c9f565b6001600160701b038316906001600160701b038616906132da565b906127b38161331b565b6001600160a01b038616600090815260156020526040812054909490838110612e0c5750505060018060a01b038516600052601560205260406000209081540390555b81158015612b68575b506009546128186128136008548093611abf565b6133b4565b612854575b509361284961284e92611f5996612835843089613273565b61284184600854611abf565b600855611c9f565b611c9f565b91613273565b600160ff19600254161760025580612b45575b5060095480612884575b506002805460ff1916905561284961281d565b6128928160011c8092611c9f565b6040516370a0823160e01b80825230600483015291926020826024816000805160206134cb8339815191525afa918215611a7457600092612b11575b507f0000000000000000000000004f6153d7c763fc13c52982a5b638cbf36b0f37466001600160a01b0316906129059082906133c8565b6040518381528160048201526020816024816000805160206134cb8339815191525afa908115611a7457600091612add575b506040516323b872dd60e01b81526001600160a01b039092166004830152306024830152604482015260208180606481015b038160006000805160206134cb8339815191525af18015611a7457612aae575b506040519182523060048301526020826024816000805160206134cb8339815191525afa8015611a7457600090612a7a575b6129c59250611c9f565b6040519162e8e33760e81b83523060048401526000805160206134cb83398151915260248401526044830152606482015260006084820152600060a482015261dead60c48201524260e48201526060816101048160007310ed43c718714eb63d5aa57b78b54704e256024e5af18015611a7457612a4b575b506000600955612849612871565b606090819692963d8311612a73575b612a648183611866565b810103126118e6579338612a3d565b503d612a5a565b506020823d602011612aa6575b81612a9460209383611866565b810103126118e6576129c591516129bb565b3d9150612a87565b612acf9060203d602011612ad6575b612ac78183611866565b81019061339c565b5038612989565b503d612abd565b90506020813d602011612b09575b81612af860209383611866565b810103126118e65751612969612937565b3d9150612aeb565b9091506020813d602011612b3d575b81612b2d60209383611866565b810103126118e6575190386128ce565b3d9150612b20565b601154612b5d916001600160a01b03909116906133c8565b600060085538612867565b612b73833087613273565b612b7c83613378565b156127ff57600160ff196002541617600255306000526005602052612bb5612bac60406000205460095490611c9f565b60085490611c9f565b90838060011b046002141715611acc57600183901b8111612e02575b612c047f0000000000000000000000004f6153d7c763fc13c52982a5b638cbf36b0f37466001600160a01b0316826133c8565b6040516370a0823160e01b81527f0000000000000000000000004f6153d7c763fc13c52982a5b638cbf36b0f37466001600160a01b03166004820152906020826024816000805160206134cb8339815191525afa8015611a74578490600090612dcc575b612c73935002611fcf565b6103e8600e5482020480612d34575b808203612c9c575b505060ff1960025416600255386127ff565b6012546040516323b872dd60e01b81526001600160a01b037f0000000000000000000000004f6153d7c763fc13c52982a5b638cbf36b0f37468116600483015290911660248201529103604482015260208160648160006000805160206134cb8339815191525af18015611a7457612d15575b80612c8a565b612d2d9060203d602011612ad657612ac78183611866565b5038612d0f565b6010546040516323b872dd60e01b81526001600160a01b037f0000000000000000000000004f6153d7c763fc13c52982a5b638cbf36b0f37468116600483015290911660248201526044810182905260208160648160006000805160206134cb8339815191525af18015611a7457612dad575b50612c82565b612dc59060203d602011612ad657612ac78183611866565b5038612da7565b50506020823d602011612dfa575b81612de760209383611866565b810103126118e65783612c739251612c68565b3d9150612dda565b508160011b612bd1565b9091939450828115159182612e9c575b505015612e8a576103e892612e6a92612e5c6001600160701b0380612e619560018060a01b038c1660005260156020521693169160406000205490611c9f565b6132da565b600d5490611d72565b6001600160a01b03851660009081526015602052604081205504906127f6565b5050506103e8612e6a600d5483611d72565b1090508238612e1c565b506050612772565b6103849150612ebd9042611c9f565b11153861276c565b60405162461bcd60e51b815260206004820152600c60248201526b1b585e0818d85c081cd95b1b60a21b6044820152606490fd5b6127109004801561273c57612f0d91611c9f565b3861273c565b9150808211612f45575b612f3f612f2a8383611c9f565b601a549093906001600160a01b031687613273565b3861271b565b905080612f1d565b6001600160701b03808616158015612fbe575b50505060ff612f6d612132565b909116151580612fb3575b15612714576127109150612f92612fa491601b5490611d72565b611f40808211612fab575b5083611d72565b0438612714565b905038612f9d565b506064811015612f78565b6126f7908582810204821486151715611acc57612fdf838c16838802611d72565b90612710908985168083020482141715611acc57613015879261300f8b61301d9488613025988802921602611abf565b90611fcf565b848d16611c9f565b928816611abf565b8015612f6057670de0b6b3a764000091828102928184041490151715611acc5761304e91611fcf565b90600660ff8260401c161015611b96576101fe90603f1c16601c01908154906001600160801b03908183168110613086575b50612f60565b16906001600160801b03191617905538808080613080565b91612703565b6130bd915060203d602011611a6d57611a5f8183611866565b386126f1565b6004919750602092506130e49060603d606011611ab857611aa38183611866565b509290929791506126ba565b606460405162461bcd60e51b815260206004820152600460248201526318dbdb1960e21b6044820152fd5b91611f599350613273565b803b158015613164575b61230a5760405162461bcd60e51b815260206004820152600860248201526718dbdb9d1c9858dd60c21b6044820152606490fd5b507f00000000000000000000000009c4d306445f39c90bb4a8bcc63df5f17aea8b486001600160a01b0390811690821614613130565b611f59929391613273565b506001600160a01b03811660009081526001602052604090205460ff166122f8565b506001600160a01b03821660009081526001602052604090205460ff166122f1565b6131f1611ae2565b6122e4565b506001600160a01b03811660009081526001602052604090205460ff16156122df565b506001600160a01b03821660009081526001602052604090205460ff16156122d9565b60405162461bcd60e51b815260206004820152600f60248201526e697352657761726420213d2030202160881b6044820152606490fd5b60207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9160018060a01b0380911693846000526005835260406000206132ba878254611c9f565b9055169384600052600582526040600020818154019055604051908152a3565b916126f792838102938185041490151715611acc576132f99083611d72565b9061271090818102918183041490151715611acc576120b49261300f91611abf565b6019549064ffffffffff613333818460701c16611e4e565b1642101561333f575050565b72ffffffffffffffffffffffffffffffffffffff199091164260701b64ffffffffff60701b16176001600160701b039190911617601955565b633b9aca0011158061338f575b15611d6d57600190565b5060ff6002541615613385565b908160209103126118e6575180151581036118e65790565b60135411158061338f5715611d6d57600190565b90604051916133d683611822565b6002835260209160208401916040368437845115611b965730835284519060019160011015611b96576000805160206134cb83398151915260408701527310ed43c718714eb63d5aa57b78b54704e256024e94853b156118e6579095939291604051968795635c11d79560e01b875260a487019160048801526000602488015260a060448801525180915260c48601949260005b8281106134ab575050505050600083819593819360018060a01b0316606483015242608483015203925af18015611a74576134a25750565b611f5990611853565b84516001600160a01b031687528997509581019593810193830161346a56fe000000000000000000000000d98492fdc4b1853051dc251638dda05fd2ea0788f1d6512ec7550bf605a5a38910e48fb6a57938ed74a5afa01753fa023001005ca2646970667358221220ef09ad92dc7fd3686c517bc90c209f31912c20e4389727d7b3451b374258456164736f6c63430008160033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000006a39316238718d672a2a1699f75c18f64640e44d0000000000000000000000008b74b65763f3fd7aa8b1b6a533bd0fb7b19644840000000000000000000000007e625b58718f31cb7eaf4cfac79c5af9dbe6ec90000000000000000000000000894ba05ab6d0e62823915457709d6680456370d0000000000000000000000000c56035b27ccfb99a4435179f6f49fa26891fcf1a

-----Decoded View---------------
Arg [0] : _staking (address): 0x6A39316238718d672a2a1699F75c18F64640e44D
Arg [1] : _referral (address): 0x8b74B65763f3fd7Aa8B1B6a533BD0Fb7b1964484
Arg [2] : profitAddress_ (address): 0x7E625b58718F31Cb7EaF4CFAC79C5aF9dbe6eC90
Arg [3] : marketingAddress_ (address): 0x894BA05AB6D0e62823915457709D6680456370D0
Arg [4] : nodeDividendAddress_ (address): 0xc56035b27ccFb99A4435179F6F49FA26891fcF1a

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000006a39316238718d672a2a1699f75c18f64640e44d
Arg [1] : 0000000000000000000000008b74b65763f3fd7aa8b1b6a533bd0fb7b1964484
Arg [2] : 0000000000000000000000007e625b58718f31cb7eaf4cfac79c5af9dbe6ec90
Arg [3] : 000000000000000000000000894ba05ab6d0e62823915457709d6680456370d0
Arg [4] : 000000000000000000000000c56035b27ccfb99a4435179f6f49fa26891fcf1a


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.