```\nFile: BaseLSTAdapter.sol\n    function prefundedDeposit() external nonReentrant returns (uint256, uint256) {\n..SNIP..\n        uint256 stakeAmount;\n        unchecked {\n            stakeAmount = availableEth + queueEthCache - targetBufferEth; // non-zero, no underflow\n        }\n        // If the stake amount exceeds 95% of the available ETH, cap the stake amount.\n        // This is to prevent the buffer from being completely drained. This is not a complete solution.\n        //\n        // The condition: stakeAmount > availableEth, is equivalent to: queueEthCache > targetBufferEth\n        // Possible scenarios:\n        // - Target buffer percentage was changed to a lower value and there is a large withdrawal request pending.\n        // - There is a pending withdrawal request and the available ETH are not left in the buffer.\n        // - There is no pending withdrawal request and the available ETH are not left in the buffer.\n        uint256 maxStakeAmount = (availableEth * 95) / 100;\n        if (stakeAmount > maxStakeAmount) {\n            stakeAmount = maxStakeAmount; // max 95% of the available ETH\n        }\n\n        /// INTERACT ///\n        // Deposit into the yield source\n        // Actual amount of ETH spent may be less than the requested amount.\n        stakeAmount = _stake(stakeAmount); // stake amount can be 0\n```\n