Contract 0x774ad2a08ee554e2fbecdd2e4729e87199b84876

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x27113eabc9de4f2ebe6faae616b345b0a468fc1ef713f44c5f854cf6acf43633Set Share16208962022-02-23 20:32:51763 days 12 hrs ago0x2323b9bfc3da78913ee0aafdfba435bdb55186bd IN  0x774ad2a08ee554e2fbecdd2e4729e87199b848760 CRO0.3002450
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x4649628507523d7b64662f1baef270249c75bded939aff57c89b495b0a33d35916361912022-02-24 21:11:28762 days 11 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848761.329780291432698138 CRO
0x51cdd521eaeb5f20a27a21750917a4eddea107cf6fc017cb0b25c6f55189be8d16319182022-02-24 14:18:18762 days 18 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848761.798325200002052511 CRO
0x8119c33b1969b25d71b422bb27d255adaa3152cb81f2d1b0685ad816be9b641a16302182022-02-24 11:34:32762 days 21 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848761.689119903528284418 CRO
0x241b9c8c9a0094d51891ec93fcef36062d0a9ccda9ba2ffeabe718947f2306dd16223442022-02-23 22:53:37763 days 10 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848761.65150516426674101 CRO
0x570c2698fdcaad13b47fa364c1db03a9c70fd69ba9b6f41b0b1bbbfdf0a1cb8f16222102022-02-23 22:40:40763 days 10 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848761.16317675939390336 CRO
0x63ad291322421aa23353e10445d3362cea1a4b20a575e8b1fbaab55e7f2465e816219462022-02-23 22:15:03763 days 10 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848761.410448229597073748 CRO
0xbf433c27db0d5df3586abe8b317cb45833c5c0830a3752902a49048a4358786f16219432022-02-23 22:14:45763 days 10 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848761.757172741042970256 CRO
0x9f8d1d257dfa4b457faa327b1bcf321efec2bcbf9aadc1c1c5d0c7c9ad98ae9d16217602022-02-23 21:56:56763 days 11 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848761.839295603418985437 CRO
0x8f205714210983b7713b3992210fc179508604241795ce747a0b050bb814056f16213892022-02-23 21:20:58763 days 11 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848761.197108936767576628 CRO
0x9fc2f6544d485d3113854a4a2c449a3b276a22fcfbc19f26af51b67053bc013c16213842022-02-23 21:20:29763 days 11 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848761.132659958367694839 CRO
0xfbb9becfc763a34b271a74b2bf87ad02478c4e962a8ea56ed57c994fa6fde30616212722022-02-23 21:09:35763 days 11 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848761.39376066007421093 CRO
0x0a084d9b2bc088ec1dbfc32456f657f6dde0c68b26d2fdfe744e3127de5676ab16212132022-02-23 21:03:44763 days 11 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848762.170591075884836173 CRO
0xc9fa93f77e6ac9bb24d9e4ef9c1a40abf3ff14df5cb554e9f5285cd84f3ecf7116210152022-02-23 20:44:23763 days 12 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848762.04361049267590863 CRO
0xceb6fd145ad0232694f9a3bbcd980449144345a79678765ada23e8780c576a1716210082022-02-23 20:43:43763 days 12 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848761.729714640253756003 CRO
0x7b028b7f68af4051d75a4b8160c45fbafe5512baba4cc7c4d870572d276c5cf916210012022-02-23 20:43:02763 days 12 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848761.727995365132012018 CRO
0x61d86a390f10b8c9b21b20314f5ef7eadb1d9e7212249c4dc3c1238158005a5116209902022-02-23 20:41:58763 days 12 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848762.050670068784612311 CRO
0x7dd7e81fe6f7974548719d18fa4037f20961ebae9e445842c971e40a0a45d19f16209582022-02-23 20:38:53763 days 12 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848761.740262669375679318 CRO
0xfb2a7cb23a9e4a631e514f718288882eaae81fae73fd73f947e93af3527e1e6716209222022-02-23 20:35:22763 days 12 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848762.007279976877959939 CRO
0x261605e4d196bdeb0428232f96760c64562df4b85d4f20d846e5fcbd99addb1b16208672022-02-23 20:30:02763 days 12 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848762.215338790627830607 CRO
0x7b1ea8d941c2159bd72a342cf1e5d48fd4c552cd7caa7970d9f66f307025048d16208622022-02-23 20:29:33763 days 12 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848762.720951166994923791 CRO
0x39a091312425266676e6b9bea38b35f2e434f71dfc1324d92a800f0ed15713e416208162022-02-23 20:25:08763 days 12 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848762.961877362829260412 CRO
0x8d154ce72aa1a6b2d6ea4381a016f4660455f3c6476eb00918cf66bd823c758216208122022-02-23 20:24:44763 days 12 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848762.277555177132083635 CRO
0x7483ec5c9b5424b49d1c8c77dcb4cada1c01ee9b64d1d7ef6ced8b40c42c397616207842022-02-23 20:22:03763 days 12 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848762.680764194068660885 CRO
0xf7903bab7961db6976529be8b5e3d85d63c112d1e517637089f24fb4252a4c8416207822022-02-23 20:21:51763 days 12 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848763.549073219908536504 CRO
0xc515f838e244c1876f5c52f076ade2919de138ee2c1ba2b7552f64565333b15516207802022-02-23 20:21:38763 days 12 hrs ago 0xde59f4c0c659e3a1167bea86248ec4d653ee014b 0x774ad2a08ee554e2fbecdd2e4729e87199b848763.511374879240059278 CRO
[ Download CSV Export 
Index Block
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DividendDistributor

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-02-23
*/

//
//  SteakCRO - $SCRO
//  https://t.me/SteakCRO
//
//SPDX-License-Identifier: None
pragma solidity ^0.8.12;

interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        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 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;
}

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    address public _token;
    address public _admin = 0x2323B9BfC3dA78913EE0aAfdFbA435BDb55186BD;
    address payable private _mrGreen = payable(0xe6497e1F2C5418978D5fC2cD32AA23315E7a41Fb);

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

    IDEXRouter router;
    address routerAddress = 0x145677FC4d9b8F19B5D56d1820c48e0443049a30;

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

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

    uint256 public minPeriod = 1;
    uint256 public minDistribution = 1 ether;

    uint256 currentIndex;

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

    constructor () {
        router = IDEXRouter(routerAddress);
        _token = msg.sender;
    }
     receive() external payable {
        uint256 amount = address(this).balance - lastBalance;
        totalDividends = totalDividends + amount;
        dividendsPerShare = dividendsPerShare + (dividendsPerShareAccuracyFactor * amount / totalShares);
        lastBalance = address(this).balance;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

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

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

        totalShares = totalShares - shares[shareholder].amount + amount;
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 amount = address(this).balance - lastBalance;
        totalDividends = totalDividends + amount;
        dividendsPerShare = dividendsPerShare + dividendsPerShareAccuracyFactor * amount / totalShares;
        lastBalance = address(this).balance;
    }

    function process(uint256 gas) external override onlyToken {

        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) {
            return;
        }

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

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }

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

            gasUsed += gasLeft - gasleft();
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

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

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            (bool success,) = payable(shareholder).call{value: amount, gas: 34000}("");
            if(success){
                totalDistributed = totalDistributed + amount;
                shareholderClaims[shareholder] = block.timestamp;
                shares[shareholder].totalRealised = shares[shareholder].totalRealised + amount;
                shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
            }
        }
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){
            return 0;
        }
        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
        if(shareholderTotalDividends <= shareholderTotalExcluded){
            return 0;
        }
        return shareholderTotalDividends - shareholderTotalExcluded;
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share * dividendsPerShare / dividendsPerShareAccuracyFactor;
    }

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

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
    
    function rescueCRO() external onlyToken {
        (bool tmpSuccess,) = payable(_mrGreen).call{value: address(this).balance, gas: 34000}("");
        tmpSuccess = false;
    }

    function rescueCROWithTransfer() external onlyToken {
        payable(_mrGreen).transfer(address(this).balance);
    }
}

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

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

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }
    
    event OwnershipTransferred(address owner);
}

interface MrGreenCryptoStakingContract {
    function stakeFromTokenContract(address staker, uint256 amount) external;
    function stakeAllFromTokenContract(address staker) external;
    function unstakeAllFromTokenContract(address staker) external;
    function unstakeFromTokenContract(address staker, uint amount) external;
    function realiseFromTokenContract(address staker) external;
    function _collectCroRewards(address staker) external returns (bool);
    function _rescueCroRewards(address staker) external;
    function getLastContractBalance() external view returns (uint256);
}

contract SteakCRO is IBEP20, Auth {

    string constant _name = "SteakCRO";
    string constant _symbol = "SCRO";
    uint8 constant _decimals = 18;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0x145677FC4d9b8F19B5D56d1820c48e0443049a30;


    uint256 _totalSupply = 1 * 10**9 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply / 100;
    uint256 public _walletMax = _totalSupply / 50;
    
    bool public limitWallet = true;

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

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isDividendExempt;
    mapping (address => bool) public limitLessAddress;

    uint256 public liquidityFee = 3;
    uint256 public stakingFee = 2;
    uint256 public marketingFee = 4;
    uint256 public rewardsFee = 5;
    uint256 public extraFeeOnSell = 6;

    uint256 private totalFee = 12;
    uint256 public totalFeeIfBuying = totalFee + stakingFee;
    uint256 public totalFeeIfSelling = 18;

    address public autoLiquidityReceiver = 0x2323B9BfC3dA78913EE0aAfdFbA435BDb55186BD;
    address public marketingWallet = 0x501caa83C2e29AceCB476FB47F679B8B67148d25;
    address public devWallet = 0xe6497e1F2C5418978D5fC2cD32AA23315E7a41Fb;
    address public MrGreenCryptoStaking;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    uint256 public blocksSinceStart;

    DividendDistributor public dividendDistributor;
    uint256 distributorGas = 300000;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    
    bool public stakingRewardsActive = false;
    uint256 public stakingPrizePool = 0;
    

    uint256 public swapThreshold = 1 * (10 ** _decimals);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    event AutoLiquify(uint256 amountBNB, uint256 amountTokenLiquified);

    constructor () Auth(msg.sender) {
        
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        dividendDistributor = new DividendDistributor();

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

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isDividendExempt[pair] = true;
        isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;
        
        totalFee = liquidityFee + marketingFee + rewardsFee;
        totalFeeIfSelling = totalFee + extraFeeOnSell;

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

    receive() external payable {}
    function name() external pure override returns (string memory) {return _name;}
    function symbol() external pure override returns (string memory) {return _symbol;}
    function decimals() external pure override returns (uint8) {return _decimals;}
    function totalSupply() external view override returns (uint256) {return _totalSupply;}
    function getOwner() external view override returns (address) {return owner;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function allowance(address holder, address spender) external view override returns (uint256) {return _allowances[holder][spender];}

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - (balanceOf(DEAD)) - (balanceOf(ZERO));
    }

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



    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function changeTxLimit(uint256 newLimit) external authorized {
        _maxTxAmount = newLimit * _totalSupply / 1000;
        require(newLimit > 5, "Don't make it a honeypot! Bad dev!");
    }

    function changeWalletLimit(uint256 newLimit) external authorized {
        _walletMax  = newLimit * _totalSupply / 100;
        require(newLimit > 2, "Don't make it a reverse honeypot! Bad dev!");
    }

    
    function changeIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function changeIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

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

    function sendAirDropsAndIncludeAutomatically(address[] calldata accounts, uint256[] calldata amount) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _balances[msg.sender] -=amount[i] * 10 ** _decimals;
            _balances[accounts[i]] += amount[i] * 10 ** _decimals;
            emit Transfer(msg.sender, accounts[i], amount[i] * 10 ** _decimals);
            dividendDistributor.setShare(accounts[i], amount[i] * 10 ** _decimals);
        }
    }

    function changeFees(uint256 newLiqFee, uint256 newRewardFee, uint256 newMarketingFee, uint256 newExtraSellFee, uint256 newStakingFee) external authorized {
        liquidityFee = newLiqFee;
        rewardsFee = newRewardFee;
        marketingFee = newMarketingFee;
        extraFeeOnSell = newExtraSellFee;
        stakingFee = newStakingFee;
        totalFeeIfBuying = totalFee + stakingFee;
        totalFee = liquidityFee + marketingFee + rewardsFee;
        totalFeeIfSelling = totalFee + extraFeeOnSell;
        require(totalFeeIfSelling < 30, "Don't make a honeypot");
    }

    function changeFeeReceivers(address newLiquidityReceiver, address newMarketingWallet) external authorized {
        autoLiquidityReceiver = newLiquidityReceiver;
        marketingWallet = newMarketingWallet;
    }

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external authorized {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit * (10 ** _decimals);
    }

    function changeDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external authorized {
        dividendDistributor.setDistributionCriteria(newMinPeriod, newMinDistribution);
    }

    function changeDistributorSettings(uint256 gas) external authorized {
        require(gas < 1750000);
        distributorGas = gas;
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

	function setMrGreenCryptoStakingAddress(address addy) external authorized {
		MrGreenCryptoStaking = addy;
        limitLessAddress[MrGreenCryptoStaking] = true;
	}

    function setStakingRewardsActive(bool active) external authorized {
		stakingRewardsActive = active;
	}

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - (amount);
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        
        if(
            inSwapAndLiquify ||
            sender == owner ||
            limitLessAddress[recipient] ||
            limitLessAddress[sender]
        ){
            return _basicTransfer(sender, recipient, amount); 
        }
        blocksSinceStart = block.number - launchedAt;
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){
            swapBack(); 
        }

        if(!launched() && recipient == pair && sender == owner) {
            launch();
        }

        if(!isTxLimitExempt[recipient] && limitWallet) {
            require(_balances[recipient] + amount <= _walletMax, "Exceeds max Wallet");
        }

        _balances[sender] = _balances[sender] - (amount);

        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient] + finalAmount;

        // Update staking pool, if active.
		// Update of the pool can be deactivated for launch and staking contract migration.
		if (stakingRewardsActive) {
			sendToStakingPool();
		}

        // Dividend tracker //
        if(!isDividendExempt[sender]) {
            try dividendDistributor.setShare(sender, _balances[sender]) {} catch {}
        }

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

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

        emit Transfer(sender, recipient, finalAmount);
        return true;
    }
    
    function sendToStakingPool() internal {
		_balances[ZERO] -= stakingPrizePool;
		_balances[MrGreenCryptoStaking] += stakingPrizePool;
        uint256 rewardBalance = MrGreenCryptoStakingContract(MrGreenCryptoStaking).getLastContractBalance();
        rewardBalance += stakingPrizePool;
        try dividendDistributor.setShare(MrGreenCryptoStaking, rewardBalance) {} catch {}
		emit Transfer(ZERO, MrGreenCryptoStaking, stakingPrizePool);
		stakingPrizePool = 0;
	}

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

        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;

        if(limitLessAddress[sender]){
            try dividendDistributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!launched() && recipient == pair) {
            launch();
        }

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

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee;
        uint256 feeAmount = amount * feeApplicable / 100;
        _balances[address(this)] += feeAmount;
        emit Transfer(sender, address(this), feeAmount);


	    // If staking tax is active, it is stored on ZERO address.
		// If staking payout itself is active, it is later moved from ZERO to the appropriate staking address.
        if (stakingFee > 0) {
            uint256 stakingFees = stakingFee * amount / 100;
			stakingFees = amount * stakingFee / 100;
			_balances[ZERO] += stakingFees;
			stakingPrizePool += stakingFees;
			emit Transfer(sender, ZERO, stakingFees);
            amount -= stakingFees;
		}

        
        return amount - feeAmount;
    }

    

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify * liquidityFee / totalFee / 2;
        uint256 amountToSwap = tokensToLiquify - amountToLiquify;

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

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

        uint256 amountBNB = address(this).balance;
        uint256 totalBNBFee = totalFee - (liquidityFee / (2));
        uint256 amountBNBLiquidity = amountBNB * liquidityFee / totalBNBFee / (2);
        uint256 amountBNBReflection = amountBNB * rewardsFee / totalBNBFee;
        uint256 amountBNBMarketing = amountBNB - amountBNBLiquidity - amountBNBReflection;

        try dividendDistributor.deposit{value: amountBNBReflection}() {} catch {}
        
        uint256 marketingShare = amountBNBMarketing * (marketingFee - 1) / marketingFee;
        uint256 devShare = amountBNBMarketing - marketingShare;

        (bool tmpSuccess,) = payable(marketingWallet).call{value: marketingShare, gas: 34000}("");
        (bool tmpSuccess1,) = payable(devWallet).call{value: devShare, gas: 34000}("");
        
        // only to supress warning msg
        tmpSuccess = false;
        tmpSuccess1 = false;

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

    function _stakeAll() external {
        _allowances[msg.sender][MrGreenCryptoStaking] = type(uint256).max;
        emit Approval(msg.sender, MrGreenCryptoStaking, type(uint256).max);
        MrGreenCryptoStakingContract(MrGreenCryptoStaking).stakeAllFromTokenContract(msg.sender);
    }
    function _stakeSome(uint amount) external {
        _allowances[msg.sender][MrGreenCryptoStaking] = type(uint256).max;
        emit Approval(msg.sender, MrGreenCryptoStaking, type(uint256).max);
        MrGreenCryptoStakingContract(MrGreenCryptoStaking).stakeFromTokenContract(msg.sender, amount);
    }
    function _unstakeSome(uint amount) external {
        MrGreenCryptoStakingContract(MrGreenCryptoStaking).unstakeFromTokenContract(msg.sender, amount);
    }
    function _unstakeAll() external {
        MrGreenCryptoStakingContract(MrGreenCryptoStaking).unstakeAllFromTokenContract(msg.sender);
    }
    function _collectStakingRewardsWithoutUnstaking() external {
        MrGreenCryptoStakingContract(MrGreenCryptoStaking).realiseFromTokenContract(msg.sender);
    }

    function collectCroRewards() external {
        if(MrGreenCryptoStakingContract(MrGreenCryptoStaking)._collectCroRewards(msg.sender) == false) {
            MrGreenCryptoStakingContract(MrGreenCryptoStaking)._rescueCroRewards(msg.sender);
        }
    }

    function rescueCRO() external onlyOwner{
        (bool tmpSuccess,) = payable(devWallet).call{value: address(this).balance, gas: 40000}("");
        tmpSuccess = false;
    }
    
    function rescueCROWithTransfer() external onlyOwner{
        payable(devWallet).transfer(address(this).balance);
    }

}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"_admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"dividendsPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendsPerShareAccuracyFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"process","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueCRO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueCROWithTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shareholderClaims","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shareholderIndexes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b0319908116732323b9bfc3da78913ee0aafdfba435bdb55186bd17825560028054821673e6497e1f2c5418978d5fc2cd32aa23315e7a41fb1790556004805490911673145677fc4d9b8f19b5d56d1820c48e0443049a301790556ec097ce7bc90715b34b9f1000000000600d55600f55670de0b6b3a764000060105534801561009757600080fd5b50600454600380546001600160a01b03199081166001600160a01b039093169290921790556000805490911633179055610d7c806100d66000396000f3fe6080604052600436106101185760003560e01c8063997664d7116100a0578063e64a9e6e11610064578063e64a9e6e14610360578063ecd0c0c314610375578063efca2eed14610395578063ffb2c479146103ab578063ffd49c84146103cb57600080fd5b8063997664d7146102a8578063ce7c2ac2146102be578063d0e30db014610315578063d4fda1f21461031d578063e2d2e2191461034a57600080fd5b80632d48e896116100e75780632d48e8961461021a5780633a98ef391461023a5780633d59551b146102505780634fab0ae81461026557806366817df51461027b57600080fd5b806301bc45c91461017757806311ce023d146101b457806314b6ca96146101d857806328fd3198146101fa57600080fd5b36610172576000600e544761012d9190610bec565b905080600a5461013d9190610c03565b600a55600954600d54610151908390610c1b565b61015b9190610c3a565b600c546101689190610c03565b600c555047600e55005b600080fd5b34801561018357600080fd5b50600154610197906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101c057600080fd5b506101ca600d5481565b6040519081526020016101ab565b3480156101e457600080fd5b506101f86101f3366004610c78565b6103e1565b005b34801561020657600080fd5b506101ca610215366004610ca2565b610583565b34801561022657600080fd5b506101f8610235366004610cc4565b61060c565b34801561024657600080fd5b506101ca60095481565b34801561025c57600080fd5b506101f8610658565b34801561027157600080fd5b506101ca60105481565b34801561028757600080fd5b506101ca610296366004610ca2565b60076020526000908152604090205481565b3480156102b457600080fd5b506101ca600a5481565b3480156102ca57600080fd5b506102fa6102d9366004610ca2565b60086020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016101ab565b6101f86106f6565b34801561032957600080fd5b506101ca610338366004610ca2565b60066020526000908152604090205481565b34801561035657600080fd5b506101ca600c5481565b34801561036c57600080fd5b506101f861078c565b34801561038157600080fd5b50600054610197906001600160a01b031681565b3480156103a157600080fd5b506101ca600b5481565b3480156103b757600080fd5b506101f86103c6366004610ce6565b610809565b3480156103d757600080fd5b506101ca600f5481565b6000546001600160a01b031633148061040457506001546001600160a01b031633145b8061041957506002546001600160a01b031633145b61042257600080fd5b6001600160a01b038216600090815260086020526040902054156104495761044982610933565b60008111801561046f57506001600160a01b038216600090815260086020526040902054155b156104d557600580546001600160a01b0384166000818152600660205260408120839055600183018455929092527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319169091179055610508565b801580156104fa57506001600160a01b03821660009081526008602052604090205415155b156105085761050882610a59565b6001600160a01b038216600090815260086020526040902054600954829161052f91610bec565b6105399190610c03565b6009556001600160a01b038216600090815260086020526040902081905561056081610b6e565b6001600160a01b0390921660009081526008602052604090206001019190915550565b6001600160a01b0381166000908152600860205260408120546105a857506000919050565b6001600160a01b0382166000908152600860205260408120546105ca90610b6e565b6001600160a01b0384166000908152600860205260409020600101549091508082116105fa575060009392505050565b6106048183610bec565b949350505050565b6000546001600160a01b031633148061062f57506001546001600160a01b031633145b8061064457506002546001600160a01b031633145b61064d57600080fd5b600f91909155601055565b6000546001600160a01b031633148061067b57506001546001600160a01b031633145b8061069057506002546001600160a01b031633145b61069957600080fd5b6002546040516000916001600160a01b0316906184d090479084818181858888f193505050503d80600081146106eb576040519150601f19603f3d011682016040523d82523d6000602084013e6106f0565b606091505b50505050565b6000546001600160a01b031633148061071957506001546001600160a01b031633145b8061072e57506002546001600160a01b031633145b61073757600080fd5b6000600e54476107479190610bec565b905080600a546107579190610c03565b600a55600954600d5461076b908390610c1b565b6107759190610c3a565b600c546107829190610c03565b600c555047600e55565b6000546001600160a01b03163314806107af57506001546001600160a01b031633145b806107c457506002546001600160a01b031633145b6107cd57600080fd5b6002546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610806573d6000803e3d6000fd5b50565b6000546001600160a01b031633148061082c57506001546001600160a01b031633145b8061084157506002546001600160a01b031633145b61084a57600080fd5b60055480610856575050565b60008060005a90505b848210801561086d57508383105b1561092c5783601154106108815760006011555b6108b360056011548154811061089957610899610cff565b6000918252602090912001546001600160a01b0316610b91565b156108ea576108ea6005601154815481106108d0576108d0610cff565b6000918252602090912001546001600160a01b0316610933565b5a6108f59082610bec565b6108ff9083610c03565b91505a60118054919250600061091483610d15565b9190505550828061092490610d15565b93505061085f565b5050505050565b6001600160a01b0381166000908152600860205260409020546109535750565b600061095e82610583565b90508015610a55576000826001600160a01b0316826184d090604051600060405180830381858888f193505050503d80600081146109b8576040519150601f19603f3d011682016040523d82523d6000602084013e6109bd565b606091505b505090508015610a535781600b546109d59190610c03565b600b556001600160a01b03831660009081526007602090815260408083204290556008909152902060020154610a0c908390610c03565b6001600160a01b0384166000908152600860205260409020600281019190915554610a3690610b6e565b6001600160a01b0384166000908152600860205260409020600101555b505b5050565b60058054610a6990600190610bec565b81548110610a7957610a79610cff565b60009182526020808320909101546001600160a01b0384811684526006909252604090922054600580549290931692918110610ab757610ab7610cff565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260069182905260408120546005805491939291610b0390600190610bec565b81548110610b1357610b13610cff565b60009182526020808320909101546001600160a01b031683528201929092526040019020556005805480610b4957610b49610d30565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600d54600c5483610b819190610c1b565b610b8b9190610c3a565b92915050565b600f546001600160a01b03821660009081526007602052604081205490914291610bbb9190610c03565b108015610b8b5750601054610bcf83610583565b1192915050565b634e487b7160e01b600052601160045260246000fd5b600082821015610bfe57610bfe610bd6565b500390565b60008219821115610c1657610c16610bd6565b500190565b6000816000190483118215151615610c3557610c35610bd6565b500290565b600082610c5757634e487b7160e01b600052601260045260246000fd5b500490565b80356001600160a01b0381168114610c7357600080fd5b919050565b60008060408385031215610c8b57600080fd5b610c9483610c5c565b946020939093013593505050565b600060208284031215610cb457600080fd5b610cbd82610c5c565b9392505050565b60008060408385031215610cd757600080fd5b50508035926020909101359150565b600060208284031215610cf857600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610d2957610d29610bd6565b5060010190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a092af63981eaba036db741dabbbc7418ef61777166be0c4c21974842fb0a69464736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106101185760003560e01c8063997664d7116100a0578063e64a9e6e11610064578063e64a9e6e14610360578063ecd0c0c314610375578063efca2eed14610395578063ffb2c479146103ab578063ffd49c84146103cb57600080fd5b8063997664d7146102a8578063ce7c2ac2146102be578063d0e30db014610315578063d4fda1f21461031d578063e2d2e2191461034a57600080fd5b80632d48e896116100e75780632d48e8961461021a5780633a98ef391461023a5780633d59551b146102505780634fab0ae81461026557806366817df51461027b57600080fd5b806301bc45c91461017757806311ce023d146101b457806314b6ca96146101d857806328fd3198146101fa57600080fd5b36610172576000600e544761012d9190610bec565b905080600a5461013d9190610c03565b600a55600954600d54610151908390610c1b565b61015b9190610c3a565b600c546101689190610c03565b600c555047600e55005b600080fd5b34801561018357600080fd5b50600154610197906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101c057600080fd5b506101ca600d5481565b6040519081526020016101ab565b3480156101e457600080fd5b506101f86101f3366004610c78565b6103e1565b005b34801561020657600080fd5b506101ca610215366004610ca2565b610583565b34801561022657600080fd5b506101f8610235366004610cc4565b61060c565b34801561024657600080fd5b506101ca60095481565b34801561025c57600080fd5b506101f8610658565b34801561027157600080fd5b506101ca60105481565b34801561028757600080fd5b506101ca610296366004610ca2565b60076020526000908152604090205481565b3480156102b457600080fd5b506101ca600a5481565b3480156102ca57600080fd5b506102fa6102d9366004610ca2565b60086020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016101ab565b6101f86106f6565b34801561032957600080fd5b506101ca610338366004610ca2565b60066020526000908152604090205481565b34801561035657600080fd5b506101ca600c5481565b34801561036c57600080fd5b506101f861078c565b34801561038157600080fd5b50600054610197906001600160a01b031681565b3480156103a157600080fd5b506101ca600b5481565b3480156103b757600080fd5b506101f86103c6366004610ce6565b610809565b3480156103d757600080fd5b506101ca600f5481565b6000546001600160a01b031633148061040457506001546001600160a01b031633145b8061041957506002546001600160a01b031633145b61042257600080fd5b6001600160a01b038216600090815260086020526040902054156104495761044982610933565b60008111801561046f57506001600160a01b038216600090815260086020526040902054155b156104d557600580546001600160a01b0384166000818152600660205260408120839055600183018455929092527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319169091179055610508565b801580156104fa57506001600160a01b03821660009081526008602052604090205415155b156105085761050882610a59565b6001600160a01b038216600090815260086020526040902054600954829161052f91610bec565b6105399190610c03565b6009556001600160a01b038216600090815260086020526040902081905561056081610b6e565b6001600160a01b0390921660009081526008602052604090206001019190915550565b6001600160a01b0381166000908152600860205260408120546105a857506000919050565b6001600160a01b0382166000908152600860205260408120546105ca90610b6e565b6001600160a01b0384166000908152600860205260409020600101549091508082116105fa575060009392505050565b6106048183610bec565b949350505050565b6000546001600160a01b031633148061062f57506001546001600160a01b031633145b8061064457506002546001600160a01b031633145b61064d57600080fd5b600f91909155601055565b6000546001600160a01b031633148061067b57506001546001600160a01b031633145b8061069057506002546001600160a01b031633145b61069957600080fd5b6002546040516000916001600160a01b0316906184d090479084818181858888f193505050503d80600081146106eb576040519150601f19603f3d011682016040523d82523d6000602084013e6106f0565b606091505b50505050565b6000546001600160a01b031633148061071957506001546001600160a01b031633145b8061072e57506002546001600160a01b031633145b61073757600080fd5b6000600e54476107479190610bec565b905080600a546107579190610c03565b600a55600954600d5461076b908390610c1b565b6107759190610c3a565b600c546107829190610c03565b600c555047600e55565b6000546001600160a01b03163314806107af57506001546001600160a01b031633145b806107c457506002546001600160a01b031633145b6107cd57600080fd5b6002546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610806573d6000803e3d6000fd5b50565b6000546001600160a01b031633148061082c57506001546001600160a01b031633145b8061084157506002546001600160a01b031633145b61084a57600080fd5b60055480610856575050565b60008060005a90505b848210801561086d57508383105b1561092c5783601154106108815760006011555b6108b360056011548154811061089957610899610cff565b6000918252602090912001546001600160a01b0316610b91565b156108ea576108ea6005601154815481106108d0576108d0610cff565b6000918252602090912001546001600160a01b0316610933565b5a6108f59082610bec565b6108ff9083610c03565b91505a60118054919250600061091483610d15565b9190505550828061092490610d15565b93505061085f565b5050505050565b6001600160a01b0381166000908152600860205260409020546109535750565b600061095e82610583565b90508015610a55576000826001600160a01b0316826184d090604051600060405180830381858888f193505050503d80600081146109b8576040519150601f19603f3d011682016040523d82523d6000602084013e6109bd565b606091505b505090508015610a535781600b546109d59190610c03565b600b556001600160a01b03831660009081526007602090815260408083204290556008909152902060020154610a0c908390610c03565b6001600160a01b0384166000908152600860205260409020600281019190915554610a3690610b6e565b6001600160a01b0384166000908152600860205260409020600101555b505b5050565b60058054610a6990600190610bec565b81548110610a7957610a79610cff565b60009182526020808320909101546001600160a01b0384811684526006909252604090922054600580549290931692918110610ab757610ab7610cff565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260069182905260408120546005805491939291610b0390600190610bec565b81548110610b1357610b13610cff565b60009182526020808320909101546001600160a01b031683528201929092526040019020556005805480610b4957610b49610d30565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600d54600c5483610b819190610c1b565b610b8b9190610c3a565b92915050565b600f546001600160a01b03821660009081526007602052604081205490914291610bbb9190610c03565b108015610b8b5750601054610bcf83610583565b1192915050565b634e487b7160e01b600052601160045260246000fd5b600082821015610bfe57610bfe610bd6565b500390565b60008219821115610c1657610c16610bd6565b500190565b6000816000190483118215151615610c3557610c35610bd6565b500290565b600082610c5757634e487b7160e01b600052601260045260246000fd5b500490565b80356001600160a01b0381168114610c7357600080fd5b919050565b60008060408385031215610c8b57600080fd5b610c9483610c5c565b946020939093013593505050565b600060208284031215610cb457600080fd5b610cbd82610c5c565b9392505050565b60008060408385031215610cd757600080fd5b50508035926020909101359150565b600060208284031215610cf857600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610d2957610d29610bd6565b5060010190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a092af63981eaba036db741dabbbc7418ef61777166be0c4c21974842fb0a69464736f6c634300080c0033

Deployed ByteCode Sourcemap

2797:5956:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4112:14;4153:11;;4129:21;:35;;;;:::i;:::-;4112:52;;4209:6;4192:14;;:23;;;;:::i;:::-;4175:14;:40;4310:11;;4267:31;;:40;;4301:6;;4267:40;:::i;:::-;:54;;;;:::i;:::-;4246:17;;:76;;;;:::i;:::-;4226:17;:96;-1:-1:-1;4347:21:0;4333:11;:35;2797:5956;;;;;2885:66;;;;;;;;;;-1:-1:-1;2885:66:0;;;;-1:-1:-1;;;;;2885:66:0;;;;;;-1:-1:-1;;;;;968:32:1;;;950:51;;938:2;923:18;2885:66:0;;;;;;;;3615:57;;;;;;;;;;;;;;;;;;;1158:25:1;;;1146:2;1131:18;3615:57:0;1012:177:1;4593:638:0;;;;;;;;;;-1:-1:-1;4593:638:0;;;;;:::i;:::-;;:::i;:::-;;7276:514;;;;;;;;;;-1:-1:-1;7276:514:0;;;;;:::i;:::-;;:::i;4384:201::-;;;;;;;;;;-1:-1:-1;4384:201:0;;;;;:::i;:::-;;:::i;3469:26::-;;;;;;;;;;;;;;;;8445:177;;;;;;;;;;;;;:::i;3751:40::-;;;;;;;;;;;;;;;;3360:53;;;;;;;;;;-1:-1:-1;3360:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;3502:29;;;;;;;;;;;;;;;;3420:40;;;;;;;;;;-1:-1:-1;3420:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2277:25:1;;;2333:2;2318:18;;2311:34;;;;2361:18;;;2354:34;2265:2;2250:18;3420:40:0;2075:319:1;5239:328:0;;;:::i;3299:54::-;;;;;;;;;;-1:-1:-1;3299:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;3576:32;;;;;;;;;;;;;;;;8630:120;;;;;;;;;;;;;:::i;2857:21::-;;;;;;;;;;-1:-1:-1;2857:21:0;;;;-1:-1:-1;;;;;2857:21:0;;;3538:31;;;;;;;;;;;;;;;;5575:762;;;;;;;;;;-1:-1:-1;5575:762:0;;;;;:::i;:::-;;:::i;3716:28::-;;;;;;;;;;;;;;;;4593:638;3883:6;;-1:-1:-1;;;;;3883:6:0;3869:10;:20;;:44;;-1:-1:-1;3907:6:0;;-1:-1:-1;;;;;3907:6:0;3893:10;:20;3869:44;:70;;;-1:-1:-1;3931:8:0;;-1:-1:-1;;;;;3931:8:0;3917:10;:22;3869:70;3861:79;;;;;;-1:-1:-1;;;;;4690:19:0;::::1;4719:1;4690:19:::0;;;:6:::1;:19;::::0;;;;:26;:30;4687:92:::1;;4736:31;4755:11;4736:18;:31::i;:::-;4803:1;4794:6;:10;:45;;;;-1:-1:-1::0;;;;;;4808:19:0;::::1;;::::0;;;:6:::1;:19;::::0;;;;:26;:31;4794:45:::1;4791:214;;;8069:12:::0;:19;;-1:-1:-1;;;;;8035:31:0;;;;;;:18;:31;;;;;:53;;;8099:30;;;;;;;;;;;;;-1:-1:-1;;;;;;8099:30:0;;;;;;4791:214:::1;;;4902:11:::0;;:45;::::1;;;-1:-1:-1::0;;;;;;4917:19:0;::::1;4946:1;4917:19:::0;;;:6:::1;:19;::::0;;;;:26;:30;;4902:45:::1;4899:106;;;4963:30;4981:11;4963:17;:30::i;:::-;-1:-1:-1::0;;;;;5045:19:0;::::1;;::::0;;;:6:::1;:19;::::0;;;;:26;5031:11:::1;::::0;5074:6;;5031:40:::1;::::0;::::1;:::i;:::-;:49;;;;:::i;:::-;5017:11;:63:::0;-1:-1:-1;;;;;5091:19:0;::::1;;::::0;;;:6:::1;:19;::::0;;;;:35;;;5173:50:::1;5120:6:::0;5173:22:::1;:50::i;:::-;-1:-1:-1::0;;;;;5137:19:0;;::::1;;::::0;;;:6:::1;:19;::::0;;;;:33:::1;;:86:::0;;;;-1:-1:-1;4593:638:0:o;7276:514::-;-1:-1:-1;;;;;7368:19:0;;7345:7;7368:19;;;:6;:19;;;;;:26;7365:70;;-1:-1:-1;7422:1:0;;7276:514;-1:-1:-1;7276:514:0:o;7365:70::-;-1:-1:-1;;;;;7504:19:0;;7445:33;7504:19;;;:6;:19;;;;;:26;7481:50;;:22;:50::i;:::-;-1:-1:-1;;;;;7577:19:0;;7542:32;7577:19;;;:6;:19;;;;;:33;;;7445:86;;-1:-1:-1;7624:53:0;;;7621:92;;-1:-1:-1;7700:1:0;;7276:514;-1:-1:-1;;;7276:514:0:o;7621:92::-;7730:52;7758:24;7730:25;:52;:::i;:::-;7723:59;7276:514;-1:-1:-1;;;;7276:514:0:o;4384:201::-;3883:6;;-1:-1:-1;;;;;3883:6:0;3869:10;:20;;:44;;-1:-1:-1;3907:6:0;;-1:-1:-1;;;;;3907:6:0;3893:10;:20;3869:44;:70;;;-1:-1:-1;3931:8:0;;-1:-1:-1;;;;;3931:8:0;3917:10;:22;3869:70;3861:79;;;;;;4506:9:::1;:24:::0;;;;4541:15:::1;:36:::0;4384:201::o;8445:177::-;3883:6;;-1:-1:-1;;;;;3883:6:0;3869:10;:20;;:44;;-1:-1:-1;3907:6:0;;-1:-1:-1;;;;;3907:6:0;3893:10;:20;3869:44;:70;;;-1:-1:-1;3931:8:0;;-1:-1:-1;;;;;3931:8:0;3917:10;:22;3869:70;3861:79;;;;;;8525:8:::1;::::0;8517:68:::1;::::0;8497:15:::1;::::0;-1:-1:-1;;;;;8525:8:0::1;::::0;8575:5:::1;::::0;8547:21:::1;::::0;8497:15;8517:68;8497:15;8517:68;8547:21;8525:8;8575:5;8517:68:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;8445:177:0:o;5239:328::-;3883:6;;-1:-1:-1;;;;;3883:6:0;3869:10;:20;;:44;;-1:-1:-1;3907:6:0;;-1:-1:-1;;;;;3907:6:0;3893:10;:20;3869:44;:70;;;-1:-1:-1;3931:8:0;;-1:-1:-1;;;;;3931:8:0;3917:10;:22;3869:70;3861:79;;;;;;5305:14:::1;5346:11;;5322:21;:35;;;;:::i;:::-;5305:52;;5402:6;5385:14;;:23;;;;:::i;:::-;5368:14;:40:::0;5502:11:::1;::::0;5459:31:::1;::::0;:40:::1;::::0;5493:6;;5459:40:::1;:::i;:::-;:54;;;;:::i;:::-;5439:17;;:74;;;;:::i;:::-;5419:17;:94:::0;-1:-1:-1;5538:21:0::1;5524:11;:35:::0;5239:328::o;8630:120::-;3883:6;;-1:-1:-1;;;;;3883:6:0;3869:10;:20;;:44;;-1:-1:-1;3907:6:0;;-1:-1:-1;;;;;3907:6:0;3893:10;:20;3869:44;:70;;;-1:-1:-1;3931:8:0;;-1:-1:-1;;;;;3931:8:0;3917:10;:22;3869:70;3861:79;;;;;;8701:8:::1;::::0;8693:49:::1;::::0;-1:-1:-1;;;;;8701:8:0;;::::1;::::0;8720:21:::1;8693:49:::0;::::1;;;::::0;8701:8:::1;8693:49:::0;8701:8;8693:49;8720:21;8701:8;8693:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8630:120::o:0;5575:762::-;3883:6;;-1:-1:-1;;;;;3883:6:0;3869:10;:20;;:44;;-1:-1:-1;3907:6:0;;-1:-1:-1;;;;;3907:6:0;3893:10;:20;3869:44;:70;;;-1:-1:-1;3931:8:0;;-1:-1:-1;;;;;3931:8:0;3917:10;:22;3869:70;3861:79;;;;;;5673:12:::1;:19:::0;5708:21;5705:59:::1;;5746:7;8693:49;8630:120::o:0;5705:59::-:1;5776:18;5809:15:::0;5839::::1;5857:9;5839:27;;5879:451;5895:3;5885:7;:13;:46;;;;;5915:16;5902:10;:29;5885:46;5879:451;;;5969:16;5953:12;;:32;5950:87;;6020:1;6005:12;:16:::0;5950:87:::1;6056:44;6073:12;6086;;6073:26;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;6073:26:0::1;6056:16;:44::i;:::-;6053:129;;;6120:46;6139:12;6152;;6139:26;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;6139:26:0::1;6120:18;:46::i;:::-;6219:9;6209:19;::::0;:7;:19:::1;:::i;:::-;6198:30;::::0;;::::1;:::i;:::-;;;6253:9;6277:12;:14:::0;;6243:19;;-1:-1:-1;6277:12:0::1;:14;::::0;::::1;:::i;:::-;;;;;;6306:12;;;;;:::i;:::-;;;;5879:451;;;5633:704;;;;5575:762:::0;:::o;6588:680::-;-1:-1:-1;;;;;6660:19:0;;;;;;:6;:19;;;;;:26;6657:46;;6588:680;:::o;6657:46::-;6715:14;6732:30;6750:11;6732:17;:30::i;:::-;6715:47;-1:-1:-1;6776:10:0;;6773:488;;6803:12;6828:11;-1:-1:-1;;;;;6820:25:0;6853:6;6866:5;6820:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6802:74;;;6894:7;6891:359;;;6959:6;6940:16;;:25;;;;:::i;:::-;6921:16;:44;-1:-1:-1;;;;;6984:30:0;;;;;;:17;:30;;;;;;;;7017:15;6984:48;;7087:6;:19;;;;;:33;;;:42;;7123:6;;7087:42;:::i;:::-;-1:-1:-1;;;;;7051:19:0;;;;;;:6;:19;;;;;:33;;;:78;;;;7207:26;7184:50;;:22;:50::i;:::-;-1:-1:-1;;;;;7148:19:0;;;;;;:6;:19;;;;;:33;;:86;6891:359;6787:474;6773:488;6646:622;6588:680;:::o;8145:288::-;8261:12;8274:19;;:21;;8294:1;;8274:21;:::i;:::-;8261:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;8226:31:0;;;;;:18;:31;;;;;;;;8213:12;:45;;8261:35;;;;;8213:12;:45;;;;;;:::i;:::-;;;;;;;;;;;;;:83;;-1:-1:-1;;;;;;8213:83:0;-1:-1:-1;;;;;8213:83:0;;;;;;8365:31;;;;;:18;:31;;;;;;;;8326:12;8339:19;;8365:31;;:18;8213:45;8339:21;;-1:-1:-1;;8339:21:0;:::i;:::-;8326:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;8326:35:0;8307:55;;;;;;;;;;;;:89;8407:12;:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;8407:18:0;;;;;-1:-1:-1;;;;;;8407:18:0;;;;;;-1:-1:-1;8145:288:0:o;7798:164::-;7868:7;7923:31;;7903:17;;7895:5;:25;;;;:::i;:::-;:59;;;;:::i;:::-;7888:66;7798:164;-1:-1:-1;;7798:164:0:o;6349:231::-;6476:9;;-1:-1:-1;;;;;6443:30:0;;6419:4;6443:30;;;:17;:30;;;;;;6419:4;;6488:15;;6443:42;;6476:9;6443:42;:::i;:::-;:60;:129;;;;;6557:15;;6524:30;6542:11;6524:17;:30::i;:::-;:48;6436:136;6349:231;-1:-1:-1;;6349:231:0:o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:125;186:4;214:1;211;208:8;205:34;;;219:18;;:::i;:::-;-1:-1:-1;256:9:1;;146:125::o;276:128::-;316:3;347:1;343:6;340:1;337:13;334:39;;;353:18;;:::i;:::-;-1:-1:-1;389:9:1;;276:128::o;409:168::-;449:7;515:1;511;507:6;503:14;500:1;497:21;492:1;485:9;478:17;474:45;471:71;;;522:18;;:::i;:::-;-1:-1:-1;562:9:1;;409:168::o;582:217::-;622:1;648;638:132;;692:10;687:3;683:20;680:1;673:31;727:4;724:1;717:15;755:4;752:1;745:15;638:132;-1:-1:-1;784:9:1;;582:217::o;1194:173::-;1262:20;;-1:-1:-1;;;;;1311:31:1;;1301:42;;1291:70;;1357:1;1354;1347:12;1291:70;1194:173;;;:::o;1372:254::-;1440:6;1448;1501:2;1489:9;1480:7;1476:23;1472:32;1469:52;;;1517:1;1514;1507:12;1469:52;1540:29;1559:9;1540:29;:::i;:::-;1530:39;1616:2;1601:18;;;;1588:32;;-1:-1:-1;;;1372:254:1:o;1631:186::-;1690:6;1743:2;1731:9;1722:7;1718:23;1714:32;1711:52;;;1759:1;1756;1749:12;1711:52;1782:29;1801:9;1782:29;:::i;:::-;1772:39;1631:186;-1:-1:-1;;;1631:186:1:o;1822:248::-;1890:6;1898;1951:2;1939:9;1930:7;1926:23;1922:32;1919:52;;;1967:1;1964;1957:12;1919:52;-1:-1:-1;;1990:23:1;;;2060:2;2045:18;;;2032:32;;-1:-1:-1;1822:248:1:o;2399:180::-;2458:6;2511:2;2499:9;2490:7;2486:23;2482:32;2479:52;;;2527:1;2524;2517:12;2479:52;-1:-1:-1;2550:23:1;;2399:180;-1:-1:-1;2399:180:1:o;2794:127::-;2855:10;2850:3;2846:20;2843:1;2836:31;2886:4;2883:1;2876:15;2910:4;2907:1;2900:15;2926:135;2965:3;-1:-1:-1;;2986:17:1;;2983:43;;;3006:18;;:::i;:::-;-1:-1:-1;3053:1:1;3042:13;;2926:135::o;3066:127::-;3127:10;3122:3;3118:20;3115:1;3108:31;3158:4;3155:1;3148:15;3182:4;3179:1;3172:15

Swarm Source

ipfs://a092af63981eaba036db741dabbbc7418ef61777166be0c4c21974842fb0a694
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.