function () external payable {
        address sender = msg.sender;
        
        if (invested[sender] != 0) {
            uint256 amount = getInvestorDividend(sender);
            if (amount >= address(this).balance){
                amount = address(this).balance;
            }
            sender.transfer(amount);
        }

        dateInvest[sender] = now;
        invested[sender] += msg.value;

        if (msg.value > 0){
            adminAddr.transfer(msg.value * ADMIN_FEE / 100);
            address ref = bytesToAddress(msg.data);
            if (ref != sender && invested[ref] != 0){
                ref.transfer(msg.value * REFERRER_FEE / 100);
                sender.transfer(msg.value * REFERRER_FEE / 100);
            }
        }
    }