function _getMyDividents(bool withoutThrow) private {
        address addr = msg.sender;
        require(!isContract(addr),"msg.sender must wallet");
        
        InvestorsStorage.investor memory investor = getMemInvestor(addr);
        if(investor.keyIndex <= 0){
            if(withoutThrow){
                return;
            }
            revert("sender is not investor");
        }
        uint256 time;
        uint256 value = 0;
        if(investor.pendingPayoutTime == 0) {
            time = investor.paymentTime;
        } else {
            time = investor.pendingPayoutTime;
            value = investor.pendingPayout;
        }

        
        uint256 daysAfter = now.sub(time).div(dividendsPeriod);
        if(daysAfter > 0){
            uint256 totalAmount = investor.value.add(investor.refBonus);
            (uint num, uint den) = m_investors.getDividendsPercent(addr);
            value = value.add((totalAmount*num/den) * daysAfter);
        }
        if(value == 0) {
            if(withoutThrow){
                return;
            }
            revert("the latest payment was earlier than dividents period");
        } else {
            if (checkBalanceState(addr, value)) {
                return;
            }
        }

        assert(m_investors.setPaymentTime(msg.sender, now));

        assert(m_investors.setPendingPayoutTime(msg.sender, 0));

        assert(m_investors.setPendingPayout(msg.sender, 0));

        sendDividends(msg.sender, value);
    }