ERC5095.deposit doesn't check if received shares is less then provided amount
`ERC5095.deposit` doesn't check if received shares is less then provided amount. In some cases this leads to lost of funds.\\nThe main thing with principal tokens is to buy them when the price is lower (you can buy 101 token while paying only 100 base tokens) as underlying price and then at maturity time to get interest(for example in one month you will get 1 base token in our case).\\n`ERC5095.deposit` function takes amount of base token that user wants to deposit and returns amount of shares that he received. To not have loses, the amount of shares should be at least bigger than amount of base tokens provided by user.\\n```\\n    function deposit(address r, uint256 a) external override returns (uint256) {\\n        if (block.timestamp > maturity) {\\n            revert Exception(\\n                21,\\n                block.timestamp,\\n                maturity,\\n                address(0),\\n                address(0)\\n            );\\n        }\\n        uint128 shares = Cast.u128(previewDeposit(a));\\n        Safe.transferFrom(IERC20(underlying), msg.sender, address(this), a);\\n        // consider the hardcoded slippage limit, 4626 compliance requires no minimum param.\\n        uint128 returned = IMarketPlace(marketplace).sellUnderlying(\\n            underlying,\\n            maturity,\\n            Cast.u128(a),\\n            shares - (shares / 100)\\n        );\\n        _transfer(address(this), r, returned);\\n        return returned;\\n    }\\n```\\n\\nWhile calling market place, you can see that slippage of 1 percent is provided.\\n```\\nuint128 returned = IMarketPlace(marketplace).sellUnderlying(\\n            underlying,\\n            maturity,\\n            Cast.u128(a),\\n            shares - (shares / 100)\\n        );\\n```\\n\\nBut this is not enough in some cases.\\nFor example we have `ERC5095` token with short maturity which provides `0.5%` of interests. userA calls `deposit` function with 1000 as base amount. He wants to get back 1005 share tokens. And after maturity time earn 5 tokens on this trade.\\nBut because of slippage set to `1%`, it's possible that the price will change and user will receive 995 share tokens instead of 1005, which means that user has lost 5 base tokens.\\nI propose to add one more mechanism except of slippage. We need to check if returned shares amount is bigger then provided assets amount.
Add this check at the end `require(returned > a, "received less than provided")`
Lost of funds.
```\\n    function deposit(address r, uint256 a) external override returns (uint256) {\\n        if (block.timestamp > maturity) {\\n            revert Exception(\\n                21,\\n                block.timestamp,\\n                maturity,\\n                address(0),\\n                address(0)\\n            );\\n        }\\n        uint128 shares = Cast.u128(previewDeposit(a));\\n        Safe.transferFrom(IERC20(underlying), msg.sender, address(this), a);\\n        // consider the hardcoded slippage limit, 4626 compliance requires no minimum param.\\n        uint128 returned = IMarketPlace(marketplace).sellUnderlying(\\n            underlying,\\n            maturity,\\n            Cast.u128(a),\\n            shares - (shares / 100)\\n        );\\n        _transfer(address(this), r, returned);\\n        return returned;\\n    }\\n```\\n