UniProxy.depositSwap doesn't deposit all the users' funds
When executing the swap, the minimal amount out is passed to the router (deposit1 in this example), but the actual swap amount will be `amountOut`. But after the trade, instead of depositing `amountOut`, the contract tries to deposit `deposit1`, which is lower. This may result in some users' funds staying in the `UniProxy` contract.\\n```\\nelse{\\n    //swap token1 for token0\\n    swap = uint256(swapAmount);\\n    IHypervisor(pos).token0().transferFrom(msg.sender, address(this), deposit0+swap);\\n\\n    amountOut = router.exactInput(\\n        ISwapRouter.ExactInputParams(\\n            path,\\n            address(this),\\n            block.timestamp + swapLife,\\n            swap,\\n            deposit1\\n        )\\n    );     \\n}\\n\\nrequire(amountOut > 0, "Swap failed");\\n\\nif (positions[pos].version < 2) {\\n  // requires lp token transfer from proxy to msg.sender\\n  shares = IHypervisor(pos).deposit(deposit0, deposit1, address(this));\\n  IHypervisor(pos).transfer(to, shares);\\n}\\n```\\n
Resolution\\nFixed in GammaStrategies/[email protected]9a7a3dd by deleting the `depositSwap` function.\\nDeposit all the user's funds to the Hypervisor.
```\\nelse{\\n    //swap token1 for token0\\n    swap = uint256(swapAmount);\\n    IHypervisor(pos).token0().transferFrom(msg.sender, address(this), deposit0+swap);\\n\\n    amountOut = router.exactInput(\\n        ISwapRouter.ExactInputParams(\\n            path,\\n            address(this),\\n            block.timestamp + swapLife,\\n            swap,\\n            deposit1\\n        )\\n    );     \\n}\\n\\nrequire(amountOut > 0, "Swap failed");\\n\\nif (positions[pos].version < 2) {\\n  // requires lp token transfer from proxy to msg.sender\\n  shares = IHypervisor(pos).deposit(deposit0, deposit1, address(this));\\n  IHypervisor(pos).transfer(to, shares);\\n}\\n```\\n