ETH Price: $1,613.51 (-3.57%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00
Transaction Hash
Method
Block
From
To
Transfer222681622025-04-14 15:36:3522 hrs ago1744644995IN
0 Knowledge Network: 0KN Token
0 ETH0.000235854.92819119
Transfer222680422025-04-14 15:12:1123 hrs ago1744643531IN
0 Knowledge Network: 0KN Token
0 ETH0.000154963.23805541
Transfer222441112025-04-11 7:09:474 days ago1744355387IN
0 Knowledge Network: 0KN Token
0 ETH0.000047810.99880969
Approve222439372025-04-11 6:34:474 days ago1744353287IN
0 Knowledge Network: 0KN Token
0 ETH0.00001210.49849558
Transfer222337002025-04-09 20:20:235 days ago1744230023IN
0 Knowledge Network: 0KN Token
0 ETH0.000152963.19625622
Approve222321592025-04-09 15:11:355 days ago1744211495IN
0 Knowledge Network: 0KN Token
0 ETH0.00006231.34587584
Approve222256502025-04-08 17:23:116 days ago1744132991IN
0 Knowledge Network: 0KN Token
0 ETH0.000302266.49115464
Approve222252702025-04-08 16:06:236 days ago1744128383IN
0 Knowledge Network: 0KN Token
0 ETH0.000035221.45078344
Approve222239212025-04-08 11:35:477 days ago1744112147IN
0 Knowledge Network: 0KN Token
0 ETH0.000123012.64171104
Transfer222227592025-04-08 7:42:357 days ago1744098155IN
0 Knowledge Network: 0KN Token
0 ETH0.0000290.60627579
Transfer222097222025-04-06 11:58:359 days ago1743940715IN
0 Knowledge Network: 0KN Token
0 ETH0.000045970.96037238
Approve222056422025-04-05 22:17:239 days ago1743891443IN
0 Knowledge Network: 0KN Token
0 ETH0.000112532.4167416
Transfer222053592025-04-05 21:20:479 days ago1743888047IN
0 Knowledge Network: 0KN Token
0 ETH0.000050430.95817716
Approve221697802025-03-31 22:08:3514 days ago1743458915IN
0 Knowledge Network: 0KN Token
0 ETH0.000115232.4747483
Transfer221695252025-03-31 21:17:3514 days ago1743455855IN
0 Knowledge Network: 0KN Token
0 ETH0.000130982.73687419
Approve221552042025-03-29 21:19:5916 days ago1743283199IN
0 Knowledge Network: 0KN Token
0 ETH0.000017730.38035221
Transfer221478672025-03-28 20:43:1117 days ago1743194591IN
0 Knowledge Network: 0KN Token
0 ETH0.000125912.39165876
Transfer221478232025-03-28 20:34:2317 days ago1743194063IN
0 Knowledge Network: 0KN Token
0 ETH0.000126522.40395142
Transfer221456422025-03-28 13:14:4718 days ago1743167687IN
0 Knowledge Network: 0KN Token
0 ETH0.000062611.18934424
Transfer221455972025-03-28 13:05:4718 days ago1743167147IN
0 Knowledge Network: 0KN Token
0 ETH0.000074611.14860458
Transfer221433532025-03-28 5:34:2318 days ago1743140063IN
0 Knowledge Network: 0KN Token
0 ETH0.000048421.0115104
Approve221327622025-03-26 18:05:2319 days ago1743012323IN
0 Knowledge Network: 0KN Token
0 ETH0.000046571.00011667
Transfer221229582025-03-25 9:14:3521 days ago1742894075IN
0 Knowledge Network: 0KN Token
0 ETH0.000042740.89319852
Transfer221229062025-03-25 9:04:1121 days ago1742893451IN
0 Knowledge Network: 0KN Token
0 ETH0.000061730.95042328
Transfer221196072025-03-24 21:59:5921 days ago1742853599IN
0 Knowledge Network: 0KN Token
0 ETH0.000155542.39462094
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer221088132025-03-23 9:51:5923 days ago1742723519
0 Knowledge Network: 0KN Token
0.00398009 ETH
Transfer221088132025-03-23 9:51:5923 days ago1742723519
0 Knowledge Network: 0KN Token
0.00398009 ETH
Transfer220904292025-03-20 20:21:1125 days ago1742502071
0 Knowledge Network: 0KN Token
0.0037299 ETH
Transfer220904292025-03-20 20:21:1125 days ago1742502071
0 Knowledge Network: 0KN Token
0.0037299 ETH
Transfer220764342025-03-18 21:26:3527 days ago1742333195
0 Knowledge Network: 0KN Token
0.00368168 ETH
Transfer220764342025-03-18 21:26:3527 days ago1742333195
0 Knowledge Network: 0KN Token
0.00368168 ETH
Transfer219467982025-02-28 19:00:3545 days ago1740769235
0 Knowledge Network: 0KN Token
0.00351985 ETH
Transfer219467982025-02-28 19:00:3545 days ago1740769235
0 Knowledge Network: 0KN Token
0.00351985 ETH
Transfer219381272025-02-27 13:59:1147 days ago1740664751
0 Knowledge Network: 0KN Token
0.00690987 ETH
Transfer219381272025-02-27 13:59:1147 days ago1740664751
0 Knowledge Network: 0KN Token
0.00690987 ETH
Transfer219349772025-02-27 3:26:5947 days ago1740626819
0 Knowledge Network: 0KN Token
0.00663501 ETH
Transfer219349772025-02-27 3:26:5947 days ago1740626819
0 Knowledge Network: 0KN Token
0.00663501 ETH
Transfer219348822025-02-27 3:07:4747 days ago1740625667
0 Knowledge Network: 0KN Token
0.00619459 ETH
Transfer219348822025-02-27 3:07:4747 days ago1740625667
0 Knowledge Network: 0KN Token
0.00619459 ETH
Transfer219340382025-02-27 0:18:1147 days ago1740615491
0 Knowledge Network: 0KN Token
0.00570936 ETH
Transfer219340382025-02-27 0:18:1147 days ago1740615491
0 Knowledge Network: 0KN Token
0.00570936 ETH
Transfer219332792025-02-26 21:45:1147 days ago1740606311
0 Knowledge Network: 0KN Token
0.00551744 ETH
Transfer219332792025-02-26 21:45:1147 days ago1740606311
0 Knowledge Network: 0KN Token
0.00551744 ETH
Transfer219330742025-02-26 21:04:1147 days ago1740603851
0 Knowledge Network: 0KN Token
0.00584492 ETH
Transfer219330742025-02-26 21:04:1147 days ago1740603851
0 Knowledge Network: 0KN Token
0.00584492 ETH
Transfer219330502025-02-26 20:59:2347 days ago1740603563
0 Knowledge Network: 0KN Token
0.0056211 ETH
Transfer219330502025-02-26 20:59:2347 days ago1740603563
0 Knowledge Network: 0KN Token
0.0056211 ETH
Transfer219330032025-02-26 20:49:4747 days ago1740602987
0 Knowledge Network: 0KN Token
0.00559344 ETH
Transfer219330032025-02-26 20:49:4747 days ago1740602987
0 Knowledge Network: 0KN Token
0.00559344 ETH
Transfer219329882025-02-26 20:46:4747 days ago1740602807
0 Knowledge Network: 0KN Token
0.00522332 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ZeroKnowledgeNetwork

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
_____/\\\\\\\_______________/\\\________/\\\____________/\\\\\_____/\\\_        
 ___/\\\/////\\\____________\/\\\_____/\\\//____________\/\\\\\\___\/\\\_       
  __/\\\____\//\\\___________\/\\\__/\\\//_______________\/\\\/\\\__\/\\\_      
   _\/\\\_____\/\\\___________\/\\\\\\//\\\_______________\/\\\//\\\_\/\\\_     
    _\/\\\_____\/\\\___________\/\\\//_\//\\\______________\/\\\\//\\\\/\\\_    
     _\/\\\_____\/\\\___________\/\\\____\//\\\_____________\/\\\_\//\\\/\\\_   
      _\//\\\____/\\\____________\/\\\_____\//\\\____________\/\\\__\//\\\\\\_  
       __\///\\\\\\\/_____________\/\\\______\//\\\___________\/\\\___\//\\\\\_ 
        ____\///////_______________\///________\///____________\///_____\/////__
*/
// SPDX-License-Identifier:MIT
pragma solidity 0.8.18;

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

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

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

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

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

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

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

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

// Dex Factory contract interface
interface IDexFactory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

// Dex Router contract interface
interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    /**
     * @dev Unauthorized reentrant call.
     */
    error ReentrancyGuardReentrantCall();

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        if (_status == _ENTERED) {
            revert ReentrancyGuardReentrantCall();
        }

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

contract ZeroKnowledgeNetwork is Context, IERC20, Ownable, ReentrancyGuard {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isExcludedFromMaxHolding;

    string private _name = "Zero Knowledge Network";
    string private _symbol = "0KN";
    uint8 private _decimals = 18;
    uint256 private _totalSupply = 10_000_000_000 * 1e18; //10 Billion

    uint256 public minTokenToSwap = _totalSupply / (5000); // this amount will trigger swap and distribute
    uint256 public maxHoldLimit = (_totalSupply * 5) / 100; // this is the max wallet holding limit
    uint256 public percentDivider = 100;

    bool public distributeAndLiquifyStatus = true; // should be true to turn on to liquidate the pool
    bool public feesStatus = true; // enable by default

    IDexRouter public dexRouter; // router declaration

    address public dexPair; // pair address declaration
    address public OKNTreasuryWallet;
    address public NodeOperatorRewards =
        address(0x8bc9063Ca5a59C6FE79c7114916804ae01806d74);
    address public Seed = address(0xA321B6EdB7f1ae58eA3b494b98917BDAe30cd262);
    address public Team = address(0x041c89471163B034c302624785438C1E2493Adf8);
    address public Marketing =
        address(0x05DB6Dd90464192385Dc4121E39A14B453484De4);

    address private constant DEAD = address(0xdead);
    address private constant ZERO = address(0);

    uint256 public OKNTreasuryFeeOnBuy = 0;

    uint256 public OKNTreasuryFeeOnSell = 0;

    event TransferForeignToken(address token, uint256 amount);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeFromMaxHolding(address indexed account, bool isExcluded);
    event UpdatedMaxWalletAmount(uint256 newAmount);
    event NewSwapAmount(uint256 newAmount);
    event DistributionStatus(bool Status);
    event FeeStatus(bool Status);
    event FeeUpdated(uint256 amount);

    event OKNTreasuryWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    constructor() {
        _balances[NodeOperatorRewards] = (_totalSupply * 30) / 100; //30%
        _balances[Seed] = (_totalSupply * 10) / 100; //10%
        _balances[Team] = (_totalSupply * 5) / 100; //5%
        _balances[Marketing] = (_totalSupply * 10) / 100; //10%
        _balances[owner()] = (_totalSupply * 45) / 100; //45%

        OKNTreasuryWallet = address(0x05DB6Dd90464192385Dc4121E39A14B453484De4);

        IDexRouter _dexRouter = IDexRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        // Create a dex pair for this new ERC20
        address _dexPair = IDexFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );
        dexPair = _dexPair;

        // set the rest of the contract variables
        dexRouter = _dexRouter;

        //exclude owner and this contract from fee
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(dexRouter)] = true;
        isExcludedFromFee[
            address(0x71B5759d73262FBb223956913ecF4ecC51057641)
        ] = true; // Pink Lock

        //exclude owner and this contract from max hold limit
        isExcludedFromMaxHolding[owner()] = true;
        isExcludedFromMaxHolding[address(this)] = true;
        isExcludedFromMaxHolding[address(dexRouter)] = true;
        isExcludedFromMaxHolding[dexPair] = true;
        isExcludedFromMaxHolding[
            address(0x71B5759d73262FBb223956913ecF4ecC51057641)
        ] = true; // Pink Lock

        emit Transfer(
            address(0),
            NodeOperatorRewards,
            (_totalSupply * 30) / 100
        );
        emit Transfer(address(0), Seed, (_totalSupply * 10) / 100);
        emit Transfer(address(0), Team, (_totalSupply * 5) / 100);
        emit Transfer(address(0), Marketing, (_totalSupply * 10) / 100);
        emit Transfer(address(0), owner(), (_totalSupply * 45) / 100);
    }

    //to receive ETH from dexRouter when swapping
    receive() external payable {}

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - amount
        );
        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + (addedValue)
        );
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - subtractedValue
        );
        return true;
    }

    function includeOrExcludeFromFee(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromFee[account] = value;
        emit ExcludeFromFees(account, value);
    }

    function includeOrExcludeFromMaxHolding(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromMaxHolding[account] = value;
        emit ExcludeFromMaxHolding(account, value);
    }

    function setMinTokenToSwap(uint256 _amount) external onlyOwner {
        require(_amount > 0, "min swap amount should be greater than zero");
        minTokenToSwap = _amount * 1e18;
        emit NewSwapAmount(minTokenToSwap);
    }

    function setMaxHoldLimit(uint256 _amount) external onlyOwner {
        require(
            _amount >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set max wallet amount lower than 0.5%"
        );
        maxHoldLimit = _amount * 1e18;
        emit UpdatedMaxWalletAmount(maxHoldLimit);
    }

    function setBuyFeePercent(uint256 _OKNTreasuryFee) external onlyOwner {
        require(_OKNTreasuryFee <= 10, "max buy fee is 10");
        OKNTreasuryFeeOnBuy = _OKNTreasuryFee;
        emit FeeUpdated(OKNTreasuryFeeOnBuy);
    }

    function setSellFeePercent(uint256 _OKNTreasuryFee) external onlyOwner {
        require(_OKNTreasuryFee <= 10, "max sell fee is 10");
        OKNTreasuryFeeOnSell = _OKNTreasuryFee;
        emit FeeUpdated(OKNTreasuryFeeOnSell);
    }

    function setDistributionStatus(bool _value) external onlyOwner {
        // Check if the new value is different from the current state
        require(
            _value != distributeAndLiquifyStatus,
            "Value must be different from current state"
        );
        distributeAndLiquifyStatus = _value;
        emit DistributionStatus(_value);
    }

    function enableOrDisableFees(bool _value) external onlyOwner {
        // Check if the new value is different from the current state
        require(
            _value != feesStatus,
            "Value must be different from current state"
        );
        feesStatus = _value;
        emit FeeStatus(_value);
    }

    function updateOKNTreasuryWallet(
        address newOKNTreasuryWallet
    ) external onlyOwner {
        require(
            newOKNTreasuryWallet != address(0),
            "Ownable: new OKNTreasuryWallet is the zero address"
        );
        emit OKNTreasuryWalletUpdated(newOKNTreasuryWallet, OKNTreasuryWallet);
        OKNTreasuryWallet = newOKNTreasuryWallet;
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * OKNTreasuryFeeOnBuy) / percentDivider;
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * OKNTreasuryFeeOnSell) / percentDivider;
        return fee;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "0KN: approve from the zero address");
        require(spender != address(0), "0KN: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "0KN: transfer from the zero address");
        require(to != address(0), "0KN: transfer to the zero address");
        require(amount > 0, "0KN: Amount must be greater than zero");

        if (!isExcludedFromMaxHolding[to]) {
            require(
                balanceOf(to) + amount <= maxHoldLimit,
                "0KN: max hold limit exceeds"
            );
        }

        // swap and liquify
        distributeAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to isExcludedFromFee account then remove the fee
        if (isExcludedFromFee[from] || isExcludedFromFee[to] || !feesStatus) {
            takeFee = false;
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (dexPair == sender && takeFee) {
            uint256 allFee;
            uint256 tTransferAmount;
            allFee = totalBuyFeePerTx(amount);
            tTransferAmount = amount - allFee;

            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else if (dexPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount - allFee;
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else {
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + (amount);
            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)] + amount;

        emit Transfer(sender, address(this), amount);
    }

    // to withdarw ETH from contract
    function withdrawETH(uint256 _amount) external onlyOwner {
        require(address(this).balance >= _amount, "Invalid Amount");
        payable(msg.sender).transfer(_amount);

        emit Transfer(address(this), msg.sender, _amount);
    }

    function distributeAndLiquify(address from, address to) private {
        uint256 contractTokenBalance = balanceOf(address(this));

        if (
            contractTokenBalance >= minTokenToSwap &&
            from != dexPair &&
            distributeAndLiquifyStatus &&
            !(from == address(this) && to == dexPair) // swap 1 time
        ) {
            // approve contract
            _approve(address(this), address(dexRouter), minTokenToSwap);

            // now is to lock into liquidty pool
            Utils.swapTokensForEth(address(dexRouter), minTokenToSwap);
            uint256 ethForMarketing = address(this).balance;

            // sending Eth to Marketing wallet
            if (ethForMarketing > 0)
                payable(OKNTreasuryWallet).transfer(ethForMarketing);
        }
    }
}

// Library for doing a swap on Dex
library Utils {
    function swapTokensForEth(
        address routerAddress,
        uint256 tokenAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

        // generate the Dex pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp + 300
        );
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"DistributionStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromMaxHolding","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"FeeStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"NewSwapAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"OKNTreasuryWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"inputs":[],"name":"Marketing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NodeOperatorRewards","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OKNTreasuryFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OKNTreasuryFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OKNTreasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Seed","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Team","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxHolding","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_OKNTreasuryFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxHoldLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_OKNTreasuryFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOKNTreasuryWallet","type":"address"}],"name":"updateOKNTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052601660809081527f5a65726f204b6e6f776c65646765204e6574776f726b0000000000000000000060a0526006906200003e9082620007fd565b506040805180820190915260038152621825a760e91b6020820152600790620000689082620007fd565b506008805460ff191660121790556b204fce5e3e250261100000006009819055620000979061138890620008c9565b600a5560646009546005620000ad9190620008ec565b620000b99190620008c9565b600b556064600c55600d805461010161ffff19909116179055601080546001600160a01b0319908116738bc9063ca5a59c6fe79c7114916804ae01806d741790915560118054821673a321b6edb7f1ae58ea3b494b98917bdae30cd26217905560128054821673041c89471163b034c302624785438c1e2493adf8179055601380549091167305db6dd90464192385dc4121e39a14b453484de4179055600060148190556015553480156200016d57600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360018055600954606490620001c490601e620008ec565b620001d09190620008c9565b6010546001600160a01b0316600090815260026020526040902055600954606490620001fe90600a620008ec565b6200020a9190620008c9565b6011546001600160a01b031660009081526002602052604090205560095460649062000238906005620008ec565b620002449190620008c9565b6012546001600160a01b03166000908152600260205260409020556009546064906200027290600a620008ec565b6200027e9190620008c9565b6013546001600160a01b0316600090815260026020526040902055600954606490620002ac90602d620008ec565b620002b89190620008c9565b60026000620002cf6000546001600160a01b031690565b6001600160a01b031681526020808201929092526040908101600090812093909355600f80546001600160a01b0319167305db6dd90464192385dc4121e39a14b453484de4179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa15801562000365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038b919062000918565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ff919062000918565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200044d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000473919062000918565b600e80546001600160a01b0319166001600160a01b03838116919091178255600d805462010000600160b01b0319166201000087841681029190911782556000805484168152600460209081526040808320805460ff19908116600190811790925530808652838620805483168417905587548790048916865283862080548316841790557f181b38dae107ad7a36f51e654ef972d6c41d165bcb40c2dfb49fb5e641e8f466805483168417905585548916865260059094528285208054821683179055928452818420805484168217905594549390930485168252828220805482168517905594548416815290812080548516831790557371b5759d73262fbb223956913ecf4ecc5105764181527ff98fd0e7f6efd6fe8e448ee8fb48e788882f12aeb1795b18940ee343139f98b6805490941690911790925560105460095493945016916000805160206200272383398151915290606490620005da90601e620008ec565b620005e69190620008c9565b60405190815260200160405180910390a36011546009546001600160a01b039091169060009060008051602062002723833981519152906064906200062d90600a620008ec565b620006399190620008c9565b60405190815260200160405180910390a36012546009546001600160a01b0390911690600090600080516020620027238339815191529060649062000680906005620008ec565b6200068c9190620008c9565b60405190815260200160405180910390a36013546009546001600160a01b03909116906000906000805160206200272383398151915290606490620006d390600a620008ec565b620006df9190620008c9565b60405190815260200160405180910390a36000546001600160a01b03166001600160a01b031660006001600160a01b0316600080516020620027238339815191526064600954602d620007339190620008ec565b6200073f9190620008c9565b60405190815260200160405180910390a350506200094a565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078357607f821691505b602082108103620007a457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007f857600081815260208120601f850160051c81016020861015620007d35750805b601f850160051c820191505b81811015620007f457828155600101620007df565b5050505b505050565b81516001600160401b0381111562000819576200081962000758565b62000831816200082a84546200076e565b84620007aa565b602080601f831160018114620008695760008415620008505750858301515b600019600386901b1c1916600185901b178555620007f4565b600085815260208120601f198616915b828110156200089a5788860151825594840194600190910190840162000879565b5085821015620008b95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082620008e757634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176200091257634e487b7160e01b600052601160045260246000fd5b92915050565b6000602082840312156200092b57600080fd5b81516001600160a01b03811681146200094357600080fd5b9392505050565b611dc9806200095a6000396000f3fe6080604052600436106102555760003560e01c8063879dd3c511610139578063db886f23116100b6578063f097ea1a1161007a578063f097ea1a14610732578063f14210a614610752578063f242ab4114610772578063f2fde38b14610792578063f4b3dbc3146107b2578063fe6f1b05146107d257600080fd5b8063db886f231461066c578063dd62ed3e1461068c578063ea5b9e85146106d2578063ecd8da37146106f2578063ed4214291461071257600080fd5b8063a2b8a947116100fd578063a2b8a947146105cc578063a457c2d7146105ec578063a9059cbb1461060c578063b0bc2a2d1461062c578063c1f9fdbb1461064c57600080fd5b8063879dd3c5146105445780638da5cb5b14610563578063950eb5d51461058157806395d89b41146105a15780639a36dfa1146105b657600080fd5b806334aa24c4116101d257806369eedd0c1161019657806369eedd0c1461047957806370a082311461048f578063715018a6146104c557806379777b4e146104da57806384ea21bc146104f45780638756aabd1461052457600080fd5b806334aa24c4146103d357806339509351146103f357806352d3b6ea146104135780635342acb414610429578063639e01dd1461045957600080fd5b80631884f1e6116102195780631884f1e61461033b57806323b872dd146103515780632d12939014610371578063313ce56714610391578063339f2c71146103b357600080fd5b806306fdde03146102615780630758d9241461028c578063095ea7b3146102ca5780630a2d140c146102fa57806318160ddd1461031c57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107e8565b60405161028391906119fa565b60405180910390f35b34801561029857600080fd5b50600d546102b2906201000090046001600160a01b031681565b6040516001600160a01b039091168152602001610283565b3480156102d657600080fd5b506102ea6102e5366004611a60565b61087a565b6040519015158152602001610283565b34801561030657600080fd5b5061031a610315366004611aa1565b610891565b005b34801561032857600080fd5b506009545b604051908152602001610283565b34801561034757600080fd5b5061032d600a5481565b34801561035d57600080fd5b506102ea61036c366004611abc565b610934565b34801561037d57600080fd5b5061031a61038c366004611afd565b610986565b34801561039d57600080fd5b5060085460405160ff9091168152602001610283565b3480156103bf57600080fd5b5061031a6103ce366004611b32565b610a10565b3480156103df57600080fd5b506010546102b2906001600160a01b031681565b3480156103ff57600080fd5b506102ea61040e366004611a60565b610b08565b34801561041f57600080fd5b5061032d60155481565b34801561043557600080fd5b506102ea610444366004611b32565b60046020526000908152604090205460ff1681565b34801561046557600080fd5b506012546102b2906001600160a01b031681565b34801561048557600080fd5b5061032d60145481565b34801561049b57600080fd5b5061032d6104aa366004611b32565b6001600160a01b031660009081526002602052604090205490565b3480156104d157600080fd5b5061031a610b3f565b3480156104e657600080fd5b50600d546102ea9060ff1681565b34801561050057600080fd5b506102ea61050f366004611b32565b60056020526000908152604090205460ff1681565b34801561053057600080fd5b5061031a61053f366004611b4f565b610bb3565b34801561055057600080fd5b50600d546102ea90610100900460ff1681565b34801561056f57600080fd5b506000546001600160a01b03166102b2565b34801561058d57600080fd5b5061031a61059c366004611b4f565b610cbc565b3480156105ad57600080fd5b50610276610d60565b3480156105c257600080fd5b5061032d600b5481565b3480156105d857600080fd5b5061031a6105e7366004611b4f565b610d6f565b3480156105f857600080fd5b506102ea610607366004611a60565b610e14565b34801561061857600080fd5b506102ea610627366004611a60565b610e4b565b34801561063857600080fd5b5061031a610647366004611aa1565b610e58565b34801561065857600080fd5b506011546102b2906001600160a01b031681565b34801561067857600080fd5b506013546102b2906001600160a01b031681565b34801561069857600080fd5b5061032d6106a7366004611b68565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156106de57600080fd5b5061031a6106ed366004611afd565b610ef8565b3480156106fe57600080fd5b50600f546102b2906001600160a01b031681565b34801561071e57600080fd5b5061032d61072d366004611b4f565b610f7a565b34801561073e57600080fd5b5061031a61074d366004611b4f565b610f9f565b34801561075e57600080fd5b5061031a61076d366004611b4f565b611074565b34801561077e57600080fd5b50600e546102b2906001600160a01b031681565b34801561079e57600080fd5b5061031a6107ad366004611b32565b611135565b3480156107be57600080fd5b5061032d6107cd366004611b4f565b61121f565b3480156107de57600080fd5b5061032d600c5481565b6060600680546107f790611ba1565b80601f016020809104026020016040519081016040528092919081815260200182805461082390611ba1565b80156108705780601f1061084557610100808354040283529160200191610870565b820191906000526020600020905b81548152906001019060200180831161085357829003601f168201915b5050505050905090565b6000610887338484611233565b5060015b92915050565b6000546001600160a01b031633146108c45760405162461bcd60e51b81526004016108bb90611bdb565b60405180910390fd5b600d5460ff161515811515036108ec5760405162461bcd60e51b81526004016108bb90611c10565b600d805460ff19168215159081179091556040519081527f0ff846c521f32cbf9b5885504ef4a918e437ceb78c26a4b3bdde29162fc36dd3906020015b60405180910390a150565b600061094184848461134b565b6001600160a01b03841660009081526003602090815260408083203380855292529091205461097c918691610977908690611c70565b611233565b5060019392505050565b6000546001600160a01b031633146109b05760405162461bcd60e51b81526004016108bb90611bdb565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151590811790915591519182527f5fd35204cd502c8431331d81f2ceadee37e9cba514ecf1c45cf2a85d87597a4891015b60405180910390a25050565b6000546001600160a01b03163314610a3a5760405162461bcd60e51b81526004016108bb90611bdb565b6001600160a01b038116610aab5760405162461bcd60e51b815260206004820152603260248201527f4f776e61626c653a206e6577204f4b4e547265617375727957616c6c657420696044820152717320746865207a65726f206164647265737360701b60648201526084016108bb565b600f546040516001600160a01b03918216918316907f3a8a2e5edd8a898e7bd8f45b0d88ee1f817b929ebad96f784f64da73002acf9290600090a3600f80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610887918590610977908690611c83565b6000546001600160a01b03163314610b695760405162461bcd60e51b81526004016108bb90611bdb565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610bdd5760405162461bcd60e51b81526004016108bb90611bdb565b670de0b6b3a76400006103e8610bf260095490565b610bfd906005611c96565b610c079190611cad565b610c119190611cad565b811015610c755760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e352560a01b60648201526084016108bb565b610c8781670de0b6b3a7640000611c96565b600b8190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610929565b6000546001600160a01b03163314610ce65760405162461bcd60e51b81526004016108bb90611bdb565b600a811115610d2b5760405162461bcd60e51b815260206004820152601160248201527006d6178206275792066656520697320313607c1b60448201526064016108bb565b60148190556040518181527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c7690602001610929565b6060600780546107f790611ba1565b6000546001600160a01b03163314610d995760405162461bcd60e51b81526004016108bb90611bdb565b600a811115610ddf5760405162461bcd60e51b815260206004820152601260248201527106d61782073656c6c206665652069732031360741b60448201526064016108bb565b60158190556040518181527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c7690602001610929565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610887918590610977908690611c70565b600061088733848461134b565b6000546001600160a01b03163314610e825760405162461bcd60e51b81526004016108bb90611bdb565b600d54610100900460ff16151581151503610eaf5760405162461bcd60e51b81526004016108bb90611c10565b600d80548215156101000261ff00199091161790556040517f257582677437c495f1b305cc04a478c3678e6859529c07c31ca8a2efd7e0c0b89061092990831515815260200190565b6000546001600160a01b03163314610f225760405162461bcd60e51b81526004016108bb90611bdb565b6001600160a01b038216600081815260046020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79101610a04565b600080600c5460145484610f8e9190611c96565b610f989190611cad565b9392505050565b6000546001600160a01b03163314610fc95760405162461bcd60e51b81526004016108bb90611bdb565b6000811161102d5760405162461bcd60e51b815260206004820152602b60248201527f6d696e207377617020616d6f756e742073686f756c642062652067726561746560448201526a72207468616e207a65726f60a81b60648201526084016108bb565b61103f81670de0b6b3a7640000611c96565b600a8190556040519081527f2e6bb606f8e40581f3aead29e6b2d80455a891e6b1a8cee3624f74a93f01559390602001610929565b6000546001600160a01b0316331461109e5760405162461bcd60e51b81526004016108bb90611bdb565b804710156110df5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b60448201526064016108bb565b604051339082156108fc029083906000818181858888f1935050505015801561110c573d6000803e3d6000fd5b5060405181815233903090600080516020611d748339815191529060200160405180910390a350565b6000546001600160a01b0316331461115f5760405162461bcd60e51b81526004016108bb90611bdb565b6001600160a01b0381166111c45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108bb565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080600c5460155484610f8e9190611c96565b6001600160a01b0383166112945760405162461bcd60e51b815260206004820152602260248201527f304b4e3a20617070726f76652066726f6d20746865207a65726f206164647265604482015261737360f01b60648201526084016108bb565b6001600160a01b0382166112ea5760405162461bcd60e51b815260206004820181905260248201527f304b4e3a20617070726f766520746f20746865207a65726f206164647265737360448201526064016108bb565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113ad5760405162461bcd60e51b815260206004820152602360248201527f304b4e3a207472616e736665722066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016108bb565b6001600160a01b03821661140d5760405162461bcd60e51b815260206004820152602160248201527f304b4e3a207472616e7366657220746f20746865207a65726f206164647265736044820152607360f81b60648201526084016108bb565b6000811161146b5760405162461bcd60e51b815260206004820152602560248201527f304b4e3a20416d6f756e74206d7573742062652067726561746572207468616e604482015264207a65726f60d81b60648201526084016108bb565b6001600160a01b03821660009081526005602052604090205460ff1661150657600b54816114ae846001600160a01b031660009081526002602052604090205490565b6114b89190611c83565b11156115065760405162461bcd60e51b815260206004820152601b60248201527f304b4e3a206d617820686f6c64206c696d69742065786365656473000000000060448201526064016108bb565b6115108383611580565b6001600160a01b03831660009081526004602052604090205460019060ff168061155257506001600160a01b03831660009081526004602052604090205460ff165b806115655750600d54610100900460ff16155b1561156e575060005b61157a8484848461167b565b50505050565b30600090815260026020526040902054600a5481108015906115b05750600e546001600160a01b03848116911614155b80156115be5750600d5460ff165b80156115ec57506001600160a01b038316301480156115ea5750600e546001600160a01b038381169116145b155b156116765761161330600d60029054906101000a90046001600160a01b0316600a54611233565b600d54600a54611632916201000090046001600160a01b031690611840565b47801561157a57600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611673573d6000803e3d6000fd5b50505b505050565b600e546001600160a01b0385811691161480156116955750805b15611764576000806116a684610f7a565b91506116b28285611c70565b6001600160a01b0387166000908152600260205260409020549091506116d9908590611c70565b6001600160a01b038088166000908152600260205260408082209390935590871681522054611709908290611c83565b6001600160a01b038087166000818152600260205260409081902093909355915190881690600080516020611d748339815191529061174b9085815260200190565b60405180910390a361175d8683611994565b505061157a565b600e546001600160a01b03848116911614801561177e5750805b1561179c57600061178e8361121f565b905060006116b28285611c70565b6001600160a01b0384166000908152600260205260409020546117c0908390611c70565b6001600160a01b0380861660009081526002602052604080822093909355908516815220546117f0908390611c83565b6001600160a01b038085166000818152600260205260409081902093909355915190861690600080516020611d74833981519152906118329086815260200190565b60405180910390a350505050565b60408051600280825260608201835284926000929190602083019080368337019050509050308160008151811061187957611879611ccf565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fb9190611ce5565b8160018151811061190e5761190e611ccf565b6001600160a01b039283166020918202929092010152821663791ac947846000843061193c4261012c611c83565b6040518663ffffffff1660e01b815260040161195c959493929190611d02565b600060405180830381600087803b15801561197657600080fd5b505af115801561198a573d6000803e3d6000fd5b5050505050505050565b306000908152600260205260409020546119af908290611c83565b30600081815260026020526040908190209290925590516001600160a01b03841690600080516020611d74833981519152906119ee9085815260200190565b60405180910390a35050565b600060208083528351808285015260005b81811015611a2757858101830151858201604001528201611a0b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a5d57600080fd5b50565b60008060408385031215611a7357600080fd5b8235611a7e81611a48565b946020939093013593505050565b80358015158114611a9c57600080fd5b919050565b600060208284031215611ab357600080fd5b610f9882611a8c565b600080600060608486031215611ad157600080fd5b8335611adc81611a48565b92506020840135611aec81611a48565b929592945050506040919091013590565b60008060408385031215611b1057600080fd5b8235611b1b81611a48565b9150611b2960208401611a8c565b90509250929050565b600060208284031215611b4457600080fd5b8135610f9881611a48565b600060208284031215611b6157600080fd5b5035919050565b60008060408385031215611b7b57600080fd5b8235611b8681611a48565b91506020830135611b9681611a48565b809150509250929050565b600181811c90821680611bb557607f821691505b602082108103611bd557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602a908201527f56616c7565206d75737420626520646966666572656e742066726f6d2063757260408201526972656e7420737461746560b01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561088b5761088b611c5a565b8082018082111561088b5761088b611c5a565b808202811582820484141761088b5761088b611c5a565b600082611cca57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611cf757600080fd5b8151610f9881611a48565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d525784516001600160a01b031683529383019391830191600101611d2d565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d13b4726fed77929e36f5c517c27a45628a05bfd7f152c77b6eaa1a9b139782464736f6c63430008120033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106102555760003560e01c8063879dd3c511610139578063db886f23116100b6578063f097ea1a1161007a578063f097ea1a14610732578063f14210a614610752578063f242ab4114610772578063f2fde38b14610792578063f4b3dbc3146107b2578063fe6f1b05146107d257600080fd5b8063db886f231461066c578063dd62ed3e1461068c578063ea5b9e85146106d2578063ecd8da37146106f2578063ed4214291461071257600080fd5b8063a2b8a947116100fd578063a2b8a947146105cc578063a457c2d7146105ec578063a9059cbb1461060c578063b0bc2a2d1461062c578063c1f9fdbb1461064c57600080fd5b8063879dd3c5146105445780638da5cb5b14610563578063950eb5d51461058157806395d89b41146105a15780639a36dfa1146105b657600080fd5b806334aa24c4116101d257806369eedd0c1161019657806369eedd0c1461047957806370a082311461048f578063715018a6146104c557806379777b4e146104da57806384ea21bc146104f45780638756aabd1461052457600080fd5b806334aa24c4146103d357806339509351146103f357806352d3b6ea146104135780635342acb414610429578063639e01dd1461045957600080fd5b80631884f1e6116102195780631884f1e61461033b57806323b872dd146103515780632d12939014610371578063313ce56714610391578063339f2c71146103b357600080fd5b806306fdde03146102615780630758d9241461028c578063095ea7b3146102ca5780630a2d140c146102fa57806318160ddd1461031c57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107e8565b60405161028391906119fa565b60405180910390f35b34801561029857600080fd5b50600d546102b2906201000090046001600160a01b031681565b6040516001600160a01b039091168152602001610283565b3480156102d657600080fd5b506102ea6102e5366004611a60565b61087a565b6040519015158152602001610283565b34801561030657600080fd5b5061031a610315366004611aa1565b610891565b005b34801561032857600080fd5b506009545b604051908152602001610283565b34801561034757600080fd5b5061032d600a5481565b34801561035d57600080fd5b506102ea61036c366004611abc565b610934565b34801561037d57600080fd5b5061031a61038c366004611afd565b610986565b34801561039d57600080fd5b5060085460405160ff9091168152602001610283565b3480156103bf57600080fd5b5061031a6103ce366004611b32565b610a10565b3480156103df57600080fd5b506010546102b2906001600160a01b031681565b3480156103ff57600080fd5b506102ea61040e366004611a60565b610b08565b34801561041f57600080fd5b5061032d60155481565b34801561043557600080fd5b506102ea610444366004611b32565b60046020526000908152604090205460ff1681565b34801561046557600080fd5b506012546102b2906001600160a01b031681565b34801561048557600080fd5b5061032d60145481565b34801561049b57600080fd5b5061032d6104aa366004611b32565b6001600160a01b031660009081526002602052604090205490565b3480156104d157600080fd5b5061031a610b3f565b3480156104e657600080fd5b50600d546102ea9060ff1681565b34801561050057600080fd5b506102ea61050f366004611b32565b60056020526000908152604090205460ff1681565b34801561053057600080fd5b5061031a61053f366004611b4f565b610bb3565b34801561055057600080fd5b50600d546102ea90610100900460ff1681565b34801561056f57600080fd5b506000546001600160a01b03166102b2565b34801561058d57600080fd5b5061031a61059c366004611b4f565b610cbc565b3480156105ad57600080fd5b50610276610d60565b3480156105c257600080fd5b5061032d600b5481565b3480156105d857600080fd5b5061031a6105e7366004611b4f565b610d6f565b3480156105f857600080fd5b506102ea610607366004611a60565b610e14565b34801561061857600080fd5b506102ea610627366004611a60565b610e4b565b34801561063857600080fd5b5061031a610647366004611aa1565b610e58565b34801561065857600080fd5b506011546102b2906001600160a01b031681565b34801561067857600080fd5b506013546102b2906001600160a01b031681565b34801561069857600080fd5b5061032d6106a7366004611b68565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156106de57600080fd5b5061031a6106ed366004611afd565b610ef8565b3480156106fe57600080fd5b50600f546102b2906001600160a01b031681565b34801561071e57600080fd5b5061032d61072d366004611b4f565b610f7a565b34801561073e57600080fd5b5061031a61074d366004611b4f565b610f9f565b34801561075e57600080fd5b5061031a61076d366004611b4f565b611074565b34801561077e57600080fd5b50600e546102b2906001600160a01b031681565b34801561079e57600080fd5b5061031a6107ad366004611b32565b611135565b3480156107be57600080fd5b5061032d6107cd366004611b4f565b61121f565b3480156107de57600080fd5b5061032d600c5481565b6060600680546107f790611ba1565b80601f016020809104026020016040519081016040528092919081815260200182805461082390611ba1565b80156108705780601f1061084557610100808354040283529160200191610870565b820191906000526020600020905b81548152906001019060200180831161085357829003601f168201915b5050505050905090565b6000610887338484611233565b5060015b92915050565b6000546001600160a01b031633146108c45760405162461bcd60e51b81526004016108bb90611bdb565b60405180910390fd5b600d5460ff161515811515036108ec5760405162461bcd60e51b81526004016108bb90611c10565b600d805460ff19168215159081179091556040519081527f0ff846c521f32cbf9b5885504ef4a918e437ceb78c26a4b3bdde29162fc36dd3906020015b60405180910390a150565b600061094184848461134b565b6001600160a01b03841660009081526003602090815260408083203380855292529091205461097c918691610977908690611c70565b611233565b5060019392505050565b6000546001600160a01b031633146109b05760405162461bcd60e51b81526004016108bb90611bdb565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151590811790915591519182527f5fd35204cd502c8431331d81f2ceadee37e9cba514ecf1c45cf2a85d87597a4891015b60405180910390a25050565b6000546001600160a01b03163314610a3a5760405162461bcd60e51b81526004016108bb90611bdb565b6001600160a01b038116610aab5760405162461bcd60e51b815260206004820152603260248201527f4f776e61626c653a206e6577204f4b4e547265617375727957616c6c657420696044820152717320746865207a65726f206164647265737360701b60648201526084016108bb565b600f546040516001600160a01b03918216918316907f3a8a2e5edd8a898e7bd8f45b0d88ee1f817b929ebad96f784f64da73002acf9290600090a3600f80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610887918590610977908690611c83565b6000546001600160a01b03163314610b695760405162461bcd60e51b81526004016108bb90611bdb565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610bdd5760405162461bcd60e51b81526004016108bb90611bdb565b670de0b6b3a76400006103e8610bf260095490565b610bfd906005611c96565b610c079190611cad565b610c119190611cad565b811015610c755760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e352560a01b60648201526084016108bb565b610c8781670de0b6b3a7640000611c96565b600b8190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610929565b6000546001600160a01b03163314610ce65760405162461bcd60e51b81526004016108bb90611bdb565b600a811115610d2b5760405162461bcd60e51b815260206004820152601160248201527006d6178206275792066656520697320313607c1b60448201526064016108bb565b60148190556040518181527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c7690602001610929565b6060600780546107f790611ba1565b6000546001600160a01b03163314610d995760405162461bcd60e51b81526004016108bb90611bdb565b600a811115610ddf5760405162461bcd60e51b815260206004820152601260248201527106d61782073656c6c206665652069732031360741b60448201526064016108bb565b60158190556040518181527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c7690602001610929565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610887918590610977908690611c70565b600061088733848461134b565b6000546001600160a01b03163314610e825760405162461bcd60e51b81526004016108bb90611bdb565b600d54610100900460ff16151581151503610eaf5760405162461bcd60e51b81526004016108bb90611c10565b600d80548215156101000261ff00199091161790556040517f257582677437c495f1b305cc04a478c3678e6859529c07c31ca8a2efd7e0c0b89061092990831515815260200190565b6000546001600160a01b03163314610f225760405162461bcd60e51b81526004016108bb90611bdb565b6001600160a01b038216600081815260046020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79101610a04565b600080600c5460145484610f8e9190611c96565b610f989190611cad565b9392505050565b6000546001600160a01b03163314610fc95760405162461bcd60e51b81526004016108bb90611bdb565b6000811161102d5760405162461bcd60e51b815260206004820152602b60248201527f6d696e207377617020616d6f756e742073686f756c642062652067726561746560448201526a72207468616e207a65726f60a81b60648201526084016108bb565b61103f81670de0b6b3a7640000611c96565b600a8190556040519081527f2e6bb606f8e40581f3aead29e6b2d80455a891e6b1a8cee3624f74a93f01559390602001610929565b6000546001600160a01b0316331461109e5760405162461bcd60e51b81526004016108bb90611bdb565b804710156110df5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b60448201526064016108bb565b604051339082156108fc029083906000818181858888f1935050505015801561110c573d6000803e3d6000fd5b5060405181815233903090600080516020611d748339815191529060200160405180910390a350565b6000546001600160a01b0316331461115f5760405162461bcd60e51b81526004016108bb90611bdb565b6001600160a01b0381166111c45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108bb565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080600c5460155484610f8e9190611c96565b6001600160a01b0383166112945760405162461bcd60e51b815260206004820152602260248201527f304b4e3a20617070726f76652066726f6d20746865207a65726f206164647265604482015261737360f01b60648201526084016108bb565b6001600160a01b0382166112ea5760405162461bcd60e51b815260206004820181905260248201527f304b4e3a20617070726f766520746f20746865207a65726f206164647265737360448201526064016108bb565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113ad5760405162461bcd60e51b815260206004820152602360248201527f304b4e3a207472616e736665722066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084016108bb565b6001600160a01b03821661140d5760405162461bcd60e51b815260206004820152602160248201527f304b4e3a207472616e7366657220746f20746865207a65726f206164647265736044820152607360f81b60648201526084016108bb565b6000811161146b5760405162461bcd60e51b815260206004820152602560248201527f304b4e3a20416d6f756e74206d7573742062652067726561746572207468616e604482015264207a65726f60d81b60648201526084016108bb565b6001600160a01b03821660009081526005602052604090205460ff1661150657600b54816114ae846001600160a01b031660009081526002602052604090205490565b6114b89190611c83565b11156115065760405162461bcd60e51b815260206004820152601b60248201527f304b4e3a206d617820686f6c64206c696d69742065786365656473000000000060448201526064016108bb565b6115108383611580565b6001600160a01b03831660009081526004602052604090205460019060ff168061155257506001600160a01b03831660009081526004602052604090205460ff165b806115655750600d54610100900460ff16155b1561156e575060005b61157a8484848461167b565b50505050565b30600090815260026020526040902054600a5481108015906115b05750600e546001600160a01b03848116911614155b80156115be5750600d5460ff165b80156115ec57506001600160a01b038316301480156115ea5750600e546001600160a01b038381169116145b155b156116765761161330600d60029054906101000a90046001600160a01b0316600a54611233565b600d54600a54611632916201000090046001600160a01b031690611840565b47801561157a57600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611673573d6000803e3d6000fd5b50505b505050565b600e546001600160a01b0385811691161480156116955750805b15611764576000806116a684610f7a565b91506116b28285611c70565b6001600160a01b0387166000908152600260205260409020549091506116d9908590611c70565b6001600160a01b038088166000908152600260205260408082209390935590871681522054611709908290611c83565b6001600160a01b038087166000818152600260205260409081902093909355915190881690600080516020611d748339815191529061174b9085815260200190565b60405180910390a361175d8683611994565b505061157a565b600e546001600160a01b03848116911614801561177e5750805b1561179c57600061178e8361121f565b905060006116b28285611c70565b6001600160a01b0384166000908152600260205260409020546117c0908390611c70565b6001600160a01b0380861660009081526002602052604080822093909355908516815220546117f0908390611c83565b6001600160a01b038085166000818152600260205260409081902093909355915190861690600080516020611d74833981519152906118329086815260200190565b60405180910390a350505050565b60408051600280825260608201835284926000929190602083019080368337019050509050308160008151811061187957611879611ccf565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fb9190611ce5565b8160018151811061190e5761190e611ccf565b6001600160a01b039283166020918202929092010152821663791ac947846000843061193c4261012c611c83565b6040518663ffffffff1660e01b815260040161195c959493929190611d02565b600060405180830381600087803b15801561197657600080fd5b505af115801561198a573d6000803e3d6000fd5b5050505050505050565b306000908152600260205260409020546119af908290611c83565b30600081815260026020526040908190209290925590516001600160a01b03841690600080516020611d74833981519152906119ee9085815260200190565b60405180910390a35050565b600060208083528351808285015260005b81811015611a2757858101830151858201604001528201611a0b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a5d57600080fd5b50565b60008060408385031215611a7357600080fd5b8235611a7e81611a48565b946020939093013593505050565b80358015158114611a9c57600080fd5b919050565b600060208284031215611ab357600080fd5b610f9882611a8c565b600080600060608486031215611ad157600080fd5b8335611adc81611a48565b92506020840135611aec81611a48565b929592945050506040919091013590565b60008060408385031215611b1057600080fd5b8235611b1b81611a48565b9150611b2960208401611a8c565b90509250929050565b600060208284031215611b4457600080fd5b8135610f9881611a48565b600060208284031215611b6157600080fd5b5035919050565b60008060408385031215611b7b57600080fd5b8235611b8681611a48565b91506020830135611b9681611a48565b809150509250929050565b600181811c90821680611bb557607f821691505b602082108103611bd557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602a908201527f56616c7565206d75737420626520646966666572656e742066726f6d2063757260408201526972656e7420737461746560b01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561088b5761088b611c5a565b8082018082111561088b5761088b611c5a565b808202811582820484141761088b5761088b611c5a565b600082611cca57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611cf757600080fd5b8151610f9881611a48565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d525784516001600160a01b031683529383019391830191600101611d2d565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d13b4726fed77929e36f5c517c27a45628a05bfd7f152c77b6eaa1a9b139782464736f6c63430008120033

Deployed Bytecode Sourcemap

6310:13453:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10764:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7256:27;;;;;;;;;;-1:-1:-1;7256:27:0;;;;;;;-1:-1:-1;;;;;7256:27:0;;;;;;-1:-1:-1;;;;;749:32:1;;;731:51;;719:2;704:18;7256:27:0;567:221:1;11652:186:0;;;;;;;;;;-1:-1:-1;11652:186:0;;;;;:::i;:::-;;:::i;:::-;;;1414:14:1;;1407:22;1389:41;;1377:2;1362:18;11652:186:0;1249:187:1;14314:369:0;;;;;;;;;;-1:-1:-1;14314:369:0;;;;;:::i;:::-;;:::i;:::-;;11041:100;;;;;;;;;;-1:-1:-1;11121:12:0;;11041:100;;;1937:25:1;;;1925:2;1910:18;11041:100:0;1791:177:1;6841:53:0;;;;;;;;;;;;;;;;11846:350;;;;;;;;;;-1:-1:-1;11846:350:0;;;;;:::i;:::-;;:::i;13026:226::-;;;;;;;;;;-1:-1:-1;13026:226:0;;;;;:::i;:::-;;:::i;10950:83::-;;;;;;;;;;-1:-1:-1;11016:9:0;;10950:83;;11016:9;;;;2896:36:1;;2884:2;2869:18;10950:83:0;2754:184:1;15025:383:0;;;;;;;;;;-1:-1:-1;15025:383:0;;;;;:::i;:::-;;:::i;7410:97::-;;;;;;;;;;-1:-1:-1;7410:97:0;;;;-1:-1:-1;;;;;7410:97:0;;;12204:292;;;;;;;;;;-1:-1:-1;12204:292:0;;;;;:::i;:::-;;:::i;7922:39::-;;;;;;;;;;;;;;;;6520:49;;;;;;;;;;-1:-1:-1;6520:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7594:73;;;;;;;;;;-1:-1:-1;7594:73:0;;;;-1:-1:-1;;;;;7594:73:0;;;7875:38;;;;;;;;;;;;;;;;11149:119;;;;;;;;;;-1:-1:-1;11149:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;11242:18:0;11215:7;11242:18;;;:9;:18;;;;;;;11149:119;3430:157;;;;;;;;;;;;;:::i;7094:45::-;;;;;;;;;;-1:-1:-1;7094:45:0;;;;;;;;6576:56;;;;;;;;;;-1:-1:-1;6576:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13504:312;;;;;;;;;;-1:-1:-1;13504:312:0;;;;;:::i;:::-;;:::i;7197:29::-;;;;;;;;;;-1:-1:-1;7197:29:0;;;;;;;;;;;3216:79;;;;;;;;;;-1:-1:-1;3254:7:0;3281:6;-1:-1:-1;;;;;3281:6:0;3216:79;;13824:235;;;;;;;;;;-1:-1:-1;13824:235:0;;;;;:::i;:::-;;:::i;10855:87::-;;;;;;;;;;;;;:::i;6949:54::-;;;;;;;;;;;;;;;;14067:239;;;;;;;;;;-1:-1:-1;14067:239:0;;;;;:::i;:::-;;:::i;12504:300::-;;;;;;;;;;-1:-1:-1;12504:300:0;;;;;:::i;:::-;;:::i;11276:192::-;;;;;;;;;;-1:-1:-1;11276:192:0;;;;;:::i;:::-;;:::i;14691:326::-;;;;;;;;;;-1:-1:-1;14691:326:0;;;;;:::i;:::-;;:::i;7514:73::-;;;;;;;;;;-1:-1:-1;7514:73:0;;;;-1:-1:-1;;;;;7514:73:0;;;7674:87;;;;;;;;;;-1:-1:-1;7674:87:0;;;;-1:-1:-1;;;;;7674:87:0;;;11476:168;;;;;;;;;;-1:-1:-1;11476:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;11609:18:0;;;11582:7;11609:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11476:168;12812:206;;;;;;;;;;-1:-1:-1;12812:206:0;;;;;:::i;:::-;;:::i;7371:32::-;;;;;;;;;;-1:-1:-1;7371:32:0;;;;-1:-1:-1;;;;;7371:32:0;;;15416:173;;;;;;;;;;-1:-1:-1;15416:173:0;;;;;:::i;:::-;;:::i;13260:236::-;;;;;;;;;;-1:-1:-1;13260:236:0;;;;;:::i;:::-;;:::i;18676:245::-;;;;;;;;;;-1:-1:-1;18676:245:0;;;;;:::i;:::-;;:::i;7314:22::-;;;;;;;;;;-1:-1:-1;7314:22:0;;;;-1:-1:-1;;;;;7314:22:0;;;3595:281;;;;;;;;;;-1:-1:-1;3595:281:0;;;;;:::i;:::-;;:::i;15597:175::-;;;;;;;;;;-1:-1:-1;15597:175:0;;;;;:::i;:::-;;:::i;7050:35::-;;;;;;;;;;;;;;;;10764:83;10801:13;10834:5;10827:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10764:83;:::o;11652:186::-;11752:4;11769:39;2648:10;11792:7;11801:6;11769:8;:39::i;:::-;-1:-1:-1;11826:4:0;11652:186;;;;;:::o;14314:369::-;3343:6;;-1:-1:-1;;;;;3343:6:0;2648:10;3343:22;3335:67;;;;-1:-1:-1;;;3335:67:0;;;;;;;:::i;:::-;;;;;;;;;14491:26:::1;::::0;::::1;;14481:36;;::::0;::::1;;::::0;14459:128:::1;;;;-1:-1:-1::0;;;14459:128:0::1;;;;;;;:::i;:::-;14598:26;:35:::0;;-1:-1:-1;;14598:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14649:26:::1;::::0;1389:41:1;;;14649:26:0::1;::::0;1377:2:1;1362:18;14649:26:0::1;;;;;;;;14314:369:::0;:::o;11846:350::-;11978:4;11995:36;12005:6;12013:9;12024:6;11995:9;:36::i;:::-;-1:-1:-1;;;;;12113:19:0;;;;;;:11;:19;;;;;;;;2648:10;12113:33;;;;;;;;;12042:124;;12065:6;;12113:42;;12149:6;;12113:42;:::i;:::-;12042:8;:124::i;:::-;-1:-1:-1;12184:4:0;11846:350;;;;;:::o;13026:226::-;3343:6;;-1:-1:-1;;;;;3343:6:0;2648:10;3343:22;3335:67;;;;-1:-1:-1;;;3335:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13150:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;;;;;:41;;-1:-1:-1;;13150:41:0::1;::::0;::::1;;::::0;;::::1;::::0;;;13207:37;;1389:41:1;;;13207:37:0::1;::::0;1362:18:1;13207:37:0::1;;;;;;;;13026:226:::0;;:::o;15025:383::-;3343:6;;-1:-1:-1;;;;;3343:6:0;2648:10;3343:22;3335:67;;;;-1:-1:-1;;;3335:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15156:34:0;::::1;15134:134;;;::::0;-1:-1:-1;;;15134:134:0;;5605:2:1;15134:134:0::1;::::0;::::1;5587:21:1::0;5644:2;5624:18;;;5617:30;5683:34;5663:18;;;5656:62;-1:-1:-1;;;5734:18:1;;;5727:48;5792:19;;15134:134:0::1;5403:414:1::0;15134:134:0::1;15331:17;::::0;15284:65:::1;::::0;-1:-1:-1;;;;;15331:17:0;;::::1;::::0;15284:65;::::1;::::0;::::1;::::0;15331:17:::1;::::0;15284:65:::1;15360:17;:40:::0;;-1:-1:-1;;;;;;15360:40:0::1;-1:-1:-1::0;;;;;15360:40:0;;;::::1;::::0;;;::::1;::::0;;15025:383::o;12204:292::-;2648:10;12317:4;12406:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12406:34:0;;;;;;;;;;12317:4;;12334:132;;12384:7;;12406:49;;12444:10;;12406:49;:::i;3430:157::-;3343:6;;-1:-1:-1;;;;;3343:6:0;2648:10;3343:22;3335:67;;;;-1:-1:-1;;;3335:67:0;;;;;;;:::i;:::-;3537:1:::1;3521:6:::0;;3500:40:::1;::::0;-1:-1:-1;;;;;3521:6:0;;::::1;::::0;3500:40:::1;::::0;3537:1;;3500:40:::1;3576:1;3551:28:::0;;-1:-1:-1;;;;;;3551:28:0::1;::::0;;3430:157::o;13504:312::-;3343:6;;-1:-1:-1;;;;;3343:6:0;2648:10;3343:22;3335:67;;;;-1:-1:-1;;;3335:67:0;;;;;;;:::i;:::-;13640:4:::1;13632;13611:13;11121:12:::0;;;11041:100;13611:13:::1;:17;::::0;13627:1:::1;13611:17;:::i;:::-;13610:26;;;;:::i;:::-;13609:35;;;;:::i;:::-;13598:7;:46;;13576:140;;;::::0;-1:-1:-1;;;13576:140:0;;6549:2:1;13576:140:0::1;::::0;::::1;6531:21:1::0;6588:2;6568:18;;;6561:30;6627:34;6607:18;;;6600:62;-1:-1:-1;;;6678:18:1;;;6671:42;6730:19;;13576:140:0::1;6347:408:1::0;13576:140:0::1;13742:14;:7:::0;13752:4:::1;13742:14;:::i;:::-;13727:12;:29:::0;;;13772:36:::1;::::0;1937:25:1;;;13772:36:0::1;::::0;1925:2:1;1910:18;13772:36:0::1;1791:177:1::0;13824:235:0;3343:6;;-1:-1:-1;;;;;3343:6:0;2648:10;3343:22;3335:67;;;;-1:-1:-1;;;3335:67:0;;;;;;;:::i;:::-;13932:2:::1;13913:15;:21;;13905:51;;;::::0;-1:-1:-1;;;13905:51:0;;6962:2:1;13905:51:0::1;::::0;::::1;6944:21:1::0;7001:2;6981:18;;;6974:30;-1:-1:-1;;;7020:18:1;;;7013:47;7077:18;;13905:51:0::1;6760:341:1::0;13905:51:0::1;13967:19;:37:::0;;;14020:31:::1;::::0;1937:25:1;;;14020:31:0::1;::::0;1925:2:1;1910:18;14020:31:0::1;1791:177:1::0;10855:87:0;10894:13;10927:7;10920:14;;;;;:::i;14067:239::-;3343:6;;-1:-1:-1;;;;;3343:6:0;2648:10;3343:22;3335:67;;;;-1:-1:-1;;;3335:67:0;;;;;;;:::i;:::-;14176:2:::1;14157:15;:21;;14149:52;;;::::0;-1:-1:-1;;;14149:52:0;;7308:2:1;14149:52:0::1;::::0;::::1;7290:21:1::0;7347:2;7327:18;;;7320:30;-1:-1:-1;;;7366:18:1;;;7359:48;7424:18;;14149:52:0::1;7106:342:1::0;14149:52:0::1;14212:20;:38:::0;;;14266:32:::1;::::0;1937:25:1;;;14266:32:0::1;::::0;1925:2:1;1910:18;14266:32:0::1;1791:177:1::0;12504:300:0;2648:10;12622:4;12711:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12711:34:0;;;;;;;;;;12622:4;;12639:135;;12689:7;;12711:52;;12748:15;;12711:52;:::i;11276:192::-;11379:4;11396:42;2648:10;11420:9;11431:6;11396:9;:42::i;14691:326::-;3343:6;;-1:-1:-1;;;;;3343:6:0;2648:10;3343:22;3335:67;;;;-1:-1:-1;;;3335:67:0;;;;;;;:::i;:::-;14866:10:::1;::::0;::::1;::::0;::::1;;;14856:20;;::::0;::::1;;::::0;14834:112:::1;;;;-1:-1:-1::0;;;14834:112:0::1;;;;;;;:::i;:::-;14957:10;:19:::0;;;::::1;;;;-1:-1:-1::0;;14957:19:0;;::::1;;::::0;;14992:17:::1;::::0;::::1;::::0;::::1;::::0;14970:6;1414:14:1;1407:22;1389:41;;1377:2;1362:18;;1249:187;12812:206:0;3343:6;;-1:-1:-1;;;;;3343:6:0;2648:10;3343:22;3335:67;;;;-1:-1:-1;;;3335:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12929:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;;:34;;-1:-1:-1;;12929:34:0::1;::::0;::::1;;::::0;;::::1;::::0;;;12979:31;;1389:41:1;;;12979:31:0::1;::::0;1362:18:1;12979:31:0::1;1249:187:1::0;15416:173:0;15479:7;15499:11;15546:14;;15523:19;;15514:6;:28;;;;:::i;:::-;15513:47;;;;:::i;:::-;15499:61;15416:173;-1:-1:-1;;;15416:173:0:o;13260:236::-;3343:6;;-1:-1:-1;;;;;3343:6:0;2648:10;3343:22;3335:67;;;;-1:-1:-1;;;3335:67:0;;;;;;;:::i;:::-;13352:1:::1;13342:7;:11;13334:67;;;::::0;-1:-1:-1;;;13334:67:0;;7655:2:1;13334:67:0::1;::::0;::::1;7637:21:1::0;7694:2;7674:18;;;7667:30;7733:34;7713:18;;;7706:62;-1:-1:-1;;;7784:18:1;;;7777:41;7835:19;;13334:67:0::1;7453:407:1::0;13334:67:0::1;13429:14;:7:::0;13439:4:::1;13429:14;:::i;:::-;13412;:31:::0;;;13459:29:::1;::::0;1937:25:1;;;13459:29:0::1;::::0;1925:2:1;1910:18;13459:29:0::1;1791:177:1::0;18676:245:0;3343:6;;-1:-1:-1;;;;;3343:6:0;2648:10;3343:22;3335:67;;;;-1:-1:-1;;;3335:67:0;;;;;;;:::i;:::-;18777:7:::1;18752:21;:32;;18744:59;;;::::0;-1:-1:-1;;;18744:59:0;;8067:2:1;18744:59:0::1;::::0;::::1;8049:21:1::0;8106:2;8086:18;;;8079:30;-1:-1:-1;;;8125:18:1;;;8118:44;8179:18;;18744:59:0::1;7865:338:1::0;18744:59:0::1;18814:37;::::0;18822:10:::1;::::0;18814:37;::::1;;;::::0;18843:7;;18814:37:::1;::::0;;;18843:7;18822:10;18814:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;18869:44:0::1;::::0;1937:25:1;;;18893:10:0::1;::::0;18886:4:::1;::::0;-1:-1:-1;;;;;;;;;;;18869:44:0;1925:2:1;1910:18;18869:44:0::1;;;;;;;18676:245:::0;:::o;3595:281::-;3343:6;;-1:-1:-1;;;;;3343:6:0;2648:10;3343:22;3335:67;;;;-1:-1:-1;;;3335:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3698:22:0;::::1;3676:110;;;::::0;-1:-1:-1;;;3676:110:0;;8410:2:1;3676:110:0::1;::::0;::::1;8392:21:1::0;8449:2;8429:18;;;8422:30;8488:34;8468:18;;;8461:62;-1:-1:-1;;;8539:18:1;;;8532:36;8585:19;;3676:110:0::1;8208:402:1::0;3676:110:0::1;3823:6;::::0;;3802:38:::1;::::0;-1:-1:-1;;;;;3802:38:0;;::::1;::::0;3823:6;::::1;::::0;3802:38:::1;::::0;::::1;3851:6;:17:::0;;-1:-1:-1;;;;;;3851:17:0::1;-1:-1:-1::0;;;;;3851:17:0;;;::::1;::::0;;;::::1;::::0;;3595:281::o;15597:175::-;15661:7;15681:11;15729:14;;15705:20;;15696:6;:29;;;;:::i;15780:333::-;-1:-1:-1;;;;;15873:19:0;;15865:66;;;;-1:-1:-1;;;15865:66:0;;8817:2:1;15865:66:0;;;8799:21:1;8856:2;8836:18;;;8829:30;8895:34;8875:18;;;8868:62;-1:-1:-1;;;8946:18:1;;;8939:32;8988:19;;15865:66:0;8615:398:1;15865:66:0;-1:-1:-1;;;;;15950:21:0;;15942:66;;;;-1:-1:-1;;;15942:66:0;;9220:2:1;15942:66:0;;;9202:21:1;;;9239:18;;;9232:30;9298:34;9278:18;;;9271:62;9350:18;;15942:66:0;9018:356:1;15942:66:0;-1:-1:-1;;;;;16021:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16073:32;;1937:25:1;;;16073:32:0;;1910:18:1;16073:32:0;;;;;;;15780:333;;;:::o;16121:990::-;-1:-1:-1;;;;;16209:18:0;;16201:66;;;;-1:-1:-1;;;16201:66:0;;9581:2:1;16201:66:0;;;9563:21:1;9620:2;9600:18;;;9593:30;9659:34;9639:18;;;9632:62;-1:-1:-1;;;9710:18:1;;;9703:33;9753:19;;16201:66:0;9379:399:1;16201:66:0;-1:-1:-1;;;;;16286:16:0;;16278:62;;;;-1:-1:-1;;;16278:62:0;;9985:2:1;16278:62:0;;;9967:21:1;10024:2;10004:18;;;9997:30;10063:34;10043:18;;;10036:62;-1:-1:-1;;;10114:18:1;;;10107:31;10155:19;;16278:62:0;9783:397:1;16278:62:0;16368:1;16359:6;:10;16351:60;;;;-1:-1:-1;;;16351:60:0;;10387:2:1;16351:60:0;;;10369:21:1;10426:2;10406:18;;;10399:30;10465:34;10445:18;;;10438:62;-1:-1:-1;;;10516:18:1;;;10509:35;10561:19;;16351:60:0;10185:401:1;16351:60:0;-1:-1:-1;;;;;16429:28:0;;;;;;:24;:28;;;;;;;;16424:189;;16526:12;;16516:6;16500:13;16510:2;-1:-1:-1;;;;;11242:18:0;11215:7;11242:18;;;:9;:18;;;;;;;11149:119;16500:13;:22;;;;:::i;:::-;:38;;16474:127;;;;-1:-1:-1;;;16474:127:0;;10793:2:1;16474:127:0;;;10775:21:1;10832:2;10812:18;;;10805:30;10871:29;10851:18;;;10844:57;10918:18;;16474:127:0;10591:351:1;16474:127:0;16654:30;16675:4;16681:2;16654:20;:30::i;:::-;-1:-1:-1;;;;;16877:23:0;;16758:12;16877:23;;;:17;:23;;;;;;16773:4;;16877:23;;;:48;;-1:-1:-1;;;;;;16904:21:0;;;;;;:17;:21;;;;;;;;16877:48;:63;;;-1:-1:-1;16930:10:0;;;;;;;16929:11;16877:63;16873:111;;;-1:-1:-1;16967:5:0;16873:111;17062:41;17077:4;17083:2;17087:6;17095:7;17062:14;:41::i;:::-;16190:921;16121:990;;;:::o;18929:831::-;19053:4;19004:28;11242:18;;;:9;:18;;;;;;19114:14;;19090:38;;;;;:70;;-1:-1:-1;19153:7:0;;-1:-1:-1;;;;;19145:15:0;;;19153:7;;19145:15;;19090:70;:113;;;;-1:-1:-1;19177:26:0;;;;19090:113;:171;;;;-1:-1:-1;;;;;;19222:21:0;;19238:4;19222:21;:38;;;;-1:-1:-1;19253:7:0;;-1:-1:-1;;;;;19247:13:0;;;19253:7;;19247:13;19222:38;19220:41;19090:171;19072:681;;;19336:59;19353:4;19368:9;;;;;;;;;-1:-1:-1;;;;;19368:9:0;19380:14;;19336:8;:59::i;:::-;19493:9;;19505:14;;19462:58;;19493:9;;;-1:-1:-1;;;;;19493:9:0;;19462:22;:58::i;:::-;19561:21;19651:19;;19647:94;;19697:17;;19689:52;;-1:-1:-1;;;;;19697:17:0;;;;19689:52;;;;;19725:15;;19697:17;19689:52;19697:17;19689:52;19725:15;19697:17;19689:52;;;;;;;;;;;;;;;;;;;;;19288:465;19072:681;18993:767;18929:831;;:::o;17192:1232::-;17347:7;;-1:-1:-1;;;;;17347:17:0;;;:7;;:17;:28;;;;;17368:7;17347:28;17343:1074;;;17392:14;17421:23;17468:24;17485:6;17468:16;:24::i;:::-;17459:33;-1:-1:-1;17525:15:0;17459:33;17525:6;:15;:::i;:::-;-1:-1:-1;;;;;17577:17:0;;;;;;:9;:17;;;;;;17507:33;;-1:-1:-1;17577:26:0;;17597:6;;17577:26;:::i;:::-;-1:-1:-1;;;;;17557:17:0;;;;;;;:9;:17;;;;;;:46;;;;17641:20;;;;;;;:38;;17664:15;;17641:38;:::i;:::-;-1:-1:-1;;;;;17618:20:0;;;;;;;:9;:20;;;;;;;:61;;;;17699:44;;;;;;-1:-1:-1;;;;;;;;;;;17699:44:0;;;17727:15;1937:25:1;;1925:2;1910:18;;1791:177;17699:44:0;;;;;;;;17760:28;17773:6;17781;17760:12;:28::i;:::-;17377:423;;17343:1074;;;17810:7;;-1:-1:-1;;;;;17810:20:0;;;:7;;:20;:31;;;;;17834:7;17810:31;17806:611;;;17858:14;17875:25;17893:6;17875:17;:25::i;:::-;17858:42;-1:-1:-1;17915:23:0;17941:15;17858:42;17941:6;:15;:::i;17806:611::-;-1:-1:-1;;;;;18255:17:0;;;;;;:9;:17;;;;;;:26;;18275:6;;18255:26;:::i;:::-;-1:-1:-1;;;;;18235:17:0;;;;;;;:9;:17;;;;;;:46;;;;18319:20;;;;;;;:31;;18343:6;;18319:31;:::i;:::-;-1:-1:-1;;;;;18296:20:0;;;;;;;:9;:20;;;;;;;:54;;;;18370:35;;;;;;-1:-1:-1;;;;;;;;;;;18370:35:0;;;18398:6;1937:25:1;;1925:2;1910:18;;1791:177;18370:35:0;;;;;;;;17192:1232;;;;:::o;19824:614::-;20080:16;;;20094:1;20080:16;;;;;;;;19973:13;;19939:20;;20080:16;20094:1;20080:16;;;;;;;;;;-1:-1:-1;20080:16:0;20056:40;;20125:4;20107;20112:1;20107:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20107:23:0;;;-1:-1:-1;;;;;20107:23:0;;;;;20151:9;-1:-1:-1;;;;;20151:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20141:4;20146:1;20141:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20141:26:0;;;:7;;;;;;;;;:26;20206:60;;;20281:11;20307:1;20351:4;20378;20398:21;:15;20416:3;20398:21;:::i;:::-;20206:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19928:510;;19824:614;;:::o;18432:198::-;18550:4;18532:24;;;;:9;:24;;;;;;:33;;18559:6;;18532:33;:::i;:::-;18523:4;18505:24;;;;:9;:24;;;;;;;:60;;;;18583:39;;-1:-1:-1;;;;;18583:39:0;;;-1:-1:-1;;;;;;;;;;;18583:39:0;;;18615:6;1937:25:1;;1925:2;1910:18;;1791:177;18583:39:0;;;;;;;;18432:198;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;793:131::-;-1:-1:-1;;;;;868:31:1;;858:42;;848:70;;914:1;911;904:12;848:70;793:131;:::o;929:315::-;997:6;1005;1058:2;1046:9;1037:7;1033:23;1029:32;1026:52;;;1074:1;1071;1064:12;1026:52;1113:9;1100:23;1132:31;1157:5;1132:31;:::i;:::-;1182:5;1234:2;1219:18;;;;1206:32;;-1:-1:-1;;;929:315:1:o;1441:160::-;1506:20;;1562:13;;1555:21;1545:32;;1535:60;;1591:1;1588;1581:12;1535:60;1441:160;;;:::o;1606:180::-;1662:6;1715:2;1703:9;1694:7;1690:23;1686:32;1683:52;;;1731:1;1728;1721:12;1683:52;1754:26;1770:9;1754:26;:::i;1973:456::-;2050:6;2058;2066;2119:2;2107:9;2098:7;2094:23;2090:32;2087:52;;;2135:1;2132;2125:12;2087:52;2174:9;2161:23;2193:31;2218:5;2193:31;:::i;:::-;2243:5;-1:-1:-1;2300:2:1;2285:18;;2272:32;2313:33;2272:32;2313:33;:::i;:::-;1973:456;;2365:7;;-1:-1:-1;;;2419:2:1;2404:18;;;;2391:32;;1973:456::o;2434:315::-;2499:6;2507;2560:2;2548:9;2539:7;2535:23;2531:32;2528:52;;;2576:1;2573;2566:12;2528:52;2615:9;2602:23;2634:31;2659:5;2634:31;:::i;:::-;2684:5;-1:-1:-1;2708:35:1;2739:2;2724:18;;2708:35;:::i;:::-;2698:45;;2434:315;;;;;:::o;2943:247::-;3002:6;3055:2;3043:9;3034:7;3030:23;3026:32;3023:52;;;3071:1;3068;3061:12;3023:52;3110:9;3097:23;3129:31;3154:5;3129:31;:::i;3403:180::-;3462:6;3515:2;3503:9;3494:7;3490:23;3486:32;3483:52;;;3531:1;3528;3521:12;3483:52;-1:-1:-1;3554:23:1;;3403:180;-1:-1:-1;3403:180:1:o;3588:388::-;3656:6;3664;3717:2;3705:9;3696:7;3692:23;3688:32;3685:52;;;3733:1;3730;3723:12;3685:52;3772:9;3759:23;3791:31;3816:5;3791:31;:::i;:::-;3841:5;-1:-1:-1;3898:2:1;3883:18;;3870:32;3911:33;3870:32;3911:33;:::i;:::-;3963:7;3953:17;;;3588:388;;;;;:::o;3981:380::-;4060:1;4056:12;;;;4103;;;4124:61;;4178:4;4170:6;4166:17;4156:27;;4124:61;4231:2;4223:6;4220:14;4200:18;4197:38;4194:161;;4277:10;4272:3;4268:20;4265:1;4258:31;4312:4;4309:1;4302:15;4340:4;4337:1;4330:15;4194:161;;3981:380;;;:::o;4366:356::-;4568:2;4550:21;;;4587:18;;;4580:30;4646:34;4641:2;4626:18;;4619:62;4713:2;4698:18;;4366:356::o;4727:406::-;4929:2;4911:21;;;4968:2;4948:18;;;4941:30;5007:34;5002:2;4987:18;;4980:62;-1:-1:-1;;;5073:2:1;5058:18;;5051:40;5123:3;5108:19;;4727:406::o;5138:127::-;5199:10;5194:3;5190:20;5187:1;5180:31;5230:4;5227:1;5220:15;5254:4;5251:1;5244:15;5270:128;5337:9;;;5358:11;;;5355:37;;;5372:18;;:::i;5822:125::-;5887:9;;;5908:10;;;5905:36;;;5921:18;;:::i;5952:168::-;6025:9;;;6056;;6073:15;;;6067:22;;6053:37;6043:71;;6094:18;;:::i;6125:217::-;6165:1;6191;6181:132;;6235:10;6230:3;6226:20;6223:1;6216:31;6270:4;6267:1;6260:15;6298:4;6295:1;6288:15;6181:132;-1:-1:-1;6327:9:1;;6125:217::o;11079:127::-;11140:10;11135:3;11131:20;11128:1;11121:31;11171:4;11168:1;11161:15;11195:4;11192:1;11185:15;11211:251;11281:6;11334:2;11322:9;11313:7;11309:23;11305:32;11302:52;;;11350:1;11347;11340:12;11302:52;11382:9;11376:16;11401:31;11426:5;11401:31;:::i;11467:980::-;11729:4;11777:3;11766:9;11762:19;11808:6;11797:9;11790:25;11834:2;11872:6;11867:2;11856:9;11852:18;11845:34;11915:3;11910:2;11899:9;11895:18;11888:31;11939:6;11974;11968:13;12005:6;11997;11990:22;12043:3;12032:9;12028:19;12021:26;;12082:2;12074:6;12070:15;12056:29;;12103:1;12113:195;12127:6;12124:1;12121:13;12113:195;;;12192:13;;-1:-1:-1;;;;;12188:39:1;12176:52;;12283:15;;;;12248:12;;;;12224:1;12142:9;12113:195;;;-1:-1:-1;;;;;;;12364:32:1;;;;12359:2;12344:18;;12337:60;-1:-1:-1;;;12428:3:1;12413:19;12406:35;12325:3;11467:980;-1:-1:-1;;;11467:980:1:o

Swarm Source

ipfs://d13b4726fed77929e36f5c517c27a45628a05bfd7f152c77b6eaa1a9b1397824

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

0KN is the industry’s first decentralized metadata-private smart contract platform and privacy network, combining the power of zero-knowledge cryptography and cutting-edge post-quantum metadata-private mix networks.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.