```\n function test_protocol_owner_frontRuns_swaps_with_higher_fees() public whenMaturityNotPassed {\n        // pre-condition\n        vm.warp(maturity - 30 days);\n        deal(address(pts[0]), alice, type(uint96).max, false); // ensure alice has enough pt\n        uint256 preBaseLptSupply = tricrypto.totalSupply();\n        uint256 ptInDesired = 100 * ONE_UNDERLYING;\n        uint256 expectedBaseLptIssued = tricrypto.calc_token_amount([ptInDesired, 0, 0], true);\n\n        // Pool owner sees swap about to occur and front runs updating fees to max value\n        vm.startPrank(owner);\n        pool.setFeeParameter("protocolFeePercent", 100);\n        vm.stopPrank();\n\n        // execute\n        vm.prank(alice);\n        uint256 underlyingOut = pool.swapPtForUnderlying(\n            0, ptInDesired, recipient, abi.encode(CallbackInputType.SwapPtForUnderlying, SwapInput(underlying, pts[0]))\n        );\n        // sanity check\n        uint256 protocolFee = SwapEventsLib.getProtocolFeeFromLastSwapEvent(pool);\n        assertGt(protocolFee, 0, "fee should be charged");\n    }\n```\n