> For the complete documentation index, see [llms.txt](https://docs.maple.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.maple.finance/technical-resources/security/test-report.md).

# Test Report

Below is an report of all smart contract level tests that are run against the protocol, in all repos.

Current number of tests in this report is: **3634 tests**.

## `maple-core-v2`

Ran 4 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:PreviewDepositTests \[PASS] test\_previewDeposit\_multipleUsers() (gas: 448912) \[PASS] test\_previewDeposit\_multipleUsers\_changeTotalAssets() (gas: 471596) \[PASS] test\_previewDeposit\_nonZeroTotalSupply() (gas: 273218) \[PASS] test\_previewDeposit\_zeroTotalSupply() (gas: 10411) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 74.89ms (4.06ms CPU time)

Ran 4 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:PreviewMintTests \[PASS] test\_previewMint\_multipleUsers() (gas: 449301) \[PASS] test\_previewMint\_multipleUsers\_changeTotalAssets() (gas: 471980) \[PASS] test\_previewMint\_nonZeroTotalSupply() (gas: 273748) \[PASS] test\_previewMint\_zeroTotalSupply() (gas: 10296) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 55.02ms (2.87ms CPU time)

Ran 4 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:PreviewRedeemTests \[PASS] test\_previewRedeem\_invalidShares() (gas: 401591) \[PASS] test\_previewRedeem\_lockedShares\_inExitWindow() (gas: 424755) \[PASS] test\_previewRedeem\_lockedShares\_notInExitWindow() (gas: 404857) \[PASS] test\_previewRedeem\_noLockedShares\_notInExitWindow() (gas: 33887) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 30.39ms (1.81ms CPU time)

Ran 7 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:PreviewRedeemWithQueueWMTests \[PASS] test\_previewRedeem\_emptyRedemption\_fullLiquidity() (gas: 118660) \[PASS] test\_previewRedeem\_emptyRedemption\_partialLiquidity() (gas: 118705) \[PASS] test\_previewRedeem\_fullRedemption\_fullLiquidity() (gas: 118938) \[PASS] test\_previewRedeem\_fullRedemption\_partialLiquidity() (gas: 118953) \[PASS] test\_previewRedeem\_insufficientShares() (gas: 36106) \[PASS] test\_previewRedeem\_partialRedemption\_fullLiquidity() (gas: 119195) \[PASS] test\_previewRedeem\_partialRedemption\_partialLiquidity() (gas: 119243) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 32.22ms (1.80ms CPU time)

Ran 3 tests for tests/integration/strategies/AaveStrategy.t.sol:AaveClaimRewardsTests \[PASS] testFork\_aaveStrategy\_claimRewards\_paused() (gas: 59583) \[PASS] testFork\_aaveStrategy\_claimRewards\_success() (gas: 701229) \[PASS] testFork\_aaveStrategy\_claimRewards\_unauthorized() (gas: 67726) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 254.62ms (3.58ms CPU time)

Ran 6 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:PreviewWithdrawTests \[PASS] testDeepFuzz\_previewWithdraw(uint256) (runs: 100, μ: 31794, \~: 31794) \[PASS] testDeepFuzz\_previewWithdraw\_lockedShares\_inExitWindow(uint256) (runs: 100, μ: 406672, \~: 406836) \[PASS] testDeepFuzz\_previewWithdraw\_lockedShares\_notInExitWindow(uint256) (runs: 100, μ: 406724, \~: 406904) \[PASS] test\_previewWithdraw() (gas: 260152) \[PASS] test\_previewWithdraw\_zeroAssetsWithDeposit() (gas: 260130) \[PASS] test\_previewWithdraw\_zeroAssetsWithoutDeposit() (gas: 31767) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 192.09ms (150.99ms CPU time)

Ran 19 tests for tests/integration/strategies/AaveStrategy.t.sol:AaveReactivateTests \[PASS] testFork\_aaveStrategy\_reactivate\_failIfAlreadyActive() (gas: 121708) \[PASS] testFork\_aaveStrategy\_reactivate\_failIfNotProtocolAdmin() (gas: 114414) \[PASS] testFork\_aaveStrategy\_reactivate\_failIfPaused() (gas: 78135) \[PASS] testFork\_aaveStrategy\_reactivate\_stagnant\_fromImpaired\_withAccountingUpdate() (gas: 590450) \[PASS] testFork\_aaveStrategy\_reactivate\_stagnant\_fromImpaired\_withoutAccountingUpdate() (gas: 586666) \[PASS] testFork\_aaveStrategy\_reactivate\_stagnant\_fromInactive\_withAccountingUpdate() (gas: 577898) \[PASS] testFork\_aaveStrategy\_reactivate\_stagnant\_fromInactive\_withoutAccountingUpdate() (gas: 578193) \[PASS] testFork\_aaveStrategy\_reactivate\_unfunded\_fromImpaired\_withAccountingUpdate() (gas: 309846) \[PASS] testFork\_aaveStrategy\_reactivate\_unfunded\_fromImpaired\_withoutAccountingUpdate() (gas: 305581) \[PASS] testFork\_aaveStrategy\_reactivate\_unfunded\_fromInactive\_withAccountingUpdate() (gas: 296054) \[PASS] testFork\_aaveStrategy\_reactivate\_unfunded\_fromInactive\_withoutAccountingUpdate() (gas: 291745) \[PASS] testFork\_aaveStrategy\_reactivate\_withGain\_fromImpaired\_withAccountingUpdate() (gas: 611156) \[PASS] testFork\_aaveStrategy\_reactivate\_withGain\_fromImpaired\_withoutAccountingUpdate() (gas: 607435) \[PASS] testFork\_aaveStrategy\_reactivate\_withGain\_fromInactive\_withAccountingUpdate() (gas: 593891) \[PASS] testFork\_aaveStrategy\_reactivate\_withGain\_fromInactive\_withoutAccountingUpdate() (gas: 592442) \[PASS] testFork\_aaveStrategy\_reactivate\_withLoss\_fromImpaired\_withAccountingUpdate() (gas: 683820) \[PASS] testFork\_aaveStrategy\_reactivate\_withLoss\_fromImpaired\_withoutAccountingUpdate() (gas: 678853) \[PASS] testFork\_aaveStrategy\_reactivate\_withLoss\_fromInactive\_withAccountingUpdate() (gas: 668271) \[PASS] testFork\_aaveStrategy\_reactivate\_withLoss\_fromInactive\_withoutAccountingUpdate() (gas: 663206) Suite result: ok. 19 passed; 0 failed; 0 skipped; finished in 164.21ms (40.57ms CPU time)

Ran 9 tests for tests/integration/strategies/AaveStrategy.t.sol:AaveSetStrategyFeeTests \[PASS] testFork\_aaveStrategy\_setStrategyFeeRate\_failIfBiggerThanHundredPercent() (gas: 60879) \[PASS] testFork\_aaveStrategy\_setStrategyFeeRate\_failIfDeactivated() (gas: 92597) \[PASS] testFork\_aaveStrategy\_setStrategyFeeRate\_failIfImpaired() (gas: 92641) \[PASS] testFork\_aaveStrategy\_setStrategyFeeRate\_failIfNotProtocolAdmin() (gas: 62900) \[PASS] testFork\_aaveStrategy\_setStrategyFeeRate\_failIfPaused() (gas: 56670) \[PASS] testFork\_aaveStrategy\_setStrategyFeeRate\_withGovernor\_fromNonZeroToZeroFeeRate() (gas: 748288) \[PASS] testFork\_aaveStrategy\_setStrategyFeeRate\_withGovernor\_unfundedStrategy() (gas: 286559) \[PASS] testFork\_aaveStrategy\_setStrategyFeeRate\_withOperationalAdmin\_withWithdrawal() (gas: 862034) \[PASS] testFork\_aaveStrategy\_setStrategyFeeRate\_withPoolDelegate\_fundedStrategy() (gas: 663929) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 138.37ms (12.22ms CPU time)

Ran 1 test for tests/integration/pool/PoolAccountingViewFunctions.t.sol:PreviewWithdrawWithQueueWMTests \[PASS] testFuzz\_previewWithdraw(address,bool,uint256,uint256,uint256) (runs: 100, μ: 618283, \~: 649364) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 194.44ms (142.51ms CPU time)

Ran 5 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:TotalAssetsTests \[PASS] test\_totalAssets\_singleDeposit() (gas: 256342) \[PASS] test\_totalAssets\_singleLoanFunded() (gas: 1470595) \[PASS] test\_totalAssets\_singleLoanFundedWithInterest() (gas: 1501270) \[PASS] test\_totalAssets\_singleLoanFundedWithPayment() (gas: 1672159) \[PASS] test\_totalAssets\_zeroTotalSupply() (gas: 61877) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 37.78ms (5.72ms CPU time)

Ran 9 tests for tests/integration/strategies/AaveStrategy.t.sol:AaveStrategyDeactivateTests \[PASS] testFork\_aaveStrategy\_deactivate\_failIfAlreadyInactive() (gas: 94894) \[PASS] testFork\_aaveStrategy\_deactivate\_failIfNotProtocolAdmin() (gas: 60662) \[PASS] testFork\_aaveStrategy\_deactivate\_failIfPaused() (gas: 54408) \[PASS] testFork\_aaveStrategy\_deactivate\_stagnant\_noFees() (gas: 583833) \[PASS] testFork\_aaveStrategy\_deactivate\_unfundedStrategy() (gas: 301517) \[PASS] testFork\_aaveStrategy\_deactivate\_withFullLoss\_strategyFees() (gas: 672061) \[PASS] testFork\_aaveStrategy\_deactivate\_withGain\_impaired\_strategyFees() (gas: 678273) \[PASS] testFork\_aaveStrategy\_deactivate\_withGain\_strategyFees() (gas: 614869) \[PASS] testFork\_aaveStrategy\_deactivate\_withLoss\_strategyFees() (gas: 686558) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 139.57ms (15.30ms CPU time)

Ran 12 tests for tests/integration/permission-manager/PoolEntryPermission.t.sol:FunctionLevelPermissionTests \[PASS] test\_poolEntry\_functionLevel\_deposit() (gas: 375834) \[PASS] test\_poolEntry\_functionLevel\_depositWithPermit() (gas: 416669) \[PASS] test\_poolEntry\_functionLevel\_depositWithPermit\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 375356) \[PASS] test\_poolEntry\_functionLevel\_depositWithPermit\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 341383) \[PASS] test\_poolEntry\_functionLevel\_deposit\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 335234) \[PASS] test\_poolEntry\_functionLevel\_deposit\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 301435) \[PASS] test\_poolEntry\_functionLevel\_mint() (gas: 379086) \[PASS] test\_poolEntry\_functionLevel\_mintWithPermit() (gas: 420307) \[PASS] test\_poolEntry\_functionLevel\_mintWithPermit\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 377750) \[PASS] test\_poolEntry\_functionLevel\_mintWithPermit\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 343799) \[PASS] test\_poolEntry\_functionLevel\_mint\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 337463) \[PASS] test\_poolEntry\_functionLevel\_mint\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 303512) Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 41.76ms (8.31ms CPU time)

Ran 12 tests for tests/integration/permission-manager/PoolEntryPermission.t.sol:PoolLevelPermissionTests \[PASS] test\_poolEntry\_poolLevel\_deposit() (gas: 375919) \[PASS] test\_poolEntry\_poolLevel\_depositWithPermit() (gas: 416643) \[PASS] test\_poolEntry\_poolLevel\_depositWithPermit\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 375317) \[PASS] test\_poolEntry\_poolLevel\_depositWithPermit\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 341430) \[PASS] test\_poolEntry\_poolLevel\_deposit\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 335237) \[PASS] test\_poolEntry\_poolLevel\_deposit\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 301352) \[PASS] test\_poolEntry\_poolLevel\_mint() (gas: 379124) \[PASS] test\_poolEntry\_poolLevel\_mintWithPermit() (gas: 420238) \[PASS] test\_poolEntry\_poolLevel\_mintWithPermit\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 377731) \[PASS] test\_poolEntry\_poolLevel\_mintWithPermit\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 343868) \[PASS] test\_poolEntry\_poolLevel\_mint\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 337402) \[PASS] test\_poolEntry\_poolLevel\_mint\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 303561) Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 56.98ms (19.33ms CPU time)

Ran 14 tests for tests/integration/strategies/AaveStrategy.t.sol:AaveStrategyFundTests \[PASS] testFork\_aaveStrategy\_fund\_failIfInvalidAaveToken() (gas: 85263) \[PASS] testFork\_aaveStrategy\_fund\_failIfInvalidStrategyFactory() (gas: 144110) \[PASS] testFork\_aaveStrategy\_fund\_failIfNotEnoughPoolLiquidity() (gas: 186100) \[PASS] testFork\_aaveStrategy\_fund\_failIfNotStrategyManager() (gas: 58518) \[PASS] testFork\_aaveStrategy\_fund\_failIfZeroAmount() (gas: 127118) \[PASS] testFork\_aaveStrategy\_fund\_failWhenDeactivated() (gas: 97451) \[PASS] testFork\_aaveStrategy\_fund\_failWhenImpaired() (gas: 97560) \[PASS] testFork\_aaveStrategy\_fund\_failWhenPaused() (gas: 54160) \[PASS] testFork\_aaveStrategy\_fund\_secondTimeWithFeesAndYield() (gas: 728141) \[PASS] testFork\_aaveStrategy\_fund\_secondTimeWithFeesRoundedToZeroAndYield() (gas: 647838) \[PASS] testFork\_aaveStrategy\_fund\_secondTimeWithLoss() (gas: 725837) \[PASS] testFork\_aaveStrategy\_fund\_secondTimeWithNoFeesAndYield() (gas: 673559) \[PASS] testFork\_aaveStrategy\_fund\_withPoolDelegate() (gas: 543091) \[PASS] testFork\_aaveStrategy\_fund\_withStrategyManager() (gas: 546179) Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 161.87ms (19.86ms CPU time)

Ran 4 tests for tests/integration/permission-manager/PoolEntryPermission.t.sol:PrivatePermissionTests \[PASS] test\_poolEntry\_private\_deposit() (gas: 322053) \[PASS] test\_poolEntry\_private\_depositWithPermit() (gas: 361984) \[PASS] test\_poolEntry\_private\_mint() (gas: 324196) \[PASS] test\_poolEntry\_private\_mintWithPermit() (gas: 364526) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 68.42ms (3.10ms CPU time)

Ran 4 tests for tests/integration/permission-manager/PoolEntryPermission.t.sol:PublicPermissionTests \[PASS] test\_poolEntry\_public\_deposit() (gas: 222373) \[PASS] test\_poolEntry\_public\_depositWithPermit() (gas: 261585) \[PASS] test\_poolEntry\_public\_mint() (gas: 223454) \[PASS] test\_poolEntry\_public\_mintWithPermit() (gas: 262824) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 38.28ms (2.35ms CPU time)

Ran 15 tests for tests/integration/permission-manager/PoolExitPermission.t.sol:FunctionLevelPermissionTests \[PASS] test\_poolExit\_functionLevel\_redeem() (gas: 550656) \[PASS] test\_poolExit\_functionLevel\_redeem\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 555599) \[PASS] test\_poolExit\_functionLevel\_redeem\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 528457) \[PASS] test\_poolExit\_functionLevel\_removeShares() (gas: 445920) \[PASS] test\_poolExit\_functionLevel\_removeShares\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 450946) \[PASS] test\_poolExit\_functionLevel\_removeShares\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 423857) \[PASS] test\_poolExit\_functionLevel\_requestRedeem() (gas: 389044) \[PASS] test\_poolExit\_functionLevel\_requestRedeem\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 348469) \[PASS] test\_poolExit\_functionLevel\_requestRedeem\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 314564) \[PASS] test\_poolExit\_functionLevel\_requestWithdraw() (gas: 316437) \[PASS] test\_poolExit\_functionLevel\_requestWithdraw\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 275712) \[PASS] test\_poolExit\_functionLevel\_requestWithdraw\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 241915) \[PASS] test\_poolExit\_functionLevel\_withdraw() (gas: 230166) \[PASS] test\_poolExit\_functionLevel\_withdraw\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 189348) \[PASS] test\_poolExit\_functionLevel\_withdraw\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 155398) Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 74.74ms (23.43ms CPU time)

Ran 9 tests for tests/integration/strategies/AaveStrategy.t.sol:AaveStrategyImpairTests \[PASS] testFork\_aaveStrategy\_impair\_failIfAlreadyImpaired() (gas: 98119) \[PASS] testFork\_aaveStrategy\_impair\_failIfNotProtocolAdmin() (gas: 60727) \[PASS] testFork\_aaveStrategy\_impair\_failIfPaused() (gas: 54476) \[PASS] testFork\_aaveStrategy\_impair\_stagnant\_noFees() (gas: 596364) \[PASS] testFork\_aaveStrategy\_impair\_unfundedStrategy() (gas: 315308) \[PASS] testFork\_aaveStrategy\_impair\_withFullLoss\_strategyFees() (gas: 685809) \[PASS] testFork\_aaveStrategy\_impair\_withGain\_inactive\_strategyFees() (gas: 678250) \[PASS] testFork\_aaveStrategy\_impair\_withGain\_strategyFees() (gas: 629874) \[PASS] testFork\_aaveStrategy\_impair\_withLoss\_strategyFees() (gas: 700833) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 157.30ms (15.75ms CPU time)

Ran 15 tests for tests/integration/permission-manager/PoolExitPermission.t.sol:PoolLevelPermissionTests \[PASS] test\_poolExit\_poolLevel\_redeem() (gas: 519140) \[PASS] test\_poolExit\_poolLevel\_redeem\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 510285) \[PASS] test\_poolExit\_poolLevel\_redeem\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 483193) \[PASS] test\_poolExit\_poolLevel\_removeShares() (gas: 414315) \[PASS] test\_poolExit\_poolLevel\_removeShares\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 405683) \[PASS] test\_poolExit\_poolLevel\_removeShares\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 378592) \[PASS] test\_poolExit\_poolLevel\_requestRedeem() (gas: 389041) \[PASS] test\_poolExit\_poolLevel\_requestRedeem\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 348387) \[PASS] test\_poolExit\_poolLevel\_requestRedeem\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 314503) \[PASS] test\_poolExit\_poolLevel\_requestWithdraw() (gas: 316501) \[PASS] test\_poolExit\_poolLevel\_requestWithdraw\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 275716) \[PASS] test\_poolExit\_poolLevel\_requestWithdraw\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 241896) \[PASS] test\_poolExit\_poolLevel\_withdraw() (gas: 230164) \[PASS] test\_poolExit\_poolLevel\_withdraw\_zeroPoolBitmap\_nonZeroLenderBitmap() (gas: 189309) \[PASS] test\_poolExit\_poolLevel\_withdraw\_zeroPoolBitmap\_zeroLenderBitmap() (gas: 155469) Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 77.94ms (22.14ms CPU time)

Ran 5 tests for tests/integration/permission-manager/PoolExitPermission.t.sol:PrivatePermissionTests \[PASS] test\_poolExit\_private\_redeem() (gas: 463761) \[PASS] test\_poolExit\_private\_removeShares() (gas: 359104) \[PASS] test\_poolExit\_private\_requestRedeem() (gas: 342134) \[PASS] test\_poolExit\_private\_requestWithdraw() (gas: 269432) \[PASS] test\_poolExit\_private\_withdraw() (gas: 183105) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 51.99ms (10.46ms CPU time)

Ran 5 tests for tests/integration/permission-manager/PoolExitPermission.t.sol:PublicPermissionTests \[PASS] test\_poolExit\_public\_redeem() (gas: 362452) \[PASS] test\_poolExit\_public\_removeShares() (gas: 256339) \[PASS] test\_poolExit\_public\_requestRedeem() (gas: 228923) \[PASS] test\_poolExit\_public\_requestWithdraw() (gas: 160685) \[PASS] test\_poolExit\_public\_withdraw() (gas: 74179) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 39.46ms (3.20ms CPU time)

Ran 12 tests for tests/integration/strategies/AaveStrategy.t.sol:AaveStrategyWithdrawTests \[PASS] testFork\_aaveStrategy\_withdraw\_failIfLowAssets() (gas: 99935) \[PASS] testFork\_aaveStrategy\_withdraw\_failIfNotStrategyManager() (gas: 58628) \[PASS] testFork\_aaveStrategy\_withdraw\_failIfZeroAmount() (gas: 58990) \[PASS] testFork\_aaveStrategy\_withdraw\_failWhenPaused() (gas: 54147) \[PASS] testFork\_aaveStrategy\_withdraw\_failWithFullLoss() (gas: 328442) \[PASS] testFork\_aaveStrategy\_withdraw\_noFeesWithYield() (gas: 460189) \[PASS] testFork\_aaveStrategy\_withdraw\_whileDeactivated() (gas: 443542) \[PASS] testFork\_aaveStrategy\_withdraw\_whileImpaired() (gas: 477137) \[PASS] testFork\_aaveStrategy\_withdraw\_withFeesAndYield() (gas: 507630) \[PASS] testFork\_aaveStrategy\_withdraw\_withFeesRoundedToZeroAndYield() (gas: 437996) \[PASS] testFork\_aaveStrategy\_withdraw\_withLoss() (gas: 501164) \[PASS] testFork\_aaveStrategy\_withdraw\_withPoolDelegate\_noFeesSameBlock() (gas: 433941) Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 213.20ms (26.47ms CPU time)

Ran 6 tests for tests/integration/permission-manager/PoolTransferPermission.t.sol:FunctionLevelPermissionTests \[PASS] test\_poolTransfer\_functionLevel\_transfer() (gas: 311141) \[PASS] test\_poolTransfer\_functionLevel\_transferFrom() (gas: 317196) \[PASS] test\_poolTransfer\_functionLevel\_transferFrom\_zeroPoolBitmap\_nonZeroLenderBitmaps() (gas: 244061) \[PASS] test\_poolTransfer\_functionLevel\_transferFrom\_zeroPoolBitmap\_zeroLenderBitmaps() (gas: 180246) \[PASS] test\_poolTransfer\_functionLevel\_transfer\_zeroPoolBitmap\_nonZeroLenderBitmaps() (gas: 238769) \[PASS] test\_poolTransfer\_functionLevel\_transfer\_zeroPoolBitmap\_zeroLenderBitmaps() (gas: 174953) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 48.17ms (6.62ms CPU time)

Ran 4 tests for tests/integration/loan/AcceptLoanTerms.t.sol:AcceptLoanTermsFTLTests \[PASS] test\_acceptLoanTerms\_FTL\_failIfAlreadyAccepted() (gas: 67093) \[PASS] test\_acceptLoanTerms\_FTL\_failIfNotBorrower() (gas: 41542) \[PASS] test\_acceptLoanTerms\_FTL\_failIfPaused() (gas: 49625) \[PASS] test\_acceptLoanTerms\_FTL\_success() (gas: 64451) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 68.92ms (754.38µs CPU time)

Ran 6 tests for tests/integration/permission-manager/PoolTransferPermission.t.sol:PoolLevelPermissionTests \[PASS] test\_poolTransfer\_poolLevel\_transfer() (gas: 311205) \[PASS] test\_poolTransfer\_poolLevel\_transferFrom() (gas: 317173) \[PASS] test\_poolTransfer\_poolLevel\_transferFrom\_zeroPoolBitmap\_nonZeroLenderBitmaps() (gas: 244073) \[PASS] test\_poolTransfer\_poolLevel\_transferFrom\_zeroPoolBitmap\_zeroLenderBitmaps() (gas: 180281) \[PASS] test\_poolTransfer\_poolLevel\_transfer\_zeroPoolBitmap\_nonZeroLenderBitmaps() (gas: 238803) \[PASS] test\_poolTransfer\_poolLevel\_transfer\_zeroPoolBitmap\_zeroLenderBitmaps() (gas: 174988) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 42.75ms (5.44ms CPU time)

Ran 2 tests for tests/integration/permission-manager/PoolTransferPermission.t.sol:PrivatePermissionTests \[PASS] test\_poolTransfer\_private\_transfer() (gas: 260200) \[PASS] test\_poolTransfer\_private\_transferFrom() (gas: 265688) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 40.74ms (1.53ms CPU time)

Ran 4 tests for tests/integration/loan/AcceptLoanTerms.t.sol:AcceptLoanTermsOTLTests \[PASS] test\_acceptLoanTerms\_OTL\_failIfAlreadyAccepted() (gas: 67199) \[PASS] test\_acceptLoanTerms\_OTL\_failIfNotBorrower() (gas: 41519) \[PASS] test\_acceptLoanTerms\_OTL\_failIfPaused() (gas: 49648) \[PASS] test\_acceptLoanTerms\_OTL\_success() (gas: 64429) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 68.73ms (782.55µs CPU time)

Ran 2 tests for tests/integration/permission-manager/PoolTransferPermission.t.sol:PublicPermissionTests \[PASS] test\_poolTransfer\_public\_transfer() (gas: 92934) \[PASS] test\_poolTransfer\_public\_transferFrom() (gas: 97850) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 40.02ms (634.13µs CPU time)

Ran 3 tests for tests/integration/governor-timelock/AcceptTokenWithdrawer.t.sol:AcceptTokenWithdrawerTests \[PASS] test\_acceptTokenWithdrawer\_revert\_notAuthorized() (gas: 10661) \[PASS] test\_acceptTokenWithdrawer\_success() (gas: 37183) \[PASS] test\_setUp() (gas: 55582) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 71.09ms (722.19µs CPU time)

Ran 8 tests for tests/integration/withdrawal-manager/queue/ProcessEmptyRedemptions.t.sol:ProcessEmptyRedemptionsQueueTests \[PASS] test\_partialProcess\_then\_cancel\_head\_then\_processEmptyRedemptions() (gas: 680287) \[PASS] test\_processEmptyRedemptions\_emptyQueue\_noChange() (gas: 92195) \[PASS] test\_processEmptyRedemptions\_fullyProcessedQueue\_noChange() (gas: 350204) \[PASS] test\_processEmptyRedemptions\_multipleEmptyRequests() (gas: 1047428) \[PASS] test\_processEmptyRedemptions\_noEmptyRequests\_noChange() (gas: 666664) \[PASS] test\_processEmptyRedemptions\_stopsAtNonEmpty() (gas: 997404) \[PASS] test\_processEmptyRedemptions\_zeroRequests\_reverts() (gas: 54592) \[PASS] test\_processRedemptions\_then\_processEmptyRedemptions\_skipsCancelledFront() (gas: 839272) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 93.45ms (19.42ms CPU time)

Ran 3 tests for tests/integration/globals/ActivatePoolManager.t.sol:ActivatePoolManagerFailureTests \[PASS] test\_activatePoolManager\_failIfNotGlobals() (gas: 35070) \[PASS] test\_activatePoolManager\_failIfNotGovernor() (gas: 20336) \[PASS] test\_activatePoolManager\_failIfProtocolIsPaused() (gas: 65909) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 40.51ms (513.17µs CPU time)

Ran 9 tests for tests/integration/withdrawal-manager/queue/ProcessRedemptions.t.sol:ProcessRedemptionsTests \[PASS] test\_processRedemptions\_differentExchangeRate() (gas: 1632570) \[PASS] test\_processRedemptions\_lowLiquidity() (gas: 1073194) \[PASS] test\_processRedemptions\_manualWithDifferentExchangeRates() (gas: 1440724) \[PASS] test\_processRedemptions\_multipleLps() (gas: 1373084) \[PASS] test\_processRedemptions\_multipleManualBatched() (gas: 1907312) \[PASS] test\_processRedemptions\_overkill() (gas: 1483334) \[PASS] test\_processRedemptions\_withCancelledRequest() (gas: 1316334) \[PASS] test\_processRedemptions\_withImpairment() (gas: 1658197) \[PASS] test\_processRedemptions\_zeroShares() (gas: 59645) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 102.74ms (41.20ms CPU time)

Ran 2 tests for tests/integration/globals/ActivatePoolManager.t.sol:ActivatePoolManagerTests \[PASS] test\_activatePoolManager() (gas: 75498) \[PASS] test\_activatePoolManager\_asOperationalAdmin() (gas: 88756) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 52.63ms (564.14µs CPU time)

Ran 6 tests for tests/integration/withdrawal-manager/queue/AddShares.t.sol:AddSharesQueueFailureTests \[PASS] test\_addShares\_failIfEmptyRequest() (gas: 95932) \[PASS] test\_addShares\_failIfInsufficientApproval() (gas: 92459) \[PASS] test\_addShares\_failIfNotPool() (gas: 43562) \[PASS] test\_addShares\_failIfNotPoolManager() (gas: 18023) \[PASS] test\_addShares\_failIfProtocolIsPaused() (gas: 61222) \[PASS] test\_addShares\_failIfTransferFail() (gas: 102673) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 68.97ms (1.54ms CPU time)

Ran 6 tests for tests/integration/governor-timelock/ProposeRoleUpdates.t.sol:ProposeRoleUpdatesTests \[PASS] test\_proposeRoleUpdates\_revert\_emptyArray() (gas: 14694) \[PASS] test\_proposeRoleUpdates\_revert\_invalidAccountsLength() (gas: 15106) \[PASS] test\_proposeRoleUpdates\_revert\_invalidShouldGrantLength() (gas: 15257) \[PASS] test\_proposeRoleUpdates\_revert\_notRoleAdmin() (gas: 12256) \[PASS] test\_proposeRoleUpdates\_success() (gas: 154091) \[PASS] test\_setUp() (gas: 55582) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 40.67ms (1.33ms CPU time)

Ran 5 tests for tests/integration/withdrawal-manager/queue/AddShares.t.sol:AddSharesQueueTests \[PASS] test\_addShares\_manual() (gas: 385154) \[PASS] test\_addShares\_partialRequest() (gas: 345805) \[PASS] test\_addShares\_sameAddressCallingTwice() (gas: 523342) \[PASS] test\_addShares\_success() (gas: 559529) \[PASS] test\_addShares\_withApproval() (gas: 353997) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 77.50ms (8.85ms CPU time)

Ran 9 tests for tests/integration/pool/AddStrategy.t.sol:AddStrategyTests \[PASS] test\_addStrategy\_invalidAsset() (gas: 230970) \[PASS] test\_addStrategy\_invalidFactory() (gas: 46622) \[PASS] test\_addStrategy\_invalidStrategy() (gas: 237974) \[PASS] test\_addStrategy\_multipleStrategies() (gas: 1748905) \[PASS] test\_addStrategy\_noExtraArguments\_withPoolDelegate() (gas: 387940) \[PASS] test\_addStrategy\_notAuthorized() (gas: 50400) \[PASS] test\_addStrategy\_paused() (gas: 49926) \[PASS] test\_addStrategy\_withExtraArguments\_withGovernor() (gas: 637172) \[PASS] test\_addStrategy\_withExtraArguments\_withOperationalAdmin() (gas: 544127) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 169.26ms (13.49ms CPU time)

Ran 3 tests for tests/integration/loan-manager/fixed-term/Redeem.t.sol:MultiUserRedeemTests \[PASS] test\_redeem\_partialLiquidity\_sameCash\_differentExchangeRate() (gas: 2305986) \[PASS] test\_redeem\_partialLiquidity\_sameCash\_sameExchangeRate() (gas: 2215976) \[PASS] test\_redeem\_partialLiquidity\_sameCash\_sameExchangeRate\_exposeRounding() (gas: 4367096) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 110.86ms (64.70ms CPU time)

Ran 9 tests for tests/integration/loan-manager/fixed-term/Redeem.t.sol:RedeemFailureTests \[PASS] test\_redeem\_failIfNoApprove() (gas: 246147) \[PASS] test\_redeem\_failIfNoBalanceOnWM() (gas: 341276) \[PASS] test\_redeem\_failIfNoRequest() (gas: 91053) \[PASS] test\_redeem\_failIfNotInWindow() (gas: 271571) \[PASS] test\_redeem\_failIfNotPool() (gas: 43708) \[PASS] test\_redeem\_failIfNotPoolManager() (gas: 18039) \[PASS] test\_redeem\_failWithInsufficientApproval() (gas: 323044) \[PASS] test\_redeem\_failWithInvalidAmountOfShares() (gas: 268488) \[PASS] test\_redeem\_failWithZeroReceiver() (gas: 301075) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 83.14ms (9.62ms CPU time)

Ran 3 tests for tests/integration/loan-manager/fixed-term/Redeem.t.sol:RedeemIntegrationTests \[PASS] test\_redeem\_oneLPWithImpairedLoan() (gas: 1681933) \[PASS] test\_redeem\_twoLPSWithImpairedLoanAndTriggerDefault() (gas: 1780463) \[PASS] test\_redeem\_twoLPsWithImpairedLoan() (gas: 1924169) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 75.68ms (14.60ms CPU time)

Ran 7 tests for tests/integration/loan-manager/fixed-term/Redeem.t.sol:RedeemTests \[PASS] testDeepFuzz\_redeem\_singleUser\_fullLiquidity\_oneToOne(uint256,uint256) (runs: 100, μ: 504905, \~: 504581) \[PASS] test\_redeem\_singleUser\_fullLiquidity\_fullRedeem() (gas: 519100) \[PASS] test\_redeem\_singleUser\_fullLiquidity\_fullRedeem\_prematureRequest() (gas: 519972) \[PASS] test\_redeem\_singleUser\_fullLiquidity\_oneToOne() (gas: 516242) \[PASS] test\_redeem\_singleUser\_noLiquidity() (gas: 1707723) \[PASS] test\_redeem\_singleUser\_noLiquidity\_notOwner() (gas: 1760711) \[PASS] test\_redeem\_singleUser\_withApprovals() (gas: 570689) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 246.32ms (196.02ms CPU time)

Ran 4 tests for tests/integration/loan-manager/fixed-term/Redeem.t.sol:RequestRedeemFailureTests \[PASS] test\_requestRedeem\_failIfAlreadyLockedShares() (gas: 300234) \[PASS] test\_requestRedeem\_failIfInsufficientApproval() (gas: 148400) \[PASS] test\_requestRedeem\_failIfNotPM() (gas: 17852) \[PASS] test\_requestRedeem\_failIfNotPool() (gas: 43563) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 68.65ms (1.77ms CPU time)

Ran 1 test for tests/integration/loan-manager/fixed-term/BasicInterestAccrual.t.sol:BasicInterestAccrualTest \[PASS] test\_basicInterestAccrual() (gas: 2164958) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 46.97ms (9.17ms CPU time)

Ran 7 tests for tests/integration/loan-manager/fixed-term/Redeem.t.sol:RequestRedeemTests \[PASS] testDeepFuzz\_requestRedeem(uint256,uint256) (runs: 100, μ: 441642, \~: 442422) \[PASS] test\_requestRedeem() (gas: 415237) \[PASS] test\_requestRedeem\_premature() (gas: 417762) \[PASS] test\_requestRedeem\_refresh() (gas: 486252) \[PASS] test\_requestRedeem\_refresh\_notOwnerAndNoApproval() (gas: 450581) \[PASS] test\_requestRedeem\_refresh\_notOwnerWithApproval() (gas: 511053) \[PASS] test\_requestRedeem\_withApproval() (gas: 440868) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 111.27ms (68.21ms CPU time)

Ran 19 tests for tests/integration/strategies/BasicStrategy.t.sol:BasicReactivateTests \[PASS] testFork\_basicStrategy\_reactivate\_failIfAlreadyActive() (gas: 121698) \[PASS] testFork\_basicStrategy\_reactivate\_failIfNotProtocolAdmin() (gas: 114412) \[PASS] testFork\_basicStrategy\_reactivate\_failIfPaused() (gas: 78091) \[PASS] testFork\_basicStrategy\_reactivate\_stagnant\_fromImpaired\_withAccountingUpdate() (gas: 441481) \[PASS] testFork\_basicStrategy\_reactivate\_stagnant\_fromImpaired\_withoutAccountingUpdate() (gas: 447523) \[PASS] testFork\_basicStrategy\_reactivate\_stagnant\_fromInactive\_withAccountingUpdate() (gas: 438621) \[PASS] testFork\_basicStrategy\_reactivate\_stagnant\_fromInactive\_withoutAccountingUpdate() (gas: 439371) \[PASS] testFork\_basicStrategy\_reactivate\_unfunded\_fromImpaired\_withAccountingUpdate() (gas: 240269) \[PASS] testFork\_basicStrategy\_reactivate\_unfunded\_fromImpaired\_withoutAccountingUpdate() (gas: 234348) \[PASS] testFork\_basicStrategy\_reactivate\_unfunded\_fromInactive\_withAccountingUpdate() (gas: 221599) \[PASS] testFork\_basicStrategy\_reactivate\_unfunded\_fromInactive\_withoutAccountingUpdate() (gas: 215715) \[PASS] testFork\_basicStrategy\_reactivate\_withGain\_fromImpaired\_withAccountingUpdate() (gas: 509282) \[PASS] testFork\_basicStrategy\_reactivate\_withGain\_fromImpaired\_withoutAccountingUpdate() (gas: 501463) \[PASS] testFork\_basicStrategy\_reactivate\_withGain\_fromInactive\_withAccountingUpdate() (gas: 478737) \[PASS] testFork\_basicStrategy\_reactivate\_withGain\_fromInactive\_withoutAccountingUpdate() (gas: 473190) \[PASS] testFork\_basicStrategy\_reactivate\_withLoss\_fromImpaired\_withAccountingUpdate() (gas: 547453) \[PASS] testFork\_basicStrategy\_reactivate\_withLoss\_fromImpaired\_withoutAccountingUpdate() (gas: 538552) \[PASS] testFork\_basicStrategy\_reactivate\_withLoss\_fromInactive\_withAccountingUpdate() (gas: 519761) \[PASS] testFork\_basicStrategy\_reactivate\_withLoss\_fromInactive\_withoutAccountingUpdate() (gas: 511285) Suite result: ok. 19 passed; 0 failed; 0 skipped; finished in 144.60ms (29.79ms CPU time)

Ran 6 tests for tests/integration/withdrawal-manager/queue/RedeemQueue.t.sol:ManualRedeemTests \[PASS] test\_manualRedeem\_fullLiquidity() (gas: 840857) \[PASS] test\_manualRedeem\_insufficientLiquidity() (gas: 1051586) \[PASS] test\_manualRedeem\_multipleRequests() (gas: 1047752) \[PASS] test\_manualRedeem\_noShares() (gas: 88010) \[PASS] test\_manualRedeem\_partialLiquidity() (gas: 905615) \[PASS] test\_manualRedeem\_tooManyShares() (gas: 508603) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 89.39ms (21.81ms CPU time)

Ran 13 tests for tests/integration/loan/Refinance.t.sol:AcceptNewTermsFailureTests \[PASS] test\_acceptNewTerms\_failIfDeadlineExpired() (gas: 196543) \[PASS] test\_acceptNewTerms\_failIfInsufficientCover() (gas: 247128) \[PASS] test\_acceptNewTerms\_failIfLockedLiquidity() (gas: 458876) \[PASS] test\_acceptNewTerms\_failIfNotLender() (gas: 39386) \[PASS] test\_acceptNewTerms\_failIfNotPoolDelegate() (gas: 57111) \[PASS] test\_acceptNewTerms\_failIfNotValidLoanManager() (gas: 74118) \[PASS] test\_acceptNewTerms\_failIfProtocolIsPaused() (gas: 59680) \[PASS] test\_acceptNewTerms\_failIfRefinanceCallFails() (gas: 315819) \[PASS] test\_acceptNewTerms\_failIfRefinanceMismatch() (gas: 145670) \[PASS] test\_acceptNewTerms\_failWithFailedTransfer() (gas: 254374) \[PASS] test\_acceptNewTerms\_failWithInsufficientCollateral() (gas: 557835) \[PASS] test\_acceptNewTerms\_failWithInvalidRefinancer() (gas: 222081) \[PASS] test\_acceptNewTerms\_failWithUnexpectedFunds() (gas: 547959) Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 46.22ms (8.24ms CPU time)

Ran 9 tests for tests/integration/strategies/BasicStrategy.t.sol:BasicSetStrategyFeeTests \[PASS] testFork\_basicStrategy\_setStrategyFeeRate\_failIfBiggerThanHundredPercent() (gas: 63043) \[PASS] testFork\_basicStrategy\_setStrategyFeeRate\_failIfDeactivated() (gas: 92683) \[PASS] testFork\_basicStrategy\_setStrategyFeeRate\_failIfImpaired() (gas: 92662) \[PASS] testFork\_basicStrategy\_setStrategyFeeRate\_failIfNotProtocolAdmin() (gas: 62911) \[PASS] testFork\_basicStrategy\_setStrategyFeeRate\_failIfPaused() (gas: 56679) \[PASS] testFork\_basicStrategy\_setStrategyFeeRate\_withGovernor\_fromNonZeroToZeroFeeRate() (gas: 600398) \[PASS] testFork\_basicStrategy\_setStrategyFeeRate\_withGovernor\_unfundedStrategy() (gas: 220448) \[PASS] testFork\_basicStrategy\_setStrategyFeeRate\_withOperationalAdmin\_withWithdrawal() (gas: 707531) \[PASS] testFork\_basicStrategy\_setStrategyFeeRate\_withPoolDelegate\_fundedStrategy() (gas: 547710) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 162.63ms (14.02ms CPU time)

Ran 6 tests for tests/integration/loan/Refinance.t.sol:RefinanceOpenTermLoan \[PASS] test\_refinance\_calledLoan\_withoutPrincipalChange() (gas: 649882) \[PASS] test\_refinance\_early\_increasePrincipal() (gas: 653931) \[PASS] test\_refinance\_early\_increasePrincipalWithCalledLoan() (gas: 670203) \[PASS] test\_refinance\_increasePrincipalMatchingPayment() (gas: 664564) \[PASS] test\_refinance\_increasePrincipalToDesiredAmount() (gas: 685546) \[PASS] test\_refinance\_late\_decreasePrincipal() (gas: 584275) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 100.85ms (28.28ms CPU time)

Ran 5 tests for tests/integration/loan/Refinance.t.sol:RefinanceTestsSingleLoan \[PASS] test\_refinance\_onLateLoan\_changePaymentInterval() (gas: 952404) \[PASS] test\_refinance\_onLoanPaymentDueDate\_changeInterestRate() (gas: 946444) \[PASS] test\_refinance\_onLoanPaymentDueDate\_changePaymentInterval() (gas: 946388) \[PASS] test\_refinance\_onLoanPaymentDueDate\_changeToAmortized() (gas: 952335) \[PASS] test\_refinance\_onLoanPaymentDueDate\_increasePrincipal() (gas: 985003) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 60.77ms (14.00ms CPU time)

Ran 4 tests for tests/integration/loan-manager/open-term/RemoveCall.t.sol:RemoveCallFailureTests \[PASS] test\_callPrincipal\_notCalled() (gas: 77863) \[PASS] test\_callPrincipal\_notLender() (gas: 36586) \[PASS] test\_callPrincipal\_notPoolDelegate() (gas: 49062) \[PASS] test\_callPrincipal\_paused() (gas: 49338) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 31.81ms (561.42µs CPU time)

Ran 3 tests for tests/integration/loan-manager/open-term/RemoveCall.t.sol:RemoveCallTests \[PASS] test\_removeCall\_impaired() (gas: 347011) \[PASS] test\_removeCall\_latePayment() (gas: 132033) \[PASS] test\_removeCall\_paymentOnTime() (gas: 133912) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 38.92ms (2.70ms CPU time)

Ran 5 tests for tests/integration/loan-manager/fixed-term/RemoveLoanImpairment.t.sol:RemoveLoanImpairmentFailureTests \[PASS] test\_removeLoanImpairment\_notAuthorized() (gas: 65746) \[PASS] test\_removeLoanImpairment\_notGovernor() (gas: 240479) \[PASS] test\_removeLoanImpairment\_notImpaired() (gas: 78563) \[PASS] test\_removeLoanImpairment\_notLender() (gas: 36358) \[PASS] test\_removeLoanImpairment\_pastDate() (gas: 313794) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 37.49ms (2.02ms CPU time)

Ran 9 tests for tests/integration/strategies/BasicStrategy.t.sol:BasicStrategyDeactivateTests \[PASS] testFork\_basicStrategy\_deactivate\_failIfAlreadyInactive() (gas: 94939) \[PASS] testFork\_basicStrategy\_deactivate\_failIfNotProtocolAdmin() (gas: 60674) \[PASS] testFork\_basicStrategy\_deactivate\_failIfPaused() (gas: 54464) \[PASS] testFork\_basicStrategy\_deactivate\_stagnant\_noFees() (gas: 445869) \[PASS] testFork\_basicStrategy\_deactivate\_unfundedStrategy() (gas: 225461) \[PASS] testFork\_basicStrategy\_deactivate\_withFullLoss\_strategyFees() (gas: 490688) \[PASS] testFork\_basicStrategy\_deactivate\_withGain\_impaired\_strategyFees() (gas: 566230) \[PASS] testFork\_basicStrategy\_deactivate\_withGain\_strategyFees() (gas: 498706) \[PASS] testFork\_basicStrategy\_deactivate\_withLoss\_strategyFees() (gas: 530595) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 185.44ms (16.98ms CPU time)

Ran 5 tests for tests/integration/withdrawal-manager/queue/RemoveRequest.t.sol:RemoveRequestFailureTests \[PASS] test\_removeRequest\_failIfNotInQueue() (gas: 144198) \[PASS] test\_removeRequest\_failIfNotOperationalAdmin() (gas: 180818) \[PASS] test\_removeRequest\_failIfNotPoolDelegate() (gas: 177169) \[PASS] test\_removeRequest\_failIfProtocolIsPaused() (gas: 52361) \[PASS] test\_removeRequest\_failIfTransferFail() (gas: 175044) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 38.22ms (2.19ms CPU time)

Ran 5 tests for tests/integration/withdrawal-manager/queue/RemoveRequest.t.sol:RemoveRequestTests \[PASS] test\_removeRequest\_forManual() (gas: 377830) \[PASS] test\_removeRequest\_manualPartialRedemption() (gas: 484423) \[PASS] test\_removeRequest\_partialRedemption() (gas: 506090) \[PASS] test\_removeRequest\_sameAddressWithMultipleRequests() (gas: 756025) \[PASS] test\_removeRequest\_success() (gas: 565757) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 42.88ms (8.15ms CPU time)

Ran 9 tests for tests/integration/withdrawal-manager/RemoveShares.t.sol:RemoveSharesCyclicalFailureTests \[PASS] test\_removeShares\_failIfInsufficientApproval() (gas: 201384) \[PASS] test\_removeShares\_failIfInvalidShares() (gas: 98394) \[PASS] test\_removeShares\_failIfInvalidSharesWithZero() (gas: 98358) \[PASS] test\_removeShares\_failIfNotPool() (gas: 43559) \[PASS] test\_removeShares\_failIfNotPoolManager() (gas: 17994) \[PASS] test\_removeShares\_failIfProtocolIsPaused() (gas: 61256) \[PASS] test\_removeShares\_failIfRemovedTwice() (gas: 166820) \[PASS] test\_removeShares\_failIfTransferFail() (gas: 159970) \[PASS] test\_removeShares\_failIfWithdrawalIsPending() (gas: 220560) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 38.36ms (3.65ms CPU time)

Ran 16 tests for tests/integration/strategies/BasicStrategy.t.sol:BasicStrategyFundTests \[PASS] testFork\_basicStrategy\_fund\_failIfInvalidStrategyFactory() (gas: 132422) \[PASS] testFork\_basicStrategy\_fund\_failIfInvalidStrategyVault() (gas: 81063) \[PASS] testFork\_basicStrategy\_fund\_failIfNotEnoughPoolLiquidity() (gas: 162734) \[PASS] testFork\_basicStrategy\_fund\_failIfNotEnoughSharesOut() (gas: 320117) \[PASS] testFork\_basicStrategy\_fund\_failIfNotStrategyManager() (gas: 58592) \[PASS] testFork\_basicStrategy\_fund\_failIfZeroAmount() (gas: 115520) \[PASS] testFork\_basicStrategy\_fund\_failWhenDeactivated() (gas: 97588) \[PASS] testFork\_basicStrategy\_fund\_failWhenImpaired() (gas: 97567) \[PASS] testFork\_basicStrategy\_fund\_failWhenPaused() (gas: 54133) \[PASS] testFork\_basicStrategy\_fund\_firstFundWithPoolDelegate() (gas: 408805) \[PASS] testFork\_basicStrategy\_fund\_firstFundWithStrategyManager() (gas: 416682) \[PASS] testFork\_basicStrategy\_fund\_secondFundAfterTotalLoss\_withStrategyFees() (gas: 537759) \[PASS] testFork\_basicStrategy\_fund\_secondFundWithGain\_noStrategyFees() (gas: 545467) \[PASS] testFork\_basicStrategy\_fund\_secondFundWithGain\_withFeesRoundedToZero() (gas: 511093) \[PASS] testFork\_basicStrategy\_fund\_secondFundWithGain\_withStrategyFees() (gas: 561897) \[PASS] testFork\_basicStrategy\_fund\_secondFundWithLoss\_withStrategyFees() (gas: 564751) Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 190.47ms (37.52ms CPU time)

Ran 5 tests for tests/integration/withdrawal-manager/RemoveShares.t.sol:RemoveSharesCyclicalTests \[PASS] test\_removeShares\_pastTheRedemptionWindow() (gas: 152491) \[PASS] test\_removeShares\_prematurelyAddedShares() (gas: 408832) \[PASS] test\_removeShares\_sameAddressCallingTwice() (gas: 510096) \[PASS] test\_removeShares\_success() (gas: 152540) \[PASS] test\_removeShares\_withApproval() (gas: 165963) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 47.12ms (5.34ms CPU time)

Ran 8 tests for tests/integration/withdrawal-manager/RemoveShares.t.sol:RemoveSharesQueueFailureTests \[PASS] test\_removeShares\_failIfInsufficientApproval() (gas: 206414) \[PASS] test\_removeShares\_failIfInvalidShares() (gas: 88639) \[PASS] test\_removeShares\_failIfInvalidSharesWithZero() (gas: 86407) \[PASS] test\_removeShares\_failIfNotPool() (gas: 43559) \[PASS] test\_removeShares\_failIfNotPoolManager() (gas: 18048) \[PASS] test\_removeShares\_failIfProtocolIsPaused() (gas: 61278) \[PASS] test\_removeShares\_failIfRemovedTwice() (gas: 177772) \[PASS] test\_removeShares\_failIfTransferFail() (gas: 178217) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 39.05ms (2.94ms CPU time)

Ran 7 tests for tests/integration/withdrawal-manager/RemoveShares.t.sol:RemoveSharesQueueTests \[PASS] test\_removeShare\_complete\_multipleRequests() (gas: 853095) \[PASS] test\_removeShares\_manual\_partiallyProcessed() (gas: 706415) \[PASS] test\_removeShares\_partial\_multipleRequests() (gas: 897932) \[PASS] test\_removeShares\_partiallyProcessed() (gas: 383266) \[PASS] test\_removeShares\_sameAddressCallingTwice() (gas: 616187) \[PASS] test\_removeShares\_success() (gas: 165505) \[PASS] test\_removeShares\_withApproval() (gas: 190073) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 71.20ms (24.82ms CPU time)

Ran 9 tests for tests/integration/strategies/BasicStrategy.t.sol:BasicStrategyImpairTests \[PASS] testFork\_basicStrategy\_impair\_failIfAlreadyImpaired() (gas: 98087) \[PASS] testFork\_basicStrategy\_impair\_failIfNotProtocolAdmin() (gas: 60727) \[PASS] testFork\_basicStrategy\_impair\_failIfPaused() (gas: 54441) \[PASS] testFork\_basicStrategy\_impair\_stagnant\_noFees() (gas: 457188) \[PASS] testFork\_basicStrategy\_impair\_unfundedStrategy() (gas: 244152) \[PASS] testFork\_basicStrategy\_impair\_withFullLoss\_strategyFees() (gas: 516632) \[PASS] testFork\_basicStrategy\_impair\_withGain\_inactive\_strategyFees() (gas: 565816) \[PASS] testFork\_basicStrategy\_impair\_withGain\_strategyFees() (gas: 526978) \[PASS] testFork\_basicStrategy\_impair\_withLoss\_strategyFees() (gas: 558091) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 196.35ms (33.57ms CPU time)

Ran 10 tests for tests/integration/withdrawal-manager/queue/RemoveSharesById.t.sol:RemoveSharesByIdQueueFailureTests \[PASS] test\_removeSharesById\_failIfInsufficientShares\_requestNotProcessed() (gas: 46595) \[PASS] test\_removeSharesById\_failIfInsufficientShares\_requestPartiallyProcessed() (gas: 302538) \[PASS] test\_removeSharesById\_failIfInvalidRequest() (gas: 44016) \[PASS] test\_removeSharesById\_failIfInvalidRequest\_requestAlreadyRemoved() (gas: 135343) \[PASS] test\_removeSharesById\_failIfInvalidRequest\_requestFullyProcessed() (gas: 278732) \[PASS] test\_removeSharesById\_failIfMaxUint128Exceeded() (gas: 42073) \[PASS] test\_removeSharesById\_failIfNoChange() (gas: 46604) \[PASS] test\_removeSharesById\_failIfNotOwner() (gas: 44055) \[PASS] test\_removeSharesById\_failIfProtocolIsPaused() (gas: 47514) \[PASS] test\_removeSharesById\_failIfTransferFail() (gas: 170941) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 64.34ms (5.65ms CPU time)

Ran 8 tests for tests/integration/withdrawal-manager/queue/RemoveSharesById.t.sol:RemoveSharesByIdQueueSuccessTests \[PASS] test\_removeSharesById\_sharesCompletelyRemoved\_requestNotProcessed() (gas: 302732) \[PASS] test\_removeSharesById\_sharesCompletelyRemoved\_requestNotProcessed\_manualWithdrawal() (gas: 344293) \[PASS] test\_removeSharesById\_sharesCompletelyRemoved\_requestPartiallyProcessed() (gas: 505068) \[PASS] test\_removeSharesById\_sharesCompletelyRemoved\_requestPartiallyProcessed\_manualWithdrawal() (gas: 479159) \[PASS] test\_removeSharesById\_sharesPartiallyRemoved\_requestNotProcessed() (gas: 380578) \[PASS] test\_removeSharesById\_sharesPartiallyRemoved\_requestNotProcessed\_manualWithdrawal() (gas: 422139) \[PASS] test\_removeSharesById\_sharesPartiallyRemoved\_requestPartiallyProcessed() (gas: 504789) \[PASS] test\_removeSharesById\_sharesPartiallyRemoved\_requestPartiallyProcessed\_manualWithdrawal() (gas: 478956) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 50.29ms (12.86ms CPU time)

Ran 15 tests for tests/integration/strategies/BasicStrategy.t.sol:BasicStrategyWithdrawTests \[PASS] testFork\_basicStrategy\_withdraw\_failIfLowAssets() (gas: 322341) \[PASS] testFork\_basicStrategy\_withdraw\_failIfNotStrategyManager() (gas: 321699) \[PASS] testFork\_basicStrategy\_withdraw\_failIfSlippage() (gas: 339949) \[PASS] testFork\_basicStrategy\_withdraw\_failIfZeroAmount() (gas: 318066) \[PASS] testFork\_basicStrategy\_withdraw\_failWhenPaused() (gas: 330263) \[PASS] testFork\_basicStrategy\_withdraw\_failWithFullLoss() (gas: 406193) \[PASS] testFork\_basicStrategy\_withdraw\_noFeesWithYield() (gas: 528324) \[PASS] testFork\_basicStrategy\_withdraw\_noFeesWithYieldFullWithdrawal() (gas: 496753) \[PASS] testFork\_basicStrategy\_withdraw\_whileDeactivated() (gas: 496824) \[PASS] testFork\_basicStrategy\_withdraw\_whileImpaired() (gas: 540565) \[PASS] testFork\_basicStrategy\_withdraw\_withFeesAndYield() (gas: 545037) \[PASS] testFork\_basicStrategy\_withdraw\_withFeesAndYieldFullWithdrawal() (gas: 513512) \[PASS] testFork\_basicStrategy\_withdraw\_withFeesRoundedToZeroAndYield() (gas: 491997) \[PASS] testFork\_basicStrategy\_withdraw\_withLoss() (gas: 544495) \[PASS] testFork\_basicStrategy\_withdraw\_withPoolDelegate\_noFeesSameBlock() (gas: 470905) Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 146.32ms (29.92ms CPU time)

Ran 6 tests for tests/integration/governor-timelock/Scenarios.t.sol:GovernorTimelockScenariosTests \[PASS] test\_setUp() (gas: 55666) \[PASS] test\_unscheduleProposals\_cancellerCanNotUnscheduleRoleUpdate() (gas: 82221) \[PASS] test\_unscheduleProposals\_cancellerUnschedulesMaliciousProposal() (gas: 118406) \[PASS] test\_updateRoles\_backupRoleAdmin\_removesPrimaryRoleAdmin() (gas: 154788) \[PASS] test\_upgradeWithdrawalManager() (gas: 303687) \[PASS] test\_withdrawERC20Token\_revert\_afterChangingTokenWithdrawer() (gas: 148371) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 37.79ms (2.88ms CPU time)

Ran 7 tests for tests/integration/governor-timelock/ScheduleProposals.t.sol:ScheduleProposalsTests \[PASS] test\_scheduleProposals\_revert\_arrayLengthMismatch() (gas: 15125) \[PASS] test\_scheduleProposals\_revert\_emptyArray() (gas: 14254) \[PASS] test\_scheduleProposals\_revert\_emptyTarget() (gas: 19615) \[PASS] test\_scheduleProposals\_revert\_notProposer() (gas: 11805) \[PASS] test\_scheduleProposals\_revert\_updateRoleNotAllowed() (gas: 85403) \[PASS] test\_scheduleProposals\_success\_respectsDefaultTimelockAndFunctionSpecific() (gas: 212979) \[PASS] test\_setUp() (gas: 55515) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 42.22ms (1.57ms CPU time)

Ran 7 tests for tests/integration/pool/BootstrapMintAndDeposit.t.sol:BootstrapDepositTests \[PASS] testFuzz\_deposit\_gtBootstrapMintAmount(uint256) (runs: 100, μ: 321539, \~: 321601) \[PASS] testFuzz\_deposit\_ltBootstrapMintAmount(uint256) (runs: 100, μ: 244823, \~: 244642) \[PASS] testFuzz\_deposit\_secondDepositorGetsCorrectShares(uint256) (runs: 100, μ: 425943, \~: 426141) \[PASS] test\_deposit\_exactBootstrapMintAmount() (gas: 297319) \[PASS] test\_deposit\_gtBootstrapMintAmount() (gas: 317551) \[PASS] test\_deposit\_ltBootstrapMintAmount() (gas: 241130) \[PASS] test\_deposit\_secondDepositorGetsCorrectShares() (gas: 422046) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 390.83ms (353.48ms CPU time)

Ran 7 tests for tests/integration/pool/BootstrapMintAndDeposit.t.sol:BootstrapDepositWithPermitTests \[PASS] testFuzz\_depositWithPermit\_gtBootstrapMintAmount(uint256) (runs: 100, μ: 354078, \~: 354171) \[PASS] testFuzz\_depositWithPermit\_ltBootstrapMintAmount(uint256) (runs: 100, μ: 234773, \~: 235028) \[PASS] testFuzz\_depositWithPermit\_secondDepositorGetsCorrectShares(uint256) (runs: 100, μ: 487217, \~: 487501) \[PASS] test\_depositWithPermit\_exactBootstrapMintAmount() (gas: 330001) \[PASS] test\_depositWithPermit\_gtBootstrapMintAmount() (gas: 350135) \[PASS] test\_depositWithPermit\_ltBootstrapMintAmount() (gas: 278344) \[PASS] test\_depositWithPermit\_secondDepositorGetsCorrectShares() (gas: 483295) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 527.15ms (494.07ms CPU time)

Ran 5 tests for tests/integration/governor-timelock/SetDefaultTimelockParameters.t.sol:SetDefaultTimelockParametersTests \[PASS] test\_setDefaultTimelockParameters\_revert\_invalidDelay() (gas: 70753) \[PASS] test\_setDefaultTimelockParameters\_revert\_invalidExecutionWindow() (gas: 70800) \[PASS] test\_setDefaultTimelockParameters\_revert\_notSelf() (gas: 8737) \[PASS] test\_setDefaultTimelockParameters\_success() (gas: 123529) \[PASS] test\_setUp() (gas: 55515) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 39.03ms (2.93ms CPU time)

Ran 8 tests for tests/integration/governor-timelock/SetFunctionTimelockParameters.t.sol:SetFunctionTimelockParametersTests \[PASS] test\_setFunctionTimelockParameters\_revert\_invalidDefaultForDelay() (gas: 72093) \[PASS] test\_setFunctionTimelockParameters\_revert\_invalidDefaultForExecutionWindow() (gas: 72101) \[PASS] test\_setFunctionTimelockParameters\_revert\_invalidDelay() (gas: 73651) \[PASS] test\_setFunctionTimelockParameters\_revert\_invalidExecutionWindow() (gas: 73615) \[PASS] test\_setFunctionTimelockParameters\_revert\_notSelf() (gas: 11231) \[PASS] test\_setFunctionTimelockParameters\_success\_resetFunctionTimelockBackToDefaults() (gas: 209405) \[PASS] test\_setFunctionTimelockParameters\_success\_timelockOfUnderlyingFunctionIsRespected() (gas: 150192) \[PASS] test\_setUp() (gas: 55560) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 36.95ms (2.83ms CPU time)

Ran 7 tests for tests/integration/pool/BootstrapMintAndDeposit.t.sol:BootstrapMintTests \[PASS] testFuzz\_mint\_gtBootstrapMintAmount(uint256) (runs: 100, μ: 323541, \~: 323617) \[PASS] testFuzz\_mint\_ltBootstrapMintAmount(uint256) (runs: 100, μ: 246015, \~: 246256) \[PASS] testFuzz\_mint\_secondDepositorGetsCorrectShares(uint256) (runs: 100, μ: 444618, \~: 444909) \[PASS] test\_mint\_exactBootstrapMintAmount() (gas: 299419) \[PASS] test\_mint\_gtBootstrapMintAmount() (gas: 319543) \[PASS] test\_mint\_ltBootstrapMintAmount() (gas: 242187) \[PASS] test\_mint\_secondDepositorGetsCorrectShares() (gas: 440698) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 416.75ms (346.88ms CPU time)

Ran 5 tests for tests/integration/withdrawal-manager/queue/SetManualWithdrawal.t.sol:SetManualWithdrawalTests \[PASS] test\_setManualWithdrawal\_failIfNotProtocolAdmin() (gas: 54006) \[PASS] test\_setManualWithdrawal\_failIfProtocolIsPaused() (gas: 52093) \[PASS] test\_setManualWithdrawal\_success() (gas: 77845) \[PASS] test\_setManualWithdrawal\_successAsOperationalAdmin() (gas: 81572) \[PASS] test\_setManualWithdrawal\_unsetSuccess() (gas: 69671) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 68.41ms (979.47µs CPU time)

Ran 4 tests for tests/integration/loan-manager/fixed-term/SetMinRatioAndSlippage.t.sol:SetMinRatioTests \[PASS] test\_setMinRatio\_notAuthorized() (gas: 54070) \[PASS] test\_setMinRatio\_notPoolManager() (gas: 54025) \[PASS] test\_setMinRatio\_withGovernor() (gas: 81332) \[PASS] test\_setMinRatio\_withPoolDelegate() (gas: 76424) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 54.18ms (711.86µs CPU time)

Ran 5 tests for tests/integration/loan-manager/fixed-term/SetMinRatioAndSlippage.t.sol:SetSlippageTests \[PASS] test\_setAllowedSlippage\_invalidSlippage() (gas: 124277) \[PASS] test\_setAllowedSlippage\_notAuthorized() (gas: 53995) \[PASS] test\_setAllowedSlippage\_notPoolManager() (gas: 54016) \[PASS] test\_setAllowedSlippage\_withGovernor() (gas: 81293) \[PASS] test\_setAllowedSlippage\_withPoolDelegate() (gas: 76342) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 35.58ms (962.83µs CPU time)

Ran 3 tests for tests/integration/governor-timelock/SetPendingTokenWithdrawer.t.sol:SetPendingTokenWithdrawerTests \[PASS] test\_setPendingTokenWithdrawer\_revert\_notTokenWithdrawer() (gas: 12776) \[PASS] test\_setPendingTokenWithdrawer\_success() (gas: 48186) \[PASS] test\_setUp() (gas: 55560) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 37.06ms (796.88µs CPU time)

Ran 8 tests for tests/integration/permission-manager/SetPoolPermissionLevel.t.sol:SetPoolPermissionLevelTests \[PASS] testFuzz\_setPoolPermissionLevel(uint256,uint256) (runs: 100, μ: 100055, \~: 104268) \[PASS] testFuzz\_setPoolPermissionLevel\_invalidLevel(uint256) (runs: 100, μ: 43828, \~: 43821) \[PASS] testFuzz\_setPoolPermissionLevel\_publicPool(uint256) (runs: 100, μ: 86857, \~: 86927) \[PASS] test\_setPoolPermissionLevel\_anotherPoolDelegate() (gas: 73951) \[PASS] test\_setPoolPermissionLevel\_governor() (gas: 65395) \[PASS] test\_setPoolPermissionLevel\_notAuthorized() (gas: 41471) \[PASS] test\_setPoolPermissionLevel\_operationalAdmin() (gas: 69202) \[PASS] test\_setPoolPermissionLevel\_poolDelegate() (gas: 63161) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 112.02ms (77.73ms CPU time)

Ran 7 tests for tests/integration/pool/BootstrapMintAndDeposit.t.sol:BootstrapMintWithPermitTests \[PASS] testFuzz\_mintWithPermit\_gtBootstrapMintAmount(uint256) (runs: 100, μ: 356312, \~: 356378) \[PASS] testFuzz\_mintWithPermit\_ltBootstrapMintAmount(uint256) (runs: 100, μ: 235899, \~: 236150) \[PASS] testFuzz\_mintWithPermit\_secondDepositorGetsCorrectShares(uint256) (runs: 100, μ: 506078, \~: 506316) \[PASS] test\_mintWithPermit\_exactBootstrapMintAmount() (gas: 332139) \[PASS] test\_mintWithPermit\_gtBootstrapMintAmount() (gas: 352295) \[PASS] test\_mintWithPermit\_ltBootstrapMintAmount() (gas: 279536) \[PASS] test\_mintWithPermit\_secondDepositorGetsCorrectShares() (gas: 502108) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 576.28ms (527.45ms CPU time)

Ran 5 tests for tests/integration/strategies/SkyStrategy.t.sol:SkyStrategyDeactivateStrategyTests \[PASS] testFork\_deactivateStrategy\_active() (gas: 828755) \[PASS] testFork\_deactivateStrategy\_impaired() (gas: 845848) \[PASS] testFork\_deactivateStrategy\_inactive() (gas: 90390) \[PASS] testFork\_deactivateStrategy\_notAdmin() (gas: 131919) \[PASS] testFork\_deactivateStrategy\_protocolPaused() (gas: 54464) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 125.64ms (8.14ms CPU time)

Ran 2 tests for tests/integration/pool/BootstrapMintAndDeposit.t.sol:SetBootstrapMintTests \[PASS] test\_setBootstrapMint\_failIfNotOperationalAdmin() (gas: 20286) \[PASS] test\_setBootstrapMint\_success\_asOperationalAdmin() (gas: 36121) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 56.16ms (348.47µs CPU time)

Ran 5 tests for tests/integration/loan/open-term/CallPrincipal.t.sol:CallPrincipalFailureTests \[PASS] test\_callPrincipal\_invalidAmount\_boundary() (gas: 466284) \[PASS] test\_callPrincipal\_loanActive() (gas: 53945) \[PASS] test\_callPrincipal\_notLender() (gas: 36687) \[PASS] test\_callPrincipal\_notPoolDelegate() (gas: 49189) \[PASS] test\_callPrincipal\_paused() (gas: 49487) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 31.71ms (1.28ms CPU time)

Ran 4 tests for tests/integration/loan/open-term/CallPrincipal.t.sol:CallPrincipalTests \[PASS] test\_callPrincipal\_impaired() (gas: 371653) \[PASS] test\_callPrincipal\_latePayment() (gas: 158979) \[PASS] test\_callPrincipal\_notFullPrincipal() (gas: 158782) \[PASS] test\_callPrincipal\_paymentOnTime() (gas: 158690) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 40.19ms (3.35ms CPU time)

Ran 35 tests for tests/integration/strategies/SkyStrategy.t.sol:SkyStrategyFundStrategyTests \[PASS] testFork\_fundStrategy\_fundAfterCompleteLoss\_allFees() (gas: 1167779) \[PASS] testFork\_fundStrategy\_fundAfterCompleteLoss\_noFees() (gas: 1073024) \[PASS] testFork\_fundStrategy\_fundAfterCompleteLoss\_psmFees() (gas: 1150196) \[PASS] testFork\_fundStrategy\_fundAfterCompleteLoss\_strategyFees() (gas: 1125610) \[PASS] testFork\_fundStrategy\_fundAfterGain\_allFees() (gas: 1281917) \[PASS] testFork\_fundStrategy\_fundAfterGain\_allFees\_withStrategyFeesRoundedToZero() (gas: 1130029) \[PASS] testFork\_fundStrategy\_fundAfterGain\_noFees() (gas: 1034422) \[PASS] testFork\_fundStrategy\_fundAfterGain\_psmFees() (gas: 1111918) \[PASS] testFork\_fundStrategy\_fundAfterGain\_strategyFees() (gas: 1239254) \[PASS] testFork\_fundStrategy\_fundAfterGain\_strategyFeesRoundedToZero() (gas: 1087485) \[PASS] testFork\_fundStrategy\_fundAfterLoss\_allFees() (gas: 1152228) \[PASS] testFork\_fundStrategy\_fundAfterLoss\_noFees() (gas: 1057107) \[PASS] testFork\_fundStrategy\_fundAfterLoss\_psmFees() (gas: 1134662) \[PASS] testFork\_fundStrategy\_fundAfterLoss\_strategyFees() (gas: 1109711) \[PASS] testFork\_fundStrategy\_fundWhenStagnant\_allFees() (gas: 1078901) \[PASS] testFork\_fundStrategy\_fundWhenStagnant\_noFees() (gas: 983923) \[PASS] testFork\_fundStrategy\_fundWhenStagnant\_psmFees() (gas: 1061320) \[PASS] testFork\_fundStrategy\_fundWhenStagnant\_strategyFees() (gas: 1036492) \[PASS] testFork\_fundStrategy\_initialFund\_allFees() (gas: 910351) \[PASS] testFork\_fundStrategy\_initialFund\_noFees() (gas: 851074) \[PASS] testFork\_fundStrategy\_initialFund\_psmFees() (gas: 888397) \[PASS] testFork\_fundStrategy\_initialFund\_strategyFees() (gas: 861921) \[PASS] testFork\_fundStrategy\_insufficientCover() (gas: 508458) \[PASS] testFork\_fundStrategy\_insufficientLiquidity() (gas: 492210) \[PASS] testFork\_fundStrategy\_invalidPsm() (gas: 87128) \[PASS] testFork\_fundStrategy\_invalidStrategyFactory() (gas: 147925) \[PASS] testFork\_fundStrategy\_invalidVault() (gas: 83136) \[PASS] testFork\_fundStrategy\_notPoolDelegate() (gas: 787827) \[PASS] testFork\_fundStrategy\_notStrategyManager() (gas: 792701) \[PASS] testFork\_fundStrategy\_protocolPaused() (gas: 56637) \[PASS] testFork\_fundStrategy\_psmHalted() (gas: 210) \[PASS] testFork\_fundStrategy\_strategyImpaired() (gas: 97571) \[PASS] testFork\_fundStrategy\_strategyInactive() (gas: 97461) \[PASS] testFork\_fundStrategy\_zeroPrincipal() (gas: 130975) \[PASS] testFork\_fundStrategy\_zeroSupply() (gas: 147475) Suite result: ok. 35 passed; 0 failed; 0 skipped; finished in 292.57ms (150.45ms CPU time)

Ran 5 tests for tests/integration/loan/fixed-term/CloseLoan.t.sol:CloseLoanTests \[PASS] test\_closeLoan\_failIfLoanIsLate() (gas: 105411) \[PASS] test\_closeLoan\_failIfNotEnoughFundsSent() (gas: 195137) \[PASS] test\_closeLoan\_failIfNotLoan() (gas: 62529) \[PASS] test\_closeLoan\_failWithInsufficientApproval() (gas: 114607) \[PASS] test\_closeLoan\_success() (gas: 438314) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 59.46ms (3.16ms CPU time)

Ran 5 tests for tests/integration/strategies/SkyStrategy.t.sol:SkyStrategyImpairStrategyTests \[PASS] testFork\_impairStrategy\_active() (gas: 847976) \[PASS] testFork\_impairStrategy\_impaired() (gas: 92799) \[PASS] testFork\_impairStrategy\_inactive() (gas: 845850) \[PASS] testFork\_impairStrategy\_notAdmin() (gas: 132061) \[PASS] testFork\_impairStrategy\_protocolPaused() (gas: 54507) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 180.88ms (9.92ms CPU time)

Ran 23 tests for tests/integration/strategies/SkyStrategy.t.sol:SkyStrategyReactivateStrategyTests \[PASS] testFork\_reactivateStrategy\_active() (gas: 62635) \[PASS] testFork\_reactivateStrategy\_impaired\_flat\_keepAccounting() (gas: 625763) \[PASS] testFork\_reactivateStrategy\_impaired\_flat\_updateAccounting() (gas: 631527) \[PASS] testFork\_reactivateStrategy\_impaired\_gain\_keepAccounting() (gas: 670745) \[PASS] testFork\_reactivateStrategy\_impaired\_gain\_updateAccounting() (gas: 680783) \[PASS] testFork\_reactivateStrategy\_impaired\_loss\_keepAccounting() (gas: 695267) \[PASS] testFork\_reactivateStrategy\_impaired\_loss\_updateAccounting() (gas: 705884) \[PASS] testFork\_reactivateStrategy\_impaired\_new\_keepAccounting() (gas: 282747) \[PASS] testFork\_reactivateStrategy\_impaired\_new\_updateAccounting() (gas: 291114) \[PASS] testFork\_reactivateStrategy\_impaired\_totalLoss\_keepAccounting() (gas: 661822) \[PASS] testFork\_reactivateStrategy\_impaired\_totalLoss\_updateAccounting() (gas: 669805) \[PASS] testFork\_reactivateStrategy\_inactive\_flat\_keepAccounting() (gas: 606776) \[PASS] testFork\_reactivateStrategy\_inactive\_flat\_updateAccounting() (gas: 612496) \[PASS] testFork\_reactivateStrategy\_inactive\_gain\_keepAccounting() (gas: 636241) \[PASS] testFork\_reactivateStrategy\_inactive\_gain\_updateAccounting() (gas: 646253) \[PASS] testFork\_reactivateStrategy\_inactive\_loss\_keepAccounting() (gas: 661689) \[PASS] testFork\_reactivateStrategy\_inactive\_loss\_updateAccounting() (gas: 672305) \[PASS] testFork\_reactivateStrategy\_inactive\_new\_keepAccounting() (gas: 256612) \[PASS] testFork\_reactivateStrategy\_inactive\_new\_updateAccounting() (gas: 264844) \[PASS] testFork\_reactivateStrategy\_inactive\_totalLoss\_keepAccounting() (gas: 635303) \[PASS] testFork\_reactivateStrategy\_inactive\_totalLoss\_updateAccounting() (gas: 643543) \[PASS] testFork\_reactivateStrategy\_notAdmin() (gas: 85955) \[PASS] testFork\_reactivateStrategy\_protocolPaused() (gas: 54578) Suite result: ok. 23 passed; 0 failed; 0 skipped; finished in 166.68ms (49.12ms CPU time)

Ran 9 tests for tests/integration/pool/ConfigurePool.t.sol:ConfigurePoolTests \[PASS] testFuzz\_configurePool(uint256,uint256,uint256\[]) (runs: 100, μ: 2121334, \~: 1423729) \[PASS] test\_configurePool\_anotherPoolDelegate() (gas: 87756) \[PASS] test\_configurePool\_governor() (gas: 133922) \[PASS] test\_configurePool\_invalidLevel() (gas: 54064) \[PASS] test\_configurePool\_lengthMismatch() (gas: 79399) \[PASS] test\_configurePool\_notAuthorized() (gas: 55270) \[PASS] test\_configurePool\_operationalAdmin() (gas: 137739) \[PASS] test\_configurePool\_poolDelegate() (gas: 131742) \[PASS] test\_configurePool\_publicPool() (gas: 109280) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 321.64ms (260.83ms CPU time)

Ran 8 tests for tests/integration/strategies/SkyStrategy.t.sol:SkyStrategySetPSMTests \[PASS] testFork\_setPsm\_failIfNotValidInstance() (gas: 80308) \[PASS] testFork\_setPsm\_fundedStrategy() (gas: 853366) \[PASS] testFork\_setPsm\_invalidGem() (gas: 301705) \[PASS] testFork\_setPsm\_invalidUsds() (gas: 327501) \[PASS] testFork\_setPsm\_notAdmin() (gas: 319434) \[PASS] testFork\_setPsm\_protocolPaused() (gas: 56706) \[PASS] testFork\_setPsm\_unfundedStrategy() (gas: 174844) \[PASS] testFork\_setPsm\_zeroAddress() (gas: 54229) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 156.37ms (7.77ms CPU time)

Ran 8 tests for tests/integration/strategies/CoreStrategy.t.sol:CoreStrategyDeactivateStrategyTests \[PASS] testFork\_deactivateStrategy\_correctAumAfterDeactivation() (gas: 351799) \[PASS] testFork\_deactivateStrategy\_failWhenAlreadyDeactivated() (gas: 68208) \[PASS] testFork\_deactivateStrategy\_failWhenNotGovernor() (gas: 118018) \[PASS] testFork\_deactivateStrategy\_failWhenNotOperationalAdmin() (gas: 115087) \[PASS] testFork\_deactivateStrategy\_failWhenNotPoolDelegate() (gas: 113306) \[PASS] testFork\_deactivateStrategy\_failWhenProtocolPaused() (gas: 109670) \[PASS] testFork\_deactivateStrategy\_success() (gas: 322609) \[PASS] testFork\_deactivateStrategy\_successWhenAlreadyImpaired() (gas: 386596) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 126.29ms (5.33ms CPU time)

Ran 11 tests for tests/integration/strategies/SkyStrategy.t.sol:SkyStrategySetStrategyFeeTests \[PASS] testFork\_setStrategyFeeRate\_deactivated() (gas: 92586) \[PASS] testFork\_setStrategyFeeRate\_impaired() (gas: 92675) \[PASS] testFork\_setStrategyFeeRate\_initialFeeRate\_flat() (gas: 321440) \[PASS] testFork\_setStrategyFeeRate\_initialFeeRate\_gain() (gas: 420320) \[PASS] testFork\_setStrategyFeeRate\_initialFeeRate\_loss() (gas: 394013) \[PASS] testFork\_setStrategyFeeRate\_invalidFeeRate() (gas: 60944) \[PASS] testFork\_setStrategyFeeRate\_notAdmin() (gas: 222613) \[PASS] testFork\_setStrategyFeeRate\_protocolPaused() (gas: 56681) \[PASS] testFork\_setStrategyFeeRate\_updatedFeeRate\_flat() (gas: 323682) \[PASS] testFork\_setStrategyFeeRate\_updatedFeeRate\_gain() (gas: 641198) \[PASS] testFork\_setStrategyFeeRate\_updatedFeeRate\_loss() (gas: 396212) Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 113.31ms (21.53ms CPU time)

Ran 13 tests for tests/integration/strategies/CoreStrategy.t.sol:CoreStrategyFundTests \[PASS] testFork\_coreStrategy\_fund\_failIfInvalidStrategyFactory() (gas: 107382) \[PASS] testFork\_coreStrategy\_fund\_failIfInvalidStrategyVault() (gas: 79021) \[PASS] testFork\_coreStrategy\_fund\_failIfNotEnoughPoolLiquidity() (gas: 149349) \[PASS] testFork\_coreStrategy\_fund\_failIfNotStrategyManager() (gas: 58613) \[PASS] testFork\_coreStrategy\_fund\_failIfZeroAmount() (gas: 90467) \[PASS] testFork\_coreStrategy\_fund\_failWhenDeactivated() (gas: 80354) \[PASS] testFork\_coreStrategy\_fund\_failWhenImpaired() (gas: 80421) \[PASS] testFork\_coreStrategy\_fund\_failWhenPaused() (gas: 54132) \[PASS] testFork\_coreStrategy\_fund\_firstFundWithPoolDelegate() (gas: 581212) \[PASS] testFork\_coreStrategy\_fund\_firstFundWithStrategyManager() (gas: 589056) \[PASS] testFork\_coreStrategy\_fund\_secondFundAfterTotalLoss() (gas: 745624) \[PASS] testFork\_coreStrategy\_fund\_secondFundWithGain() (gas: 501108) \[PASS] testFork\_coreStrategy\_fund\_secondFundWithLoss() (gas: 755256) Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 135.66ms (15.53ms CPU time)

Ran 6 tests for tests/integration/strategies/CoreStrategy.t.sol:CoreStrategyImpairedStrategyTests \[PASS] testFork\_impairedStrategy\_correctAumAfterImpairment() (gas: 441066) \[PASS] testFork\_impairedStrategy\_failWhenAlreadyImpaired() (gas: 66711) \[PASS] testFork\_impairedStrategy\_failWhenNotAdmin() (gas: 110244) \[PASS] testFork\_impairedStrategy\_failWhenProtocolPaused() (gas: 54479) \[PASS] testFork\_impairedStrategy\_success() (gas: 429528) \[PASS] testFork\_impairedStrategy\_successWhenAlreadyDeactivated() (gas: 408776) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 120.58ms (6.05ms CPU time)

Ran 11 tests for tests/integration/strategies/CoreStrategy.t.sol:CoreStrategyPushAssetsTests \[PASS] testFork\_coreStrategy\_pushAssetsToPool\_failIfNotPoolDelegate() (gas: 129158) \[PASS] testFork\_coreStrategy\_pushAssetsToPool\_failIfNotStrategyManager() (gas: 134011) \[PASS] testFork\_coreStrategy\_pushAssetsToPool\_failTransfer() (gas: 670701) \[PASS] testFork\_coreStrategy\_pushAssetsToPool\_failWhenPaused() (gas: 54491) \[PASS] testFork\_coreStrategy\_pushAssetsToPool\_successAfterAdditionalFunding() (gas: 828868) \[PASS] testFork\_coreStrategy\_pushAssetsToPool\_successWhenDeactivated() (gas: 708105) \[PASS] testFork\_coreStrategy\_pushAssetsToPool\_successWhenImpaired() (gas: 714232) \[PASS] testFork\_coreStrategy\_pushAssetsToPool\_successWhenPartialWithdrawalProcessed() (gas: 776091) \[PASS] testFork\_coreStrategy\_pushAssetsToPool\_successWhenPartialWithdrawalRequested() (gas: 719236) \[PASS] testFork\_coreStrategy\_pushAssetsToPool\_successWhenPositiveBalance() (gas: 696476) \[PASS] testFork\_coreStrategy\_pushAssetsToPool\_successWhenZeroBalance() (gas: 97279) Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 133.97ms (19.90ms CPU time)

Ran 4 tests for tests/integration/strategies/CoreStrategy.t.sol:CoreStrategyReactivateStrategyTests \[PASS] testFork\_reactivateStrategy\_aumCorrectAfterReactivation() (gas: 387110) \[PASS] testFork\_reactivateStrategy\_failWhenAlreadyActive() (gas: 57678) \[PASS] testFork\_reactivateStrategy\_failWhenNotAdmin() (gas: 86698) \[PASS] testFork\_reactivateStrategy\_failWhenProtocolPaused() (gas: 54456) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 116.05ms (2.56ms CPU time)

Ran 77 tests for tests/integration/strategies/SkyStrategy.t.sol:SkyStrategyWithdrawFromStrategyTests \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_allFees\_afterGain\_fullWithdrawal() (gas: 1254627) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_allFees\_afterGain\_partialWithdrawal() (gas: 1248888) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_allFees\_afterLoss\_fullWithdrawal() (gas: 1141216) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_allFees\_afterLoss\_partialWithdrawal() (gas: 1152051) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_allFees\_whenStagnant\_fullWithdrawal() (gas: 1060260) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_allFees\_whenStagnant\_partialWithdrawal() (gas: 1075573) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_noFees\_afterGain\_fullWithdrawal() (gas: 1028216) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_noFees\_afterGain\_partialWithdrawal() (gas: 1021633) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_noFees\_afterLoss\_fullWithdrawal() (gas: 1050866) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_noFees\_afterLoss\_partialWithdrawal() (gas: 1044348) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_noFees\_whenStagnant\_fullWithdrawal() (gas: 970008) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_noFees\_whenStagnant\_partialWithdrawal() (gas: 967220) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_psmFees\_afterGain\_fullWithdrawal() (gas: 1100858) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_psmFees\_afterGain\_partialWithdrawal() (gas: 1101626) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_psmFees\_afterLoss\_fullWithdrawal() (gas: 1123573) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_psmFees\_afterLoss\_partialWithdrawal() (gas: 1129952) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_psmFees\_whenStagnant\_fullWithdrawal() (gas: 1042562) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_psmFees\_whenStagnant\_partialWithdrawal() (gas: 1053387) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_strategyFees\_afterGain\_fullWithdrawal() (gas: 1216664) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_strategyFees\_afterGain\_partialWithdrawal() (gas: 1210084) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_strategyFees\_afterLoss\_fullWithdrawal() (gas: 1103527) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_strategyFees\_afterLoss\_partialWithdrawal() (gas: 1103777) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_strategyFees\_whenStagnant\_fullWithdrawal() (gas: 1022717) \[PASS] testFork\_withdrawFromStrategy\_activeStrategy\_strategyFees\_whenStagnant\_partialWithdrawal() (gas: 1027312) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_allFees\_afterGain\_fullWithdrawal() (gas: 1149019) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_allFees\_afterGain\_partialWithdrawal() (gas: 1145734) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_allFees\_afterLoss\_fullWithdrawal() (gas: 1177150) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_allFees\_afterLoss\_partialWithdrawal() (gas: 1173770) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_allFees\_whenStagnant\_fullWithdrawal() (gas: 1105473) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_allFees\_whenStagnant\_partialWithdrawal() (gas: 1106813) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_noFees\_afterGain\_fullWithdrawal() (gas: 1047692) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_noFees\_afterGain\_partialWithdrawal() (gas: 1044093) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_noFees\_afterLoss\_fullWithdrawal() (gas: 1070462) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_noFees\_afterLoss\_partialWithdrawal() (gas: 1066821) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_noFees\_whenStagnant\_fullWithdrawal() (gas: 998984) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_noFees\_whenStagnant\_partialWithdrawal() (gas: 999276) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_psmFees\_afterGain\_fullWithdrawal() (gas: 1126658) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_psmFees\_afterGain\_partialWithdrawal() (gas: 1123241) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_psmFees\_afterLoss\_fullWithdrawal() (gas: 1155027) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_psmFees\_afterLoss\_partialWithdrawal() (gas: 1151693) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_psmFees\_whenStagnant\_fullWithdrawal() (gas: 1083441) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_psmFees\_whenStagnant\_partialWithdrawal() (gas: 1084669) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_strategyFees\_afterGain\_fullWithdrawal() (gas: 1101552) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_strategyFees\_afterGain\_partialWithdrawal() (gas: 1097098) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_strategyFees\_afterLoss\_fullWithdrawal() (gas: 1129507) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_strategyFees\_afterLoss\_partialWithdrawal() (gas: 1125179) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_strategyFees\_whenStagnant\_fullWithdrawal() (gas: 1058028) \[PASS] testFork\_withdrawFromStrategy\_impairedStrategy\_strategyFees\_whenStagnant\_partialWithdrawal() (gas: 1058300) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_allFees\_afterGain\_fullWithdrawal() (gas: 1110928) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_allFees\_afterGain\_partialWithdrawal() (gas: 1105863) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_allFees\_afterLoss\_fullWithdrawal() (gas: 1138927) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_allFees\_afterLoss\_partialWithdrawal() (gas: 1133879) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_allFees\_whenStagnant\_fullWithdrawal() (gas: 1067315) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_allFees\_whenStagnant\_partialWithdrawal() (gas: 1067164) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_noFees\_afterGain\_fullWithdrawal() (gas: 1017564) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_noFees\_afterGain\_partialWithdrawal() (gas: 1013049) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_noFees\_afterLoss\_fullWithdrawal() (gas: 1040252) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_noFees\_afterLoss\_partialWithdrawal() (gas: 1035748) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_noFees\_whenStagnant\_fullWithdrawal() (gas: 967130) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_noFees\_whenStagnant\_partialWithdrawal() (gas: 966563) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_psmFees\_afterGain\_fullWithdrawal() (gas: 1088456) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_psmFees\_afterGain\_partialWithdrawal() (gas: 1083479) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_psmFees\_afterLoss\_fullWithdrawal() (gas: 1116916) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_psmFees\_afterLoss\_partialWithdrawal() (gas: 1111843) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_psmFees\_whenStagnant\_fullWithdrawal() (gas: 1045171) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_psmFees\_whenStagnant\_partialWithdrawal() (gas: 1045084) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_strategyFees\_afterGain\_fullWithdrawal() (gas: 1067221) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_strategyFees\_afterGain\_partialWithdrawal() (gas: 1062752) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_strategyFees\_afterLoss\_fullWithdrawal() (gas: 1091858) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_strategyFees\_afterLoss\_partialWithdrawal() (gas: 1086360) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_strategyFees\_whenStagnant\_fullWithdrawal() (gas: 1020402) \[PASS] testFork\_withdrawFromStrategy\_inactiveStrategy\_strategyFees\_whenStagnant\_partialWithdrawal() (gas: 1019602) \[PASS] testFork\_withdrawFromStrategy\_lowAssets() (gas: 770460) \[PASS] testFork\_withdrawFromStrategy\_notPoolDelegate() (gas: 904168) \[PASS] testFork\_withdrawFromStrategy\_notStrategyManager() (gas: 909648) \[PASS] testFork\_withdrawFromStrategy\_protocolPaused() (gas: 56746) \[PASS] testFork\_withdrawFromStrategy\_zeroAssets() (gas: 59028) Suite result: ok. 77 passed; 0 failed; 0 skipped; finished in 501.97ms (400.89ms CPU time)

Ran 2 tests for tests/integration/smart-accounts/SmartAccount.t.sol:SmartAccountETHTests \[PASS] testFork\_deposit\_predeterminedAddressApproval() (gas: 1192065) \[PASS] testFork\_withdraw() (gas: 1412574) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 166.01ms (12.35ms CPU time)

Ran 17 tests for tests/integration/strategies/CoreStrategy.t.sol:CoreStrategyRemoveSharesByIdIntegrationTests \[PASS] test\_removeSharesById\_alreadyProcessedRequest() (gas: 309326) \[PASS] test\_removeSharesById\_cancelledRequest() (gas: 210092) \[PASS] test\_removeSharesById\_insufficientShares() (gas: 108042) \[PASS] test\_removeSharesById\_invalidOwner() (gas: 492439) \[PASS] test\_removeSharesById\_nonExistingRequest() (gas: 107888) \[PASS] test\_removeSharesById\_notAuthorized() (gas: 231250) \[PASS] test\_removeSharesById\_notPoolDelegate() (gas: 226396) \[PASS] test\_removeSharesById\_partiallyProcesedRequest\_decreaseRequest() (gas: 398331) \[PASS] test\_removeSharesById\_partiallyProcesedRequest\_removeRequest() (gas: 375764) \[PASS] test\_removeSharesById\_requestIdOverflow() (gas: 101395) \[PASS] test\_removeSharesById\_strategyPaused() (gas: 58738) \[PASS] test\_removeSharesById\_transferFailed() (gas: 220857) \[PASS] test\_removeSharesById\_unprocessedRequest\_decreaseRequest() (gas: 212525) \[PASS] test\_removeSharesById\_unprocessedRequest\_removeRequest() (gas: 190294) \[PASS] test\_removeSharesById\_withdrawalManagerPaused() (gas: 133245) \[PASS] test\_removeSharesById\_zeroRequestId() (gas: 105783) \[PASS] test\_removeSharesById\_zeroShares() (gas: 105800) Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 183.50ms (23.82ms CPU time)

Ran 9 tests for tests/integration/syrup-usdc-router/SyrupRouter.t.sol:SyrupRouterAuthorizeAndDepositTests \[PASS] test\_authorizeAndDepositWithPermit\_expiredDeadline() (gas: 21173) \[PASS] test\_authorizeAndDepositWithPermit\_malleable() (gas: 18164) \[PASS] test\_authorizeAndDepositWithPermit\_repeatedNonce() (gas: 346869) \[PASS] test\_authorizeAndDepositWithPermit\_success() (gas: 347715) \[PASS] test\_authorizeAndDeposit\_expiredDeadline() (gas: 20950) \[PASS] test\_authorizeAndDeposit\_malleable() (gas: 17983) \[PASS] test\_authorizeAndDeposit\_notPermissionAdmin() (gas: 91345) \[PASS] test\_authorizeAndDeposit\_repeatedNonce() (gas: 325586) \[PASS] test\_authorizeAndDeposit\_success() (gas: 328677) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 58.64ms (11.11ms CPU time)

Ran 10 tests for tests/integration/strategies/CoreStrategy.t.sol:CoreStrategyRemoveSharesIntegrationTests \[PASS] testFork\_coreStrategy\_removeShares\_completeRemovalWithMultipleRequests() (gas: 560959) \[PASS] testFork\_coreStrategy\_removeShares\_failIfNotStrategyManager() (gas: 288514) \[PASS] testFork\_coreStrategy\_removeShares\_failIfZeroShares() (gas: 58993) \[PASS] testFork\_coreStrategy\_removeShares\_failInsufficientShares() (gas: 529796) \[PASS] testFork\_coreStrategy\_removeShares\_failWhenPaused() (gas: 56685) \[PASS] testFork\_coreStrategy\_removeShares\_removeAllSharesSuccess() (gas: 183934) \[PASS] testFork\_coreStrategy\_removeShares\_removePartialSharesSuccess() (gas: 206375) \[PASS] testFork\_coreStrategy\_removeShares\_removePartialWithMultipleRequests() (gas: 550824) \[PASS] testFork\_coreStrategy\_removeShares\_successWhenDeactivated() (gas: 201090) \[PASS] testFork\_coreStrategy\_removeShares\_successWhenImpaired() (gas: 201113) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 175.15ms (13.66ms CPU time)

Ran 50 tests for tests/integration/syrup-usdc-router/SyrupRouter.t.sol:SyrupRouterDepositsIntegrationTests \[PASS] test\_depositWithPermit\_functionLevel\_allowListed() (gas: 460468) \[PASS] test\_depositWithPermit\_functionLevel\_expiredDeadline() (gas: 202683) \[PASS] test\_depositWithPermit\_functionLevel\_insufficientPermission() (gas: 254327) \[PASS] test\_depositWithPermit\_functionLevel\_invalidSignature() (gas: 227451) \[PASS] test\_depositWithPermit\_functionLevel\_sufficientPermission() (gas: 463482) \[PASS] test\_depositWithPermit\_functionLevel\_zeroBitmap() (gas: 234471) \[PASS] test\_depositWithPermit\_functionLevel\_zeroShares() (gas: 290955) \[PASS] test\_depositWithPermit\_poolLevel\_allowListed() (gas: 458377) \[PASS] test\_depositWithPermit\_poolLevel\_expiredDeadline() (gas: 200638) \[PASS] test\_depositWithPermit\_poolLevel\_insufficientPermission() (gas: 252268) \[PASS] test\_depositWithPermit\_poolLevel\_invalidSignature() (gas: 225428) \[PASS] test\_depositWithPermit\_poolLevel\_sufficientPermission() (gas: 459517) \[PASS] test\_depositWithPermit\_poolLevel\_zeroBitmap() (gas: 232412) \[PASS] test\_depositWithPermit\_poolLevel\_zeroShares() (gas: 288915) \[PASS] test\_depositWithPermit\_private\_allowListed() (gas: 377040) \[PASS] test\_depositWithPermit\_private\_expiredDeadline() (gas: 112628) \[PASS] test\_depositWithPermit\_private\_invalidSignature() (gas: 137441) \[PASS] test\_depositWithPermit\_private\_unauthorized() (gas: 100355) \[PASS] test\_depositWithPermit\_private\_zeroShares() (gas: 206926) \[PASS] test\_depositWithPermit\_public\_expiredDeadline() (gas: 171272) \[PASS] test\_depositWithPermit\_public\_invalidSignature() (gas: 196128) \[PASS] test\_depositWithPermit\_public\_success() (gas: 367990) \[PASS] test\_depositWithPermit\_public\_zeroShares() (gas: 261030) \[PASS] test\_deposit\_functionLevel\_allowlisted() (gas: 440259) \[PASS] test\_deposit\_functionLevel\_approval() (gas: 425748) \[PASS] test\_deposit\_functionLevel\_infiniteApproval() (gas: 443380) \[PASS] test\_deposit\_functionLevel\_insufficientAmount() (gas: 286076) \[PASS] test\_deposit\_functionLevel\_insufficientApproval() (gas: 283645) \[PASS] test\_deposit\_functionLevel\_insufficientPermission() (gas: 180691) \[PASS] test\_deposit\_functionLevel\_zeroBitmap() (gas: 160833) \[PASS] test\_deposit\_functionLevel\_zeroShares() (gas: 269958) \[PASS] test\_deposit\_poolLevel\_allowlisted() (gas: 438276) \[PASS] test\_deposit\_poolLevel\_approval() (gas: 421738) \[PASS] test\_deposit\_poolLevel\_infiniteApproval() (gas: 439351) \[PASS] test\_deposit\_poolLevel\_insufficientAmount() (gas: 283972) \[PASS] test\_deposit\_poolLevel\_insufficientApproval() (gas: 281562) \[PASS] test\_deposit\_poolLevel\_insufficientPermission() (gas: 178605) \[PASS] test\_deposit\_poolLevel\_zeroBitmap() (gas: 158708) \[PASS] test\_deposit\_poolLevel\_zeroShares() (gas: 267916) \[PASS] test\_deposit\_private\_approval() (gas: 339306) \[PASS] test\_deposit\_private\_infiniteApproval() (gas: 356965) \[PASS] test\_deposit\_private\_insufficientAmount() (gas: 195548) \[PASS] test\_deposit\_private\_insufficientApproval() (gas: 193138) \[PASS] test\_deposit\_private\_unauthorized() (gas: 26707) \[PASS] test\_deposit\_private\_zeroShares() (gas: 185973) \[PASS] test\_deposit\_public\_approval() (gas: 330234) \[PASS] test\_deposit\_public\_infiniteApproval() (gas: 347848) \[PASS] test\_deposit\_public\_insufficientAmount() (gas: 189369) \[PASS] test\_deposit\_public\_insufficientApproval() (gas: 186893) \[PASS] test\_deposit\_public\_zeroShares() (gas: 177535) Suite result: ok. 50 passed; 0 failed; 0 skipped; finished in 110.07ms (37.93ms CPU time)

Ran 2 tests for tests/integration/syrup-usdc-router/SyrupRouterFork.t.sol:SyrupRouterForkTests \[PASS] testFork\_router\_deposit() (gas: 251237) \[PASS] testFork\_router\_depositWithPermit() (gas: 294468) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 82.19ms (6.23ms CPU time)

Ran 11 tests for tests/integration/strategies/CoreStrategy.t.sol:CoreStrategyRequestWithdrawFromStrategyTests \[PASS] testFork\_coreStrategy\_requestWithdrawFromStrategy\_failIfLowAssets() (gas: 348633) \[PASS] testFork\_coreStrategy\_requestWithdrawFromStrategy\_failIfNotPoolDelegate() (gas: 599522) \[PASS] testFork\_coreStrategy\_requestWithdrawFromStrategy\_failIfNotStrategyManager() (gas: 600362) \[PASS] testFork\_coreStrategy\_requestWithdrawFromStrategy\_failIfZeroAmount() (gas: 319595) \[PASS] testFork\_coreStrategy\_requestWithdrawFromStrategy\_failWhenPaused() (gas: 331843) \[PASS] testFork\_coreStrategy\_requestWithdrawFromStrategy\_failWithFullLoss() (gas: 561353) \[PASS] testFork\_coreStrategy\_requestWithdrawFromStrategy\_failWithNoAssets() (gas: 629646) \[PASS] testFork\_coreStrategy\_requestWithdrawFromStrategy\_success() (gas: 781558) \[PASS] testFork\_coreStrategy\_requestWithdrawFromStrategy\_successAfterPartialLoss() (gas: 820201) \[PASS] testFork\_coreStrategy\_requestWithdrawFromStrategy\_successWithMultipleWithdrawals() (gas: 997270) \[PASS] testFork\_coreStrategy\_requestWithdrawFromStrategy\_successWithPartialWithdrawal() (gas: 807880) Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 177.04ms (39.86ms CPU time)

Ran 10 tests for tests/integration/pool/Transfer.t.sol:TransferTests \[PASS] test\_transferFrom\_privatePoolInvalidLender() (gas: 394733) \[PASS] test\_transferFrom\_privatePoolInvalidLender\_openPoolToPublic() (gas: 388312) \[PASS] test\_transferFrom\_protocolPaused() (gas: 341059) \[PASS] test\_transferFrom\_publicPool() (gas: 322491) \[PASS] test\_transferFrom\_publicPool\_insufficientApproval() (gas: 331502) \[PASS] test\_transferFrom\_publicPool\_noApproval() (gas: 307603) \[PASS] test\_transfer\_privatePoolInvalidLender() (gas: 382636) \[PASS] test\_transfer\_privatePoolInvalidLender\_openPoolToPublic() (gas: 376256) \[PASS] test\_transfer\_protocolPaused() (gas: 314573) \[PASS] test\_transfer\_publicPool() (gas: 313745) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 58.95ms (9.29ms CPU time)

Ran 9 tests for tests/integration/globals/TransferPoolOwnership.t.sol:TransferPoolOwnershipTests \[PASS] test\_acceptPoolDelegate() (gas: 102768) \[PASS] test\_acceptPoolDelegate\_notPendingPoolDelegate() (gas: 107662) \[PASS] test\_setPendingPoolDelegate\_asGovernor() (gas: 70543) \[PASS] test\_setPendingPoolDelegate\_asOperationalAdmin() (gas: 75016) \[PASS] test\_setPendingPoolDelegate\_asPoolDelegate() (gas: 65912) \[PASS] test\_setPendingPoolDelegate\_notPD() (gas: 104200) \[PASS] test\_transferOwnedPoolManager\_alreadyPoolDelegate() (gas: 138355) \[PASS] test\_transferOwnedPoolManager\_notPoolManager() (gas: 107966) \[PASS] test\_transferOwnedPoolManager\_notValidPoolDelegate() (gas: 115268) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 77.46ms (5.07ms CPU time)

Ran 1 test for tests/integration/loan/fixed-term/DeployLoan.t.sol:DeployFixedTermLoanTests \[PASS] test\_deployFixedTermLoan\_feeManagerCheck() (gas: 848518) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 34.16ms (981.29µs CPU time)

Ran 9 tests for tests/integration/loan/DeployLoanByBorrower.t.sol:DeployLoanByBorrowerTests \[PASS] test\_deployLoan\_FTL\_invalidBorrower() (gas: 641441) \[PASS] test\_deployLoan\_FTL\_invalidInstance() (gas: 641189) \[PASS] test\_deployLoan\_FTL\_setCanDeployFromByOA() (gas: 65080) \[PASS] test\_deployLoan\_FTL\_success() (gas: 625435) \[PASS] test\_deployLoan\_FTL\_validBorrowerSetByOA() (gas: 645493) \[PASS] test\_deployLoan\_FTL\_validInstanceSetByOA() (gas: 643478) \[PASS] test\_deployLoan\_OTL\_invalidBorrower() (gas: 492160) \[PASS] test\_deployLoan\_OTL\_invalidInstance() (gas: 491985) \[PASS] test\_deployLoan\_OTL\_success() (gas: 478061) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 38.24ms (5.43ms CPU time)

Ran 10 tests for tests/integration/loan/fixed-term/TriggerDefault.t.sol:OpenTermLoanTriggerDefaultFailureTests \[PASS] test\_triggerDefault\_invalidLoanManager() (gas: 2846670) \[PASS] test\_triggerDefault\_notAuthorized() (gas: 54880) \[PASS] test\_triggerDefault\_notFactory() (gas: 50944) \[PASS] test\_triggerDefault\_notInDefault\_boundary() (gas: 561567) \[PASS] test\_triggerDefault\_notLoan() (gas: 87796) \[PASS] test\_triggerDefault\_notPM() (gas: 396719) \[PASS] test\_triggerDefault\_protocolPaused\_loanManager() (gas: 51897) \[PASS] test\_triggerDefault\_protocolPaused\_poolManager() (gas: 51491) \[PASS] test\_triggerDefault\_repossess\_notLender() (gas: 38749) \[PASS] test\_triggerDefault\_treasuryZeroAddress() (gas: 489125) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 69.47ms (6.70ms CPU time)

Ran 20 tests for tests/integration/pool/DeployPool.t.sol:DeployPoolTests \[PASS] test\_deployPool\_failIfCalledPMFactoryDirectly() (gas: 31223) \[PASS] test\_deployPool\_failIfCalledWMFactoryDirectly() (gas: 33435) \[PASS] test\_deployPool\_failWithAssetNotAllowed() (gas: 300814) \[PASS] test\_deployPool\_failWithInsufficientPDApproval() (gas: 3889348) \[PASS] test\_deployPool\_failWithInvalidAsset() (gas: 391928) \[PASS] test\_deployPool\_failWithInvalidLMFactory() (gas: 3254123) \[PASS] test\_deployPool\_failWithInvalidManagementFee() (gas: 3888449) \[PASS] test\_deployPool\_failWithInvalidPD() (gas: 51286) \[PASS] test\_deployPool\_failWithInvalidPMFactory() (gas: 66611) \[PASS] test\_deployPool\_failWithInvalidStart() (gas: 3133594) \[PASS] test\_deployPool\_failWithInvalidWMCyclicalFactory() (gas: 70353) \[PASS] test\_deployPool\_failWithNonZeroSupplyAndZeroMigrationAdmin() (gas: 382893) \[PASS] test\_deployPool\_failWithOwnedPoolManager() (gas: 4226494) \[PASS] test\_deployPool\_failWithWindowDurationGtCycleDuration() (gas: 3133416) \[PASS] test\_deployPool\_failWithZeroAsset() (gas: 263415) \[PASS] test\_deployPool\_failWithZeroWindowDuration() (gas: 3133393) \[PASS] test\_deployPool\_success() (gas: 4164801) \[PASS] test\_deployPool\_successWithInitialSupply() (gas: 4118264) \[PASS] test\_deployPool\_successWithZeroMigrationAdmin() (gas: 4077408) \[PASS] test\_deployPool\_success\_validPDSetByOA() (gas: 4100933) Suite result: ok. 20 passed; 0 failed; 0 skipped; finished in 66.60ms (22.14ms CPU time)

Ran 9 tests for tests/integration/loan/fixed-term/TriggerDefault.t.sol:OpenTermLoanTriggerDefaultTests \[PASS] test\_triggerDefault\_called() (gas: 511810) \[PASS] test\_triggerDefault\_feesAndFullRecovery() (gas: 284942) \[PASS] test\_triggerDefault\_feesAndPartialRecovery() (gas: 276132) \[PASS] test\_triggerDefault\_impaired() (gas: 530095) \[PASS] test\_triggerDefault\_impaired\_feesAndFullRecovery() (gas: 314498) \[PASS] test\_triggerDefault\_impaired\_onlyFeesRecovered() (gas: 303193) \[PASS] test\_triggerDefault\_latePayment() (gas: 438353) \[PASS] test\_triggerDefault\_onlyFeesRecovered() (gas: 263007) \[PASS] test\_triggerDefault\_setByOperationalAdmin() (gas: 272145) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 91.71ms (22.04ms CPU time)

Ran 12 tests for tests/integration/pool/DeployPool.t.sol:DeployPoolWMQueueFailureTests \[PASS] test\_deployPoolWMQueue\_failIfAlreadyOwned() (gas: 4315654) \[PASS] test\_deployPoolWMQueue\_failIfInsufficientAmount() (gas: 4026425) \[PASS] test\_deployPoolWMQueue\_failIfInsufficientApproval() (gas: 4026434) \[PASS] test\_deployPoolWMQueue\_failIfInvalidManagementFeeRate() (gas: 3953577) \[PASS] test\_deployPoolWMQueue\_failIfInvalidPD() (gas: 48646) \[PASS] test\_deployPoolWMQueue\_failIfInvalidPMFactory() (gas: 4105922) \[PASS] test\_deployPoolWMQueue\_failIfInvalidPPM() (gas: 4113707) \[PASS] test\_deployPoolWMQueue\_failIfInvalidPoolAsset() (gas: 649187) \[PASS] test\_deployPoolWMQueue\_failIfInvalidWMFactory() (gas: 4109764) \[PASS] test\_deployPoolWMQueue\_failIfInvalidWMQFactory() (gas: 65095) \[PASS] test\_deployPoolWMQueue\_failIfPoolAssetNotAllowed() (gas: 298164) \[PASS] test\_deployPoolWMQueue\_failIfSaltCollision() (gas: 17595493375392519607) Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 59.28ms (21.94ms CPU time)

Ran 3 tests for tests/integration/loan/fixed-term/TriggerDefault.t.sol:TriggerDefaultFailureTests \[PASS] test\_triggerDefault\_notAuthorized() (gas: 54788) \[PASS] test\_triggerDefault\_notFactory() (gas: 50887) \[PASS] test\_triggerDefault\_notPoolManager() (gas: 53810) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 65.64ms (651.98µs CPU time)

Ran 2 tests for tests/integration/pool/DeployPool.t.sol:DeployPoolWMQueueTests \[PASS] test\_deployPoolWMQueue\_success() (gas: 4174383) \[PASS] test\_deployPoolWMQueue\_withoutCoverAmount() (gas: 4076957) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 78.12ms (8.25ms CPU time)

Ran 3 tests for tests/integration/loan-manager/fixed-term/UnrealizedLosses.t.sol:UnrealizedLossesTests \[PASS] test\_unrealizedLosses\_depositWithUnrealizedLosses() (gas: 439023) \[PASS] test\_unrealizedLosses\_redeemWithUnrealizedLosses\_fullLiquidity() (gas: 540058) \[PASS] test\_unrealizedLosses\_redeemWithUnrealizedLosses\_partialLiquidity() (gas: 1762099) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 45.52ms (7.10ms CPU time)

Ran 5 tests for tests/integration/governor-timelock/UnscheduleProposals.t.sol:UnscheduleProposalsTests \[PASS] test\_setUp() (gas: 55515) \[PASS] test\_unscheduleProposals\_revert\_notCanceller() (gas: 11331) \[PASS] test\_unscheduleProposals\_revert\_notUnschedulable() (gas: 87421) \[PASS] test\_unscheduleProposals\_revert\_proposalNotFound() (gas: 16176) \[PASS] test\_unscheduleProposals\_success() (gas: 125804) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 38.07ms (1.16ms CPU time)

Ran 4 tests for tests/integration/governor-timelock/UpdateRole.t.sol:UpdateRoleTests \[PASS] test\_setUp() (gas: 55630) \[PASS] test\_updateRole\_revert\_notSelf() (gas: 10720) \[PASS] test\_updateRole\_success\_grantRole() (gas: 93221) \[PASS] test\_updateRole\_success\_revokeRole() (gas: 79559) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 66.02ms (1.16ms CPU time)

Ran 5 tests for tests/integration/pool/DepositAndMint.t.sol:DepositFailureTests \[PASS] test\_deposit\_insufficientApproval() (gas: 322888) \[PASS] test\_deposit\_liquidityCapExceeded() (gas: 407385) \[PASS] test\_deposit\_privatePoolInvalidRecipient() (gas: 374377) \[PASS] test\_deposit\_privatePoolInvalidRecipient\_openPoolToPublic() (gas: 352803) \[PASS] test\_deposit\_protocolPaused() (gas: 96578) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 35.44ms (3.34ms CPU time)

Ran 2 tests for tests/integration/globals/Upgrade.t.sol:GlobalsUpgradeTests \[PASS] test\_upgradeGlobals() (gas: 25623) \[PASS] test\_upgradeGlobals\_notAdmin() (gas: 29194) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 44.94ms (1.11ms CPU time)

Ran 6 tests for tests/integration/globals/Upgrade.t.sol:LiquidationUpgradeTests \[PASS] test\_upgradeLiquidator\_delayNotPassed() (gas: 155656) \[PASS] test\_upgradeLiquidator\_durationPassed() (gas: 155965) \[PASS] test\_upgradeLiquidator\_governor\_noTimelockNeeded() (gas: 196878) \[PASS] test\_upgradeLiquidator\_noTimelock() (gas: 164162) \[PASS] test\_upgradeLiquidator\_timelockExtended() (gas: 273212) \[PASS] test\_upgradeLiquidator\_timelockShortened() (gas: 273644) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 46.48ms (4.06ms CPU time)

Ran 6 tests for tests/integration/globals/Upgrade.t.sol:LoanManagerUpgradeTests \[PASS] test\_upgradeLoanManager\_delayNotPassed() (gas: 152201) \[PASS] test\_upgradeLoanManager\_durationPassed() (gas: 152530) \[PASS] test\_upgradeLoanManager\_noTimelock() (gas: 160731) \[PASS] test\_upgradeLoanManager\_securityAdmin\_noTimelockNeeded() (gas: 182236) \[PASS] test\_upgradeLoanManager\_timelockExtended() (gas: 263091) \[PASS] test\_upgradeLoanManager\_timelockShortened() (gas: 263500) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 72.10ms (5.36ms CPU time)

Ran 6 tests for tests/integration/globals/Upgrade.t.sol:PoolManagerUpgradeTests \[PASS] test\_upgradePoolManager\_delayNotPassed() (gas: 131600) \[PASS] test\_upgradePoolManager\_durationPassed() (gas: 131898) \[PASS] test\_upgradePoolManager\_noTimelock() (gas: 138514) \[PASS] test\_upgradePoolManager\_securityAdmin\_noTimelockNeeded() (gas: 160012) \[PASS] test\_upgradePoolManager\_timelockExtended() (gas: 219099) \[PASS] test\_upgradePoolManager\_timelockShortened() (gas: 219464) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 58.03ms (3.30ms CPU time)

Ran 1 test for tests/integration/globals/Upgrade.t.sol:UnscheduleCallTests \[PASS] test\_unscheduleCall\_governor() (gas: 82178) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 37.03ms (309.68µs CPU time)

Ran 6 tests for tests/integration/globals/Upgrade.t.sol:WithdrawalManagerUpgradeTests \[PASS] test\_upgradeWithdrawalManager\_delayNotPassed() (gas: 135456) \[PASS] test\_upgradeWithdrawalManager\_durationPassed() (gas: 135736) \[PASS] test\_upgradeWithdrawalManager\_noTimelock() (gas: 143360) \[PASS] test\_upgradeWithdrawalManager\_securityAdmin\_noTimelockNeeded() (gas: 164864) \[PASS] test\_upgradeWithdrawalManager\_timelockExtended() (gas: 231429) \[PASS] test\_upgradeWithdrawalManager\_timelockShortened() (gas: 231882) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 63.64ms (7.36ms CPU time)

Ran 1 test for tests/integration/globals/ValidCollateral.t.sol:ValidCollateralTests \[PASS] test\_setIsCollateral\_invalidCollateral() (gas: 785878) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 40.17ms (1.09ms CPU time)

Ran 17 tests for tests/integration/withdrawal-manager/queue/ViewFunctions.t.sol:WithdrawalManagerQueueViewFunctionsAdditionalTests \[PASS] test\_asset\_constantAddress() (gas: 458950) \[PASS] test\_factory() (gas: 15041) \[PASS] test\_globals\_updatesAfterFactorySetGlobals() (gas: 2800885) \[PASS] test\_governor\_updatesWhenGlobalsChanges() (gas: 2806103) \[PASS] test\_implementation\_updatesAfterUpgrade() (gas: 3261162) \[PASS] test\_isInExitWindow() (gas: 12926) \[PASS] test\_lockedLiquidity\_constantZero() (gas: 455196) \[PASS] test\_lockedShares\_updatesAfterProcessing() (gas: 435214) \[PASS] test\_poolDelegate\_updatesAfterTransfer() (gas: 113044) \[PASS] test\_poolManager\_address\_constant() (gas: 14947) \[PASS] test\_pool\_address\_constant() (gas: 15016) \[PASS] test\_previewRedeem\_reflectsUpdatedManualShares() (gas: 452514) \[PASS] test\_previewWithdraw\_alwaysZero() (gas: 319013) \[PASS] test\_queue\_updatesAfterRequestAndProcess() (gas: 457603) \[PASS] test\_requestIds\_updatesAfterRequestRedeem() (gas: 319120) \[PASS] test\_requests\_updatesAfterAddAndRemove() (gas: 326132) \[PASS] test\_securityAdmin\_updatesAfterChange() (gas: 52802) Suite result: ok. 17 passed; 0 failed; 0 skipped; finished in 51.96ms (13.86ms CPU time)

Ran 3 tests for tests/integration/withdrawal-manager/cyclical/Withdraw\.t.sol:RequestWithdrawFailureTests \[PASS] test\_requestWithdraw\_failIfInsufficientApproval() (gas: 269088) \[PASS] test\_requestWithdraw\_failIfNotPM() (gas: 17863) \[PASS] test\_requestWithdraw\_failIfNotPool() (gas: 43540) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 53.23ms (4.92ms CPU time)

Ran 4 tests for tests/integration/pool/DepositAndMint.t.sol:DepositTest \[PASS] testDeepFuzz\_deposit\_singleUser(uint256) (runs: 100, μ: 284945, \~: 284945) \[PASS] testDeepFuzz\_deposit\_variableExchangeRate(uint256,uint256) (runs: 100, μ: 1471328, \~: 1474082) \[PASS] test\_deposit\_singleUser\_oneToOne() (gas: 281372) \[PASS] test\_deposit\_twoUsers\_oneToOne() (gas: 383362) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 589.13ms (534.18ms CPU time)

Ran 5 tests for tests/integration/pool/DepositAndMint.t.sol:DepositWithPermitFailureTests \[PASS] test\_depositWithPermit\_invalidSignature() (gas: 478175) \[PASS] test\_depositWithPermit\_liquidityCapExceeded() (gas: 445369) \[PASS] test\_depositWithPermit\_privatePoolInvalidRecipient() (gas: 407626) \[PASS] test\_depositWithPermit\_privatePoolInvalidRecipient\_openPoolToPublic() (gas: 386011) \[PASS] test\_depositWithPermit\_protocolPaused() (gas: 149545) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 78.22ms (12.29ms CPU time)

Ran 4 tests for tests/integration/withdrawal-manager/cyclical/Withdraw\.t.sol:RequestWithdrawTests \[PASS] testDeepFuzz\_requestWithdraw(uint256,uint256) (runs: 100, μ: 348847, \~: 349267) \[PASS] test\_requestWithdraw() (gas: 323055) \[PASS] test\_requestWithdraw\_premature() (gas: 325643) \[PASS] test\_requestWithdraw\_withApproval() (gas: 334852) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 233.05ms (160.65ms CPU time)

Ran 5 tests for tests/integration/withdrawal-manager/cyclical/Withdraw\.t.sol:WithdrawFailureTests \[PASS] testDeepFuzz\_withdraw(uint256,address,address) (runs: 100, μ: 69763, \~: 69763) \[PASS] test\_withdraw\_failIfNotPool() (gas: 43731) \[PASS] test\_withdraw\_failIfNotPoolManager() (gas: 18071) \[PASS] test\_withdraw\_premature() (gas: 74169) \[PASS] test\_withdraw\_zeroAssetInput() (gas: 71610) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 118.31ms (50.67ms CPU time)

Ran 1 test for tests/integration/withdrawal-manager/cyclical/Withdraw\.t.sol:WithdrawOnPermissionedPool \[PASS] test\_withdraw\_withUnwhitelistedUser() (gas: 457088) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 62.73ms (1.24ms CPU time)

Ran 2 tests for tests/integration/pool/DepositAndMint.t.sol:DepositWithPermitTests \[PASS] testDeepFuzz\_depositWithPermit\_singleUser(uint256) (runs: 100, μ: 317487, \~: 317485) \[PASS] test\_depositWithPermit\_singleUser() (gas: 313729) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 247.58ms (179.99ms CPU time)

Ran 5 tests for tests/integration/pool/DepositAndMint.t.sol:MintFailureTests \[PASS] test\_mint\_insufficientApproval() (gas: 325202) \[PASS] test\_mint\_liquidityCapExceeded() (gas: 435979) \[PASS] test\_mint\_privatePoolInvalidRecipient() (gas: 380774) \[PASS] test\_mint\_privatePoolInvalidRecipient\_openPoolToPublic() (gas: 359264) \[PASS] test\_mint\_protocolPaused() (gas: 150303) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 41.38ms (3.70ms CPU time)

Ran 3 tests for tests/integration/withdrawal-manager/cyclical/Withdraw\.t.sol:WithdrawScenarios \[PASS] test\_withdrawals\_cashInjection() (gas: 4472091) \[PASS] test\_withdrawals\_poorExchangeRates() (gas: 4195309) \[PASS] test\_withdrawals\_withUpdateAccounting() (gas: 4164279) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 108.97ms (45.32ms CPU time)

Ran 3 tests for tests/integration/governor-timelock/WithdrawERC20Token.t.sol:WithdrawERC20TokenTests \[PASS] test\_setUp() (gas: 55560) \[PASS] test\_withdrawERC20Token\_revert\_notTokenWithdrawer() (gas: 12794) \[PASS] test\_withdrawERC20Token\_success() (gas: 97288) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 37.00ms (1.24ms CPU time)

Ran 4 tests for tests/integration/pool/DepositAndMint.t.sol:MintTest \[PASS] testDeepFuzz\_mint\_singleUser(uint256) (runs: 100, μ: 287092, \~: 287092) \[PASS] testDeepFuzz\_mint\_variableExchangeRate(uint256,uint256) (runs: 100, μ: 1497606, \~: 1497366) \[PASS] test\_mint\_singleUser\_oneToOne() (gas: 283397) \[PASS] test\_mint\_twoUsers\_oneToOne() (gas: 402194) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 555.34ms (489.55ms CPU time)

Ran 5 tests for tests/integration/pool/DepositAndMint.t.sol:MintWithPermitFailureTests \[PASS] test\_mintWithPermit\_insufficientPermit() (gas: 479273) \[PASS] test\_mintWithPermit\_liquidityCapExceeded() (gas: 474033) \[PASS] test\_mintWithPermit\_privatePoolInvalidRecipient() (gas: 414036) \[PASS] test\_mintWithPermit\_privatePoolInvalidRecipient\_openPoolToPublic() (gas: 392448) \[PASS] test\_mintWithPermit\_protocolPaused() (gas: 152799) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 72.59ms (8.22ms CPU time)

Ran 3 tests for tests/integration/loan/fixed-term/Liquidation.t.sol:FinishLiquidationFailureTests \[PASS] test\_finishLiquidation\_failIfLiquidationNotActive() (gas: 98052) \[PASS] test\_finishLiquidation\_failIfNotPD() (gas: 52502) \[PASS] test\_finishLiquidation\_failIfNotPoolManager() (gas: 52309) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 42.89ms (2.77ms CPU time)

Ran 14 tests for tests/integration/loan/fixed-term/Liquidation.t.sol:LoanLiquidationTests \[PASS] test\_finishCollateralLiquidation\_asOperationalAdmin() (gas: 2135508) \[PASS] test\_loanDefault\_fullCover\_noCollateral\_noImpairment() (gas: 1399241) \[PASS] test\_loanDefault\_fullCover\_noCollateral\_withImpairment() (gas: 1478715) \[PASS] test\_loanDefault\_fullCover\_withCollateral\_noImpairment() (gas: 2244965) \[PASS] test\_loanDefault\_fullCover\_withCollateral\_withImpairment() (gas: 2270077) \[PASS] test\_loanDefault\_noCover\_noCollateral\_noImpairment() (gas: 1302284) \[PASS] test\_loanDefault\_noCover\_noCollateral\_withImpairment() (gas: 1383822) \[PASS] test\_loanDefault\_noCover\_withCollateral\_noImpairment() (gas: 2158238) \[PASS] test\_loanDefault\_noCover\_withCollateral\_withImpairment() (gas: 2184674) \[PASS] test\_loanDefault\_partialCover\_noCollateral\_noImpairment() (gas: 1399174) \[PASS] test\_loanDefault\_partialCover\_noCollateral\_withImpairment() (gas: 1478680) \[PASS] test\_loanDefault\_partialCover\_withCollateral\_noImpairment() (gas: 2244824) \[PASS] test\_loanDefault\_partialCover\_withCollateral\_withImpairment() (gas: 2270097) \[PASS] test\_setMaxCoverLiquidationPercent\_asOperationalAdmin() (gas: 36283) Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 105.72ms (54.54ms CPU time)

Ran 2 tests for tests/integration/pool/DepositAndMint.t.sol:MintWithPermitTests \[PASS] testDeepFuzz\_mintWithPermit\_singleUser(uint256) (runs: 100, μ: 316863, \~: 316871) \[PASS] test\_mintWithPermit\_singleUser() (gas: 315991) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 144.67ms (107.06ms CPU time)

Ran 5 tests for tests/integration/loan-manager/fixed-term/LoanManagerGetters.t.sol:LoanManagerGetterTests \[PASS] test\_loanManagerGetters\_addresses() (gas: 20638) \[PASS] test\_loanManagerGetters\_liquidationInformation() (gas: 961343) \[PASS] test\_loanManagerGetters\_paymentInformation() (gas: 26663) \[PASS] test\_loanManagerGetters\_sortedPayments() (gas: 1251080) \[PASS] test\_loanManagerGetters\_uints() (gas: 30251) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 80.56ms (10.54ms CPU time)

Ran 12 tests for tests/integration/governor-timelock/ExecuteProposal.t.sol:ExecuteProposalsTests \[PASS] test\_executeProposals\_executionFailed\_notPendingAdmin() (gas: 128228) \[PASS] test\_executeProposals\_revert\_emptyArray() (gas: 14687) \[PASS] test\_executeProposals\_revert\_executionFailed() (gas: 111833) \[PASS] test\_executeProposals\_revert\_invalidData() (gas: 155496) \[PASS] test\_executeProposals\_revert\_invalidDataLength() (gas: 15673) \[PASS] test\_executeProposals\_revert\_invalidTargetsLength() (gas: 15099) \[PASS] test\_executeProposals\_revert\_notExecutable() (gas: 232176) \[PASS] test\_executeProposals\_revert\_notExecutable\_failedToExecuteTheSameProposalTwice() (gas: 118828) \[PASS] test\_executeProposals\_revert\_notExecutor() (gas: 12197) \[PASS] test\_executeProposals\_success() (gas: 205050) \[PASS] test\_executeProposals\_success\_emptyData() (gas: 150877) \[PASS] test\_setUp() (gas: 55652) Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 43.88ms (5.93ms CPU time)

Ran 3 tests for tests/integration/loan/MakePayment.t.sol:MakePaymentFailureTests \[PASS] test\_makePayment\_failIfNotLoan() (gas: 65297) \[PASS] test\_makePayment\_failWithTransferFailed() (gas: 209606) \[PASS] test\_makePayment\_failWithTransferFromFailed() (gas: 131616) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 39.35ms (1.03ms CPU time)

Ran 9 tests for tests/integration/loan/MakePayment.t.sol:MakePaymentOpenTermFailureTests \[PASS] test\_makePayment\_inactiveLoan() (gas: 444074) \[PASS] test\_makePayment\_invalidPrincipalIncrease() (gas: 52101) \[PASS] test\_makePayment\_notLoan() (gas: 485533) \[PASS] test\_makePayment\_tooLittlePrincipal() (gas: 126383) \[PASS] test\_makePayment\_tooMuchPrincipal() (gas: 41257) \[PASS] test\_makePayment\_transferFailed() (gas: 74027) \[PASS] test\_makePayment\_transferToPoolBoundary() (gas: 239002) \[PASS] test\_makePayment\_transferToPoolDelegateBoundary() (gas: 283464) \[PASS] test\_makePayment\_transferToTreasuryBoundary() (gas: 354885) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 46.38ms (4.23ms CPU time)

Ran 1 test for tests/integration/loan/MakePayment.t.sol:MakePaymentTestsDomainStartGtDomainEnd \[PASS] test\_makePayment\_domainStart\_gt\_domainEnd() (gas: 3268288) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 47.03ms (10.85ms CPU time)

Ran 1 test for tests/integration/loan/MakePayment.t.sol:MakePaymentTestsPastDomainEnd \[PASS] test\_makePayment\_lateLoan3\_loan1NotPaid\_loan2NotPaid() (gas: 850919) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 55.60ms (2.92ms CPU time)

Ran 3 tests for tests/integration/loan-manager/fixed-term/FetchValuesFromLM.t.sol:LoanManagerIsLiquidationActiveGetterTests \[PASS] test\_isLiquidationActive\_afterLiquidation() (gas: 886984) \[PASS] test\_isLiquidationActive\_beforeLiquidation() (gas: 15248) \[PASS] test\_isLiquidationActive\_duringLiquidation() (gas: 576664) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 45.46ms (2.50ms CPU time)

Ran 3 tests for tests/integration/loan/MakePayment.t.sol:MakePaymentTestsSingleLoanAmortized \[PASS] test\_makePayment\_earlyPayment\_amortized() (gas: 669928) \[PASS] test\_makePayment\_latePayment\_amortized() (gas: 676287) \[PASS] test\_makePayment\_onTimePayment\_amortized() (gas: 669971) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 52.30ms (6.35ms CPU time)

Ran 3 tests for tests/integration/loan/MakePayment.t.sol:MakePaymentTestsSingleLoanInterestOnly \[PASS] test\_makePayment\_earlyPayment\_interestOnly() (gas: 648406) \[PASS] test\_makePayment\_latePayment\_interestOnly() (gas: 651972) \[PASS] test\_makePayment\_onTimePayment\_interestOnly() (gas: 645782) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 49.13ms (5.62ms CPU time)

Ran 4 tests for tests/integration/pool/FetchValuesFromPM.t.sol:PoolManagerGetterTests \[PASS] testDeepFuzz\_getEscrowParams\_shouldReturnValues(uint256) (runs: 100, μ: 19471, \~: 19173) \[PASS] test\_addressGetters() (gas: 35571) \[PASS] test\_hasSufficientCover\_insufficientCover(uint256) (runs: 100, μ: 131861, \~: 132415) \[PASS] test\_hasSufficientCover\_sufficientCover(uint256) (runs: 100, μ: 140902, \~: 141040) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 127.87ms (89.64ms CPU time)

Ran 4 tests for tests/integration/loan-manager/fixed-term/FinishCollateralLiquidation.t.sol:FinishCollateralLiquidationFailureTests \[PASS] test\_finishCollateralLiquidation\_notAuthorized() (gas: 52525) \[PASS] test\_finishCollateralLiquidation\_notFinished() (gas: 598581) \[PASS] test\_finishCollateralLiquidation\_notPoolManager() (gas: 52243) \[PASS] test\_finishCollateralLiquidation\_whenImpaired() (gas: 261449) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 38.97ms (1.93ms CPU time)

Ran 4 tests for tests/integration/loan/MakePayment.t.sol:MakePaymentTestsSingleLoanOpenTerm \[PASS] test\_makePayment\_OT\_latePayment() (gas: 594694) \[PASS] test\_makePayment\_OT\_onTimePayment() (gas: 590271) \[PASS] test\_makePayment\_OT\_withCall() (gas: 573155) \[PASS] test\_makePayment\_OT\_withImpairment() (gas: 629232) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 72.06ms (13.38ms CPU time)

Ran 10 tests for tests/integration/loan-manager/Fund.t.sol:FixedTermLoanManagerFundTests \[PASS] test\_fund\_failIfAmountGreaterThanLockedLiquidity() (gas: 1634973) \[PASS] test\_fund\_failIfInsufficientCover() (gas: 244126) \[PASS] test\_fund\_failIfLoanActive() (gas: 909352) \[PASS] test\_fund\_failIfNotPoolDelegate() (gas: 54070) \[PASS] test\_fund\_failIfPoolDoesNotApprovePM() (gas: 255969) \[PASS] test\_fund\_failIfProtocolIsPaused() (gas: 56674) \[PASS] test\_fund\_failIfTermsNotAccepted() (gas: 289351) \[PASS] test\_fund\_failIfTotalSupplyIsZero() (gas: 430423) \[PASS] test\_fund\_oneLoan() (gas: 799924) \[PASS] test\_fund\_twoLoans() (gas: 1299910) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 52.63ms (13.64ms CPU time)

Ran 18 tests for tests/integration/loan-manager/Fund.t.sol:OpenTermLoanManagerFundTests \[PASS] test\_fund\_failIfTermsNotAccepted() (gas: 457512) \[PASS] test\_fund\_insufficientCover() (gas: 378141) \[PASS] test\_fund\_invalidBorrower() (gas: 95441) \[PASS] test\_fund\_invalidLoanFactory() (gas: 82976) \[PASS] test\_fund\_invalidLoanInstance() (gas: 172811) \[PASS] test\_fund\_invalidLoanManagerFactory() (gas: 127592) \[PASS] test\_fund\_loanActive() (gas: 694836) \[PASS] test\_fund\_loanManagerApproveFailure() (gas: 439413) \[PASS] test\_fund\_loanNotActive() (gas: 642208) \[PASS] test\_fund\_loanTransferFailure() (gas: 505932) \[PASS] test\_fund\_lockedLiquidity() (gas: 544244) \[PASS] test\_fund\_notLender() (gas: 36746) \[PASS] test\_fund\_notLoanManager() (gas: 352035) \[PASS] test\_fund\_notPoolDelegate() (gas: 54115) \[PASS] test\_fund\_poolManagerTransferFailure() (gas: 387100) \[PASS] test\_fund\_protocolPause() (gas: 49418) \[PASS] test\_fund\_success() (gas: 616096) \[PASS] test\_fund\_zeroSupply() (gas: 565146) Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 56.64ms (15.91ms CPU time)

Ran 3 tests for tests/integration/loan/MakePayment.t.sol:MakePaymentTestsTwoLoans \[PASS] test\_makePayment\_earlyPayment\_interestOnly\_onTimePayment\_interestOnly() (gas: 1287277) \[PASS] test\_makePayment\_latePayment\_interestOnly\_onTimePayment\_interestOnly() (gas: 1292917) \[PASS] test\_makePayment\_onTimePayment\_interestOnly\_onTimePayment\_interestOnly() (gas: 1285143) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 105.16ms (28.37ms CPU time)

Ran 4 tests for tests/integration/loan/MapleBorrowerActions.t.sol:MapleBorrowerActionsTests \[PASS] test\_acceptLoanTerms\_FTL() (gas: 78162) \[PASS] test\_acceptLoanTerms\_FTL\_failIfNotBorrower() (gas: 26113) \[PASS] test\_acceptLoanTerms\_OTL() (gas: 78265) \[PASS] test\_acceptLoanTerms\_OTL\_failIfNotBorrower() (gas: 26171) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 39.18ms (683.35µs CPU time)

Ran 28 tests for tests/integration/governor-timelock/MapleGlobalsFunctions.t.sol:MapleGlobalsFunctionsTests \[PASS] test\_activatePoolManager() (gas: 4169639) \[PASS] test\_setBootstrapMint() (gas: 102420) \[PASS] test\_setCanDeployFrom() (gas: 168484) \[PASS] test\_setContractPause() (gas: 161648) \[PASS] test\_setDefaultTimelockParameters() (gas: 88103) \[PASS] test\_setFunctionUnpause() (gas: 163792) \[PASS] test\_setManualOverridePrice() (gas: 102496) \[PASS] test\_setMapleTreasury() (gas: 90253) \[PASS] test\_setMaxCoverLiquidationPercent() (gas: 102407) \[PASS] test\_setMigrationAdmin() (gas: 90248) \[PASS] test\_setMinCoverAmount() (gas: 102351) \[PASS] test\_setOperationalAdmin() (gas: 90217) \[PASS] test\_setPendingGovernor() (gas: 110450) \[PASS] test\_setPlatformManagementFeeRate() (gas: 104001) \[PASS] test\_setPlatformOriginationFeeRate() (gas: 104027) \[PASS] test\_setPlatformServiceFeeRate() (gas: 104034) \[PASS] test\_setPriceOracle() (gas: 105423) \[PASS] test\_setProtocolPause() (gas: 144687) \[PASS] test\_setSecurityAdmin() (gas: 90221) \[PASS] test\_setTimelockWindow() (gas: 104725) \[PASS] test\_setTimelockWindows() (gas: 134404) \[PASS] test\_setUp() (gas: 55692) \[PASS] test\_setValidBorrower() (gas: 161060) \[PASS] test\_setValidCollateralAsset() (gas: 160951) \[PASS] test\_setValidInstanceOf() (gas: 162677) \[PASS] test\_setValidPoolAsset() (gas: 160934) \[PASS] test\_setValidPoolDelegate() (gas: 161298) \[PASS] test\_unscheduleCall() (gas: 131572) Suite result: ok. 28 passed; 0 failed; 0 skipped; finished in 60.57ms (19.85ms CPU time)

Ran 6 tests for tests/integration/governor-timelock/MapleProxyFactoryFunctions.t.sol:MapleProxyFactoryFunctionsTests \[PASS] test\_disableUpgradePath() (gas: 1776464) \[PASS] test\_enabledUpgradePath() (gas: 1064050) \[PASS] test\_registerImplementation() (gas: 1301690) \[PASS] test\_setDefaultVersion() (gas: 2030071) \[PASS] test\_setGlobals() (gas: 941324) \[PASS] test\_setUp() (gas: 55563) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 60.06ms (23.16ms CPU time)

Ran 8 tests for tests/integration/loan-manager/fixed-term/GetExpectedAmount.t.sol:GetExpectedAmountTests \[PASS] testFork\_getExpectedAmount\_currentPrice() (gas: 109172) \[PASS] testFork\_getExpectedAmount\_manualOverride() (gas: 85091) \[PASS] testFork\_getExpectedAmount\_oracleNotSet() (gas: 54247) \[PASS] testFork\_getExpectedAmount\_withMinRatio() (gas: 155454) \[PASS] testFork\_getExpectedAmount\_withSlippage() (gas: 155427) \[PASS] testFork\_getExpectedAmount\_withSlippageAndMinRatio\_minRatioHigher() (gas: 186306) \[PASS] testFork\_getExpectedAmount\_withSlippageAndMinRatio\_slippageHigher() (gas: 186319) \[PASS] testFork\_getExpectedAmount\_zeroAmount() (gas: 109096) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 181.53ms (13.85ms CPU time)

Ran 6 tests for tests/integration/globals/OperationalAdmin.t.sol:OperationalAdminTests \[PASS] test\_operationalAdminAcl\_setMinCoverAmount() (gas: 47511) \[PASS] test\_operationalAdminAcl\_setPermissionAdmin() (gas: 64676) \[PASS] test\_operationalAdminAcl\_setPlatformManagementFeeRate() (gas: 49906) \[PASS] test\_operationalAdminAcl\_setPlatformOriginationFeeRate() (gas: 49947) \[PASS] test\_operationalAdminAcl\_setPlatformServiceFeeRate() (gas: 49970) \[PASS] test\_operationalAdminAcl\_setValidInstanceOf() (gas: 48755) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 43.38ms (917.73µs CPU time)

Ran 4 tests for tests/integration/globals/GetLatestPrice.t.sol:GetLatestPriceTests \[PASS] test\_getLatestPrice\_currentPrice() (gas: 74222) \[PASS] test\_getLatestPrice\_manualOverride() (gas: 46136) \[PASS] test\_getLatestPrice\_stalePrice() (gas: 100591) \[PASS] test\_getLatestPrice\_unknownAsset() (gas: 20443) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 166.40ms (1.16ms CPU time)

Ran 1 test for tests/integration/governor-timelock/GovernorTimelockTestBase.t.sol:GovernorTimelockTestBase \[PASS] test\_setUp() (gas: 55582) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 36.52ms (255.86µs CPU time)

Ran 2 tests for tests/integration/loan-manager/ImpairLoan.t.sol:FixedTermLoanManagerImpairAndRefinanceTests \[PASS] test\_impairLoan\_earlyThenRefinance() (gas: 1018409) \[PASS] test\_impairLoan\_lateThenRefinance() (gas: 813860) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 54.99ms (12.37ms CPU time)

Ran 4 tests for tests/integration/loan-manager/ImpairLoan.t.sol:FixedTermLoanManagerImpairFailureTests \[PASS] test\_impairLoan\_alreadyImpaired() (gas: 229807) \[PASS] test\_impairLoan\_notAuthorized() (gas: 53922) \[PASS] test\_impairLoan\_notLender() (gas: 36377) \[PASS] test\_impairLoan\_protocolPaused() (gas: 49295) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 43.35ms (1.02ms CPU time)

Ran 2 tests for tests/integration/loan-manager/ImpairLoan.t.sol:FixedTermLoanManagerImpairSuccessTests \[PASS] test\_impairLoan\_thenCancel() (gas: 746474) \[PASS] test\_impairLoan\_thenRepay() (gas: 783151) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 56.59ms (5.40ms CPU time)

Ran 9 tests for tests/integration/loan-manager/ImpairLoan.t.sol:OpenTermLoanManagerImpairTests \[PASS] test\_impairLoan\_early() (gas: 201755) \[PASS] test\_impairLoan\_governorAcl() (gas: 117487) \[PASS] test\_impairLoan\_late() (gas: 202410) \[PASS] test\_impairLoan\_loanInactive() (gas: 198946) \[PASS] test\_impairLoan\_notAuthorized() (gas: 56233) \[PASS] test\_impairLoan\_notLender() (gas: 36565) \[PASS] test\_impairLoan\_notLoanContract() (gas: 39028) \[PASS] test\_impairLoan\_notLoanInLoanManager() (gas: 447652) \[PASS] test\_impairLoan\_protocolPaused() (gas: 49340) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 44.12ms (3.94ms CPU time)

Ran 9 tests for tests/integration/loan-manager/ImpairLoan.t.sol:OpenTermLoanManagerRemoveImpairmentTests \[PASS] test\_removeLoanImpairment\_early() (gas: 207789) \[PASS] test\_removeLoanImpairment\_late() (gas: 208238) \[PASS] test\_removeLoanImpairment\_late\_withLateImpairment() (gas: 208284) \[PASS] test\_removeLoanImpairment\_notAuthorized() (gas: 68886) \[PASS] test\_removeLoanImpairment\_notImpaired() (gas: 88505) \[PASS] test\_removeLoanImpairment\_notLender() (gas: 36696) \[PASS] test\_removeLoanImpairment\_notLoan() (gas: 39045) \[PASS] test\_removeLoanImpairment\_poolDelegateAfterGovernor() (gas: 137159) \[PASS] test\_removeLoanImpairment\_protocolPaused() (gas: 49340) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 69.80ms (4.28ms CPU time)

Ran 7 tests for tests/integration/globals/Pause.t.sol:PauseTests \[PASS] test\_contractPause() (gas: 10531971) \[PASS] test\_functionUnpauseAfterContractPause() (gas: 44355542) \[PASS] test\_functionUnpauseAfterProtocolPause() (gas: 63244352) \[PASS] test\_globalPause() (gas: 14055042) \[PASS] test\_poolManager\_canCall\_contractPause() (gas: 78225) \[PASS] test\_poolManager\_canCall\_functionUnpauseAfterProtocolPause() (gas: 84123) \[PASS] test\_poolManager\_canCall\_protocolPause() (gas: 76584) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 583.19ms (531.46ms CPU time)

Ran 2 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:BalanceOfAssetsTests \[PASS] testDeepFuzz\_balanceOfAssets(uint256,uint256,uint256) (runs: 100, μ: 395188, \~: 395025) \[PASS] test\_balanceOfAssets() (gas: 388214) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 183.58ms (145.43ms CPU time)

Ran 4 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:ConvertToAssetsTests \[PASS] test\_convertToAssets\_multipleUsers() (gas: 448716) \[PASS] test\_convertToAssets\_multipleUsers\_changeTotalAssets() (gas: 471404) \[PASS] test\_convertToAssets\_singleUser() (gas: 272996) \[PASS] test\_convertToAssets\_zeroTotalSupply() (gas: 10148) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 49.62ms (3.14ms CPU time)

Ran 4 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:ConvertToSharesTests \[PASS] test\_convertToShares\_multipleUsers() (gas: 448786) \[PASS] test\_convertToShares\_multipleUsers\_changeTotalAssets() (gas: 471417) \[PASS] test\_convertToShares\_singleUser() (gas: 273037) \[PASS] test\_convertToShares\_zeroTotalSupply() (gas: 10253) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 51.37ms (3.20ms CPU time)

Ran 3 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:MaxDepositTests \[PASS] testDeepFuzz\_maxDeposit\_totalAssetsIncrease(uint256,uint256) (runs: 100, μ: 240704, \~: 240698) \[PASS] test\_maxDeposit\_closedPool() (gas: 250013) \[PASS] test\_maxDeposit\_totalAssetsIncrease() (gas: 235529) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 103.96ms (58.51ms CPU time)

Ran 2 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:AutomatedPreviewRedeemWithQueueWMTests \[PASS] testFuzz\_previewRedeem\_notProcessed(uint256) (runs: 100, μ: 33939, \~: 33939) \[PASS] testFuzz\_previewRedeem\_processed(uint256) (runs: 100, μ: 274467, \~: 274467) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 143.19ms (106.51ms CPU time)

Ran 6 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:MaxRedeemWMQueueTests \[PASS] test\_maxRedeem\_afterFullManualRedeem() (gas: 316767) \[PASS] test\_maxRedeem\_afterFullRedeem() (gas: 224297) \[PASS] test\_maxRedeem\_afterPartialManualRedeem() (gas: 356591) \[PASS] test\_maxRedeem\_afterPartialRedeem() (gas: 228683) \[PASS] test\_maxRedeem\_beforeRedeem() (gas: 34469) \[PASS] test\_maxRedeem\_notManual() (gas: 351421) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 43.04ms (4.60ms CPU time)

Ran 4 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:MaxWithdrawTests \[PASS] testDeepFuzz\_maxWithdraw\_lockedShares\_inExitWindow(uint256) (runs: 100, μ: 413338, \~: 413592) \[PASS] test\_maxWithdraw\_lockedShares\_inExitWindow() (gas: 409620) \[PASS] test\_maxWithdraw\_lockedShares\_notInExitWindow() (gas: 407604) \[PASS] test\_maxWithdraw\_noLockedShares\_notInExitWindow() (gas: 265417) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 120.84ms (84.59ms CPU time)

Ran 3 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:MaxRedeemTests \[PASS] test\_maxRedeem\_lockedShares\_inExitWindow() (gas: 418030) \[PASS] test\_maxRedeem\_lockedShares\_notInExitWindow() (gas: 411157) \[PASS] test\_maxRedeem\_noLockedShares\_notInExitWindow() (gas: 270560) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 37.33ms (2.28ms CPU time)

Ran 5 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:MaxMintTests \[PASS] testDeepFuzz\_maxMint\_exchangeRateGtOne(uint256,uint256,uint256) (runs: 100, μ: 390283, \~: 390153) \[PASS] testDeepFuzz\_maxMint\_totalAssetsIncrease(uint256,uint256) (runs: 100, μ: 246940, \~: 246945) \[PASS] test\_maxMint\_closedPool() (gas: 258343) \[PASS] test\_maxMint\_exchangeRateGtOne() (gas: 383310) \[PASS] test\_maxMint\_totalAssetsIncrease() (gas: 241820) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 244.42ms (200.51ms CPU time)

Ran 1 test for scenarios/v2/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 8228672) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 57.27ms (7.62ms CPU time)

Ran 1 test for scenarios/v2/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 8319540) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 46.82ms (8.18ms CPU time)

Ran 1 test for scenarios/v2/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 8320410) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 46.30ms (8.02ms CPU time)

Ran 1 test for scenarios/v2/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 8703114) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 48.38ms (9.61ms CPU time)

Ran 1 test for scenarios/v2/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 8030139) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 45.34ms (7.09ms CPU time)

Ran 1 test for scenarios/v2/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 8260940) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 45.64ms (7.07ms CPU time)

Ran 1 test for scenarios/v2/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 8621930) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 46.97ms (8.63ms CPU time)

Ran 1 test for scenarios/v2/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 9005267) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 48.84ms (10.46ms CPU time)

Ran 1 test for scenarios/v2/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 9489212) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 49.29ms (10.94ms CPU time)

Ran 1 test for scenarios/v3/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 22742826) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 139.08ms (75.01ms CPU time)

Ran 1 test for scenarios/v3/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 10850618) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 89.00ms (42.35ms CPU time)

Ran 1 test for scenarios/v3/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 19954478) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 115.02ms (68.83ms CPU time)

Ran 1 test for scenarios/v3/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 15043640) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 95.48ms (49.17ms CPU time)

Ran 1 test for scenarios/v3/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 17996265) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 105.49ms (58.85ms CPU time)

Ran 1 test for scenarios/v3/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 9384088) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 73.38ms (27.29ms CPU time)

Ran 1 test for scenarios/v3/Scenarios.t.sol:Scenario \[PASS] test\_sim() (gas: 6876986) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 64.43ms (18.18ms CPU time)

Ran 1 test for tests/protocol-upgrade/core-strategy/MapleCoreStrategyUpgradeBase.t.sol:MapleCoreStrategyUpgradeBaseTest \[PASS] test\_setUp() (gas: 178687) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 261.72ms (881.88µs CPU time)

Ran 1 test for tests/protocol-upgrade/governor-timelock/GovernorTimelockUpgradeTestsBase.t.sol:GovernorTimelockUpgradeTestsBase \[PASS] testFork\_setUp\_governorTimelockUpgradeTests() (gas: 48663) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 284.49ms (8.25ms CPU time)

Ran 7 tests for tests/protocol-upgrade/governor-timelock/GovernorTimelockScenariosUpgrade.t.sol:GovernorTimelockScenariosUpgradeTests \[PASS] testFork\_reclaimERC20\_withoutChangingGovernorOnOldGlobals() (gas: 50685) \[PASS] testFork\_setUp\_governorTimelockUpgradeTests() (gas: 48901) \[PASS] testFork\_unscheduleProposals\_cancellerCanNotUnscheduleRoleUpdate() (gas: 83364) \[PASS] testFork\_unscheduleProposals\_cancellerUnschedulesMaliciousProposal() (gas: 88918) \[PASS] testFork\_updateRoles\_backupRoleAdmin\_removesPrimaryRoleAdmin() (gas: 155599) \[PASS] testFork\_upgradeWithdrawalManager() (gas: 303929) \[PASS] testFork\_withdrawERC20Token\_afterChangingTokenWithdrawer\_withNewGovernorOnOldGlobals() (gas: 279129) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 294.28ms (17.91ms CPU time)

Ran 5 tests for tests/protocol-upgrade/withdrawal-manager/Spark.t.sol:SparkFork\_MainnetController\_SyrupUSDC \[PASS] testFork\_deposit\_USDC() (gas: 359393) \[PASS] testFork\_deposit\_requestAndCancelRedemption\_USDC() (gas: 626516) \[PASS] testFork\_deposit\_requestAndProcessRedemption\_full\_USDC() (gas: 843613) \[PASS] testFork\_deposit\_requestAndProcessRedemption\_partial\_USDC() (gas: 843612) \[PASS] testFork\_deposit\_requestRedemption\_USDC() (gas: 658083) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 299.12ms (50.61ms CPU time)

Ran 6 tests for tests/protocol-upgrade/governor-timelock/ProxyFactoryFunctionsUpgrade.t.sol:MapleProxyFactoryFunctionsUpgradeTests \[PASS] testFork\_disableUpgradePath() (gas: 1630557) \[PASS] testFork\_enabledUpgradePath() (gas: 977128) \[PASS] testFork\_registerImplementation() (gas: 1195063) \[PASS] testFork\_setDefaultVersion() (gas: 1854744) \[PASS] testFork\_setGlobals() (gas: 867977) \[PASS] testFork\_setUp\_governorTimelockUpgradeTests() (gas: 48733) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 314.36ms (38.23ms CPU time)

Ran 4 tests for tests/protocol-upgrade/withdrawal-manager/RemoveShares.t.sol:RemoveSharesTests \[PASS] testFork\_removeShares\_completeRemoval\_multipleRequests() (gas: 752188) \[PASS] testFork\_removeShares\_partialRemoval\_multipleRequests() (gas: 748903) \[PASS] testFork\_removeShares\_partialRemoval\_oneRequest() (gas: 158577) \[PASS] testFork\_removeShares\_revert\_zeroShares() (gas: 86643) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 347.91ms (9.23ms CPU time)

Ran 6 tests for tests/protocol-upgrade/withdrawal-manager/RemoveSharesById.t.sol:RemoveSharesByIdTests \[PASS] testFork\_removeSharesById\_revert\_insufficientShares() (gas: 48566) \[PASS] testFork\_removeSharesById\_revert\_invalidRequest\_requestAlreadyRemoved() (gas: 48113) \[PASS] testFork\_removeSharesById\_revert\_noChange() (gas: 48441) \[PASS] testFork\_removeSharesById\_revert\_notOwner() (gas: 48070) \[PASS] testFork\_removeSharesById\_success\_completeRemoval() (gas: 133973) \[PASS] testFork\_removeSharesById\_success\_partialRemoval() (gas: 210357) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 352.06ms (9.59ms CPU time)

Ran 4 tests for tests/protocol-upgrade/withdrawal-manager/ProcessRedemptions.t.sol:ProcessRedemptionsTests \[PASS] testFork\_processRedemptions\_revert\_lowLiquidity() (gas: 251833) \[PASS] testFork\_processRedemptions\_revert\_zeroShares() (gas: 59081) \[PASS] testFork\_processRedemptions\_success\_multipleRequests() (gas: 677472) \[PASS] testFork\_processRedemptions\_success\_processAllRequests() (gas: 658828) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 352.71ms (10.37ms CPU time)

Ran 2 tests for tests/protocol-upgrade/withdrawal-manager/RequestRedeem.t.sol:RequestRedeemTests \[PASS] testFork\_requestRedeem\_revert\_zeroShares() (gas: 92652) \[PASS] testFork\_requestRedeem\_success() (gas: 572314) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 353.15ms (4.58ms CPU time)

Ran 2 tests for tests/protocol-upgrade/withdrawal-manager/ManualRedemption.t.sol:ManualRedemptionTests \[PASS] testFork\_manualRedemption\_revert\_notPoolManager() (gas: 13918) \[PASS] testFork\_manualRedemption\_success() (gas: 592532) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 353.41ms (4.97ms CPU time)

Ran 5 tests for tests/protocol-upgrade/withdrawal-manager/RemoveRequest.t.sol:RemoveRequestTests \[PASS] testFork\_removeRequest\_revert\_notInQueue() (gas: 65003) \[PASS] testFork\_removeRequest\_revert\_notOwner() (gas: 65057) \[PASS] testFork\_removeRequest\_revert\_zeroOwner() (gas: 54646) \[PASS] testFork\_removeRequest\_revert\_zeroRequests() (gas: 56462) \[PASS] testFork\_removeRequest\_success\_oneRequest() (gas: 144778) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 353.05ms (8.50ms CPU time)

Ran 2 tests for tests/protocol-upgrade/governor-timelock/GovernorTimelockUpgradeProcedure.t.sol:GovernorTimelockUpgradeProcedureTests \[PASS] testFork\_governorTimelock\_fullUpgradeProcedure() (gas: 2285248) \[PASS] testFork\_setUp\_governorTimelockUpgradeTests() (gas: 48685) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 426.37ms (150.20ms CPU time)

Ran 8 tests for tests/protocol-upgrade/core-strategy/RemoveShares.t.sol:RemoveSharesTests \[PASS] test\_removeShares\_revert\_notStrategyManager() (gas: 56481) \[PASS] test\_removeShares\_revert\_protocolIsPaused() (gas: 62228) \[PASS] test\_removeShares\_revert\_wmInsufficientShares\_notEnoughSharesRequested() (gas: 128733) \[PASS] test\_removeShares\_revert\_zeroShares() (gas: 55010) \[PASS] test\_removeShares\_success\_multipleRequests\_allRequestsCompletelyRemoved() (gas: 1274937) \[PASS] test\_removeShares\_success\_multipleRequests\_firstRequestPartiallyRemoved\_SecondRequestCompletelyRemoved() (gas: 1364343) \[PASS] test\_removeShares\_success\_partialRemoval\_onlyOneRequest() (gas: 1132573) \[PASS] test\_setUp() (gas: 178788) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 160.59ms (27.63ms CPU time)

Ran 9 tests for tests/protocol-upgrade/core-strategy/RemoveSharesById.t.sol:RemoveSharesByIdTests \[PASS] test\_removeSharesById\_revert\_invalidRequest() (gas: 99729) \[PASS] test\_removeSharesById\_revert\_noChange() (gas: 625184) \[PASS] test\_removeSharesById\_revert\_notOwner() (gas: 643919) \[PASS] test\_removeSharesById\_revert\_notStrategyManager() (gas: 56460) \[PASS] test\_removeSharesById\_revert\_protocolIsPaused() (gas: 62226) \[PASS] test\_removeSharesById\_revert\_wmInsufficientShares() (gas: 646549) \[PASS] test\_removeSharesById\_success\_multipleRequests\_completelyRemoveMidRequest() (gas: 1647632) \[PASS] test\_removeSharesById\_success\_singleRequest\_partialRemoval\_followedByCompleteRemoval() (gas: 1097906) \[PASS] test\_setUp() (gas: 178788) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 161.23ms (33.50ms CPU time)

Ran 5 tests for tests/protocol-upgrade/withdrawal-manager/ProcessEmptyRedemptions.t.sol:ProcessEmptyRedemptionsTests \[PASS] testFork\_processEmptyRedemptions\_revert\_notRedeemer() (gas: 53673) \[PASS] testFork\_processEmptyRedemptions\_success\_multipleRequests() (gas: 162828) \[PASS] testFork\_processEmptyRedemptions\_success\_multipleRequests\_stopsAtNonEmpty() (gas: 165208) \[PASS] testFork\_processEmptyRedemptions\_success\_removesEntireQueue() (gas: 222642) \[PASS] testFork\_processEmptyRedemptions\_zeroRequests\_reverts() (gas: 54083) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 213.74ms (8.47ms CPU time)

Ran 28 tests for tests/protocol-upgrade/governor-timelock/GlobalsFunctionsUpgrade.t.sol:MapleGlobalsFunctionsUpgradeTests \[PASS] testFork\_activatePoolManager() (gas: 408376) \[PASS] testFork\_setBootstrapMint() (gas: 100650) \[PASS] testFork\_setCanDeployFrom() (gas: 166533) \[PASS] testFork\_setContractPause() (gas: 159736) \[PASS] testFork\_setDefaultTimelockParameters() (gas: 86338) \[PASS] testFork\_setFunctionUnpause() (gas: 161794) \[PASS] testFork\_setManualOverridePrice() (gas: 100722) \[PASS] testFork\_setMapleTreasury() (gas: 86770) \[PASS] testFork\_setMaxCoverLiquidationPercent() (gas: 100632) \[PASS] testFork\_setMigrationAdmin() (gas: 100440) \[PASS] testFork\_setMinCoverAmount() (gas: 100594) \[PASS] testFork\_setOperationalAdmin() (gas: 86733) \[PASS] testFork\_setPendingGovernor() (gas: 108427) \[PASS] testFork\_setPlatformManagementFeeRate() (gas: 102169) \[PASS] testFork\_setPlatformOriginationFeeRate() (gas: 102185) \[PASS] testFork\_setPlatformServiceFeeRate() (gas: 102212) \[PASS] testFork\_setPriceOracle() (gas: 103653) \[PASS] testFork\_setProtocolPause() (gas: 142720) \[PASS] testFork\_setSecurityAdmin() (gas: 86704) \[PASS] testFork\_setTimelockWindow() (gas: 102932) \[PASS] testFork\_setTimelockWindows() (gas: 132344) \[PASS] testFork\_setUp\_governorTimelockUpgradeTests() (gas: 48962) \[PASS] testFork\_setValidBorrower() (gas: 159096) \[PASS] testFork\_setValidCollateralAsset() (gas: 159076) \[PASS] testFork\_setValidInstanceOf() (gas: 160768) \[PASS] testFork\_setValidPoolAsset() (gas: 159032) \[PASS] testFork\_setValidPoolDelegate() (gas: 159387) \[PASS] testFork\_unscheduleCall() (gas: 127788) Suite result: ok. 28 passed; 0 failed; 0 skipped; finished in 512.97ms (26.87ms CPU time)

Ran 1 test for tests/protocol-upgrade/withdrawal-manager/Migration.t.sol:MigrateTest \[PASS] testFork\_withdrawalManagers\_migrate\_success() (gas: 707408) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 252.31ms (4.27ms CPU time)

Ran 1 test for tests/protocol-upgrade/governor-timelock/plasma/GovernorTimelockUpgradeTestsBasePlasma.t.sol:GovernorTimelockUpgradeTestsBasePlasma \[PASS] testFork\_setUp\_governorTimelockUpgradeTestsPlasma() (gas: 57594) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 232.08ms (185.67µs CPU time)

Ran 1 test for tests/protocol-upgrade/withdrawal-manager/HealthCheckers.t.sol:WithdrawalManagersUpgradeHealthCheckersTests \[PASS] testFork\_withdrawalManagerUpgrade\_protocolHealthChecker(uint256) (runs: 10, μ: 1541540198, \~: 1543012921) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1124.41s (1123.99s CPU time)

Ran 1 test for tests/invariants/Regression.t.sol:WithdrawalManagerQueueInvariants \[PASS] test\_regression\_invariants() (gas: 50709292) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 232.04ms (190.18ms CPU time)

Ran 1 test for tests/invariants/PermissionInvariants.t.sol:PermissionInvariants \[PASS] statefulFuzz\_permissionManager\_A\_B\_C() (runs: 200, calls: 50000, reverts: 0) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 303.98s (303.93s CPU time)

Ran 3 tests for tests/invariants/OpenTermInvariants.t.sol:OpenTermInvariants \[PASS] statefulFuzz\_openTermLoanManager\_E() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_openTermLoanManager\_G() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_openTermLoan\_A\_B\_C\_D\_E\_F\_G\_H\_I\_openTermLoanManager\_A\_B\_C\_D\_F\_H\_I\_J\_K() (runs: 200, calls: 50000, reverts: 0) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 307.99s (307.94s CPU time)

Ran 1 test for tests/invariants/StrategyInvariants.t.sol:StrategyInvariants \[PASS] statefulFuzz\_strategy\_A\_B\_C\_D\_E\_F\_G() (runs: 200, calls: 50000, reverts: 0) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1082.01s (1080.54s CPU time)

Ran 30 tests for tests/invariants/BasicInvariants.t.sol:BasicInvariants \[PASS] statefulFuzz\_basicInvariants\_fixedTermLoanManager\_A() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_fixedTermLoanManager\_B() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_fixedTermLoanManager\_C() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_fixedTermLoanManager\_D() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_fixedTermLoanManager\_E() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_fixedTermLoanManager\_F() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_fixedTermLoanManager\_G() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_fixedTermLoanManager\_H() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_fixedTermLoanManager\_I() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_fixedTermLoanManager\_J() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_fixedTermLoanManager\_K() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_fixedTermLoan\_A\_B\_C\_fixedTermLoanManager\_L\_M\_N() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_poolManager\_A\_totalAssetsEqCashPlusAUM() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_poolManager\_B() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_pool\_A() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_pool\_B\_F\_G\_2() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_pool\_C() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_pool\_D() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_pool\_E() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_pool\_H() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_pool\_I() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_pool\_J() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_pool\_K() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_withdrawalManager\_A\_F\_G\_H\_I\_J\_K\_L() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_withdrawalManager\_B() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_withdrawalManager\_C() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_withdrawalManager\_D() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_withdrawalManager\_E() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_withdrawalManager\_M() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_basicInvariants\_withdrawalManager\_N() (runs: 200, calls: 50000, reverts: 0) Suite result: ok. 30 passed; 0 failed; 0 skipped; finished in 1747.44s (6036.80s CPU time)

Ran 27 tests for tests/invariants/ImpairInvariants.t.sol:ImpairInvariants \[PASS] statefulFuzz\_impairInvariants\_fixedTermLoanManager\_A() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_fixedTermLoanManager\_B() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_fixedTermLoanManager\_C() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_fixedTermLoanManager\_D() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_fixedTermLoanManager\_E() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_fixedTermLoanManager\_F() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_fixedTermLoanManager\_H() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_fixedTermLoanManager\_I() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_fixedTermLoanManager\_J() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_fixedTermLoanManager\_K() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_fixedTermLoan\_A\_B\_fixedTermLoanManager\_L\_M\_N() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_poolManager\_A() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_poolManager\_B() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_pool\_A() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_pool\_B\_F\_G() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_pool\_D() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_pool\_E() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_pool\_I() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_pool\_J() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_pool\_K() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_withdrawalManager\_A\_F\_G\_H\_I\_J\_K\_L() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_withdrawalManager\_B() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_withdrawalManager\_C() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_withdrawalManager\_D() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_withdrawalManager\_E() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_withdrawalManager\_M() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_impairInvariants\_withdrawalManager\_N() (runs: 200, calls: 50000, reverts: 0) Suite result: ok. 27 passed; 0 failed; 0 skipped; finished in 1747.44s (4931.19s CPU time)

Ran 25 tests for tests/invariants/WithdrawalManagerQueueInvariants.t.sol:WithdrawalManagerQueueInvariants \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_fixedTermLoanManager\_A() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_fixedTermLoanManager\_B() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_fixedTermLoanManager\_C() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_fixedTermLoanManager\_D() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_fixedTermLoanManager\_E() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_fixedTermLoanManager\_F() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_fixedTermLoanManager\_G() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_fixedTermLoanManager\_H() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_fixedTermLoanManager\_I() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_fixedTermLoanManager\_J() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_fixedTermLoanManager\_K() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_fixedTermLoan\_A\_B\_C\_fixedTermLoanManager\_L\_M\_N() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_poolManager\_A\_totalAssetsEqCashPlusAUM() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_poolManager\_B() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_pool\_A() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_pool\_B\_F\_G() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_pool\_C() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_pool\_D() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_pool\_E() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_pool\_H() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_pool\_I() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_pool\_J() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_pool\_K() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_wmq\_invariant\_A\_C\_G\_H() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_withdrawalManagerQueueInvariants\_wmq\_invariant\_B\_D\_E\_F() (runs: 200, calls: 50000, reverts: 0) Suite result: ok. 25 passed; 0 failed; 0 skipped; finished in 3849.24s (4581.26s CPU time)

Ran 27 tests for tests/invariants/DefaultsInvariants.t.sol:DefaultsInvariants \[PASS] statefulFuzz\_defaultsInvariants\_fixedTermLoanManager\_A() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_fixedTermLoanManager\_B() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_fixedTermLoanManager\_C() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_fixedTermLoanManager\_D() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_fixedTermLoanManager\_E() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_fixedTermLoanManager\_F() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_fixedTermLoanManager\_H() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_fixedTermLoanManager\_I() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_fixedTermLoanManager\_J() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_fixedTermLoanManager\_K() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_fixedTermLoan\_A\_B\_fixedTermLoanManager\_M\_N\_Default() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_poolManager\_A() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_poolManager\_B() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_pool\_A() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_pool\_B\_F\_G() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_pool\_D() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_pool\_E() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_pool\_I() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_pool\_J() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_pool\_K() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_withdrawalManager\_A\_F\_G\_H\_I\_J\_K\_L() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_withdrawalManager\_B() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_withdrawalManager\_C() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_withdrawalManager\_D() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_withdrawalManager\_E() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_withdrawalManager\_M() (runs: 200, calls: 50000, reverts: 0) \[PASS] statefulFuzz\_defaultsInvariants\_withdrawalManager\_N() (runs: 200, calls: 50000, reverts: 0) Suite result: ok. 27 passed; 0 failed; 0 skipped; finished in 3849.24s (6318.06s CPU time)

Ran 3 tests for tests/integration/pool/BootstrapMintAndDeposit.t.sol:BootstrapMintTests \[PASS] testFuzz\_mint\_gtBootstrapMintAmount(uint256) (runs: 10000, μ: 356386, \~: 356535) \[PASS] testFuzz\_mint\_ltBootstrapMintAmount(uint256) (runs: 10000, μ: 257981, \~: 258624) \[PASS] testFuzz\_mint\_secondDepositorGetsCorrectShares(uint256) (runs: 10000, μ: 516736, \~: 517209) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 34.31s (34.25s CPU time)

Ran 1 test for tests/integration/pool/ConfigurePool.t.sol:ConfigurePoolTests \[PASS] testFuzz\_configurePool(uint256,uint256,uint256\[]) (runs: 10000, μ: 2282645, \~: 1317634) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 41.93s (41.88s CPU time)

Ran 3 tests for tests/integration/pool/BootstrapMintAndDeposit.t.sol:BootstrapDepositTests \[PASS] testFuzz\_deposit\_gtBootstrapMintAmount(uint256) (runs: 10000, μ: 353090, \~: 353242) \[PASS] testFuzz\_deposit\_ltBootstrapMintAmount(uint256) (runs: 10000, μ: 256254, \~: 256861) \[PASS] testFuzz\_deposit\_secondDepositorGetsCorrectShares(uint256) (runs: 10000, μ: 489421, \~: 489880) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 47.26s (31.62s CPU time)

Ran 3 tests for tests/integration/pool/BootstrapMintAndDeposit.t.sol:BootstrapDepositWithPermitTests \[PASS] testFuzz\_depositWithPermit\_gtBootstrapMintAmount(uint256) (runs: 10000, μ: 391979, \~: 392115) \[PASS] testFuzz\_depositWithPermit\_ltBootstrapMintAmount(uint256) (runs: 10000, μ: 252710, \~: 253322) \[PASS] testFuzz\_depositWithPermit\_secondDepositorGetsCorrectShares(uint256) (runs: 10000, μ: 563261, \~: 563734) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 49.68s (49.62s CPU time)

Ran 2 tests for tests/integration/pool/PoolAccountingViewFunctions.t.sol:AutomatedPreviewRedeemWithQueueWMTests \[PASS] testFuzz\_previewRedeem\_notProcessed(uint256) (runs: 10000, μ: 36957, \~: 36957) \[PASS] testFuzz\_previewRedeem\_processed(uint256) (runs: 10000, μ: 316836, \~: 316836) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 12.87s (12.82s CPU time)

Ran 4 tests for tests/fuzz/PoolEntryPermissionsFuzz.t.sol:PoolEntryPermissionsFuzzTests \[PASS] testFuzz\_poolEntryTests\_deposit(uint256,uint256,uint256,uint256,bool) (runs: 10000, μ: 345947, \~: 325568) \[PASS] testFuzz\_poolEntryTests\_depositWithPermit(uint256,uint256,uint256,uint256,bool) (runs: 10000, μ: 443871, \~: 410417) \[PASS] testFuzz\_poolEntryTests\_mint(uint256,uint256,uint256,uint256,bool) (runs: 10000, μ: 349940, \~: 331284) \[PASS] testFuzz\_poolEntryTests\_mintWithPermit(uint256,uint256,uint256,uint256,bool) (runs: 10000, μ: 448864, \~: 416409) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 40.46s (40.41s CPU time)

Ran 1 test for tests/integration/pool/PoolAccountingViewFunctions.t.sol:PreviewWithdrawWithQueueWMTests \[PASS] testFuzz\_previewWithdraw(address,bool,uint256,uint256,uint256) (runs: 10000, μ: 696326, \~: 688009) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 20.04s (19.99s CPU time)

Ran 3 tests for tests/integration/permission-manager/SetPoolPermissionLevel.t.sol:SetPoolPermissionLevelTests \[PASS] testFuzz\_setPoolPermissionLevel(uint256,uint256) (runs: 10000, μ: 110099, \~: 111725) \[PASS] testFuzz\_setPoolPermissionLevel\_invalidLevel(uint256) (runs: 10000, μ: 47425, \~: 47401) \[PASS] testFuzz\_setPoolPermissionLevel\_publicPool(uint256) (runs: 10000, μ: 94761, \~: 94916) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 6.81s (6.76s CPU time)

Ran 5 tests for tests/fuzz/PoolExitPermissionsFuzz.t.sol:PoolExitPermissionsFuzzTests \[PASS] testFuzz\_poolExit\_redeem(uint256,uint256,uint256,uint256,bool) (runs: 10000, μ: 728681, \~: 578010) \[PASS] testFuzz\_poolExit\_removeShares(uint256,uint256,uint256,uint256,uint256,bool) (runs: 10000, μ: 663393, \~: 518966) \[PASS] testFuzz\_poolExit\_requestRedeem(uint256,uint256,uint256,uint256,bool) (runs: 10000, μ: 531396, \~: 378327) \[PASS] testFuzz\_poolExit\_requestWithdraw(uint256,uint256,uint256,uint256,bool) (runs: 10000, μ: 449084, \~: 378481) \[PASS] testFuzz\_poolExit\_withdraw(uint256,uint256,uint256,uint256,bool) (runs: 10000, μ: 439608, \~: 381174) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 57.19s (57.14s CPU time)

Ran 2 tests for tests/fuzz/PoolTransferPermissionsFuzz.t.sol:PoolTransferPermissionsFuzzTests \[PASS] testFuzz\_poolTransfer(uint256,uint256,uint256,uint256,uint256,bool,bool) (runs: 10000, μ: 459364, \~: 419610) \[PASS] testFuzz\_poolTransferFrom(uint256,uint256,uint256,uint256,uint256,bool,bool) (runs: 10000, μ: 466800, \~: 422450) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 20.19s (20.14s CPU time)

Ran 1 test for tests/fuzz/ProcessExit.t.sol:ProcessExitFuzzTests \[PASS] testFuzz\_processExit(address\[10],bool\[10],uint256\[10],uint256) (runs: 10000, μ: 4434007, \~: 4334137) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 145.37s (145.32s CPU time)

Ran 15 tests for tests/fuzz/PoolViewFunctionsFuzzTest.t.sol:PoolViewFunctionsFuzzTests \[PASS] testFuzz\_convertToAssets\_whenTotalSupplyExists(uint256,uint256,uint256,uint256) (runs: 10000, μ: 388772, \~: 389130) \[PASS] testFuzz\_convertToAssets\_whenTotalSupplyIsZero(uint256) (runs: 10000, μ: 14521, \~: 13922) \[PASS] testFuzz\_convertToExitShares(uint256,uint256,uint256,uint256,uint256) (runs: 10000, μ: 420797, \~: 420540) \[PASS] testFuzz\_convertToShares\_whenTotalSupplyExists(uint256,uint256,uint256,uint256) (runs: 10000, μ: 388765, \~: 389171) \[PASS] testFuzz\_convertToShares\_whenTotalSupplyIsZero(uint256) (runs: 10000, μ: 14465, \~: 13875) \[PASS] testFuzz\_getTotalAssetsFromPM(uint256,uint256) (runs: 10000, μ: 122056, \~: 122352) \[PASS] testFuzz\_getUnrealizedLossesFromPM(uint256) (runs: 10000, μ: 106919, \~: 106309) \[PASS] testFuzz\_maxDeposit(uint256,uint256) (runs: 10000, μ: 345753, \~: 345873) \[PASS] testFuzz\_maxMint(uint256,uint256) (runs: 10000, μ: 354373, \~: 354518) \[PASS] testFuzz\_maxRedeem(uint256) (runs: 10000, μ: 796028, \~: 795580) \[PASS] testFuzz\_maxWithdraw(uint256) (runs: 10000, μ: 573604, \~: 572997) \[PASS] testFuzz\_previewDeposit\_whenTotalSupplyExists(uint256,uint256) (runs: 10000, μ: 340074, \~: 340384) \[PASS] testFuzz\_previewDeposit\_whenTotalSupplyIsZero(uint256) (runs: 10000, μ: 14529, \~: 13936) \[PASS] testFuzz\_previewMint\_whenTotalSupplyExists(uint256,uint256,uint256,uint256) (runs: 10000, μ: 389727, \~: 390107) \[PASS] testFuzz\_previewMint\_whenTotalSupplyIsZero(uint256) (runs: 10000, μ: 14531, \~: 13940) Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 51.50s (113.48s CPU time)

Ran 2 tests for tests/fuzz/Impair.t.sol:OpenTermLoanFuzz \[PASS] testFuzz\_impair\_otl(uint256) (runs: 10000, μ: 11736576, \~: 11750198) \[PASS] testFuzz\_removeImpairment\_otl(uint256) (runs: 10000, μ: 11140868, \~: 11120730) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 388.39s (698.84s CPU time)

Ran 2 tests for tests/fuzz/Call.t.sol:OpenTermLoanFuzz \[PASS] testFuzz\_call\_otl(uint256) (runs: 10000, μ: 11643120, \~: 11655327) \[PASS] testFuzz\_removeCall\_otl(uint256) (runs: 10000, μ: 11140281, \~: 11123466) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 425.64s (725.96s CPU time)

Ran 2 tests for tests/fuzz/OpenTermFuzz.t.sol:OpenTermLoanFuzz \[PASS] testFuzz\_otlFuzzedSetup\_makePayment(uint256) (runs: 10000, μ: 10369417, \~: 10362728) \[PASS] testFuzz\_otlFuzzedSetup\_triggerDefault(uint256) (runs: 10000, μ: 10284094, \~: 10278618) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 449.40s (631.13s CPU time)

Ran 3 tests for tests/integration/pool/BootstrapMintAndDeposit.t.sol:BootstrapMintWithPermitTests \[PASS] testFuzz\_mintWithPermit\_gtBootstrapMintAmount(uint256) (runs: 10000, μ: 395662, \~: 395799) \[PASS] testFuzz\_mintWithPermit\_ltBootstrapMintAmount(uint256) (runs: 10000, μ: 254710, \~: 255320) \[PASS] testFuzz\_mintWithPermit\_secondDepositorGetsCorrectShares(uint256) (runs: 10000, μ: 591118, \~: 591604) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 598.61s (52.26s CPU time)

Ran 11 tests for tests/fuzz/HasPermission.t.sol:HasPermissionFuzzTests \[PASS] testFuzz\_hasPermission\_deposit(uint256,uint256,uint256,bool,uint256) (runs: 10000, μ: 393323, \~: 422047) \[PASS] testFuzz\_hasPermission\_depositWithPermit(uint256,uint256,uint256,bool,uint256) (runs: 10000, μ: 417749, \~: 464755) \[PASS] testFuzz\_hasPermission\_mint(uint256,uint256,uint256,bool,uint256) (runs: 10000, μ: 396224, \~: 423809) \[PASS] testFuzz\_hasPermission\_mintWithPermit(uint256,uint256,uint256,bool,uint256) (runs: 10000, μ: 419275, \~: 466752) \[PASS] testFuzz\_hasPermission\_redeem(uint256,uint256,uint256,bool,uint256,address) (runs: 10000, μ: 784395, \~: 801158) \[PASS] testFuzz\_hasPermission\_removeShares(uint256,uint256,uint256,bool,uint256,uint256) (runs: 10000, μ: 782964, \~: 797601) \[PASS] testFuzz\_hasPermission\_requestRedeem(uint256,uint256,uint256,bool,uint256) (runs: 10000, μ: 585829, \~: 636849) \[PASS] testFuzz\_hasPermission\_requestWithdraw(uint256,uint256,uint256,bool,uint256) (runs: 10000, μ: 344769, \~: 367293) \[PASS] testFuzz\_hasPermission\_transfer(uint256,uint256,address,uint256,bool,address,uint256,bool,uint256) (runs: 10000, μ: 557645, \~: 560828) \[PASS] testFuzz\_hasPermission\_transferFrom(uint256,uint256,address,uint256,bool,address,uint256,bool,address,uint256) (runs: 10000, μ: 577914, \~: 577530) \[PASS] testFuzz\_hasPermission\_withdraw(uint256,uint256,uint256,bool,uint256,address) (runs: 10000, μ: 303590, \~: 302612) Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 598.61s (182.57s CPU time)

Ran 1 test for tests/fuzz/ClosePoolFuzz.t.sol:ClosePoolFuzzWithWMQueue \[PASS] testFuzz\_fuzzedSetup\_closePool\_withQueueWM(uint256) (runs: 10000, μ: 23132541, \~: 22941700) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 867.05s (866.98s CPU time)

Ran 1 test for tests/fuzz/ClosePoolFuzz.t.sol:ClosePoolFuzz \[PASS] testFuzz\_fuzzedSetup\_closePool(uint256) (runs: 10000, μ: 21782887, \~: 21567148) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 875.86s (875.80s CPU time)

Ran 3 tests for tests/e2e/PoolScenarios.t.sol:PoolScenarioTests \[PASS] testFuzz\_poolScenarios\_OTLWithBigPaymentInterval(uint256) (runs: 10000, μ: 1055410, \~: 1055975) \[PASS] testFuzz\_poolScenarios\_exposeAccountedInterestDust(uint24,uint24) (runs: 10000, μ: 1789682, \~: 1793862) \[PASS] testFuzz\_poolScenarios\_multipleOTLWithBigPaymentInterval(uint256,uint256,uint256) (runs: 10000, μ: 38843496, \~: 38843638) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 991.59s (1005.52s CPU time)

Ran 16 tests for tests/e2e/DelayedWithdrawal.t.sol:DelayedWithdrawalStartTests \[PASS] testFuzz\_removeShares\_afterStart(uint256) (runs: 10000, μ: 6864483, \~: 6864535) \[PASS] testFuzz\_removeShares\_beforeStart(uint256) (runs: 10000, μ: 6921347, \~: 6921396) \[PASS] testFuzz\_removeShares\_nextCycle(uint256) (runs: 10000, μ: 6864504, \~: 6864559) \[PASS] testFuzz\_removeShares\_onStart(uint256) (runs: 10000, μ: 6892372, \~: 6892423) \[PASS] testFuzz\_requestRedeem\_afterStart(uint256) (runs: 10000, μ: 6869180, \~: 6869230) \[PASS] testFuzz\_requestRedeem\_beforeStart(uint256) (runs: 10000, μ: 6928972, \~: 6929022) \[PASS] testFuzz\_requestRedeem\_nextCycle(uint256) (runs: 10000, μ: 6869264, \~: 6869317) \[PASS] testFuzz\_requestRedeem\_onStart(uint256) (runs: 10000, μ: 6898553, \~: 6898606) \[PASS] testFuzz\_requestWithdraw\_afterStart(uint256) (runs: 10000, μ: 6747423, \~: 6747475) \[PASS] testFuzz\_requestWithdraw\_beforeStart(uint256) (runs: 10000, μ: 6747509, \~: 6747558) \[PASS] testFuzz\_requestWithdraw\_nextCycle(uint256) (runs: 10000, μ: 6747465, \~: 6747520) \[PASS] testFuzz\_requestWithdraw\_onStart(uint256) (runs: 10000, μ: 6747319, \~: 6747370) \[PASS] testFuzz\_setExitConfig\_afterStart(uint256) (runs: 10000, μ: 6741488, \~: 6741541) \[PASS] testFuzz\_setExitConfig\_beforeStart(uint256) (runs: 10000, μ: 6740882, \~: 6740934) \[PASS] testFuzz\_setExitConfig\_nextCycle(uint256) (runs: 10000, μ: 6741509, \~: 6741561) \[PASS] testFuzz\_setExitConfig\_onStart(uint256) (runs: 10000, μ: 6740763, \~: 6740813) Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 1132.57s (738.81s CPU time)

Ran 3 tests for tests/e2e/RefinanceScenario.t.sol:RefinanceScenariosTests \[PASS] test\_impairOTL\_refinanceToHigherPrincipal\_oneLoanImpaired\_underflow() (gas: 1094708) \[PASS] test\_impairOTL\_refinanceToHigherPrincipal\_twoLoansImpaired() (gas: 1238709) \[PASS] test\_impairOTL\_refinanceToLowerPrincipal\_singleLoanImpaired() (gas: 1144930) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 32.23ms (11.97ms CPU time)

Ran 1 test for tests/e2e/GlobalPermission.t.sol:GlobalPermissionTests \[PASS] test\_e2e\_globalPermission() (gas: 1853739) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 45.02ms (6.17ms CPU time)

Ran 1 test for tests/e2e/PoolLifecycle.t.sol:PoolLifecycleTest \[PASS] test\_poolLifecycle() (gas: 8558288) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 51.90ms (17.81ms CPU time)

Ran 1 test for tests/e2e/MultiLoanManager.t.sol:MultiLoanManagerTests \[PASS] test\_4loans\_3lps() (gas: 6303154) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 60.79ms (23.37ms CPU time)

Ran 4 tests for tests/e2e/StrategyScenarios.t.sol:StrategyScenarios \[PASS] testFork\_strategy\_scenario1() (gas: 2231688) \[PASS] testFork\_strategy\_scenario2() (gas: 2143745) \[PASS] testFork\_strategy\_scenario3() (gas: 1983648) \[PASS] testFork\_strategy\_scenario4() (gas: 2099231) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 210.45ms (47.74ms CPU time)

Ran 7 tests for tests/e2e/WithdrawManagerScenario.t.sol:WithdrawalManagerScenarioTests \[PASS] test\_scenario\_fundPayAndRefinanceLoanWithPartialRedemptions\_removeSharesAndCloseLoan() (gas: 3279489) \[PASS] test\_scenario\_impairLoanAndRedeem\_defaultLoanAndWithdraw() (gas: 2315488) \[PASS] test\_scenario\_impairLoanAndRedeem\_removeImpairAndRedeem() (gas: 2461182) \[PASS] test\_scenario\_impairLoanAndRedeem\_removeSharesRepayLoanAndRedeem() (gas: 2318170) \[PASS] test\_scenario\_impairLoanAndRedeem\_repayLoanAndWithdraw() (gas: 2406289) \[PASS] test\_scenario\_impairLoanAndRedeem\_startLiquidationAndRedeem\_finishLiquidationAndRedeem() (gas: 3480817) \[PASS] test\_scenario\_multipleUsers\_impairLoanAndRedeem\_repayLoanAndRedeem() (gas: 18922233) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 449.32ms (142.97ms CPU time)

Ran 3 tests for tests/e2e/CoreStrategyLoop.t.sol:CoreStrategyLoopTests \[PASS] test\_coreStrategyLoop\_v1() (gas: 7286411) \[PASS] test\_coreStrategyLoop\_v2() (gas: 8407155) \[PASS] test\_coreStrategyLoop\_v3() (gas: 8481559) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 471.32ms (361.46ms CPU time)

Ran 16 tests for tests/e2e/DelayedWithdrawal.t.sol:DelayedWithdrawalStartTests \[PASS] testFuzz\_removeShares\_afterStart(uint256) (runs: 100, μ: 4723262, \~: 4723281) \[PASS] testFuzz\_removeShares\_beforeStart(uint256) (runs: 100, μ: 4762927, \~: 4762935) \[PASS] testFuzz\_removeShares\_nextCycle(uint256) (runs: 100, μ: 4723258, \~: 4723294) \[PASS] testFuzz\_removeShares\_onStart(uint256) (runs: 100, μ: 4742744, \~: 4742779) \[PASS] testFuzz\_requestRedeem\_afterStart(uint256) (runs: 100, μ: 4716233, \~: 4716269) \[PASS] testFuzz\_requestRedeem\_beforeStart(uint256) (runs: 100, μ: 4756995, \~: 4757020) \[PASS] testFuzz\_requestRedeem\_nextCycle(uint256) (runs: 100, μ: 4716327, \~: 4716356) \[PASS] testFuzz\_requestRedeem\_onStart(uint256) (runs: 100, μ: 4736268, \~: 4736305) \[PASS] testFuzz\_requestWithdraw\_afterStart(uint256) (runs: 100, μ: 4634808, \~: 4634847) \[PASS] testFuzz\_requestWithdraw\_beforeStart(uint256) (runs: 100, μ: 4634930, \~: 4634948) \[PASS] testFuzz\_requestWithdraw\_nextCycle(uint256) (runs: 100, μ: 4634873, \~: 4634892) \[PASS] testFuzz\_requestWithdraw\_onStart(uint256) (runs: 100, μ: 4634820, \~: 4634852) \[PASS] testFuzz\_setExitConfig\_afterStart(uint256) (runs: 100, μ: 4642081, \~: 4642103) \[PASS] testFuzz\_setExitConfig\_beforeStart(uint256) (runs: 100, μ: 4641818, \~: 4641850) \[PASS] testFuzz\_setExitConfig\_nextCycle(uint256) (runs: 100, μ: 4642101, \~: 4642123) \[PASS] testFuzz\_setExitConfig\_onStart(uint256) (runs: 100, μ: 4641802, \~: 4641832) Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 660.15ms (4.92s CPU time)

Ran 11 tests for tests/e2e/PoolScenarios.t.sol:PoolScenarioTests \[PASS] testFuzz\_poolScenarios\_OTLWithBigPaymentInterval(uint256) (runs: 100, μ: 956962, \~: 957169) \[PASS] testFuzz\_poolScenarios\_exposeAccountedInterestDust(uint24,uint24) (runs: 100, μ: 1586096, \~: 1589503) \[PASS] testFuzz\_poolScenarios\_multipleOTLWithBigPaymentInterval(uint256,uint256,uint256) (runs: 100, μ: 33687284, \~: 33687351) \[PASS] test\_poolScenario\_fundLoanAndNeverTouchIt() (gas: 5284738) \[PASS] test\_poolScenario\_impairLoanWithLatePaymentAndRefinance() (gas: 2316760) \[PASS] test\_poolScenario\_loanWithVeryHighInterestRate() (gas: 1491396) \[PASS] test\_poolScenario\_loanWithZeroInterestRate() (gas: 1925084) \[PASS] test\_poolScenario\_loanWithZeroInterestRateAndDefaultWithCover() (gas: 1478768) \[PASS] test\_poolScenarios\_refinanceATwoPeriodsLateLoan() (gas: 2013405) \[PASS] test\_poolScenarios\_refinanceLateLoanAndDefault() (gas: 1834749) \[PASS] test\_poolScenarios\_stressTestAdvanceGlobalPaymentAccounting() (gas: 157641795) Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 6.85s (7.47s CPU time)

## erc20

Ran 14 tests for contracts/test/ERC20.t.sol:ERC20PermitTest \[PASS] testFuzz\_permit(uint256) (runs: 256, μ: 86129, \~: 86370) \[PASS] testFuzz\_permit\_multiple(bytes32) (runs: 256, μ: 257337, \~: 257338) \[PASS] test\_domainSeparator() (gas: 8326) \[PASS] test\_initialState() (gas: 15788) \[PASS] test\_permit\_badS() (gas: 31538) \[PASS] test\_permit\_badV() (gas: 1041107) \[PASS] test\_permit\_differentSpender() (gas: 58233) \[PASS] test\_permit\_differentVerifier() (gas: 701463) \[PASS] test\_permit\_earlyNonce() (gas: 58301) \[PASS] test\_permit\_ownerSignerMismatch() (gas: 58300) \[PASS] test\_permit\_replay() (gas: 90422) \[PASS] test\_permit\_withExpiry() (gas: 94098) \[PASS] test\_permit\_zeroAddress() (gas: 58231) \[PASS] test\_typehash() (gas: 5566) Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 861.14ms (1.01s CPU time)

\[PASS] invariant\_balanceSum() (runs: 256, calls: 128000, reverts: 78071) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.45s (5.45s CPU time)

Ran 14 tests for contracts/test/ERC20.t.sol:ERC20BaseTest \[PASS] invariant\_metadata() (runs: 256, calls: 128000, reverts: 80096) \[PASS] testFuzz\_approve(address,uint256) (runs: 256, μ: 31480, \~: 31714) \[PASS] testFuzz\_burn(address,uint256,uint256) (runs: 256, μ: 28293, \~: 419) \[PASS] testFuzz\_decreaseAllowance\_infiniteApproval(address,uint256) (runs: 256, μ: 35445, \~: 35448) \[PASS] testFuzz\_decreaseAllowance\_nonInfiniteApproval(address,uint256,uint256) (runs: 256, μ: 37721, \~: 38339) \[PASS] testFuzz\_increaseAllowance(address,uint256,uint256) (runs: 256, μ: 38358, \~: 38358) \[PASS] testFuzz\_metadata(string,string,uint8) (runs: 256, μ: 761536, \~: 758616) \[PASS] testFuzz\_mint(address,uint256) (runs: 256, μ: 53684, \~: 54306) \[PASS] testFuzz\_transfer(address,uint256) (runs: 256, μ: 60785, \~: 61407) \[PASS] testFuzz\_transferFrom(address,uint256,uint256) (runs: 256, μ: 352036, \~: 354380) \[PASS] testFuzz\_transferFrom\_infiniteApproval(address,uint256) (runs: 256, μ: 354580, \~: 355204) \[PASS] testFuzz\_transferFrom\_insufficientAllowance(address,uint256) (runs: 256, μ: 341538, \~: 341400) \[PASS] testFuzz\_transferFrom\_insufficientBalance(address,uint256) (runs: 256, μ: 323324, \~: 323048) \[PASS] testFuzz\_transfer\_insufficientBalance(address,uint256) (runs: 256, μ: 333330, \~: 333331) Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 6.86s (7.37s CPU time)

Ran 3 test suites in 6.86s (13.17s CPU time): 29 tests passed, 0 failed, 0 skipped (29 total tests)

## fixed-term-loan

Ran 3 tests for tests/MapleLoan.t.sol:MapleLoanRoleTests \[PASS] test\_transferBorrowerRole() (gas: 206772) \[PASS] test\_transferBorrowerRole\_failIfInvalidBorrower() (gas: 80439) \[PASS] test\_transferLenderRole() (gas: 315711) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 5.37ms (2.14ms CPU time)

Ran 2 tests for tests/InitializerAndMigrator.t.sol:MapleLoanInitializerAndMigratorTests \[PASS] test\_initializer\_setters() (gas: 97720) \[PASS] test\_migration\_ratesChange() (gas: 116214) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 5.69ms (1.10ms CPU time)

Ran 4 tests for tests/MapleLoanFeeManager.t.sol:PayOriginationFeesTests \[PASS] test\_payOriginationFees() (gas: 328032) \[PASS] test\_payOriginationFees\_insufficientFunds\_poolDelegate() (gas: 182426) \[PASS] test\_payOriginationFees\_insufficientFunds\_treasury() (gas: 214342) \[PASS] test\_payOriginationFees\_zeroTreasury() (gas: 214892) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 6.57ms (2.68ms CPU time)

\[PASS] test\_updatePlatformServiceFee() (gas: 1848617) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 8.84ms (6.13ms CPU time)

Ran 5 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_AcceptLoanTerms \[PASS] test\_acceptLoanTerms\_failIfAlreadyAccepted() (gas: 53492) \[PASS] test\_acceptLoanTerms\_failIfNotBorrowerOrBorrowerActions() (gas: 33868) \[PASS] test\_acceptLoanTerms\_failIfPaused() (gas: 34044) \[PASS] test\_acceptLoanTerms\_successWithBorrower() (gas: 56671) \[PASS] test\_acceptLoanTerms\_successWithBorrowerActions() (gas: 59202) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 3.76ms (691.01µs CPU time)

Ran 9 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_AcceptNewTermsTests \[PASS] test\_acceptNewTerms() (gas: 173170) \[PASS] test\_acceptNewTerms\_afterDeadline() (gas: 85344) \[PASS] test\_acceptNewTerms\_callFailed() (gas: 126248) \[PASS] test\_acceptNewTerms\_commitmentMismatch\_emptyCallsArray() (gas: 80650) \[PASS] test\_acceptNewTerms\_commitmentMismatch\_mismatchedCalls() (gas: 82191) \[PASS] test\_acceptNewTerms\_commitmentMismatch\_mismatchedDeadline() (gas: 81994) \[PASS] test\_acceptNewTerms\_commitmentMismatch\_mismatchedRefinancer() (gas: 81709) \[PASS] test\_acceptNewTerms\_insufficientCollateral() (gas: 349771) \[PASS] test\_acceptNewTerms\_invalidRefinancer() (gas: 82183) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 7.87ms (4.36ms CPU time)

\[PASS] test\_updateDelegateFeeTerms() (gas: 109727) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 7.81ms (438.83µs CPU time)

Ran 2 tests for tests/MapleLoanFeeManager.t.sol:PayServiceFeesTests \[PASS] test\_payServiceFees() (gas: 275511) \[PASS] test\_payServiceFees\_zeroTreasury() (gas: 233683) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 20.36ms (5.23ms CPU time)

Ran 2 tests for tests/MapleLoanFeeManager.t.sol:GetterTests \[PASS] test\_getDelegateServiceFeesForPeriod() (gas: 717302) \[PASS] test\_getPlatformServiceFeeForPeriod() (gas: 1059368) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 7.45ms (4.28ms CPU time)

\[PASS] test\_payClosingServiceFees() (gas: 276208) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 9.01ms (3.94ms CPU time)

Ran 77 tests for tests/MapleLoan.t.sol:MapleLoanTests \[PASS] test\_acceptBorrower\_acl() (gas: 54102) \[PASS] test\_acceptBorrower\_failWhenPaused() (gas: 31214) \[PASS] test\_acceptLender\_acl() (gas: 52406) \[PASS] test\_acceptLender\_failWhenPaused() (gas: 31279) \[PASS] test\_acceptNewTerms() (gas: 1615477) \[PASS] test\_acceptNewTerms\_acl() (gas: 1565477) \[PASS] test\_acceptNewTerms\_failWhenPaused() (gas: 33139) \[PASS] test\_closeLoan\_failWhenPaused() (gas: 32336) \[PASS] test\_closeLoan\_pullPatternAsBorrower() (gas: 1536630) \[PASS] test\_closeLoan\_pullPatternAsNonBorrower() (gas: 1539264) \[PASS] test\_closeLoan\_pullPatternUsingDrawable() (gas: 1552379) \[PASS] test\_closeLoan\_pushPatternAsBorrower() (gas: 1554175) \[PASS] test\_closeLoan\_pushPatternAsNonBorrower() (gas: 1554831) \[PASS] test\_closeLoan\_pushPatternUsingDrawable() (gas: 1519633) \[PASS] test\_drawdownFunds\_acl\_asBorrower() (gas: 1482857) \[PASS] test\_drawdownFunds\_acl\_asBorrowerActions() (gas: 1488669) \[PASS] test\_drawdownFunds\_failWhenPaused() (gas: 32506) \[PASS] test\_drawdownFunds\_pullPatternForCollateral() (gas: 2937756) \[PASS] test\_drawdownFunds\_pushPatternForCollateral() (gas: 2916501) \[PASS] test\_drawdownFunds\_withoutAdditionalCollateralRequired() (gas: 2748657) \[PASS] test\_excessCollateral\_varyCollateral() (gas: 147809) \[PASS] test\_excessCollateral\_varyDrawableFunds() (gas: 131676) \[PASS] test\_excessCollateral\_varyPrincipal() (gas: 94632) \[PASS] test\_fundLoan\_failWhenPaused() (gas: 31530) \[PASS] test\_fundLoan\_pushPattern() (gas: 1660577) \[PASS] test\_getAdditionalCollateralRequiredFor\_varyAmount() (gas: 134521) \[PASS] test\_getAdditionalCollateralRequiredFor\_varyCollateralRequired() (gas: 118958) \[PASS] test\_getAdditionalCollateralRequiredFor\_varyDrawableFunds() (gas: 121514) \[PASS] test\_getAdditionalCollateralRequiredFor\_varyPrincipal() (gas: 142693) \[PASS] test\_impairLoan() (gas: 82040) \[PASS] test\_impairLoan\_acl() (gas: 94676) \[PASS] test\_impairLoan\_failWhenPaused() (gas: 31275) \[PASS] test\_impairLoan\_lateLoan() (gas: 82227) \[PASS] test\_makePayment\_failWhenPaused() (gas: 32402) \[PASS] test\_makePayment\_pullPatternAsBorrower() (gas: 1599267) \[PASS] test\_makePayment\_pullPatternAsNonBorrower() (gas: 1601609) \[PASS] test\_makePayment\_pullPatternUsingDrawable() (gas: 1643775) \[PASS] test\_makePayment\_pushPatternAsBorrower() (gas: 1605283) \[PASS] test\_makePayment\_pushPatternAsNonBorrower() (gas: 1605645) \[PASS] test\_makePayment\_pushPatternUsingDrawable() (gas: 1611135) \[PASS] test\_migrate\_acl() (gas: 90384) \[PASS] test\_migrate\_failWhenPaused() (gas: 32432) \[PASS] test\_postCollateral\_failWhenPaused() (gas: 31964) \[PASS] test\_postCollateral\_pullPattern() (gas: 1450394) \[PASS] test\_postCollateral\_pushPattern() (gas: 1399988) \[PASS] test\_proposeNewTerms() (gas: 121002) \[PASS] test\_proposeNewTerms\_acl\_asBorrower() (gas: 138122) \[PASS] test\_proposeNewTerms\_acl\_asBorrowerActions() (gas: 138648) \[PASS] test\_proposeNewTerms\_failWhenPaused() (gas: 33053) \[PASS] test\_proposeNewTerms\_invalidDeadline() (gas: 132551) \[PASS] test\_rejectNewTerms\_acl() (gas: 197404) \[PASS] test\_rejectNewTerms\_failWhenPaused() (gas: 33162) \[PASS] test\_removeCollateral\_acl\_asBorrower() (gas: 1441281) \[PASS] test\_removeCollateral\_acl\_asBorrowerActions() (gas: 1447226) \[PASS] test\_removeCollateral\_failWhenPaused() (gas: 32167) \[PASS] test\_removeLoanImpairment\_acl() (gas: 75813) \[PASS] test\_removeLoanImpairment\_failWhenPaused() (gas: 31365) \[PASS] test\_removeLoanImpairment\_notImpaired() (gas: 32232) \[PASS] test\_removeLoanImpairment\_pastDate() (gas: 54479) \[PASS] test\_removeLoanImpairment\_success() (gas: 61130) \[PASS] test\_repossess\_acl() (gas: 1418198) \[PASS] test\_repossess\_failWhenPaused() (gas: 32369) \[PASS] test\_returnFunds\_failWhenPaused() (gas: 32052) \[PASS] test\_returnFunds\_pullPattern() (gas: 1450503) \[PASS] test\_returnFunds\_pushPattern() (gas: 1400010) \[PASS] test\_setImplementation\_acl() (gas: 110497) \[PASS] test\_setImplementation\_failWhenPaused() (gas: 31853) \[PASS] test\_setPendingBorrower\_acl\_asBorrower() (gas: 102548) \[PASS] test\_setPendingBorrower\_acl\_asBorrowerActions() (gas: 106470) \[PASS] test\_setPendingBorrower\_failWhenPaused() (gas: 31744) \[PASS] test\_setPendingLender\_acl() (gas: 73701) \[PASS] test\_setPendingLender\_failWhenPaused() (gas: 31789) \[PASS] test\_skim\_failWhenPaused() (gas: 32387) \[PASS] test\_upgrade\_acl\_noAuth() (gas: 6588831) \[PASS] test\_upgrade\_acl\_noAuth\_asBorrower() (gas: 6591643) \[PASS] test\_upgrade\_acl\_securityAdmin() (gas: 6623456) \[PASS] test\_upgrade\_failWhenPaused() (gas: 32122) Suite result: ok. 77 passed; 0 failed; 0 skipped; finished in 42.06ms (43.23ms CPU time)

Ran 3 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_CollateralMaintainedTests \[PASS] test\_isCollateralMaintained(uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 125134, \~: 125743) \[PASS] test\_isCollateralMaintained\_edgeCases() (gas: 194733) \[PASS] test\_isCollateralMaintained\_roundUp() (gas: 85461) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 88.45ms (87.47ms CPU time)

Ran 3 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_ProposeNewTermsTests \[PASS] test\_proposeNewTerms(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 81660, \~: 82002) \[PASS] test\_proposeNewTerms\_emptyArray(address,uint256) (runs: 256, μ: 38534, \~: 38876) \[PASS] test\_proposeNewTerms\_invalidRefinancer() (gas: 83520) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 220.98ms (219.65ms CPU time)

Ran 5 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_RejectNewTermsTests \[PASS] test\_rejectNewTerms() (gas: 65210) \[PASS] test\_rejectNewTerms\_commitmentMismatch\_emptyCallsArray() (gas: 75642) \[PASS] test\_rejectNewTerms\_commitmentMismatch\_mismatchedCalls() (gas: 77254) \[PASS] test\_rejectNewTerms\_commitmentMismatch\_mismatchedDeadline() (gas: 77168) \[PASS] test\_rejectNewTerms\_commitmentMismatch\_mismatchedRefinancer() (gas: 729562) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 3.31ms (1.90ms CPU time)

\[PASS] test\_getNextPaymentBreakdown(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 720082, \~: 721434) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 266.73ms (265.58ms CPU time)

Ran 6 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_GetPaymentBreakdownTests \[PASS] test\_getPaymentBreakdown\_onePaymentFourPeriodsLate() (gas: 38327) \[PASS] test\_getPaymentBreakdown\_onePaymentOnePeriodBeforeDue() (gas: 35252) \[PASS] test\_getPaymentBreakdown\_onePaymentOnePeriodLate() (gas: 38349) \[PASS] test\_getPaymentBreakdown\_onePaymentOneSecondBeforeDue() (gas: 35317) \[PASS] test\_getPaymentBreakdown\_onePaymentThreePeriodsLate() (gas: 38282) \[PASS] test\_getPaymentBreakdown\_onePaymentTwoPeriodsLate() (gas: 38304) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 2.36ms (1.41ms CPU time)

\[PASS] test\_getPeriodicInterestRate() (gas: 10439) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.04ms (109.04µs CPU time)

Ran 3 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_GetInstallmentTests \[PASS] test\_getInstallment\_edgeCases() (gas: 28426) \[PASS] test\_getInstallment\_genericFuzzing(uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 18854, \~: 19125) \[PASS] test\_getInstallment\_withFixtures() (gas: 14280) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 72.54ms (71.53ms CPU time)

\[PASS] test\_getInterest() (gas: 11818) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 964.85µs (109.24µs CPU time)

Ran 9 tests for tests/MapleLoanFactory.t.sol:MapleLoanFactoryTest \[PASS] test\_createInstance(bytes32) (runs: 256, μ: 553111, \~: 553111) \[PASS] test\_createInstance\_differentFundsAsset() (gas: 774574) \[PASS] test\_createInstance\_invalidCaller() (gas: 553933) \[PASS] test\_createInstance\_invalidCollateralAsset() (gas: 746602) \[PASS] test\_createInstance\_invalidFactory() (gas: 778525) \[PASS] test\_createInstance\_invalidInstance() (gas: 784465) \[PASS] test\_createInstance\_invalidPoolAsset() (gas: 742867) \[PASS] test\_createInstance\_zeroLender() (gas: 770287) \[PASS] test\_isLoan\_withOldFactory() (gas: 1087316) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 533.07ms (526.54ms CPU time)

\[PASS] test\_getClosingPaymentBreakdown(uint256,uint256,uint256) (runs: 256, μ: 9020008, \~: 9020028) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 598.50ms (591.31ms CPU time)

\[PASS] test\_getCollateralRequiredFor() (gas: 21550) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.13ms (223.02µs CPU time)

Ran 3 tests for tests/MapleLoanScenarios.t.sol:MapleLoanScenariosTests \[PASS] test\_scenario\_fullyAmortized() (gas: 9545692) \[PASS] test\_scenario\_interestOnly() (gas: 9530408) \[PASS] test\_scenario\_lateLoanRefinanceInterest() (gas: 9218314) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 38.67ms (28.55ms CPU time)

Ran 3 tests for tests/MapleLoanV502Migrator.t.sol:MapleLoanV502MigratorTests \[PASS] test\_migration\_factoryChange() (gas: 2982041) \[PASS] test\_migration\_invalidFactory() (gas: 2957110) \[PASS] test\_migration\_sameFactory\_noOp() (gas: 2947582) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 10.37ms (2.74ms CPU time)

Ran 2 tests for tests/Payments.t.sol:ClosingTests \[PASS] test\_payments\_closing\_flatRate\_case1() (gas: 1422472) \[PASS] test\_payments\_closing\_flatRate\_case2() (gas: 1277212) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 17.19ms (14.04ms CPU time)

Ran 2 tests for tests/Payments.t.sol:FullyAmortizedPaymentsTests \[PASS] test\_payments\_fullyAmortized\_case1() (gas: 1690175) \[PASS] test\_payments\_fullyAmortized\_case2() (gas: 1690124) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 27.42ms (24.06ms CPU time)

Ran 6 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_DrawdownFundsTests \[PASS] test\_drawdownFunds\_collateralNotMaintained(uint256,uint256,uint256) (runs: 256, μ: 272370, \~: 273976) \[PASS] test\_drawdownFunds\_insufficientDrawableFunds(uint256,uint256) (runs: 256, μ: 157630, \~: 157795) \[PASS] test\_drawdownFunds\_multipleDrawdowns(uint256,uint256,uint256) (runs: 256, μ: 278647, \~: 278241) \[PASS] test\_drawdownFunds\_postedCollateral(uint256,uint256,uint256) (runs: 256, μ: 293779, \~: 294765) \[PASS] test\_drawdownFunds\_transferFailed() (gas: 55653) \[PASS] test\_drawdownFunds\_withoutPostedCollateral(uint256,uint256) (runs: 256, μ: 198354, \~: 199201) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 822.37ms (820.45ms CPU time)

Ran 2 tests for tests/Payments.t.sol:InterestOnlyPaymentsTests \[PASS] test\_payments\_interestOnly\_case1() (gas: 1705799) \[PASS] test\_payments\_interestOnly\_case2() (gas: 1706053) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 28.65ms (25.20ms CPU time)

Ran 3 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_SkimTests \[PASS] test\_skimCollateralAsset() (gas: 84661) \[PASS] test\_skimFundsAsset() (gas: 84683) \[PASS] test\_skim\_otherAsset() (gas: 1367889) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 7.42ms (1.21ms CPU time)

\[PASS] test\_refinance\_invalidRefinancer() (gas: 9183149) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 5.65ms (3.01ms CPU time)

Ran 5 tests for tests/Payments.t.sol:LateRepaymentsTests \[PASS] test\_payments\_dailyInterestAccrual() (gas: 1067402) \[PASS] test\_payments\_lateRepayment\_flatRateAndDefaultRate\_case1() (gas: 1695211) \[PASS] test\_payments\_lateRepayment\_flatRateAndDefaultRate\_case2() (gas: 1704178) \[PASS] test\_payments\_lateRepayment\_flatRate\_case1() (gas: 1696594) \[PASS] test\_payments\_lateRepayment\_flatRate\_case2() (gas: 1692266) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 69.54ms (65.88ms CPU time)

Ran 2 tests for tests/Payments.t.sol:PartiallyAmortizedPaymentsTests \[PASS] test\_payments\_partiallyAmortized\_case1() (gas: 1706028) \[PASS] test\_payments\_partiallyAmortized\_case2() (gas: 1706061) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 39.64ms (24.54ms CPU time)

Ran 12 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_GetUnaccountedAmountTests \[PASS] test\_getUnaccountedAmount\_collateral(uint256,uint256) (runs: 256, μ: 90995, \~: 91305) \[PASS] test\_getUnaccountedAmount\_collateralAsset() (gas: 81295) \[PASS] test\_getUnaccountedAmount\_complex(uint256,uint256,uint256) (runs: 256, μ: 1391776, \~: 1392099) \[PASS] test\_getUnaccountedAmount\_drawableFunds(uint256,uint256) (runs: 256, μ: 90849, \~: 91174) \[PASS] test\_getUnaccountedAmount\_drawableFundsAndAndCollateral(uint256,uint256,uint256,uint256) (runs: 256, μ: 172930, \~: 172822) \[PASS] test\_getUnaccountedAmount\_drawableFundsAndAndCollateral\_fundsAssetEqCollateralAsset(uint256,uint256,uint256) (runs: 256, μ: 119968, \~: 120134) \[PASS] test\_getUnaccountedAmount\_fundsAsset() (gas: 81296) \[PASS] test\_getUnaccountedAmount\_newFundsLtCollateral(uint256) (runs: 256, μ: 108943, \~: 108937) \[PASS] test\_getUnaccountedAmount\_newFundsLtDrawableFunds(uint256) (runs: 256, μ: 108973, \~: 108967) \[PASS] test\_getUnaccountedAmount\_randomToken() (gas: 121430) \[PASS] test\_getUnaccountedAmount\_withCollateral(uint256,uint256) (runs: 256, μ: 88816, \~: 89934) \[PASS] test\_getUnaccountedAmount\_withDrawableFunds(uint256,uint256) (runs: 256, μ: 89170, \~: 89805) Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 913.34ms (911.56ms CPU time)

Ran 9 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_InitializeTests \[PASS] test\_initialize() (gas: 8994403) \[PASS] test\_initialize\_invalidBorrower() (gas: 2103947) \[PASS] test\_initialize\_invalidEndingPrincipal() (gas: 2067093) \[PASS] test\_initialize\_invalidGracePeriodBoundary() (gas: 10976912) \[PASS] test\_initialize\_invalidOriginationFeeBoundary() (gas: 10977872) \[PASS] test\_initialize\_invalidPaymentInterval() (gas: 2073638) \[PASS] test\_initialize\_invalidPaymentsRemaining() (gas: 2073628) \[PASS] test\_initialize\_invalidPrincipal() (gas: 2066887) \[PASS] test\_initialize\_zeroBorrower() (gas: 2077679) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 23.72ms (21.76ms CPU time)

Ran 11 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_RemoveCollateralTests \[PASS] test\_removeCollateral\_cannotRemoveAnyAmountWithEncumbrances() (gas: 200434) \[PASS] test\_removeCollateral\_cannotRemoveFullAmountWithEncumbrances(uint256) (runs: 256, μ: 160980, \~: 160974) \[PASS] test\_removeCollateral\_cannotRemovePartialAmountWithEncumbrances(uint256,uint256) (runs: 256, μ: 201904, \~: 202261) \[PASS] test\_removeCollateral\_fullAmountWithNoEncumbrances(uint256) (runs: 256, μ: 125157, \~: 125161) \[PASS] test\_removeCollateral\_fullAmount\_drawableFundsGtPrincipal(uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 191352, \~: 191925) \[PASS] test\_removeCollateral\_fullAmount\_noPrincipal(uint256) (runs: 256, μ: 144432, \~: 144420) \[PASS] test\_removeCollateral\_insufficientCollateralWithNoEncumbrances(uint256) (runs: 256, μ: 120690, \~: 121623) \[PASS] test\_removeCollateral\_partialAmountWithEncumbrances(uint256,uint256) (runs: 256, μ: 250697, \~: 250326) \[PASS] test\_removeCollateral\_partialAmountWithNoEncumbrances(uint256,uint256) (runs: 256, μ: 161657, \~: 163261) \[PASS] test\_removeCollateral\_sameAssetAsFundingAsset(uint256) (runs: 256, μ: 149054, \~: 149042) \[PASS] test\_removeCollateral\_transferFailed() (gas: 295978) Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 1.34s (1.33s CPU time)

Ran 7 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_RepossessTests \[PASS] test\_repossess() (gas: 151946) \[PASS] test\_repossess\_beforePaymentDue() (gas: 57119) \[PASS] test\_repossess\_collateralTransferFailed() (gas: 310751) \[PASS] test\_repossess\_fundsTransferFailed() (gas: 343461) \[PASS] test\_repossess\_onGracePeriod() (gas: 57135) \[PASS] test\_repossess\_onPaymentDue() (gas: 56881) \[PASS] test\_repossess\_withinGracePeriod() (gas: 57090) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 5.91ms (2.05ms CPU time)

Ran 2 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_ReturnFundsTests \[PASS] test\_returnFunds(uint256) (runs: 256, μ: 129406, \~: 130551) \[PASS] test\_returnFundsCollateralAsset() (gas: 1389958) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 141.74ms (140.18ms CPU time)

Ran 2 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_ScaledExponentTests \[PASS] test\_scaledExponent\_setOne() (gas: 40312) \[PASS] test\_scaledExponent\_setTwo() (gas: 71120) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 2.43ms (1.31ms CPU time)

\[PASS] test\_refinance\_gracePeriod(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 9383458, \~: 9386113) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.25s (1.24s CPU time)

Ran 2 tests for tests/MapleLoanRefinancer.t.sol:RefinancePaymentIntervalTests \[PASS] test\_refinance\_paymentInterval(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 9386937, \~: 9388376) \[PASS] test\_refinance\_paymentInterval\_zeroAmount() (gas: 9335233) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.19s (1.19s CPU time)

\[PASS] test\_refinance\_multipleParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 9452332, \~: 9449058) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.69s (1.69s CPU time)

\[PASS] test\_refinance\_interestRate(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 9385115, \~: 9386617) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.15s (1.15s CPU time)

\[PASS] test\_acceptNewTerms\_makePayment\_withRefinanceInterest() (gas: 9444394) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 28.99ms (15.16ms CPU time)

Ran 4 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_PostCollateralTests \[PASS] test\_postCollateral\_invalidCollateralAsset() (gas: 1363482) \[PASS] test\_postCollateral\_multiple(uint256,uint256) (runs: 256, μ: 178416, \~: 182453) \[PASS] test\_postCollateral\_once(uint256) (runs: 256, μ: 104534, \~: 105228) \[PASS] test\_postCollateral\_withUnaccountedFundsAsset() (gas: 1452457) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 446.17ms (445.01ms CPU time)

Ran 8 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_MakePaymentTests \[PASS] test\_makePayment(uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 390057, \~: 391499) \[PASS] test\_makePayment\_amountSmallerThanFees() (gas: 490322) \[PASS] test\_makePayment\_collateralNotMaintained() (gas: 874527) \[PASS] test\_makePayment\_insufficientAmount(uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 417453, \~: 418668) \[PASS] test\_makePayment\_lastPaymentClearsLoan(uint256,uint256,uint256,uint256) (runs: 256, μ: 368044, \~: 368756) \[PASS] test\_makePayment\_noAmount() (gas: 480843) \[PASS] test\_makePayment\_withDrawableFunds(uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 394133, \~: 396134) \[PASS] test\_makePayment\_withRefinanceInterest(uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 375270, \~: 375481) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 2.31s (2.31s CPU time)

Ran 12 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_FundLoanTests \[PASS] test\_fundLoan\_approveFail() (gas: 330471) \[PASS] test\_fundLoan\_doubleFund(uint256) (runs: 256, μ: 282110, \~: 281816) \[PASS] test\_fundLoan\_fullFunding(uint256) (runs: 256, μ: 304534, \~: 304213) \[PASS] test\_fundLoan\_fullFundingWithExistingDrawableFunds(uint256) (runs: 256, μ: 306267, \~: 305955) \[PASS] test\_fundLoan\_invalidFundsAsset() (gas: 1502785) \[PASS] test\_fundLoan\_nextPaymentDueDateAlreadySet() (gas: 178880) \[PASS] test\_fundLoan\_noPaymentsRemaining() (gas: 87229) \[PASS] test\_fundLoan\_notLender() (gas: 27441) \[PASS] test\_fundLoan\_partialFunding(uint256) (runs: 256, μ: 227801, \~: 227999) \[PASS] test\_fundLoan\_termsNotAccepted() (gas: 31918) \[PASS] test\_fundLoan\_withUnaccountedCollateralAsset() (gas: 1619778) \[PASS] test\_fundLoan\_withoutSendingAsset() (gas: 181311) Suite result: ok. 12 passed; 0 failed; 0 skipped; finished in 2.81s (942.84ms CPU time)

Ran 2 tests for tests/MapleLoanRefinancer.t.sol:RefinancePaymentsRemainingTests \[PASS] test\_refinance\_paymentRemaining(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 9387061, \~: 9388048) \[PASS] test\_refinance\_paymentRemaining\_zeroAmount() (gas: 9335235) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.25s (1.25s CPU time)

Ran 2 tests for tests/MapleLoanRefinancer.t.sol:RefinancePrincipalRequestedTests \[PASS] test\_refinance\_increasePrincipalRequested(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 9464135, \~: 9465595) \[PASS] test\_refinance\_increasePrincipalRequestedWithInsufficientFunds(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 9399032, \~: 9399874) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 3.16s (3.16s CPU time)

\[PASS] test\_refinance\_collateralRequired(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 9427999, \~: 9429874) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.63s (1.63s CPU time)

Ran 2 tests for tests/MapleLoanRefinancer.t.sol:RefinanceDeadlineTests \[PASS] test\_refinance\_afterDeadline(uint256,uint256,uint256) (runs: 256, μ: 9335945, \~: 9334969) \[PASS] test\_refinance\_differentDeadline(uint256,uint256,uint256) (runs: 256, μ: 9308716, \~: 9308747) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.45s (2.65s CPU time)

Ran 3 tests for tests/MapleLoanRefinancer.t.sol:RefinanceEndingPrincipalTests \[PASS] test\_refinance\_endingPrincipal\_amortizedToInterestOnly(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 9417602, \~: 9419137) \[PASS] test\_refinance\_endingPrincipal\_failLargerThanPrincipal(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 9368668, \~: 9371329) \[PASS] test\_refinance\_endingPrincipal\_interestOnlyToAmortized(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 9411262, \~: 9416378) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 2.01s (3.30s CPU time)

Ran 3 tests for tests/MapleLoanRefinancer.t.sol:RefinanceFeeTests \[PASS] test\_refinance\_closingRate(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 9385727, \~: 9387257) \[PASS] test\_refinance\_lateFeeRate(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 9385788, \~: 9387683) \[PASS] test\_refinance\_lateInterestPremiumRate(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 9406168, \~: 9407297) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.91s (2.67s CPU time)

Ran 7 tests for tests/MapleLoanRefinancer.t.sol:RefinancingFeesTerms \[PASS] testFuzz\_refinance\_payOriginationFees(uint256,uint256) (runs: 256, μ: 10941438, \~: 10941451) \[PASS] testFuzz\_refinance\_pdOriginationFeeTransferFail(uint256) (runs: 256, μ: 10853709, \~: 10853823) \[PASS] testFuzz\_refinance\_treasuryOriginationFeeTransferFail(uint256,uint256) (runs: 256, μ: 10867772, \~: 10867770) \[PASS] testFuzz\_refinance\_updateFeeTerms(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 10892621, \~: 10894292) \[PASS] testFuzz\_refinance\_updatesPlatformServiceFees(uint256) (runs: 256, μ: 10851734, \~: 10852044) \[PASS] test\_refinance\_updateRefinanceServiceFees() (gas: 10933885) \[PASS] test\_refinance\_updateRefinanceServiceFeesOnDoubleRefinance() (gas: 11036939) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 4.22s (8.34s CPU time)

Ran 7 tests for tests/MapleLoanLogic.t.sol:MapleLoanLogic\_CloseLoanTests \[PASS] test\_closeLoan(uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 296434, \~: 297091) \[PASS] test\_closeLoan\_amountSmallerThanFees() (gas: 465232) \[PASS] test\_closeLoan\_insufficientAmount(uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 361903, \~: 362154) \[PASS] test\_closeLoan\_latePayment(uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 303106, \~: 303516) \[PASS] test\_closeLoan\_noAmount() (gas: 457685) \[PASS] test\_closeLoan\_withDrawableFunds(uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 304408, \~: 304472) \[PASS] test\_closeLoan\_withRefinanceInterest(uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 297908, \~: 298225) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 5.20s (1.73s CPU time)

Ran 54 test suites in 5.22s (37.12s CPU time): 270 tests passed, 0 failed, 0 skipped (270 total tests)

## fixed-term-loan-manager

Ran 3 tests for tests/MapleLoanManager.t.sol:RejectNewTermsTests \[PASS] test\_rejectNewTerms\_notPoolDelegate() (gas: 40032) \[PASS] test\_rejectNewTerms\_paused() (gas: 38296) \[PASS] test\_rejectNewTerms\_success() (gas: 1112994) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 3.31ms (772.09µs CPU time)

\[PASS] test\_acceptNewTerms\_invalidBorrower() (gas: 218426) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.03ms (486.13µs CPU time)

Ran 2 tests for tests/MapleLoanManager.t.sol:ClaimTests \[PASS] test\_claim\_notLoan() (gas: 379687) \[PASS] test\_claim\_paused() (gas: 42940) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 4.84ms (998.07µs CPU time)

Ran 7 tests for tests/MapleLoanManager.t.sol:FundLoanTests \[PASS] test\_fund() (gas: 447263) \[PASS] test\_fund\_failIfNotPoolDelegate() (gas: 91335) \[PASS] test\_fund\_inactiveLoan() (gas: 71600) \[PASS] test\_fund\_invalidBorrower() (gas: 75141) \[PASS] test\_fund\_invalidFactory() (gas: 64138) \[PASS] test\_fund\_invalidLoan() (gas: 65294) \[PASS] test\_fund\_paused() (gas: 46859) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 5.90ms (2.97ms CPU time)

Ran 2 tests for tests/MapleLoanManager.t.sol:DistributeClaimedFunds \[PASS] test\_distributeClaimedFunds\_mapleTreasuryNotSet() (gas: 1406031) \[PASS] test\_distributeLiquidationFunds\_poolNotSet() (gas: 1342601) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 3.70ms (1.10ms CPU time)

Ran 13 tests for tests/MapleLoanManager.t.sol:LoanManagerSortingTests \[PASS] test\_addPaymentToList\_ascendingPair() (gas: 106994) \[PASS] test\_addPaymentToList\_descendingPair() (gas: 106914) \[PASS] test\_addPaymentToList\_single() (gas: 67234) \[PASS] test\_addPaymentToList\_synchronizedPair() (gas: 106993) \[PASS] test\_addPaymentToList\_toHead() (gas: 150427) \[PASS] test\_addPaymentToList\_toMiddle() (gas: 151121) \[PASS] test\_addPaymentToList\_toTail() (gas: 151165) \[PASS] test\_removePaymentFromList\_earliestDueDate() (gas: 131755) \[PASS] test\_removePaymentFromList\_invalidPaymentId() (gas: 86775) \[PASS] test\_removePaymentFromList\_latestDueDate() (gas: 131489) \[PASS] test\_removePaymentFromList\_medianDueDate() (gas: 131823) \[PASS] test\_removePaymentFromList\_pair() (gas: 94915) \[PASS] test\_removePaymentFromList\_single() (gas: 58324) Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 9.25ms (6.31ms CPU time)

Ran 2 tests for tests/MapleLoanManager.t.sol:GetterTests \[PASS] test\_accruedInterest() (gas: 43560) \[PASS] test\_getAssetsUnderManagement() (gas: 50797) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 4.64ms (744.46µs CPU time)

Ran 4 tests for tests/MapleLoanManager.t.sol:MigrateTests \[PASS] test\_migrate\_internalFailure() (gas: 36928) \[PASS] test\_migrate\_notFactory() (gas: 33474) \[PASS] test\_migrate\_paused() (gas: 39426) \[PASS] test\_migrate\_success() (gas: 43097) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 3.99ms (697.76µs CPU time)

Ran 3 tests for tests/MapleLoanManager.t.sol:DistributeLiquidationFundsTests \[PASS] test\_distributeLiquidationFunds\_borrowerNotSet() (gas: 1188764) \[PASS] test\_distributeLiquidationFunds\_mapleTreasuryNotSet() (gas: 1234114) \[PASS] test\_distributeLiquidationFunds\_poolNotSet() (gas: 1220189) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 6.96ms (4.33ms CPU time)

Ran 2 tests for tests/MapleLoanManager.t.sol:UpdateAccountingFailureTests \[PASS] test\_updateAccounting\_notGovernor() (gas: 103379) \[PASS] test\_updateAccounting\_notPoolDelegate() (gas: 100586) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 3.80ms (599.46µs CPU time)

Ran 7 tests for tests/MapleLoanManager.t.sol:TriggerDefaultTests \[PASS] test\_triggerDefault\_notManager() (gas: 144235) \[PASS] test\_triggerDefault\_paused() (gas: 42169) \[PASS] test\_triggerDefault\_success\_noCollateral\_impaired() (gas: 251299) \[PASS] test\_triggerDefault\_success\_noCollateral\_notImpaired() (gas: 177719) \[PASS] test\_triggerDefault\_success\_withCollateralAssetEqualToFundsAsset() (gas: 325299) \[PASS] test\_triggerDefault\_success\_withCollateral\_impaired() (gas: 436395) \[PASS] test\_triggerDefault\_success\_withCollateral\_notImpaired() (gas: 401902) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 15.21ms (7.04ms CPU time)

Ran 5 tests for tests/MapleLoanManager.t.sol:FinishCollateralLiquidationTests \[PASS] test\_finishCollateralLiquidation\_callAfterTriggerDefaultOnUncollateralizedLoan() (gas: 141630) \[PASS] test\_finishCollateralLiquidation\_callBeforeTriggerDefault() (gas: 67166) \[PASS] test\_finishCollateralLiquidation\_notManager() (gas: 320152) \[PASS] test\_finishCollateralLiquidation\_paused() (gas: 44519) \[PASS] test\_finishCollateralLiquidation\_success\_withCollateral() (gas: 396596) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 7.38ms (3.45ms CPU time)

Ran 7 tests for tests/MapleLoanManager.t.sol:RemoveLoanImpairmentTests \[PASS] test\_removeLoanImpairment\_delegateNotAuthorizedToRemoveGovernors() (gas: 280563) \[PASS] test\_removeLoanImpairment\_failIfPaused() (gas: 46902) \[PASS] test\_removeLoanImpairment\_notByGovernor() (gas: 207550) \[PASS] test\_removeLoanImpairment\_notPoolDelegate() (gas: 203478) \[PASS] test\_removeLoanImpairment\_pastDueDate() (gas: 295387) \[PASS] test\_removeLoanImpairment\_successWithGovernor() (gas: 324999) \[PASS] test\_removeLoanImpairment\_successWithPD() (gas: 324023) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 17.56ms (6.23ms CPU time)

Ran 5 tests for tests/MapleLoanManager.t.sol:ImpairLoanTests \[PASS] test\_impairLoan\_alreadyImpaired() (gas: 195535) \[PASS] test\_impairLoan\_failIfPaused() (gas: 41799) \[PASS] test\_impairLoan\_notAuthorized() (gas: 43512) \[PASS] test\_impairLoan\_success() (gas: 273187) \[PASS] test\_impairLoan\_success\_byGovernor() (gas: 251131) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 10.62ms (7.09ms CPU time)

Ran 4 tests for tests/MapleLoanManager.t.sol:UpdateAccountingTests \[PASS] test\_updateAccounting\_afterDomainEnd() (gas: 130773) \[PASS] test\_updateAccounting\_afterTwoDomainEnds() (gas: 124597) \[PASS] test\_updateAccounting\_beforeDomainEnd() (gas: 111167) \[PASS] test\_updateAccounting\_failIfPaused() (gas: 39148) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 6.66ms (2.20ms CPU time)

Ran 5 tests for tests/MapleLoanManager.t.sol:SetAllowedSlippage\_SetterTests \[PASS] test\_setAllowedSlippage\_invalidSlippage() (gas: 44038) \[PASS] test\_setAllowedSlippage\_noAuth() (gas: 43830) \[PASS] test\_setAllowedSlippage\_paused() (gas: 39261) \[PASS] test\_setAllowedSlippage\_success\_asGovernor() (gas: 72085) \[PASS] test\_setAllowedSlippage\_success\_asPoolDelegate() (gas: 72084) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 3.34ms (791.64µs CPU time)

Ran 6 tests for tests/MapleLoanManager.t.sol:UpgradeTests \[PASS] test\_upgrade\_noAuth() (gas: 43689) \[PASS] test\_upgrade\_notScheduled() (gas: 47551) \[PASS] test\_upgrade\_paused() (gas: 37258) \[PASS] test\_upgrade\_success\_asPoolDelegate() (gas: 93407) \[PASS] test\_upgrade\_success\_asSecurityAdmin() (gas: 82459) \[PASS] test\_upgrade\_upgradeFailed() (gas: 88416) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 8.38ms (1.87ms CPU time)

\[PASS] test\_claim\_domainStart\_gt\_domainEnd() (gas: 715050) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 30.19ms (26.34ms CPU time)

Ran 3 tests for tests/MapleLoanManager.t.sol:SetImplementationTests \[PASS] test\_setImplementation\_notFactory() (gas: 32944) \[PASS] test\_setImplementation\_paused() (gas: 38941) \[PASS] test\_setImplementation\_success() (gas: 43909) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 9.16ms (464.47µs CPU time)

Ran 4 tests for tests/MapleLoanManager.t.sol:SetMinRatio\_SetterTests \[PASS] test\_setMinRatio\_noAuth() (gas: 43894) \[PASS] test\_setMinRatio\_paused() (gas: 39304) \[PASS] test\_setMinRatio\_success\_asGovernor() (gas: 72034) \[PASS] test\_setMinRatio\_success\_asPoolDelegate() (gas: 69263) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 3.50ms (686.79µs CPU time)

Ran 4 tests for tests/MapleLoanManager.t.sol:RefinanceAccountingSingleLoanTests \[PASS] test\_refinance\_beforeLoanDueDate\_interestOnly() (gas: 628420) \[PASS] test\_refinance\_onLatePayment\_interestOnly() (gas: 631008) \[PASS] test\_refinance\_onLoanPaymentDueDate\_interestOnly() (gas: 629143) \[PASS] test\_refinance\_onPaymentDueDate\_amortized() (gas: 629932) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 23.16ms (15.99ms CPU time)

Ran 6 tests for tests/MapleLoanManager.t.sol:UintCastingTests \[PASS] test\_castUint112() (gas: 24508) \[PASS] test\_castUint120() (gas: 24427) \[PASS] test\_castUint128() (gas: 24487) \[PASS] test\_castUint24() (gas: 24402) \[PASS] test\_castUint48() (gas: 24445) \[PASS] test\_castUint96() (gas: 24448) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 17.70ms (775.46µs CPU time)

Ran 3 tests for tests/MapleLoanManager.t.sol:TwoLoanAtomicClaimTests \[PASS] test\_claim\_earlyPayment\_interestOnly\_onTimePayment\_interestOnly() (gas: 710747) \[PASS] test\_claim\_latePayment\_interestOnly\_onTimePayment\_interestOnly() (gas: 734866) \[PASS] test\_claim\_onTimePayment\_interestOnly\_onTimePayment\_interestOnly() (gas: 707930) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 26.91ms (12.26ms CPU time)

Ran 6 tests for tests/MapleLoanManager.t.sol:SingleLoanAtomicClaimTests \[PASS] test\_claim\_earlyPayment\_amortized() (gas: 447371) \[PASS] test\_claim\_earlyPayment\_interestOnly() (gas: 439922) \[PASS] test\_claim\_latePayment\_amortized() (gas: 470153) \[PASS] test\_claim\_latePayment\_interestOnly() (gas: 462702) \[PASS] test\_claim\_onTimePayment\_amortized() (gas: 444599) \[PASS] test\_claim\_onTimePayment\_interestOnly() (gas: 437216) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 15.73ms (12.63ms CPU time)

Ran 2 tests for tests/MapleLoanManager.t.sol:ThreeLoanPastDomainEndClaimTests \[PASS] test\_claim\_loan1NotPaid\_loan2NotPaid\_loan3PaidLate() (gas: 411235) \[PASS] test\_claim\_loan3\_loan1NotPaid\_loan2NotPaid() (gas: 408747) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 15.25ms (5.42ms CPU time)

Ran 2 tests for tests/MapleLoanManager.t.sol:QueueNextPaymentTests \[PASS] testFuzz\_queueNextPayment\_fees(uint256,uint256) (runs: 256, μ: 214795, \~: 223454) \[PASS] test\_queueNextPayment\_fees() (gas: 182906) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 114.89ms (112.69ms CPU time)

\[PASS] testFuzz\_claim\_latePayment\_interestOnly(uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 1854099, \~: 1858350) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 416.77ms (410.22ms CPU time)

Ran 28 test suites in 440.91ms (795.37ms CPU time): 110 tests passed, 1 failed, 0 skipped (111 total tests)

## globals

Ran 3 tests for tests/GovernorTimelock/AcceptTokenWithdrawer.t.sol:AcceptTokenWithdrawerTests \[PASS] test\_acceptTokenWithdrawer\_revert\_notPendingTokenWithdrawer() (gas: 40612) \[PASS] test\_acceptTokenWithdrawer\_success() (gas: 35529) \[PASS] test\_deployment() (gas: 45168) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.38ms (430.40µs CPU time)

\[PASS] test\_deployment() (gas: 45145) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.66ms (300.18µs CPU time)

Ran 2 tests for tests/MapleGlobals.t.sol:TransferGovernorTests \[PASS] test\_acceptGovernor() (gas: 51092) \[PASS] test\_acceptGovernor\_notPendingGovernor() (gas: 16293) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.78ms (456.96µs CPU time)

Ran 4 tests for tests/MapleGlobals.t.sol:SetPlatformOriginationFeeRateTests \[PASS] test\_setPlatformOriginationFeeRate\_notAuthorized() (gas: 57711) \[PASS] test\_setPlatformOriginationFeeRate\_outOfBounds() (gas: 55567) \[PASS] test\_setPlatformOriginationFeeRate\_success\_governor() (gas: 50507) \[PASS] test\_setPlatformOriginationFeeRate\_success\_operational\_admin() (gas: 79708) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.22ms (704.02µs CPU time)

Ran 5 tests for tests/GovernorTimelock/SetDefaultTimelockParameters.t.sol:SetDefaultTimelockParametersTests \[PASS] test\_deployment() (gas: 45168) \[PASS] test\_setDefaultTimelockParameters\_revert\_invalidDelay() (gas: 12452) \[PASS] test\_setDefaultTimelockParameters\_revert\_invalidExecutionWindow() (gas: 12468) \[PASS] test\_setDefaultTimelockParameters\_revert\_notSelf() (gas: 9787) \[PASS] test\_setDefaultTimelockParameters\_success() (gas: 21926) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 2.22ms (796.29µs CPU time)

Ran 3 tests for tests/MapleGlobals.t.sol:SetValidBorrowerTests \[PASS] test\_setValidBorrower\_notAuthorized() (gas: 57407) \[PASS] test\_setValidBorrower\_success\_governor() (gas: 42256) \[PASS] test\_setValidBorrower\_success\_operationalAdmin() (gas: 79758) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.47ms (305.47µs CPU time)

Ran 2 tests for tests/MapleGlobals.t.sol:SetValidCollateralTests \[PASS] test\_setValidCollateral() (gas: 42197) \[PASS] test\_setValidCollateral\_notGovernor() (gas: 55240) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.46ms (322.45µs CPU time)

Ran 4 tests for tests/MapleGlobals.t.sol:SetPlatformServiceFeeRateTests \[PASS] test\_setPlatformServiceFeeRate\_notAuthorized() (gas: 57577) \[PASS] test\_setPlatformServiceFeeRate\_outOfBounds() (gas: 55432) \[PASS] test\_setPlatformServiceFeeRate\_success\_governor() (gas: 50529) \[PASS] test\_setPlatformServiceFeeRate\_success\_operationalAdmin() (gas: 79730) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.06ms (572.90µs CPU time)

Ran 4 tests for tests/MapleGlobals.t.sol:TransferOwnedPoolTests \[PASS] test\_transferOwnedPool() (gas: 74382) \[PASS] test\_transferOwnedPool\_alreadyOwns() (gas: 286162) \[PASS] test\_transferOwnedPool\_notPoolDelegate() (gas: 26491) \[PASS] test\_transferOwnedPool\_notPoolManager() (gas: 21659) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.75ms (720.00µs CPU time)

Ran 3 tests for tests/MapleGlobals.t.sol:SetCanDeployFromTests \[PASS] test\_setCanDeployFrom\_notAuthorized() (gas: 24097) \[PASS] test\_setCanDeployFrom\_success\_governor() (gas: 51684) \[PASS] test\_setCanDeployFrom\_success\_operationalAdmin() (gas: 88617) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 2.16ms (598.67µs CPU time)

Ran 3 tests for tests/MapleGlobals.t.sol:SetValidInstanceOfTests \[PASS] test\_setValidInstanceOf\_notAuthorized() (gas: 58309) \[PASS] test\_setValidInstanceOf\_success\_governor() (gas: 44086) \[PASS] test\_setValidInstanceOf\_success\_operationalAdmin() (gas: 81113) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.92ms (575.80µs CPU time)

Ran 5 tests for tests/GovernorTimelock/GovernorTimelockScenarios.t.sol:GovernorTimelockScenariosTests \[PASS] test\_deployment() (gas: 45190) \[PASS] test\_executeProposals\_revert\_unscheduledProposal() (gas: 98500) \[PASS] test\_proposeRoleUpdates\_unsuccessfulUnschedule() (gas: 109355) \[PASS] test\_setFunctionTimelockParameters\_respectsDelayOfFunction() (gas: 388223) \[PASS] test\_updateTimelockConfig\_success\_fullProposalCycle() (gas: 170017) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 4.67ms (2.83ms CPU time)

Ran 4 tests for tests/MapleGlobals.t.sol:SetPriceOracleTests \[PASS] test\_setPriceOracle() (gas: 55546) \[PASS] test\_setPriceOracle\_notGovernor() (gas: 22063) \[PASS] test\_setPriceOracle\_zeroAddressCheck() (gas: 46110) \[PASS] test\_setPriceOracle\_zeroTimeCheck() (gas: 24834) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.06ms (490.72µs CPU time)

Ran 6 tests for tests/MapleGlobals.t.sol:GetLatestPriceTests \[PASS] test\_getLatestPrice() (gas: 79036) \[PASS] test\_getLatestPrice\_manualOverride() (gas: 98140) \[PASS] test\_getLatestPrice\_oracleNotSet() (gas: 21410) \[PASS] test\_getLatestPrice\_roundNotComplete() (gas: 30122) \[PASS] test\_getLatestPrice\_stalePrice() (gas: 96392) \[PASS] test\_getLatestPrice\_zeroPrice() (gas: 53879) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 3.38ms (1.28ms CPU time)

Ran 3 tests for tests/MapleGlobals.t.sol:SetContractPauseTests \[PASS] test\_setContractPause\_asGovernor() (gas: 43413) \[PASS] test\_setContractPause\_asSecurityAdmin() (gas: 45229) \[PASS] test\_setContractPause\_notAuthorized() (gas: 21664) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 2.30ms (506.49µs CPU time)

Ran 5 tests for tests/MapleGlobals.t.sol:UnScheduleCallTests \[PASS] test\_unscheduleCall() (gas: 29441) \[PASS] test\_unscheduleCall\_asGovernor() (gas: 34316) \[PASS] test\_unscheduleCall\_asGovernor\_callDataMismatch() (gas: 32089) \[PASS] test\_unscheduleCall\_callDataMismatch() (gas: 27171) \[PASS] test\_unscheduleCall\_notGovernor() (gas: 20231) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 3.36ms (1.65ms CPU time)

Ran 2 tests for tests/MapleGlobals.t.sol:SetValidPoolAssetTests \[PASS] test\_setValidPoolAsset() (gas: 42178) \[PASS] test\_setValidPoolAsset\_notGovernor() (gas: 55282) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.62ms (330.84µs CPU time)

Ran 2 tests for tests/MapleGlobals.t.sol:SetDefaultTimelockParametersTests \[PASS] test\_setDefaultTimelockParameters() (gas: 47573) \[PASS] test\_setDefaultTimelockParameters\_notGovernor() (gas: 17478) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 2.02ms (223.19µs CPU time)

Ran 8 tests for tests/GovernorTimelock/SetFunctionTimelockParameters.t.sol:SetFunctionTimelockParametersTests \[PASS] test\_deployment() (gas: 45190) \[PASS] test\_setFunctionTimelockParameters\_resetToDefaults\_success() (gas: 41330) \[PASS] test\_setFunctionTimelockParameters\_revert\_invalidDefaultForDelay() (gas: 10636) \[PASS] test\_setFunctionTimelockParameters\_revert\_invalidDefaultForExecutionWindow() (gas: 10575) \[PASS] test\_setFunctionTimelockParameters\_revert\_invalidDelay() (gas: 15249) \[PASS] test\_setFunctionTimelockParameters\_revert\_invalidExecutionWindow() (gas: 15276) \[PASS] test\_setFunctionTimelockParameters\_revert\_notSelf() (gas: 12575) \[PASS] test\_setFunctionTimelockParameters\_success() (gas: 45507) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 8.84ms (7.20ms CPU time)

Ran 4 tests for tests/MapleGlobals.t.sol:SetValidPoolDelegate \[PASS] test\_setValidDeployer\_zeroAddress() (gas: 19972) \[PASS] test\_setValidPoolDelegate\_notAuthorized() (gas: 57553) \[PASS] test\_setValidPoolDelegate\_success\_governor() (gas: 42773) \[PASS] test\_setValidPoolDelegate\_success\_operationalAdmin() (gas: 80005) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 4.11ms (647.00µs CPU time)

Ran 3 tests for tests/MapleGlobals.t.sol:SetFunctionUnpauseTests \[PASS] test\_setContractPause\_asGovernor() (gas: 47780) \[PASS] test\_setContractPause\_asSecurityAdmin() (gas: 47996) \[PASS] test\_setContractPause\_notAuthorized() (gas: 24064) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 2.26ms (558.42µs CPU time)

Ran 7 tests for tests/MapleGlobals.t.sol:canDeployFromTests \[PASS] test\_canDeployFrom\_invalidFactoryAndCaller() (gas: 29969) \[PASS] test\_canDeployFrom\_poolManagerDeployingLoanManager() (gas: 104525) \[PASS] test\_canDeployFrom\_poolManagerDeployingLoanManager\_WithValidFactoryAndCallerSet() (gas: 136223) \[PASS] test\_canDeployFrom\_validBorrowerDeploying\_invalidFactoryInstance() (gas: 61321) \[PASS] test\_canDeployFrom\_validBorrowerDeploying\_validFactoryInstanceSet() (gas: 84862) \[PASS] test\_canDeployFrom\_validBorrowerDeploying\_withoutFactoryAndCallerSet() (gas: 90615) \[PASS] test\_canDeployFrom\_validFactoryAndCaller() (gas: 54970) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 4.56ms (1.58ms CPU time)

Ran 7 tests for tests/MapleGlobals.t.sol:ActivatePoolManagerTests \[PASS] test\_activatePoolManager\_alreadyOwns() (gas: 54737) \[PASS] test\_activatePoolManager\_invalidDelegate() (gas: 78896) \[PASS] test\_activatePoolManager\_invalidFactory() (gas: 71451) \[PASS] test\_activatePoolManager\_invalidInstance() (gas: 73119) \[PASS] test\_activatePoolManager\_notAuthorized() (gas: 58266) \[PASS] test\_activatePoolManager\_success\_governor() (gas: 53907) \[PASS] test\_activatePoolManager\_success\_operationalAdmin() (gas: 56109) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 6.77ms (1.76ms CPU time)

Ran 3 tests for tests/GovernorTimelock/SetPendingTokenWithdrawer.sol:SetPendingTokenWithdrawerTests \[PASS] test\_deployment() (gas: 45168) \[PASS] test\_setPendingTokenWithdrawer\_revert\_notTokenWithdrawer() (gas: 13747) \[PASS] test\_setPendingTokenWithdrawer\_success() (gas: 47241) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 2.55ms (930.80µs CPU time)

Ran 3 tests for tests/MapleGlobals.t.sol:SetProtocolPauseTests \[PASS] test\_setProtocolPause\_asGovernor() (gas: 33963) \[PASS] test\_setProtocolPause\_asSecurityAdmin() (gas: 34300) \[PASS] test\_setProtocolPause\_notAuthorized() (gas: 19139) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 7.93ms (482.23µs CPU time)

Ran 2 tests for tests/MapleGlobals.t.sol:SetManualOverridePriceTests \[PASS] test\_setManualOverridePrice() (gas: 310430) \[PASS] test\_setManualOverridePrice\_notGovernor() (gas: 55560) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 2.04ms (397.15µs CPU time)

Ran 3 tests for tests/MapleGlobals.t.sol:SetSecurityAdminTests \[PASS] test\_setSecurityAdmin() (gas: 49178) \[PASS] test\_setSecurityAdmin\_notGovernor() (gas: 19187) \[PASS] test\_setSecurityAdmin\_zeroAddressCheck() (gas: 19784) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.71ms (283.60µs CPU time)

Ran 10 tests for tests/GovernorTimelock/ExecuteProposals.t.sol:ExecuteProposalsTests \[PASS] test\_deployment() (gas: 45168) \[PASS] test\_executeProposals\_executionFailed() (gas: 294196) \[PASS] test\_executeProposals\_revert\_emptyArray() (gas: 15873) \[PASS] test\_executeProposals\_revert\_invalidData() (gas: 321804) \[PASS] test\_executeProposals\_revert\_invalidDataLength() (gas: 17754) \[PASS] test\_executeProposals\_revert\_invalidTargetsLength() (gas: 16903) \[PASS] test\_executeProposals\_revert\_notExecutable() (gas: 365428) \[PASS] test\_executeProposals\_revert\_notExecutor() (gas: 13176) \[PASS] test\_executeProposals\_revert\_notFound() (gas: 25131) \[PASS] test\_executeProposals\_success() (gas: 313971) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 16.09ms (14.34ms CPU time)

Ran 3 tests for tests/MapleGlobals.t.sol:SetValidPoolDeployer \[PASS] test\_setValidDeployer\_enablingNotAllowed() (gas: 22121) \[PASS] test\_setValidDeployer\_notGovernor() (gas: 19399) \[PASS] test\_setValidDeployer\_success() (gas: 25193) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 3.63ms (215.60µs CPU time)

Ran 3 tests for tests/MapleGlobals.t.sol:SetMapleTreasuryTests \[PASS] test\_setMapleTreasury() (gas: 49168) \[PASS] test\_setMapleTreasury\_notGovernor() (gas: 19119) \[PASS] test\_setMapleTreasury\_zeroAddressCheck() (gas: 19673) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.61ms (279.11µs CPU time)

Ran 4 tests for tests/MapleGlobals.t.sol:SetMaxCoverLiquidationPercentTests \[PASS] test\_setMaxCoverLiquidationPercent\_gt100() (gas: 55502) \[PASS] test\_setMaxCoverLiquidationPercent\_notAuthorized() (gas: 57579) \[PASS] test\_setMaxCoverLiquidationPercent\_success\_governor() (gas: 50373) \[PASS] test\_setMaxCoverLiquidationPercent\_success\_operationalAdmin() (gas: 79662) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.04ms (552.03µs CPU time)

Ran 2 tests for tests/MapleGlobals.t.sol:SetOperationalAdminTests \[PASS] test\_setOperationalAdmin() (gas: 49126) \[PASS] test\_setOperationalAdmin\_notGovernor() (gas: 19119) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.51ms (194.93µs CPU time)

Ran 2 tests for tests/MapleGlobals.t.sol:SetPendingGovernorTests \[PASS] test\_setPendingGovernor() (gas: 48704) \[PASS] test\_setPendingGovernor\_notGovernor() (gas: 19139) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.53ms (196.03µs CPU time)

Ran 4 tests for tests/MapleGlobals.t.sol:SetTimelockWindowTests \[PASS] test\_setTimelockWindow() (gas: 54440) \[PASS] test\_setTimelockWindow\_notGovernor() (gas: 20301) \[PASS] test\_setTimelockWindows() (gas: 91506) \[PASS] test\_setTimelockWindows\_notGovernor() (gas: 22958) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 3.14ms (712.81µs CPU time)

Ran 2 tests for tests/MapleGlobals.t.sol:SetMigrationAdminTests \[PASS] test\_setMigrationAdmin() (gas: 49209) \[PASS] test\_setMigrationAdmin\_notGovernor() (gas: 19162) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.50ms (173.46µs CPU time)

Ran 3 tests for tests/GovernorTimelock/UpdateRole.t.sol:UpdateRoleTests \[PASS] test\_deployment() (gas: 45190) \[PASS] test\_updateRole\_revert\_notSelf() (gas: 12011) \[PASS] test\_updateRole\_success() (gas: 37946) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 2.46ms (839.93µs CPU time)

\[PASS] test\_isValidScheduledCall() (gas: 90994) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 2.04ms (405.83µs CPU time)

Ran 3 tests for tests/MapleGlobals.t.sol:SetMinCoverAmountTests \[PASS] test\_setMinCoverAmount\_notAuthorized() (gas: 57639) \[PASS] test\_setMinCoverAmount\_success\_governor() (gas: 50347) \[PASS] test\_setMinCoverAmount\_success\_operationalAdmin() (gas: 79570) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.88ms (443.58µs CPU time)

Ran 5 tests for tests/GovernorTimelock/UnscheduleProposal.t.sol:UnscheduleProposalsTests \[PASS] test\_deployment() (gas: 45168) \[PASS] test\_unscheduleProposals\_revert\_notCanceller() (gas: 11825) \[PASS] test\_unscheduleProposals\_revert\_notUnschedulable() (gas: 176226) \[PASS] test\_unscheduleProposals\_revert\_proposalNotFound() (gas: 17175) \[PASS] test\_unscheduleProposals\_success() (gas: 289131) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 6.62ms (4.82ms CPU time)

Ran 4 tests for tests/GovernorTimelock/WithdrawERC20Token.t.sol:WithdrawERC20TokenTests \[PASS] test\_deployment() (gas: 45168) \[PASS] test\_withdrawERC20Token\_revert\_notTokenWithdrawer() (gas: 13872) \[PASS] test\_withdrawERC20Token\_revert\_transferFailed() (gas: 23345) \[PASS] test\_withdrawERC20Token\_success() (gas: 51794) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.01ms (524.47µs CPU time)

Ran 6 tests for tests/GovernorTimelock/ProposeRoleUpdates.t.sol:ProposeRoleUpdatesTests \[PASS] test\_deployment() (gas: 45168) \[PASS] test\_proposeRoleUpdates\_revert\_emptyArray() (gas: 15864) \[PASS] test\_proposeRoleUpdates\_revert\_invalidAccountsLength() (gas: 16938) \[PASS] test\_proposeRoleUpdates\_revert\_invalidShouldGrantLength() (gas: 17297) \[PASS] test\_proposeRoleUpdates\_revert\_notRoleAdmin() (gas: 13211) \[PASS] test\_proposeRoleUpdates\_success() (gas: 196970) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 8.17ms (4.12ms CPU time)

\[PASS] test\_isFunctionPaused() (gas: 256932) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 9.57ms (1.37ms CPU time)

Ran 4 tests for tests/MapleGlobals.t.sol:SetPlatformManagementFeeRateTests \[PASS] test\_setPlatformManagementFeeRate\_notAuthorized() (gas: 57736) \[PASS] test\_setPlatformManagementFeeRate\_outOfBounds() (gas: 55570) \[PASS] test\_setPlatformManagementFeeRate\_success\_governor() (gas: 50511) \[PASS] test\_setPlatformManagementFeeRate\_success\_operationalAdmin() (gas: 79711) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 4.27ms (648.80µs CPU time)

Ran 3 tests for tests/MapleGlobals.t.sol:SetBootstrapMintTests \[PASS] test\_setBootstrapMint\_notAuthorized() (gas: 57640) \[PASS] test\_setBootstrapMint\_success\_governor() (gas: 50410) \[PASS] test\_setBootstrapMint\_success\_operationalAdmin() (gas: 79632) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.82ms (578.19µs CPU time)

Ran 7 tests for tests/GovernorTimelock/ScheduleProposals.t.sol:ScheduleProposalsTests \[PASS] test\_deployment() (gas: 45190) \[PASS] test\_scheduleProposals\_revert\_arrayLengthMismatch() (gas: 16710) \[PASS] test\_scheduleProposals\_revert\_emptyArray() (gas: 15237) \[PASS] test\_scheduleProposals\_revert\_emptyTarget() (gas: 21390) \[PASS] test\_scheduleProposals\_revert\_notProposer() (gas: 12539) \[PASS] test\_scheduleProposals\_revert\_updateRoleNotAllowed() (gas: 191197) \[PASS] test\_scheduleProposals\_success() (gas: 385500) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 4.89ms (3.29ms CPU time)

Ran 10 tests for tests/MapleGlobals.t.sol:IsPoolDeployerTest \[PASS] test\_isPoolDeployer\_fixedTermLoanFactory\_deployerCanDeploy() (gas: 79356) \[PASS] test\_isPoolDeployer\_fixedTermLoanFactory\_deployerCannotDeploy() (gas: 58509) \[PASS] test\_isPoolDeployer\_fixedTermLoanFactory\_deployerIsPoolManager() (gas: 470261) \[PASS] test\_isPoolDeployer\_fixedTermLoanFactory\_poolManagerNotFromValidFactory() (gas: 449418) \[PASS] test\_isPoolDeployer\_fixedTermLoanFactory\_poolManagerNotInstance() (gas: 446083) \[PASS] test\_isPoolDeployer\_invalidFactory() (gas: 21731) \[PASS] test\_isPoolDeployer\_poolManagerFactory\_deployerCanDeploy() (gas: 81656) \[PASS] test\_isPoolDeployer\_poolManagerFactory\_deployerCannotDeploy() (gas: 60856) \[PASS] test\_isPoolDeployer\_withdrawalManagerFactory\_deployerCanDeploy() (gas: 83981) \[PASS] test\_isPoolDeployer\_withdrawalManagerFactory\_deployerCannotDeploy() (gas: 63204) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 5.30ms (5.44ms CPU time)

Ran 3 tests for tests/MapleGlobals.t.sol:ScheduleCallTests \[PASS] test\_scheduleCal\_overwrite() (gas: 82503) \[PASS] test\_scheduleCall() (gas: 69746) \[PASS] test\_scheduleCall\_defaultState() (gas: 19157) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 7.21ms (475.64µs CPU time)

Ran 47 test suites in 73.51ms (168.54ms CPU time): 181 tests passed, 0 failed, 0 skipped (181 total tests)

## open-term-loan

Ran 2 tests for tests/IsInDefault.t.sol:DefaultDatesTests \[PASS] test\_isInDefault\_successBoundary() (gas: 37730) \[PASS] test\_isInDefault\_zeroDefaultDate() (gas: 10353) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 885.73µs (172.00µs CPU time)

Ran 3 tests for tests/AcceptLender.t.sol:AcceptLenderTests \[PASS] test\_acceptLender\_notPendingLender() (gas: 48654) \[PASS] test\_acceptLender\_paused() (gas: 46191) \[PASS] test\_acceptLender\_success() (gas: 57255) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.49ms (454.68µs CPU time)

Ran 3 tests for tests/AcceptBorrower.t.sol:AcceptBorrowerTests \[PASS] test\_acceptBorrower\_notPendingBorrower() (gas: 48700) \[PASS] test\_acceptBorrower\_paused() (gas: 46171) \[PASS] test\_acceptBorrower\_success() (gas: 57205) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.50ms (437.73µs CPU time)

Ran 5 tests for tests/AcceptLoanTerms.t.sol:AcceptLoanTermsTests \[PASS] test\_acceptLoanTerms\_alreadyAccepted() (gas: 51466) \[PASS] test\_acceptLoanTerms\_notBorrower() (gas: 30608) \[PASS] test\_acceptLoanTerms\_paused() (gas: 46188) \[PASS] test\_acceptLoanTerms\_success\_asBorrower() (gas: 54182) \[PASS] test\_acceptLoanTerms\_success\_asBorrowerActions() (gas: 83840) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 2.03ms (643.93µs CPU time)

Ran 5 tests for tests/MakePayment.t.sol:MakePaymentFailureTests \[PASS] test\_makePayment\_insufficientForCalled() (gas: 107447) \[PASS] test\_makePayment\_insufficientForTotalTransferFromCaller() (gas: 1528232) \[PASS] test\_makePayment\_notFunded() (gas: 26551) \[PASS] test\_makePayment\_paused() (gas: 47580) \[PASS] test\_makePayment\_returningTooMuch() (gas: 86036) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 3.79ms (2.46ms CPU time)

Ran 7 tests for tests/Fund.t.sol:FundTests \[PASS] testFuzz\_fund\_success() (gas: 1615271) \[PASS] test\_fund\_loanActive() (gas: 54349) \[PASS] test\_fund\_loanClosed() (gas: 35145) \[PASS] test\_fund\_notLender() (gas: 25850) \[PASS] test\_fund\_paused() (gas: 46958) \[PASS] test\_fund\_revertingTransfer() (gas: 1521294) \[PASS] test\_fund\_termsNotAccepted() (gas: 30270) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 11.08ms (9.67ms CPU time)

Ran 4 tests for tests/AcceptNewTerms.t.sol:AcceptNewTerms \[PASS] test\_acceptNewTerms\_earlyRefinance() (gas: 448435) \[PASS] test\_acceptNewTerms\_principalDecrease() (gas: 462776) \[PASS] test\_acceptNewTerms\_principalDecreaseToZero() (gas: 450855) \[PASS] test\_acceptNewTerms\_principalIncrease() (gas: 483196) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 30.37ms (27.94ms CPU time)

Ran 7 tests for tests/AcceptNewTerms.t.sol:AcceptNewTermsFailure \[PASS] test\_acceptNewTerms\_expiredCommitmentBoundary() (gas: 3065516) \[PASS] test\_acceptNewTerms\_invalidRefinancer() (gas: 56353) \[PASS] test\_acceptNewTerms\_mismatchedCommitment() (gas: 37323) \[PASS] test\_acceptNewTerms\_notBorrower() (gas: 32449) \[PASS] test\_acceptNewTerms\_paused() (gas: 48030) \[PASS] test\_acceptNewTerms\_refinancerRevert() (gas: 101411) \[PASS] test\_acceptNewTerms\_transferRevert() (gas: 1307795) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 3.58ms (1.97ms CPU time)

Ran 3 tests for tests/AcceptNewTerms.t.sol:AcceptNewTermsPrincipalChangeTests \[PASS] test\_acceptNewTerms\_payInterestAndIncreasePrincipalForBorrower() (gas: 479092) \[PASS] test\_acceptNewTerms\_payInterestWithExactPrincipalIncrease() (gas: 439815) \[PASS] test\_acceptNewTerms\_payInterestWithSingleWeiFromBorrower() (gas: 465431) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 21.24ms (19.16ms CPU time)

\[PASS] testFuzz\_defaultDates(uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 75359, \~: 75768) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 167.29ms (166.57ms CPU time)

Ran 4 tests for tests/Getter.t.sol:GetterTests \[PASS] test\_factory\_getter() (gas: 10390) \[PASS] test\_globals\_getter() (gas: 16099) \[PASS] test\_isCalled\_getter() (gas: 30978) \[PASS] test\_isImpaied\_getter() (gas: 31028) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 1.59ms (266.82µs CPU time)

Ran 5 tests for tests/SetPendingBorrower.t.sol:SetPendingBorrowerTests \[PASS] test\_setPendingBorrower\_invalidBorrower() (gas: 35821) \[PASS] test\_setPendingBorrower\_notBorrower() (gas: 33388) \[PASS] test\_setPendingBorrower\_paused() (gas: 48992) \[PASS] test\_setPendingBorrower\_success\_asBorrowerActions() (gas: 113092) \[PASS] test\_setPendingBorrower\_success\_asCurrentBorrower() (gas: 85328) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 5.23ms (893.80µs CPU time)

Ran 3 tests for tests/SetPendingLender.t.sol:SetPendingLenderTests \[PASS] test\_setPendingLender\_notLender() (gas: 27797) \[PASS] test\_setPendingLender\_paused() (gas: 48858) \[PASS] test\_setPendingLender\_success() (gas: 77832) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.61ms (364.34µs CPU time)

Ran 7 tests for tests/Skim.t.sol:SkimTests \[PASS] test\_skim\_borrower() (gas: 1484553) \[PASS] test\_skim\_governor() (gas: 1482416) \[PASS] test\_skim\_noTokenToSkim() (gas: 1334560) \[PASS] test\_skim\_notBorrower() (gas: 31226) \[PASS] test\_skim\_paused() (gas: 32445) \[PASS] test\_skim\_revertingToken() (gas: 1411761) \[PASS] test\_skim\_zeroAddress() (gas: 24154) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 7.22ms (5.24ms CPU time)

Ran 4 tests for tests/Upgrade.t.sol:UpgradeTests \[PASS] test\_upgrade\_noAuth() (gas: 28661) \[PASS] test\_upgrade\_noAuth\_asBorrower() (gas: 31292) \[PASS] test\_upgrade\_paused() (gas: 49820) \[PASS] test\_upgrade\_success\_asSecurityAdmin() (gas: 234737) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.64ms (1.19ms CPU time)

\[PASS] test\_migrate\_success() (gas: 54203) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.19ms (182.37µs CPU time)

Ran 7 tests for tests/ProposeNewTerms.t.sol:ProposeNewTermsTests \[PASS] test\_proposeNewTerms\_deadlineBoundary() (gas: 113070) \[PASS] test\_proposeNewTerms\_emptyCalls() (gas: 63920) \[PASS] test\_proposeNewTerms\_invalidRefinancer() (gas: 39638) \[PASS] test\_proposeNewTerms\_notFunded() (gas: 33631) \[PASS] test\_proposeNewTerms\_notLender() (gas: 26902) \[PASS] test\_proposeNewTerms\_paused() (gas: 48009) \[PASS] test\_proposeNewTerms\_success() (gas: 116203) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 3.06ms (1.56ms CPU time)

Ran 4 tests for tests/RemoveCall.t.sol:RemoveCallTests \[PASS] testFuzz\_removeCall\_success(uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 107792, \~: 108512) \[PASS] test\_removeCall\_notCalled() (gas: 30471) \[PASS] test\_removeCall\_notLender() (gas: 25614) \[PASS] test\_removeCall\_paused() (gas: 46720) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 196.21ms (194.82ms CPU time)

\[PASS] testFuzz\_dueDates(uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 70122, \~: 70365) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 222.18ms (221.47ms CPU time)

Ran 11 tests for tests/GetPaymentBreakdown.t.sol:GetPaymentBreakdownTests \[PASS] testFuzz\_getPaymentBreakdown(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 295774, \~: 286969) \[PASS] test\_getPaymentBreakdown\_fixture1() (gas: 206354) \[PASS] test\_getPaymentBreakdown\_fixture10() (gas: 119261) \[PASS] test\_getPaymentBreakdown\_fixture2() (gas: 206105) \[PASS] test\_getPaymentBreakdown\_fixture3() (gas: 182205) \[PASS] test\_getPaymentBreakdown\_fixture4() (gas: 216371) \[PASS] test\_getPaymentBreakdown\_fixture5() (gas: 205290) \[PASS] test\_getPaymentBreakdown\_fixture6() (gas: 206778) \[PASS] test\_getPaymentBreakdown\_fixture7() (gas: 206960) \[PASS] test\_getPaymentBreakdown\_fixture8() (gas: 207011) \[PASS] test\_getPaymentBreakdown\_fixture9() (gas: 118981) Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 243.72ms (242.78ms CPU time)

Ran 6 tests for tests/RejectNewTerms.t.sol:RejectNewTermsTests \[PASS] test\_rejectNewTerms\_mismatchedCommitment() (gas: 34615) \[PASS] test\_rejectNewTerms\_notBorrowerNorLender() (gas: 36724) \[PASS] test\_rejectNewTerms\_paused() (gas: 50099) \[PASS] test\_rejectNewTerms\_success\_asBorrower() (gas: 47689) \[PASS] test\_rejectNewTerms\_success\_asBorrowerActions() (gas: 77427) \[PASS] test\_rejectNewTerms\_success\_asLender() (gas: 55335) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 3.05ms (1.18ms CPU time)

Ran 6 tests for tests/Repossess.t.sol:RepossessTests \[PASS] test\_repossess\_notInDefault() (gas: 57125) \[PASS] test\_repossess\_notLender() (gas: 28094) \[PASS] test\_repossess\_paused() (gas: 49155) \[PASS] test\_repossess\_revertingToken() (gas: 1428999) \[PASS] test\_repossess\_success() (gas: 1621055) \[PASS] test\_repossess\_success\_noTransfer() (gas: 1474883) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 11.63ms (9.59ms CPU time)

Ran 3 tests for tests/SetImplementation.t.sol:SetImplementationTests \[PASS] test\_setImplementation\_notFactory() (gas: 23720) \[PASS] test\_setImplementation\_paused() (gas: 46810) \[PASS] test\_setImplementation\_success() (gas: 93403) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.26ms (313.99µs CPU time)

Ran 4 tests for tests/Impair.t.sol:ImpairTests \[PASS] testFuzz\_impair\_success(uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 105918, \~: 106477) \[PASS] test\_impair\_loanNotFunded() (gas: 30539) \[PASS] test\_impair\_notLender() (gas: 25614) \[PASS] test\_impair\_paused() (gas: 46743) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 262.08ms (260.74ms CPU time)

Ran 3 tests for tests/Migrate.t.sol:MigrateTests \[PASS] test\_migrate\_notFactory() (gas: 24454) \[PASS] test\_migrate\_paused() (gas: 47455) \[PASS] test\_migrate\_success() (gas: 71013) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.37ms (367.13µs CPU time)

Ran 11 tests for tests/Initializer.t.sol:InitializerTests \[PASS] test\_initialize\_differentFundsAsset() (gas: 115879) \[PASS] test\_initialize\_invalidBorrower() (gas: 57213) \[PASS] test\_initialize\_invalidFundsAsset() (gas: 60950) \[PASS] test\_initialize\_invalidLenderFactory() (gas: 1760572) \[PASS] test\_initialize\_invalidLenderFactoryInstance() (gas: 1790211) \[PASS] test\_initialize\_invalidNoticePeriod() (gas: 22386) \[PASS] test\_initialize\_invalidPaymentInterval() (gas: 22435) \[PASS] test\_initialize\_invalidPrincipal() (gas: 22274) \[PASS] test\_initialize\_success() (gas: 301929) \[PASS] test\_initialize\_zeroBorrower() (gas: 28478) \[PASS] test\_initialize\_zeroLender() (gas: 60694) Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 7.67ms (4.34ms CPU time)

Ran 6 tests for tests/CallPrincipal.t.sol:CallPrincipalTests \[PASS] testFuzz\_callPrincipal\_success(uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 137506, \~: 138147) \[PASS] test\_callPrincipal\_insufficientPrincipalToReturn() (gas: 52434) \[PASS] test\_callPrincipal\_loanNotFunded() (gas: 30993) \[PASS] test\_callPrincipal\_notLender() (gas: 26067) \[PASS] test\_callPrincipal\_paused() (gas: 47151) \[PASS] test\_callPrincipal\_principalToReturnBoundary() (gas: 106826) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 312.89ms (312.50ms CPU time)

Ran 4 tests for tests/RemoveImpairment.t.sol:RemoveImpairmentTests \[PASS] testFuzz\_removeImpairment\_success(uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 103019, \~: 103593) \[PASS] test\_removeImpairment\_notImpaired() (gas: 30536) \[PASS] test\_removeImpairment\_notLender() (gas: 25634) \[PASS] test\_removeImpairment\_paused() (gas: 46719) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 228.19ms (227.28ms CPU time)

Ran 2 tests for tests/Factory.t.sol:FactoryTests \[PASS] test\_createInstance(bytes32) (runs: 256, μ: 442869, \~: 442869) \[PASS] test\_createInstance\_cannotDeploy(bytes32) (runs: 256, μ: 44453, \~: 44453) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 799.96ms (435.14ms CPU time)

Ran 10 tests for tests/Refinancer.t.sol:RefinancerTests \[PASS] test\_refinancer\_decreasePrincipal(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 144680, \~: 146339) \[PASS] test\_refinancer\_increasePrincipal(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 144358, \~: 146222) \[PASS] test\_refinancer\_multipleCalls\_refinance(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 176963, \~: 177900) \[PASS] test\_refinancer\_setDelegateServiceFeeRate(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 143063, \~: 144773) \[PASS] test\_refinancer\_setGracePeriod(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 143160, \~: 145005) \[PASS] test\_refinancer\_setInterestRate(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 144498, \~: 146400) \[PASS] test\_refinancer\_setLateFeeRate(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 144066, \~: 145312) \[PASS] test\_refinancer\_setLateInterestPremiumRate(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 144281, \~: 146209) \[PASS] test\_refinancer\_setNoticePeriod(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 144919, \~: 146550) \[PASS] test\_refinancer\_setPaymentInterval(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (runs: 256, μ: 144594, \~: 146263) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 605.89ms (2.94s CPU time)

\[PASS] testFuzz\_makePayment(uint256,uint256,uint256,uint256) (runs: 256, μ: 564617, \~: 572090) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 876.36ms (864.85ms CPU time)

Ran 31 test suites in 882.81ms (4.04s CPU time): 143 tests passed, 0 failed, 0 skipped (143 total tests)

## open-term-loan-manager

Ran 4 tests for tests/Call.t.sol:CallPrincipalTests \[PASS] test\_callPrincipal\_notLoan() (gas: 36801) \[PASS] test\_callPrincipal\_notPoolDelegate() (gas: 33939) \[PASS] test\_callPrincipal\_paused() (gas: 49258) \[PASS] test\_callPrincipal\_success() (gas: 219567) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 2.12ms (655.13µs CPU time)

Ran 6 tests for tests/DistributeLiquidationFunds.t.sol:DistributeLiquidationFundsFailureTests \[PASS] test\_distributeLiquidationFunds\_transferBorrower() (gas: 62615) \[PASS] test\_distributeLiquidationFunds\_transferPool() (gas: 96332) \[PASS] test\_distributeLiquidationFunds\_transferTreasury() (gas: 135887) \[PASS] test\_distributeLiquidationFunds\_zeroBorrower() (gas: 31964) \[PASS] test\_distributeLiquidationFunds\_zeroPool() (gas: 63616) \[PASS] test\_distributeLiquidationFunds\_zeroTreasury() (gas: 103186) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 3.29ms (1.24ms CPU time)

Ran 3 tests for tests/ImpairLoan.t.sol:ImpairLoanLimitTests \[PASS] test\_impairLoan\_accountedInterestLimit() (gas: 334688) \[PASS] test\_impairLoan\_impairmentDateLimit() (gas: 276295) \[PASS] test\_impairLoan\_unrealizedLossesLimit() (gas: 321500) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 3.63ms (1.74ms CPU time)

Ran 4 tests for tests/Call.t.sol:RemoveCallTests \[PASS] test\_removeCall\_notLoan() (gas: 36510) \[PASS] test\_removeCall\_notPoolDelegate() (gas: 33647) \[PASS] test\_removeCall\_paused() (gas: 49012) \[PASS] test\_removeCall\_success() (gas: 163392) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 3.15ms (569.69µs CPU time)

Ran 4 tests for tests/ImpairLoan.t.sol:ImpairLoanSuccessTests \[PASS] test\_impairLoan\_acl\_governor() (gas: 86453) \[PASS] test\_impairLoan\_acl\_poolDelegate() (gas: 94367) \[PASS] test\_impairLoan\_success() (gas: 237556) \[PASS] test\_impairLoan\_success\_alreadyImpaired() (gas: 301460) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 5.36ms (3.32ms CPU time)

Ran 7 tests for tests/Claim.t.sol:ClaimFailureTests \[PASS] test\_claim\_invalidState1() (gas: 61971) \[PASS] test\_claim\_invalidState2() (gas: 61982) \[PASS] test\_claim\_invalidState3() (gas: 62006) \[PASS] test\_claim\_invalidState4() (gas: 85800) \[PASS] test\_claim\_notLoan() (gas: 29726) \[PASS] test\_claim\_notPaused() (gas: 30908) \[PASS] test\_claim\_reentrancy() (gas: 210) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 3.11ms (1.01ms CPU time)

Ran 6 tests for tests/CreateInstance.t.sol:CreateInstanceTests \[PASS] test\_createInstance\_cannotDeploy() (gas: 20830) \[PASS] test\_createInstance\_invalidFactory() (gas: 208565) \[PASS] test\_createInstance\_invalidInstance() (gas: 214446) \[PASS] test\_createInstance\_revertIfCollision() (gas: 1040439035) \[PASS] test\_createInstance\_revertIfnotPool() (gas: 193001) \[PASS] test\_createInstance\_success() (gas: 301735) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 6.77ms (2.69ms CPU time)

Ran 9 tests for tests/Fund.t.sol:FundFailureTests \[PASS] test\_fund\_failedApproval() (gas: 305098) \[PASS] test\_fund\_fundingMismatch() (gas: 249481) \[PASS] test\_fund\_inactiveLoan() (gas: 137835) \[PASS] test\_fund\_invalidBorrower() (gas: 111961) \[PASS] test\_fund\_invalidFactory() (gas: 52687) \[PASS] test\_fund\_invalidLoan() (gas: 85086) \[PASS] test\_fund\_notPoolDelegate() (gas: 36527) \[PASS] test\_fund\_paused() (gas: 46877) \[PASS] test\_fund\_reentrancy() (gas: 3063037) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 7.14ms (5.29ms CPU time)

Ran 4 tests for tests/RejectNewTerms.t.sol:RejectNewTermsTests \[PASS] test\_rejectNewTerms\_notLoan() (gas: 37807) \[PASS] test\_rejectNewTerms\_notPoolDelegate() (gas: 34945) \[PASS] test\_rejectNewTerms\_paused() (gas: 50263) \[PASS] test\_rejectNewTerms\_success() (gas: 370039) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 11.18ms (9.47ms CPU time)

Ran 6 tests for tests/DistributeClaimedFunds.t.sol:DistributeClaimedFundsFailureTests \[PASS] test\_distributeClaimFunds\_platformTransfer() (gas: 114619) \[PASS] test\_distributeClaimFunds\_poolTransfer() (gas: 66853) \[PASS] test\_distributeClaimFunds\_zeroDelegate() (gas: 74958) \[PASS] test\_distributeClaimFunds\_zeroPool() (gas: 34186) \[PASS] test\_distributeClaimFunds\_zeroPoolDelegate() (gas: 61369) \[PASS] test\_distributeClaimFunds\_zeroTreasury() (gas: 81969) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 7.54ms (1.26ms CPU time)

Ran 4 tests for tests/RemoveLoanImpairment.t.sol:RemoveLoanImpairmentFailureTests \[PASS] test\_removeLoanImpairment\_noAuth() (gas: 109665) \[PASS] test\_removeLoanImpairment\_notLoan() (gas: 30665) \[PASS] test\_removeLoanImpairment\_paused() (gas: 31780) \[PASS] test\_removeLoanImpairment\_poolDelegateAfterGovernor() (gas: 104416) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 9.18ms (6.26ms CPU time)

Ran 4 tests for tests/ProposeNewTerms.t.sol:ProposeNewTermsTests \[PASS] test\_proposeNewTerms\_notLoan() (gas: 40572) \[PASS] test\_proposeNewTerms\_notPoolDelegate() (gas: 37665) \[PASS] test\_proposeNewTerms\_paused() (gas: 53073) \[PASS] test\_proposeNewTerms\_success() (gas: 370106) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 3.40ms (1.61ms CPU time)

Ran 3 tests for tests/RemoveLoanImpairment.t.sol:RemoveLoanImpairmentSuccessTests \[PASS] test\_removeLoanImpairment\_acl\_governor\_success() (gas: 86417) \[PASS] test\_removeLoanImpairment\_success() (gas: 232231) \[PASS] test\_removeLoanImpairment\_success\_alreadyUnimpaired() (gas: 298844) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 9.12ms (2.43ms CPU time)

Ran 3 tests for tests/ImpairLoan.t.sol:ImpairLoanFailureTests \[PASS] test\_impairLoan\_notLoan() (gas: 30688) \[PASS] test\_impairLoan\_notPoolDelegateOrGovernor() (gas: 62776) \[PASS] test\_impairLoan\_paused() (gas: 31824) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 9.54ms (407.08µs CPU time)

Ran 3 tests for tests/TriggerDefault.t.sol:TriggerDefaultFailureTests \[PASS] test\_triggerDefault\_notLoan() (gas: 29045) \[PASS] test\_triggerDefault\_notPoolDelegate() (gas: 52388) \[PASS] test\_triggerDefault\_paused() (gas: 47303) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 5.91ms (372.22µs CPU time)

Ran 2 tests for tests/TriggerDefault.t.sol:TriggerDefaultSuccessTests \[PASS] test\_triggerDefault\_success\_impaired() (gas: 127694) \[PASS] test\_triggerDefault\_success\_notImpaired() (gas: 144035) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 8.73ms (1.79ms CPU time)

Ran 5 tests for tests/Upgrade.t.sol:UpgradeTests \[PASS] test\_upgrade\_noAuth() (gas: 36587) \[PASS] test\_upgrade\_notScheduled() (gas: 38973) \[PASS] test\_upgrade\_paused() (gas: 47166) \[PASS] test\_upgrade\_success\_asPoolDelegate() (gas: 267440) \[PASS] test\_upgrade\_success\_asSecurityAdmin() (gas: 242666) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 7.32ms (1.85ms CPU time)

\[PASS] testFuzz\_updateUnrealizedLosses(uint256,int256) (runs: 256, μ: 44652, \~: 45552) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 77.25ms (76.22ms CPU time)

Ran 10 tests for tests/Claim.t.sol:ClaimTests \[PASS] test\_claim() (gas: 292994) \[PASS] test\_claim\_closingLoan() (gas: 254851) \[PASS] test\_claim\_impaired() (gas: 296699) \[PASS] test\_claim\_impaired\_requestingPrincipal() (gas: 369089) \[PASS] test\_claim\_impaired\_returningPrincipal() (gas: 334817) \[PASS] test\_claim\_payInterestWithPrincipalIncrease\_exactAmount() (gas: 341478) \[PASS] test\_claim\_payInterestWithPrincipalIncrease\_oneWeiExtra() (gas: 391956) \[PASS] test\_claim\_requestingPrincipalIncrease() (gas: 391921) \[PASS] test\_claim\_returnMorePrincipal() (gas: 294676) \[PASS] test\_claim\_returningPrincipal() (gas: 306530) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 97.78ms (23.24ms CPU time)

\[PASS] testFuzz\_updatePrincipalOut(uint256,int256) (runs: 256, μ: 44598, \~: 45406) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 89.19ms (88.52ms CPU time)

\[PASS] testFuzz\_updateInterestAccounting(uint256,uint256,uint256,int256,int256) (runs: 256, μ: 89190, \~: 89181) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 140.81ms (140.00ms CPU time)

\[PASS] testFuzz\_distributeLiquidationFunds(uint256,uint256,uint256,uint256) (runs: 256, μ: 169821, \~: 166179) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 184.97ms (174.79ms CPU time)

\[PASS] testFuzz\_distributeClaimFunds(int256,uint256,uint256,uint256,bool) (runs: 256, μ: 187628, \~: 180805) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 197.30ms (195.27ms CPU time)

Ran 5 tests for tests/Fund.t.sol:FundSuccessTests \[PASS] testFuzz\_fund\_multipleLoans(uint256) (runs: 256, μ: 75219957, \~: 73863533) \[PASS] test\_fund\_managementFeeRateLimits() (gas: 3269304) \[PASS] test\_fund\_paymentIssuanceRateLimit() (gas: 3356610) \[PASS] test\_fund\_principalLimit() (gas: 3463308) \[PASS] test\_fund\_startDateAndDomainStartLimit() (gas: 3390474) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 5.06s (5.07s CPU time)

Ran 24 test suites in 5.08s (5.96s CPU time): 97 tests passed, 0 failed, 0 skipped (97 total tests)

## pool

Ran 3 tests for tests/MaplePool.t.sol:ConstructorTests \[PASS] test\_constructor\_invalidApproval() (gas: 6027789) \[PASS] test\_constructor\_invalidDecimals() (gas: 5934729) \[PASS] test\_constructor\_zeroManager() (gas: 5509190) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 4.71ms (3.15ms CPU time)

Ran 3 tests for tests/MaplePoolManager.t.sol:DepositCoverTests \[PASS] test\_depositCover\_insufficientApproval() (gas: 109188) \[PASS] test\_depositCover\_paused() (gas: 51524) \[PASS] test\_depositCover\_success() (gas: 94787) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 7.03ms (1.01ms CPU time)

Ran 6 tests for tests/MaplePoolManager.t.sol:UpgradeTests \[PASS] test\_upgrade\_noAuth() (gas: 35289) \[PASS] test\_upgrade\_notScheduled() (gas: 37596) \[PASS] test\_upgrade\_paused() (gas: 51998) \[PASS] test\_upgrade\_successWithPoolDelegate() (gas: 103678) \[PASS] test\_upgrade\_successWithSecurityAdmin() (gas: 100271) \[PASS] test\_upgrade\_upgradeFailed() (gas: 94539) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 10.30ms (2.67ms CPU time)

Ran 3 tests for tests/MaplePoolManager.t.sol:SetImplementationTests \[PASS] test\_setImplementation\_notFactory() (gas: 30457) \[PASS] test\_setImplementation\_paused() (gas: 53650) \[PASS] test\_setImplementation\_success() (gas: 40907) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 10.74ms (464.13µs CPU time)

Ran 6 tests for tests/MaplePoolManager.t.sol:SetIsStrategy\_SetterTests \[PASS] test\_setIsStrategy\_invalidLM() (gas: 720609) \[PASS] test\_setIsStrategy\_notPoolDelegate() (gas: 41664) \[PASS] test\_setIsStrategy\_paused() (gas: 53929) \[PASS] test\_setIsStrategy\_successWithPoolDelegate() (gas: 60972) \[PASS] test\_setIsStrategy\_success\_asGovernor() (gas: 67804) \[PASS] test\_setIsStrategy\_success\_asOperationalAdmin() (gas: 74634) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 8.75ms (1.66ms CPU time)

Ran 7 tests for tests/MaplePoolManager.t.sol:WithdrawCoverTests \[PASS] test\_withdrawCover\_noRequirement() (gas: 97315) \[PASS] test\_withdrawCover\_notPoolDelegate() (gas: 157700) \[PASS] test\_withdrawCover\_paused() (gas: 54737) \[PASS] test\_withdrawCover\_success() (gas: 151779) \[PASS] test\_withdrawCover\_success\_zeroRecipient() (gas: 151612) \[PASS] test\_withdrawCover\_tryWithdrawBelowRequired() (gas: 200456) \[PASS] test\_withdrawCover\_withdrawMoreThanBalance() (gas: 83424) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 12.72ms (2.55ms CPU time)

Ran 10 tests for tests/MaplePoolManager.t.sol:FinishCollateralLiquidation \[PASS] test\_finishCollateralLiquidation\_notAuthorized() (gas: 208697) \[PASS] test\_finishCollateralLiquidation\_paused() (gas: 36639) \[PASS] test\_finishCollateralLiquidation\_success\_coverLeftOver() (gas: 282420) \[PASS] test\_finishCollateralLiquidation\_success\_exceedMaxCoverLiquidationPercentAmount() (gas: 279117) \[PASS] test\_finishCollateralLiquidation\_success\_fullCoverLiquidation\_preexistingLoss() (gas: 283947) \[PASS] test\_finishCollateralLiquidation\_success\_noCoverLeftOver() (gas: 262497) \[PASS] test\_finishCollateralLiquidation\_success\_noCover\_asGovernor() (gas: 244105) \[PASS] test\_finishCollateralLiquidation\_success\_noCover\_asOperationalAdmin() (gas: 252404) \[PASS] test\_finishCollateralLiquidation\_success\_noCover\_asPoolDelegate() (gas: 237140) \[PASS] test\_finishCollateralLiquidation\_success\_noRemainingLossAfterCollateralLiquidation() (gas: 246062) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 18.75ms (9.01ms CPU time)

Ran 6 tests for tests/MaplePoolManager.t.sol:SetLiquidityCap\_SetterTests \[PASS] test\_setLiquidityCap\_notPoolDelegate() (gas: 46154) \[PASS] test\_setLiquidityCap\_paused() (gas: 54278) \[PASS] test\_setLiquidityCap\_success\_asGovernor() (gas: 66844) \[PASS] test\_setLiquidityCap\_success\_asOperationalAdmin() (gas: 72386) \[PASS] test\_setLiquidityCap\_success\_asPoolDelegate() (gas: 64138) \[PASS] test\_setLiquidityCap\_success\_whenNotConfigured() (gas: 52084) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 11.67ms (3.92ms CPU time)

Ran 7 tests for tests/MaplePoolManagerFactory.t.sol:PoolManagerFactoryFailureTest \[PASS] test\_createInstance\_failWithActivePoolDelegate() (gas: 268952) \[PASS] test\_createInstance\_failWithDisallowedAsset() (gas: 250599) \[PASS] test\_createInstance\_failWithInvalidPoolDelegate() (gas: 239071) \[PASS] test\_createInstance\_failWithNonERC20Asset() (gas: 246529) \[PASS] test\_createInstance\_failWithZeroAddressPoolDelegate() (gas: 195499) \[PASS] test\_createInstance\_failWithZeroAdmin() (gas: 5201197) \[PASS] test\_createInstance\_notPoolDeployer() (gas: 4904692) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 13.41ms (5.98ms CPU time)

Ran 5 tests for tests/MaplePoolManager.t.sol:HandleCoverTests \[PASS] test\_handleCover\_feesAndSomeLosses() (gas: 126670) \[PASS] test\_handleCover\_fullCoverage() (gas: 146582) \[PASS] test\_handleCover\_halfCoverage() (gas: 153452) \[PASS] test\_handleCover\_noCover() (gas: 67529) \[PASS] test\_handleCover\_onlyFees() (gas: 114749) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 9.34ms (2.67ms CPU time)

Ran 5 tests for tests/MaplePoolManager.t.sol:SetPendingPoolDelegate\_SetterTests \[PASS] test\_setPendingPoolDelegate\_asGovernor\_success() (gas: 66408) \[PASS] test\_setPendingPoolDelegate\_asOperationalAdmin\_success() (gas: 71861) \[PASS] test\_setPendingPoolDelegate\_asPoolDelegate\_success() (gas: 61887) \[PASS] test\_setPendingPoolDelegate\_notPoolDelegateOrProtocolAdmins() (gas: 41362) \[PASS] test\_setPendingPoolDelegate\_paused() (gas: 56294) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 10.48ms (1.25ms CPU time)

Ran 5 tests for tests/MaplePoolManager.t.sol:SetWithdrawalManager\_SetterTests \[PASS] test\_setWithdrawalManager\_configured() (gas: 37274) \[PASS] test\_setWithdrawalManager\_invalidFactory() (gas: 72838) \[PASS] test\_setWithdrawalManager\_invalidInstance() (gas: 52003) \[PASS] test\_setWithdrawalManager\_paused() (gas: 56404) \[PASS] test\_setWithdrawalManager\_success\_asPoolDelegate() (gas: 52089) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 9.72ms (1.11ms CPU time)

\[PASS] test\_createInstance() (gas: 5010625) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 13.18ms (5.77ms CPU time)

Ran 6 tests for tests/MaplePoolManager.t.sol:TriggerDefault \[PASS] test\_triggerDefault\_invalidFactory() (gas: 117070) \[PASS] test\_triggerDefault\_notAuthorized() (gas: 48967) \[PASS] test\_triggerDefault\_paused() (gas: 41742) \[PASS] test\_triggerDefault\_success\_asGovernor() (gas: 85794) \[PASS] test\_triggerDefault\_success\_asOperationalAdmin() (gas: 93798) \[PASS] test\_triggerDefault\_success\_asPoolDelegate() (gas: 81376) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 14.78ms (4.19ms CPU time)

Ran 2 tests for tests/MaplePoolManagerMigrator.t.sol:MaplePoolManagerMigratorTests \[PASS] test\_migrator\_failure() (gas: 99097) \[PASS] test\_migrator\_success() (gas: 157785) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 20.97ms (1.41ms CPU time)

Ran 4 tests for tests/MaplePoolManager.t.sol:MaxDepositTests \[PASS] test\_maxDeposit\_liquidityCap() (gas: 196685) \[PASS] test\_maxDeposit\_liquidityCap(address,address,uint256,uint256) (runs: 256, μ: 136313, \~: 136425) \[PASS] test\_maxDeposit\_withPermission() (gas: 89205) \[PASS] test\_maxDeposit\_withoutPermission() (gas: 81430) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 159.85ms (150.92ms CPU time)

Ran 7 tests for tests/MaplePool.t.sol:ConvertToAssetsTests \[PASS] testFuzz\_convertToAssets(uint256,uint256,uint256) (runs: 256, μ: 188632, \~: 189249) \[PASS] test\_convertToAssets\_decreasedExchangeRate() (gas: 183675) \[PASS] test\_convertToAssets\_increasedExchangeRate() (gas: 183676) \[PASS] test\_convertToAssets\_initialExchangeRate() (gas: 183631) \[PASS] test\_convertToAssets\_initialState() (gas: 23222) \[PASS] test\_convertToAssets\_prematureYield() (gas: 43166) \[PASS] test\_convertToAssets\_worthlessShares() (gas: 163751) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 248.42ms (239.23ms CPU time)

Ran 7 tests for tests/MaplePool.t.sol:PreviewMintTests \[PASS] testFuzz\_previewMint(uint256,uint256,uint256) (runs: 256, μ: 192356, \~: 193578) \[PASS] test\_previewMint\_decreasedExchangeRate() (gas: 184987) \[PASS] test\_previewMint\_increasedExchangeRate() (gas: 184987) \[PASS] test\_previewMint\_initialExchangeRate() (gas: 185032) \[PASS] test\_previewMint\_initialState() (gas: 23368) \[PASS] test\_previewMint\_prematureYield() (gas: 43247) \[PASS] test\_previewMint\_worthlessShares() (gas: 165063) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 270.07ms (264.88ms CPU time)

Ran 8 tests for tests/MaplePool.t.sol:RedeemTests \[PASS] test\_redeem\_checkCall() (gas: 83076) \[PASS] test\_redeem\_insufficientAmount() (gas: 66669) \[PASS] test\_redeem\_insufficientApprove() (gas: 142433) \[PASS] test\_redeem\_reentrancy() (gas: 145936) \[PASS] test\_redeem\_success() (gas: 140985) \[PASS] test\_redeem\_success\_differentUser() (gas: 176995) \[PASS] test\_redeem\_zeroAssets() (gas: 98332) \[PASS] test\_redeem\_zeroShares() (gas: 53739) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 20.80ms (4.02ms CPU time)

Ran 4 tests for tests/MaplePool.t.sol:RemoveSharesTests \[PASS] test\_removeShares\_checkCall() (gas: 54421) \[PASS] test\_removeShares\_failWithoutApproval() (gas: 33201) \[PASS] test\_removeShares\_insufficientApproval() (gas: 72758) \[PASS] test\_removeShares\_withApproval() (gas: 49885) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 8.67ms (1.10ms CPU time)

Ran 6 tests for tests/MaplePool.t.sol:RequestRedeemTests \[PASS] test\_requestRedeem\_checkCall() (gas: 82551) \[PASS] test\_requestRedeem\_failWithoutApproval() (gas: 35469) \[PASS] test\_requestRedeem\_insufficientApproval() (gas: 107325) \[PASS] test\_requestRedeem\_withApproval() (gas: 77312) \[PASS] test\_requestRedeem\_zeroShares() (gas: 71251) \[PASS] test\_requestRedeem\_zeroSharesAndNotOwnerAndNoAllowance() (gas: 45966) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 14.19ms (1.92ms CPU time)

Ran 7 tests for tests/MaplePool.t.sol:ConvertToSharesTests \[PASS] testFuzz\_convertToShares(uint256,uint256,uint256) (runs: 256, μ: 187262, \~: 189415) \[PASS] test\_convertToShares\_decreasedExchangeRate() (gas: 183670) \[PASS] test\_convertToShares\_increasedExchangeRate() (gas: 183712) \[PASS] test\_convertToShares\_initialExchangeRate() (gas: 183669) \[PASS] test\_convertToShares\_initialState() (gas: 23302) \[PASS] test\_convertToShares\_prematureYield() (gas: 43248) \[PASS] test\_convertToShares\_worthlessShares() (gas: 170960) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 350.73ms (329.96ms CPU time)

Ran 5 tests for tests/MaplePool.t.sol:RequestWithdraw \[PASS] testFuzz\_requestWithdraw\_failNotEnabled(uint256) (runs: 256, μ: 92740, \~: 93678) \[PASS] test\_requestWithdraw\_checkCall() (gas: 82617) \[PASS] test\_requestWithdraw\_failWithoutApproval() (gas: 45049) \[PASS] test\_requestWithdraw\_insufficientApproval() (gas: 125876) \[PASS] test\_requestWithdraw\_withApproval\_failNotEnabled() (gas: 86172) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 208.31ms (174.39ms CPU time)

Ran 4 tests for tests/MaplePool.t.sol:ConvertToExitAssetsTests \[PASS] testFuzz\_convertToExitAssets(uint256,uint256,uint256,uint256) (runs: 256, μ: 212844, \~: 213604) \[PASS] testFuzz\_convertToExitAssets\_zeroSupply(uint256) (runs: 256, μ: 8622, \~: 8622) \[PASS] test\_convertToExitAssets() (gas: 233940) \[PASS] test\_convertToExitAssets\_zeroSupply() (gas: 13685) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 371.75ms (359.21ms CPU time)

Ran 3 tests for tests/MaplePool.t.sol:WithdrawTests \[PASS] testFuzz\_withdraw\_failNotEnabled(uint256) (runs: 256, μ: 33332, \~: 33332) \[PASS] test\_withdraw\_checkCall() (gas: 83054) \[PASS] test\_withdraw\_failNotEnabled() (gas: 33201) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 93.50ms (87.42ms CPU time)

Ran 5 tests for tests/MaplePoolManager.t.sol:MaxMintTests \[PASS] testFuzz\_maxMint\_liquidityCap(address,address,uint256,uint256,uint256) (runs: 256, μ: 252092, \~: 251773) \[PASS] test\_maxMint\_liquidityCap\_exchangeRateGtOne() (gas: 312997) \[PASS] test\_maxMint\_liquidityCap\_exchangeRateOneToOne() (gas: 345305) \[PASS] test\_maxMint\_withPermission() (gas: 262557) \[PASS] test\_maxMint\_withoutPermission() (gas: 251091) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 430.65ms (391.89ms CPU time)

Ran 3 tests for tests/MaplePoolDelegateCover.t.sol:MaplePoolDelegateCoverTests \[PASS] test\_moveFunds\_badTransfer() (gas: 61203) \[PASS] test\_moveFunds\_notManager() (gas: 52195) \[PASS] test\_moveFunds\_success() (gas: 61763) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 9.08ms (5.64ms CPU time)

Ran 6 tests for tests/MaplePool.t.sol:DepositTests \[PASS] testFuzz\_deposit\_badApprove(uint256) (runs: 256, μ: 167616, \~: 167469) \[PASS] testFuzz\_deposit\_insufficientBalance(uint256) (runs: 256, μ: 170982, \~: 170413) \[PASS] test\_deposit\_checkCall() (gas: 134081) \[PASS] test\_deposit\_reentrancy() (gas: 186312) \[PASS] test\_deposit\_zeroReceiver() (gas: 111219) \[PASS] test\_deposit\_zeroShares() (gas: 111266) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 309.83ms (295.18ms CPU time)

Ran 2 tests for tests/MaplePoolManager.t.sol:MaxWithdrawTests \[PASS] testFuzz\_maxWithdraw(address) (runs: 256, μ: 17623, \~: 17623) \[PASS] test\_maxWithdraw() (gas: 17294) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 42.49ms (30.34ms CPU time)

Ran 6 tests for tests/MaplePoolDeployer.t.sol:MaplePoolDeployerTests \[PASS] test\_deployPool\_invalidPoolDelegate() (gas: 154104) \[PASS] test\_deployPool\_mismatchingArrays() (gas: 153814) \[PASS] test\_deployPool\_success\_withCoverRequired\_cyclicalWM() (gas: 5844643) \[PASS] test\_deployPool\_success\_withCoverRequired\_queueWM() (gas: 5833486) \[PASS] test\_deployPool\_success\_withoutCoverRequired\_cyclicalWM() (gas: 5781416) \[PASS] test\_deployPool\_transferFailed() (gas: 5677198) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 40.12ms (24.07ms CPU time)

Ran 5 tests for tests/MaplePoolManager.t.sol:MigrateTests \[PASS] test\_migrate\_internalFailure() (gas: 34102) \[PASS] test\_migrate\_invalidPoolDelegateCover() (gas: 39204) \[PASS] test\_migrate\_notFactory() (gas: 30954) \[PASS] test\_migrate\_paused() (gas: 54124) \[PASS] test\_migrate\_success() (gas: 42249) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 14.65ms (871.03µs CPU time)

Ran 4 tests for tests/MaplePoolManager.t.sol:AcceptPoolDelegate\_SetterTests \[PASS] test\_acceptPoolDelegate\_globalsTransferFails() (gas: 61264) \[PASS] test\_acceptPoolDelegate\_notPendingPoolDelegate() (gas: 29878) \[PASS] test\_acceptPoolDelegate\_paused() (gas: 53768) \[PASS] test\_acceptPoolDelegate\_success() (gas: 53416) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 16.57ms (711.63µs CPU time)

Ran 5 tests for tests/MaplePoolManager.t.sol:ProcessRedeemTests \[PASS] test\_processRedeem\_noApproval() (gas: 47228) \[PASS] test\_processRedeem\_notWithdrawalManager() (gas: 36460) \[PASS] test\_processRedeem\_paused() (gas: 52589) \[PASS] test\_processRedeem\_success() (gas: 44048) \[PASS] test\_processRedeem\_success\_notSender() (gas: 81793) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 14.81ms (1.61ms CPU time)

Ran 10 tests for tests/MaplePoolManager.t.sol:RequestFundsTests \[PASS] test\_requestFunds\_insufficientCoverBoundary() (gas: 227392) \[PASS] test\_requestFunds\_invalidFactory() (gas: 51339) \[PASS] test\_requestFunds\_invalidInstance() (gas: 57275) \[PASS] test\_requestFunds\_lockedLiquidityBoundary() (gas: 252885) \[PASS] test\_requestFunds\_notLM() (gas: 57966) \[PASS] test\_requestFunds\_paused() (gas: 36946) \[PASS] test\_requestFunds\_success() (gas: 126667) \[PASS] test\_requestFunds\_zeroAddress() (gas: 82347) \[PASS] test\_requestFunds\_zeroPrincipal() (gas: 45067) \[PASS] test\_requestFunds\_zeroSupply() (gas: 67365) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 34.27ms (16.92ms CPU time)

Ran 8 tests for tests/MaplePoolManager.t.sol:AddStrategy\_SetterTests \[PASS] test\_addStrategy\_aumFailure() (gas: 273254) \[PASS] test\_addStrategy\_invalidFactory() (gas: 43824) \[PASS] test\_addStrategy\_notPoolDelegate() (gas: 51348) \[PASS] test\_addStrategy\_paused() (gas: 42306) \[PASS] test\_addStrategy\_success\_asGovernor() (gas: 251424) \[PASS] test\_addStrategy\_success\_asOperationalAdmin() (gas: 255782) \[PASS] test\_addStrategy\_success\_asPoolDelegate() (gas: 246876) \[PASS] test\_addStrategy\_success\_whenNotConfigured() (gas: 234863) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 55.34ms (37.08ms CPU time)

Ran 3 tests for tests/MaplePoolManager.t.sol:SetActive\_SetterTests \[PASS] test\_setActive\_notGlobals() (gas: 33257) \[PASS] test\_setActive\_paused() (gas: 52165) \[PASS] test\_setActive\_success() (gas: 48165) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 28.10ms (4.84ms CPU time)

Ran 7 tests for tests/MaplePoolManager.t.sol:SetDelegateManagementFeeRate\_SetterTests \[PASS] test\_setDelegateManagementFeeRate\_notPoolDelegate() (gas: 48107) \[PASS] test\_setDelegateManagementFeeRate\_oob() (gas: 76141) \[PASS] test\_setDelegateManagementFeeRate\_paused() (gas: 56208) \[PASS] test\_setDelegateManagementFeeRate\_success\_asGovernor() (gas: 68867) \[PASS] test\_setDelegateManagementFeeRate\_success\_asOperationalAdmin() (gas: 74365) \[PASS] test\_setDelegateManagementFeeRate\_success\_asPoolDelegate() (gas: 66262) \[PASS] test\_setDelegateManagementFeeRate\_success\_whenNotConfigured() (gas: 54207) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 31.04ms (11.07ms CPU time)

Ran 26 tests for tests/MaplePoolManager.t.sol:CanCallTests \[PASS] test\_canCall\_depositWithPermit\_lenderNotAllowed() (gas: 103752) \[PASS] test\_canCall\_depositWithPermit\_liquidityCapExceeded() (gas: 87905) \[PASS] test\_canCall\_depositWithPermit\_notActive() (gas: 49761) \[PASS] test\_canCall\_deposit\_lenderNotAllowed() (gas: 102783) \[PASS] test\_canCall\_deposit\_liquidityCapExceeded() (gas: 87478) \[PASS] test\_canCall\_deposit\_notActive() (gas: 48997) \[PASS] test\_canCall\_invalidFunctionId() (gas: 43359) \[PASS] test\_canCall\_mintWithPermit\_lenderNotAllowed() (gas: 122554) \[PASS] test\_canCall\_mintWithPermit\_liquidityCapExceeded() (gas: 100495) \[PASS] test\_canCall\_mintWithPermit\_notActive() (gas: 72918) \[PASS] test\_canCall\_mint\_lenderNotAllowed() (gas: 121352) \[PASS] test\_canCall\_mint\_liquidityCapExceeded() (gas: 99677) \[PASS] test\_canCall\_mint\_notActive() (gas: 72077) \[PASS] test\_canCall\_paused\_redeem() (gas: 51914) \[PASS] test\_canCall\_paused\_removeShares() (gas: 51958) \[PASS] test\_canCall\_paused\_requestRedeem() (gas: 51958) \[PASS] test\_canCall\_paused\_requestWithdraw() (gas: 51893) \[PASS] test\_canCall\_paused\_transfer() (gas: 51937) \[PASS] test\_canCall\_paused\_withdraw() (gas: 51980) \[PASS] test\_canCall\_redeem() (gas: 41164) \[PASS] test\_canCall\_removeShares() (gas: 40655) \[PASS] test\_canCall\_requestRedeem() (gas: 40642) \[PASS] test\_canCall\_requestWithdraw() (gas: 40721) \[PASS] test\_canCall\_transferFrom\_recipientNotAllowed() (gas: 92746) \[PASS] test\_canCall\_transfer\_recipientNotAllowed() (gas: 91885) \[PASS] test\_canCall\_withdraw() (gas: 41144) Suite result: ok. 26 passed; 0 failed; 0 skipped; finished in 87.67ms (63.31ms CPU time)

Ran 3 tests for tests/MaplePoolManager.t.sol:CompleteConfigurationTests \[PASS] test\_completeConfiguration\_alreadyConfigured() (gas: 34571) \[PASS] test\_completeConfiguration\_paused() (gas: 50988) \[PASS] test\_completeConfiguration\_success() (gas: 32142) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 41.38ms (558.26µs CPU time)

Ran 10 tests for tests/MaplePool.t.sol:DepositWithPermitTests \[PASS] testFuzz\_depositWithPermit\_insufficientBalance(uint256) (runs: 256, μ: 219840, \~: 219334) \[PASS] test\_depositWithPermit\_badNonce() (gas: 136062) \[PASS] test\_depositWithPermit\_checkCall() (gas: 154588) \[PASS] test\_depositWithPermit\_notStakerSignature() (gas: 137914) \[PASS] test\_depositWithPermit\_pastDeadline() (gas: 107731) \[PASS] test\_depositWithPermit\_reentrancy() (gas: 235115) \[PASS] test\_depositWithPermit\_replay() (gas: 241103) \[PASS] test\_depositWithPermit\_zeroAddress() (gas: 107184) \[PASS] test\_depositWithPermit\_zeroReceiver() (gas: 160129) \[PASS] test\_depositWithPermit\_zeroShares() (gas: 140380) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 563.76ms (541.63ms CPU time)

Ran 7 tests for tests/MaplePool.t.sol:PreviewDepositTests \[PASS] testFuzz\_previewDeposit(uint256,uint256,uint256) (runs: 256, μ: 186986, \~: 189412) \[PASS] test\_previewDeposit\_decreasedExchangeRate() (gas: 183880) \[PASS] test\_previewDeposit\_increasedExchangeRate() (gas: 183902) \[PASS] test\_previewDeposit\_initialExchangeRate() (gas: 183904) \[PASS] test\_previewDeposit\_initialState() (gas: 23514) \[PASS] test\_previewDeposit\_prematureYield() (gas: 43437) \[PASS] test\_previewDeposit\_worthlessShares() (gas: 171083) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 166.69ms (154.98ms CPU time)

Ran 6 tests for tests/MaplePool.t.sol:MintTests \[PASS] testFuzz\_mint\_badApprove(uint256) (runs: 256, μ: 167858, \~: 167536) \[PASS] testFuzz\_mint\_insufficientBalance(uint256) (runs: 256, μ: 170986, \~: 170437) \[PASS] test\_mint\_checkCall() (gas: 136391) \[PASS] test\_mint\_reentrancy() (gas: 186358) \[PASS] test\_mint\_zeroReceiver() (gas: 111287) \[PASS] test\_mint\_zeroShares() (gas: 111378) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 412.69ms (393.84ms CPU time)

Ran 11 tests for tests/MaplePool.t.sol:MintWithPermitTests \[PASS] testFuzz\_mintWithPermit\_insufficientBalance(uint256) (runs: 256, μ: 220326, \~: 219806) \[PASS] test\_mintWithPermit\_badNonce() (gas: 140701) \[PASS] test\_mintWithPermit\_checkCall() (gas: 155087) \[PASS] test\_mintWithPermit\_insufficientPermit() (gas: 102421) \[PASS] test\_mintWithPermit\_notStakerSignature() (gas: 142515) \[PASS] test\_mintWithPermit\_pastDeadline() (gas: 112329) \[PASS] test\_mintWithPermit\_reentrancy() (gas: 235616) \[PASS] test\_mintWithPermit\_replay() (gas: 265508) \[PASS] test\_mintWithPermit\_zeroAddress() (gas: 111734) \[PASS] test\_mintWithPermit\_zeroReceiver() (gas: 160502) \[PASS] test\_mintWithPermit\_zeroShares() (gas: 160703) Suite result: ok. 11 passed; 0 failed; 0 skipped; finished in 393.32ms (393.48ms CPU time)

Ran 7 tests for tests/MaplePoolMintFrontrunTests.t.sol:MaplePoolMintFrontrunTests \[PASS] testFuzz\_depositFrontRun\_honestOnePercentHarm(uint256) (runs: 256, μ: 6946126, \~: 6946505) \[PASS] testFuzz\_depositFrontRun\_honestTenPercentHarm(uint256) (runs: 256, μ: 6946123, \~: 6946506) \[PASS] testFuzz\_depositFrontRun\_theftThwarted(uint256) (runs: 256, μ: 6954652, \~: 6954762) \[PASS] test\_depositFrontRun\_theft() (gas: 6906977) \[PASS] test\_depositFrontRun\_theftReverted() (gas: 6855007) \[PASS] test\_depositFrontRun\_theftThwarted() (gas: 6952346) \[PASS] test\_depositFrontRun\_zeroShares() (gas: 6895180) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 1.84s (2.54s CPU time)

Ran 14 tests for tests/ERC20.t.sol:Pool\_ERC20PermitTest \[PASS] testFuzz\_permit(uint256) (runs: 256, μ: 95838, \~: 96157) \[PASS] testFuzz\_permit\_multiple(bytes32) (runs: 256, μ: 374236, \~: 374237) \[PASS] test\_domainSeparator() (gas: 12213) \[PASS] test\_initialState() (gas: 20878) \[PASS] test\_permit\_badS() (gas: 36122) \[PASS] test\_permit\_badV() (gas: 2071353) \[PASS] test\_permit\_differentSpender() (gas: 64699) \[PASS] test\_permit\_differentVerifier() (gas: 1192833) \[PASS] test\_permit\_earlyNonce() (gas: 64918) \[PASS] test\_permit\_ownerSignerMismatch() (gas: 64877) \[PASS] test\_permit\_replay() (gas: 102897) \[PASS] test\_permit\_withExpiry() (gas: 113609) \[PASS] test\_permit\_zeroAddress() (gas: 64684) \[PASS] test\_typehash() (gas: 8906) Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 2.52s (2.57s CPU time)

Ran 14 tests for tests/ERC20.t.sol:Pool\_ERC20Test \[PASS] invariant\_metadata() (runs: 256, calls: 128000, reverts: 69721) \[PASS] testFuzz\_approve(address,uint256) (runs: 256, μ: 36960, \~: 37271) \[PASS] testFuzz\_burn(address,uint256,uint256) (runs: 256, μ: 32536, \~: 2094) \[PASS] testFuzz\_decreaseAllowance\_infiniteApproval(address,uint256) (runs: 256, μ: 45931, \~: 45931) \[PASS] testFuzz\_decreaseAllowance\_nonInfiniteApproval(address,uint256,uint256) (runs: 256, μ: 50202, \~: 50151) \[PASS] testFuzz\_increaseAllowance(address,uint256,uint256) (runs: 256, μ: 50267, \~: 50204) \[PASS] testFuzz\_metadata(string,string,uint8) (runs: 256, μ: 1285517, \~: 1288546) \[PASS] testFuzz\_mint(address,uint256) (runs: 256, μ: 59618, \~: 59929) \[PASS] testFuzz\_transfer(address,uint256) (runs: 256, μ: 82865, \~: 83021) \[PASS] testFuzz\_transferFrom(address,uint256,uint256) (runs: 256, μ: 516689, \~: 517187) \[PASS] testFuzz\_transferFrom\_infiniteApproval(address,uint256) (runs: 256, μ: 519785, \~: 519941) \[PASS] testFuzz\_transferFrom\_insufficientAllowance(address,uint256) (runs: 256, μ: 508441, \~: 508237) \[PASS] testFuzz\_transferFrom\_insufficientBalance(address,uint256) (runs: 256, μ: 489789, \~: 489653) \[PASS] testFuzz\_transfer\_insufficientBalance(address,uint256) (runs: 256, μ: 498827, \~: 498828) Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 16.37s (18.20s CPU time)

Ran 46 test suites in 16.40s (25.35s CPU time): 292 tests passed, 0 failed, 0 skipped (292 total tests)

## pool-permission-manager

\[PASS] test\_fallback\_noCode() (gas: 27165) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.09ms (251.57µs CPU time)

Ran 4 tests for tests/unit/SetPermisionAdmin.t.sol:SetPermissionAdminTests \[PASS] test\_setPermissionAdmin\_protocolPaused() (gas: 29220) \[PASS] test\_setPermissionAdmin\_success() (gas: 56673) \[PASS] test\_setPermissionAdmin\_success\_operationalAdmin() (gas: 59970) \[PASS] test\_setPermissionAdmin\_unauthorized() (gas: 28863) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 4.04ms (552.96µs CPU time)

Ran 2 tests for tests/unit/Initialize.t.sol:InitializeTests \[PASS] test\_initializer\_notGovernor() (gas: 21620) \[PASS] test\_initializer\_success() (gas: 43137) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 2.30ms (313.43µs CPU time)

Ran 8 tests for tests/unit/SetLenderAllowlist.t.sol:SetLenderAllowlistTests \[PASS] test\_setLenderAllowlist\_batch() (gas: 248434) \[PASS] test\_setLenderAllowlist\_empty() (gas: 40724) \[PASS] test\_setLenderAllowlist\_mismatch() (gas: 85836) \[PASS] test\_setLenderAllowlist\_protocolPaused() (gas: 39426) \[PASS] test\_setLenderAllowlist\_success\_governor() (gas: 162474) \[PASS] test\_setLenderAllowlist\_success\_operationalAdmin() (gas: 165792) \[PASS] test\_setLenderAllowlist\_success\_poolDelegate() (gas: 160095) \[PASS] test\_setLenderAllowlist\_unauthorized() (gas: 55362) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 6.75ms (2.94ms CPU time)

Ran 2 tests for tests/unit/SetImplementation.t.sol:SetImplementationTests \[PASS] test\_setImplementation\_success() (gas: 2901617) \[PASS] test\_setImplementation\_unauthorized() (gas: 11612) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 3.42ms (360.38µs CPU time)

Ran 8 tests for tests/unit/SetLenderBitmaps.t.sol:SetLenderBitmapsTests \[PASS] test\_setLenderBitmaps\_batch() (gas: 304199) \[PASS] test\_setLenderBitmaps\_empty() (gas: 32799) \[PASS] test\_setLenderBitmaps\_mismatch() (gas: 77936) \[PASS] test\_setLenderBitmaps\_protocolPaused() (gas: 34012) \[PASS] test\_setLenderBitmaps\_success() (gas: 153072) \[PASS] test\_setLenderBitmaps\_success\_asGovernor() (gas: 155539) \[PASS] test\_setLenderBitmaps\_success\_asOperationalAdmin() (gas: 158881) \[PASS] test\_setLenderBitmaps\_unauthorized() (gas: 35877) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 15.27ms (3.56ms CPU time)

Ran 8 tests for tests/unit/SetPoolBitmaps.t.sol:SetPoolBitmapsTests \[PASS] test\_setPoolBitmaps\_batch() (gas: 386761) \[PASS] test\_setPoolBitmaps\_empty() (gas: 37691) \[PASS] test\_setPoolBitmaps\_mismatch() (gas: 82725) \[PASS] test\_setPoolBitmaps\_protocolPaused() (gas: 36527) \[PASS] test\_setPoolBitmaps\_success\_governor() (gas: 160814) \[PASS] test\_setPoolBitmaps\_success\_operationalAdmin() (gas: 164156) \[PASS] test\_setPoolBitmaps\_success\_poolDelegate() (gas: 158504) \[PASS] test\_setPoolBitmaps\_unauthorized() (gas: 52353) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 101.80ms (3.63ms CPU time)

Ran 8 tests for tests/unit/SetPoolPermissionLevel.t.sol:SetPoolPermissionLevelTests \[PASS] testFuzz\_setPoolPermissionLevel(uint256,uint256) (runs: 256, μ: 73301, \~: 77387) \[PASS] test\_setPoolPermissionLevel\_invalid() (gas: 34833) \[PASS] test\_setPoolPermissionLevel\_protocolPaused() (gas: 31346) \[PASS] test\_setPoolPermissionLevel\_public() (gas: 64124) \[PASS] test\_setPoolPermissionLevel\_success\_governor() (gas: 63625) \[PASS] test\_setPoolPermissionLevel\_success\_operationalAdmin() (gas: 66986) \[PASS] test\_setPoolPermissionLevel\_success\_poolDelegate() (gas: 61246) \[PASS] test\_setPoolPermissionLevel\_unauthorized() (gas: 47259) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 126.39ms (125.99ms CPU time)

Ran 9 tests for tests/unit/ConfigurePool.t.sol:ConfigurePoolTests \[PASS] test\_configurePool\_invalid() (gas: 40201) \[PASS] test\_configurePool\_lengthMismatch() (gas: 85219) \[PASS] test\_configurePool\_noFunctionIds() (gas: 40253) \[PASS] test\_configurePool\_protocolPaused() (gas: 36780) \[PASS] test\_configurePool\_public() (gas: 69601) \[PASS] test\_configurePool\_success\_governor() (gas: 190727) \[PASS] test\_configurePool\_success\_operationalAdmin() (gas: 194003) \[PASS] test\_configurePool\_success\_poolDelegate() (gas: 188373) \[PASS] test\_configurePool\_unauthorized() (gas: 52693) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 130.08ms (2.19ms CPU time)

Ran 22 tests for tests/unit/HasPermission.t.sol:HasPermissionTests \[PASS] testFuzz\_hasPermission\_functionLevel\_multiLender\_whitelisted(address\[]) (runs: 256, μ: 6876862, \~: 6463854) \[PASS] testFuzz\_hasPermission\_multiLender\_private\_whitelisted(address,address\[],bytes32) (runs: 256, μ: 7152130, \~: 6968816) \[PASS] testFuzz\_hasPermission\_multiLender\_public\_(address,address\[],bytes32) (runs: 256, μ: 214905, \~: 207924) \[PASS] testFuzz\_hasPermission\_private\_unauthorized(address,address,bytes32) (runs: 256, μ: 17811, \~: 17811) \[PASS] testFuzz\_hasPermission\_private\_whitelisted(address,address,bytes32) (runs: 256, μ: 162940, \~: 162940) \[PASS] testFuzz\_hasPermission\_public(address,address,bytes32) (runs: 256, μ: 65200, \~: 65200) \[PASS] test\_hasPermission\_functionLevel\_match() (gas: 274433) \[PASS] test\_hasPermission\_functionLevel\_mismatch() (gas: 274488) \[PASS] test\_hasPermission\_functionLevel\_whitelisted() (gas: 190750) \[PASS] test\_hasPermission\_functionLevel\_zeroFunctionBitmap\_zeroLenderBitmap() (gas: 70352) \[PASS] test\_hasPermission\_functionLevel\_zeroLenderBitmap() (gas: 193505) \[PASS] test\_hasPermission\_multiLender\_functionLevel(address\[]) (runs: 256, μ: 9965895, \~: 9504754) \[PASS] test\_hasPermission\_multiLender\_noLenders() (gas: 173029) \[PASS] test\_hasPermission\_poolLevel\_match() (gas: 254433) \[PASS] test\_hasPermission\_poolLevel\_mismatch() (gas: 254509) \[PASS] test\_hasPermission\_poolLevel\_multiLender\_mismatch() (gas: 327610) \[PASS] test\_hasPermission\_poolLevel\_whitelisted() (gas: 190752) \[PASS] test\_hasPermission\_poolLevel\_zeroLenderBitmap() (gas: 173482) \[PASS] test\_hasPermission\_poolLevel\_zeroLenderBitmap\_zeroPoolBitmap() (gas: 132950) \[PASS] test\_hasPermission\_private\_unauthorized() (gas: 23479) \[PASS] test\_hasPermission\_private\_whitelisted() (gas: 161411) \[PASS] test\_hasPermission\_public\_success() (gas: 63493) Suite result: ok. 22 passed; 0 failed; 0 skipped; finished in 3.51s (10.95s CPU time)

Ran 10 test suites in 3.52s (3.90s CPU time): 72 tests passed, 0 failed, 0 skipped (72 total tests)

## strategies

Ran 3 tests for tests/unit/SetImplementation.t.sol:MapleBasicStrategySetImplementationTests \[PASS] test\_setImplementation\_notFactory() (gas: 30369) \[PASS] test\_setImplementation\_protocolPaused() (gas: 36338) \[PASS] test\_setImplementation\_success() (gas: 42162) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 4.81ms (554.36µs CPU time)

Ran 6 tests for tests/unit/AaveStrategy.t.sol:MapleAaveStrategyDeactivateStrategyTests \[PASS] test\_deactivateStrategy\_failIfAlreadyInactive() (gas: 67346) \[PASS] test\_deactivateStrategy\_failIfNotProtocolAdmin() (gas: 146213) \[PASS] test\_deactivateStrategy\_failReentrancy() (gas: 20739) \[PASS] test\_deactivateStrategy\_failWhenPaused() (gas: 38954) \[PASS] test\_deactivateStrategy\_successWhenActive() (gas: 68247) \[PASS] test\_deactivateStrategy\_successWhenImpaired() (gas: 68313) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 5.96ms (1.46ms CPU time)

Ran 4 tests for tests/unit/AaveStrategy.t.sol:ClaimRewardsTests \[PASS] test\_claimRewards\_failIfNotProtocolAdmin() (gas: 163050) \[PASS] test\_claimRewards\_failReentrancy() (gas: 30962) \[PASS] test\_claimRewards\_failWhenPaused() (gas: 49132) \[PASS] test\_claimRewards\_success() (gas: 82923) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 6.05ms (1.63ms CPU time)

Ran 14 tests for tests/unit/AaveStrategy.t.sol:MapleAaveStrategyAccrueFeesTests \[PASS] test\_accrueFees\_minimumGain\_realisticFeeRate() (gas: 103409) \[PASS] test\_accrueFees\_minimumGain\_zeroFeeRate() (gas: 80876) \[PASS] test\_accrueFees\_minimumLoss\_realisticFeeRate() (gas: 102785) \[PASS] test\_accrueFees\_minimumLoss\_zeroFeeRate() (gas: 80911) \[PASS] test\_accrueFees\_normalGain\_maximumFeeRate() (gas: 124170) \[PASS] test\_accrueFees\_normalGain\_minimumFeeRate() (gas: 124371) \[PASS] test\_accrueFees\_normalGain\_realisticFeeRate() (gas: 126692) \[PASS] test\_accrueFees\_normalGain\_zeroFeeRate() (gas: 82997) \[PASS] test\_accrueFees\_normalLoss\_realisticFeeRate() (gas: 104842) \[PASS] test\_accrueFees\_normalLoss\_zeroFeeRate() (gas: 82943) \[PASS] test\_accrueFees\_totalLoss\_realisticFeeRate() (gas: 82704) \[PASS] test\_accrueFees\_totalLoss\_zeroFeeRate() (gas: 60806) \[PASS] test\_accrueFees\_unfundedStrategy\_realisticFeeRate() (gas: 60784) \[PASS] test\_accrueFees\_unfundedStrategy\_zeroFeeRate() (gas: 38954) Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 8.03ms (2.62ms CPU time)

Ran 8 tests for tests/unit/AaveStrategy.t.sol:MapleAaveStrategyFundStrategyTests \[PASS] test\_fundStrategy\_successWithPoolDelegate() (gas: 130164) \[PASS] test\_fundStrategy\_successWithStrategyManager() (gas: 133299) \[PASS] test\_fund\_failIfImpaired() (gas: 70260) \[PASS] test\_fund\_failIfInactive() (gas: 70260) \[PASS] test\_fund\_failIfInvalidAavePool() (gas: 68255) \[PASS] test\_fund\_failIfNonManager() (gas: 56897) \[PASS] test\_fund\_failReentrancy() (gas: 23183) \[PASS] test\_fund\_failWhenPaused() (gas: 41418) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 9.50ms (2.16ms CPU time)

Ran 6 tests for tests/unit/CoreStrategy.t.sol:MapleCoreStrategyImpairStrategyTests \[PASS] test\_impairStrategy\_failIfAlreadyImpaired() (gas: 46838) \[PASS] test\_impairStrategy\_failIfNotProtocolAdmin() (gas: 113236) \[PASS] test\_impairStrategy\_failReentrancy() (gas: 17164) \[PASS] test\_impairStrategy\_failWhenPaused() (gas: 33855) \[PASS] test\_impairStrategy\_successWhenActive() (gas: 47469) \[PASS] test\_impairStrategy\_successWhenInactive() (gas: 47449) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 15.30ms (1.37ms CPU time)

Ran 3 tests for tests/unit/SetImplementation.t.sol:MapleCoreStrategySetImplementationTests \[PASS] test\_setImplementation\_notFactory() (gas: 30391) \[PASS] test\_setImplementation\_protocolPaused() (gas: 36360) \[PASS] test\_setImplementation\_success() (gas: 42118) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 6.11ms (1.36ms CPU time)

Ran 6 tests for tests/unit/AaveStrategy.t.sol:MapleAaveStrategyImpairStrategyTests \[PASS] test\_impairStrategy\_failIfAlreadyImpaired() (gas: 67279) \[PASS] test\_impairStrategy\_failIfNotProtocolAdmin() (gas: 146143) \[PASS] test\_impairStrategy\_failReentrancy() (gas: 20695) \[PASS] test\_impairStrategy\_failWhenPaused() (gas: 38844) \[PASS] test\_impairStrategy\_successWhenActive() (gas: 68268) \[PASS] test\_impairStrategy\_successWhenInactive() (gas: 68248) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 5.71ms (1.37ms CPU time)

Ran 3 tests for tests/unit/SetImplementation.t.sol:MapleSkyStrategySetImplementationTests \[PASS] test\_setImplementation\_notFactory() (gas: 30369) \[PASS] test\_setImplementation\_protocolPaused() (gas: 36338) \[PASS] test\_setImplementation\_success() (gas: 42098) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 5.25ms (519.74µs CPU time)

Ran 8 tests for tests/unit/AaveStrategy.t.sol:MapleAaveStrategyReactivateStrategyTests \[PASS] test\_reactivateStrategy\_failIfAlreadyActive() (gas: 45817) \[PASS] test\_reactivateStrategy\_failIfNotProtocolAdmin() (gas: 120733) \[PASS] test\_reactivateStrategy\_failReentrancy() (gas: 21136) \[PASS] test\_reactivateStrategy\_failWhenPaused() (gas: 39306) \[PASS] test\_reactivateStrategy\_successWhenImpaired\_withAccountingUpdate() (gas: 65062) \[PASS] test\_reactivateStrategy\_successWhenImpaired\_withoutAccountingUpdate() (gas: 53963) \[PASS] test\_reactivateStrategy\_successWhenInactive\_withAccountingUpdate() (gas: 65063) \[PASS] test\_reactivateStrategy\_successWhenInactive\_withoutAccountingUpdate() (gas: 53941) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 7.73ms (2.33ms CPU time)

Ran 18 tests for tests/unit/AaveStrategy.t.sol:MapleAaveStrategySetStrategyFeeRateTests \[PASS] test\_setStrategyFeeRate\_failIfImpaired() (gas: 69873) \[PASS] test\_setStrategyFeeRate\_failIfInactive() (gas: 69873) \[PASS] test\_setStrategyFeeRate\_failReentrancy() (gas: 23203) \[PASS] test\_setStrategyFeeRate\_failWhenInvalidStrategyFeeRate() (gas: 46041) \[PASS] test\_setStrategyFeeRate\_failWhenNotAdmin() (gas: 51915) \[PASS] test\_setStrategyFeeRate\_failWhenPaused() (gas: 41440) \[PASS] test\_setStrategyFeeRate\_normalGain\_1e6() (gas: 154092) \[PASS] test\_setStrategyFeeRate\_normalGain\_realisticFeeRate() (gas: 156636) \[PASS] test\_setStrategyFeeRate\_normalGain\_zeroFeeRate() (gas: 146396) \[PASS] test\_setStrategyFeeRate\_normalLoss\_realisticFeeRate() (gas: 148362) \[PASS] test\_setStrategyFeeRate\_normalLoss\_zeroFeeRate() (gas: 146411) \[PASS] test\_setStrategyFeeRate\_successWithGovernor() (gas: 88634) \[PASS] test\_setStrategyFeeRate\_successWithOperationalAdmin() (gas: 92919) \[PASS] test\_setStrategyFeeRate\_successWithPoolDelegate() (gas: 84104) \[PASS] test\_setStrategyFeeRate\_totalLoss\_realisticFeeRate() (gas: 103963) \[PASS] test\_setStrategyFeeRate\_totalLoss\_zeroFeeRate() (gas: 103962) \[PASS] test\_setStrategyFeeRate\_unfundedStrategy\_realisticFeeRate() (gas: 103986) \[PASS] test\_setStrategyFeeRate\_unfundedStrategy\_zeroFeeRate() (gas: 102011) Suite result: ok. 18 passed; 0 failed; 0 skipped; finished in 9.88ms (5.13ms CPU time)

Ran 6 tests for tests/unit/SkyStrategy.t.sol:MapleSkyStrategyAccrueFeesTests \[PASS] test\_accrueFees\_strategyFeeOneHundredPercent() (gas: 212580) \[PASS] test\_accrueFees\_strategyFeeRoundedDown() (gas: 128010) \[PASS] test\_accrueFees\_totalAssetsDecreased() (gas: 84611) \[PASS] test\_accrueFees\_totalAssetsIncreased() (gas: 211910) \[PASS] test\_accrueFees\_zeroStrategyFeeRateAndNoChangeInTotalAssets() (gas: 43936) \[PASS] test\_accrueFees\_zeroStrategyFeeRate\_totalAssetsIncreased() (gas: 112186) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 13.45ms (3.12ms CPU time)

Ran 7 tests for tests/unit/CoreStrategy.t.sol:MapleCoreStrategyPushAssetsToPoolTests \[PASS] test\_pushAssetsToPool\_failERC20Transfer() (gas: 59225) \[PASS] test\_pushAssetsToPool\_paused() (gas: 33855) \[PASS] test\_pushAssetsToPool\_reentrancy() (gas: 17164) \[PASS] test\_pushAssetsToPool\_successWhenImpaired() (gas: 95894) \[PASS] test\_pushAssetsToPool\_successWhenInactive() (gas: 95873) \[PASS] test\_pushAssetsToPool\_successWithStrategyManager() (gas: 87557) \[PASS] test\_pushAssetsToPool\_unauthorized() (gas: 49333) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 32.71ms (23.40ms CPU time)

Ran 6 tests for tests/unit/SkyStrategy.t.sol:MapleSkyStrategyDeactivateStrategyTests \[PASS] test\_deactivateStrategy\_failIfAlreadyInactive() (gas: 63903) \[PASS] test\_deactivateStrategy\_failIfNotProtocolAdmin() (gas: 138360) \[PASS] test\_deactivateStrategy\_failReentrancy() (gas: 17274) \[PASS] test\_deactivateStrategy\_failWhenPaused() (gas: 33965) \[PASS] test\_deactivateStrategy\_successWhenActive() (gas: 64344) \[PASS] test\_deactivateStrategy\_successWhenImpaired() (gas: 64410) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 10.66ms (1.40ms CPU time)

Ran 6 tests for tests/unit/CoreStrategy.t.sol:MapleCoreStrategyDeactivateStrategyTests \[PASS] test\_deactivateStrategy\_failIfAlreadyInactive() (gas: 46839) \[PASS] test\_deactivateStrategy\_failIfNotProtocolAdmin() (gas: 113060) \[PASS] test\_deactivateStrategy\_failReentrancy() (gas: 17142) \[PASS] test\_deactivateStrategy\_failWhenPaused() (gas: 33899) \[PASS] test\_deactivateStrategy\_successWhenActive() (gas: 47382) \[PASS] test\_deactivateStrategy\_successWhenImpaired() (gas: 47448) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 6.63ms (1.44ms CPU time)

Ran 6 tests for tests/unit/CoreStrategy.t.sol:MapleCoreStrategyReactivateStrategyTests \[PASS] test\_reactivateStrategy\_failIfAlreadyActive() (gas: 46880) \[PASS] test\_reactivateStrategy\_failIfNotProtocolAdmin() (gas: 113145) \[PASS] test\_reactivateStrategy\_failReentrancy() (gas: 17098) \[PASS] test\_reactivateStrategy\_failWhenPaused() (gas: 33921) \[PASS] test\_reactivateStrategy\_successWhenImpaired\_withAccountingUpdate() (gas: 84956) \[PASS] test\_reactivateStrategy\_successWhenInactive\_withAccountingUpdate() (gas: 84957) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 14.53ms (9.50ms CPU time)

Ran 8 tests for tests/unit/SkyStrategy.t.sol:MapleSkyStrategyFundTests \[PASS] test\_fund\_failIfImpaired() (gas: 64862) \[PASS] test\_fund\_failIfInactive() (gas: 64862) \[PASS] test\_fund\_failIfInvalidStrategyVault() (gas: 59154) \[PASS] test\_fund\_failIfNonManager() (gas: 49843) \[PASS] test\_fund\_failReentrancy() (gas: 4117637) \[PASS] test\_fund\_failWhenPaused() (gas: 34452) \[PASS] test\_fund\_successWithPoolDelegate() (gas: 115688) \[PASS] test\_fund\_successWithStrategyManager() (gas: 118867) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 12.44ms (6.86ms CPU time)

Ran 10 tests for tests/unit/CoreStrategy.t.sol:MapleCoreStrategyFundStrategyTests \[PASS] test\_fundStrategy\_with\_max\_value() (gas: 128645) \[PASS] test\_fundStrategy\_with\_zero\_amount() (gas: 100268) \[PASS] test\_fund\_failIfImpaired() (gas: 47842) \[PASS] test\_fund\_failIfInactive() (gas: 47820) \[PASS] test\_fund\_failIfNotStrategyManager() (gas: 49865) \[PASS] test\_fund\_failInvalidStrategyVault() (gas: 54962) \[PASS] test\_fund\_failReentrancy() (gas: 17675) \[PASS] test\_fund\_failWhenPaused() (gas: 34452) \[PASS] test\_fund\_successWithPoolDelegate() (gas: 133955) \[PASS] test\_fund\_successWithStrategyManager() (gas: 141918) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 9.88ms (2.98ms CPU time)

Ran 6 tests for tests/unit/BasicStrategy.t.sol:MapleBasicStrategyDeactivateStrategyTests \[PASS] test\_deactivateStrategy\_failIfAlreadyInactive() (gas: 63837) \[PASS] test\_deactivateStrategy\_failIfNotProtocolAdmin() (gas: 138220) \[PASS] test\_deactivateStrategy\_failReentrancy() (gas: 17230) \[PASS] test\_deactivateStrategy\_failWhenPaused() (gas: 33943) \[PASS] test\_deactivateStrategy\_successWhenActive() (gas: 64323) \[PASS] test\_deactivateStrategy\_successWhenImpaired() (gas: 64389) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 6.18ms (1.25ms CPU time)

Ran 6 tests for tests/unit/SkyStrategy.t.sol:MapleSkyStrategyImpairStrategyTests \[PASS] test\_impairStrategy\_failIfAlreadyImpaired() (gas: 63836) \[PASS] test\_impairStrategy\_failIfNotProtocolAdmin() (gas: 138290) \[PASS] test\_impairStrategy\_failReentrancy() (gas: 17230) \[PASS] test\_impairStrategy\_failWhenPaused() (gas: 33855) \[PASS] test\_impairStrategy\_successWhenActive() (gas: 64365) \[PASS] test\_impairStrategy\_successWhenInactive() (gas: 64345) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 9.29ms (1.52ms CPU time)

Ran 4 tests for tests/unit/CoreStrategy.t.sol:MapleCoreStrategyRemoveSharesByIdTests \[PASS] test\_removeSharesById\_failIfNotAuthorized() (gas: 54227) \[PASS] test\_removeSharesById\_failReentrancy() (gas: 24683) \[PASS] test\_removeSharesById\_failWhenPaused() (gas: 41351) \[PASS] test\_removeSharesById\_success() (gas: 62059) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 11.03ms (4.74ms CPU time)

Ran 9 tests for tests/unit/BasicStrategy.t.sol:MapleBasicStrategyFundStrategyTests \[PASS] test\_fund\_failIfImpaired() (gas: 65188) \[PASS] test\_fund\_failIfInactive() (gas: 65166) \[PASS] test\_fund\_failIfNotStrategyManager() (gas: 50257) \[PASS] test\_fund\_failInvalidStrategyVault() (gas: 57303) \[PASS] test\_fund\_failMinimumSharesOut() (gas: 65060) \[PASS] test\_fund\_failReentrancy() (gas: 18111) \[PASS] test\_fund\_failWhenPaused() (gas: 34844) \[PASS] test\_fund\_successWithPoolDelegate() (gas: 140398) \[PASS] test\_fund\_successWithStrategyManager() (gas: 148361) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 7.57ms (2.60ms CPU time)

Ran 8 tests for tests/unit/SkyStrategy.t.sol:MapleSkyStrategyReactivateStrategyTests \[PASS] test\_reactivateStrategy\_failIfAlreadyActive() (gas: 42349) \[PASS] test\_reactivateStrategy\_failIfNotProtocolAdmin() (gas: 110817) \[PASS] test\_reactivateStrategy\_failReentrancy() (gas: 17646) \[PASS] test\_reactivateStrategy\_failWhenPaused() (gas: 34292) \[PASS] test\_reactivateStrategy\_successWhenImpaired\_withAccountingUpdate() (gas: 79964) \[PASS] test\_reactivateStrategy\_successWhenImpaired\_withoutAccountingUpdate() (gas: 49559) \[PASS] test\_reactivateStrategy\_successWhenInactive\_withAccountingUpdate() (gas: 79965) \[PASS] test\_reactivateStrategy\_successWhenInactive\_withoutAccountingUpdate() (gas: 49537) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 10.95ms (2.44ms CPU time)

Ran 6 tests for tests/unit/BasicStrategy.t.sol:MapleBasicStrategyImpairStrategyTests \[PASS] test\_impairStrategy\_failIfAlreadyImpaired() (gas: 63748) \[PASS] test\_impairStrategy\_failIfNotProtocolAdmin() (gas: 138079) \[PASS] test\_impairStrategy\_failReentrancy() (gas: 17164) \[PASS] test\_impairStrategy\_failWhenPaused() (gas: 33811) \[PASS] test\_impairStrategy\_successWhenActive() (gas: 64322) \[PASS] test\_impairStrategy\_successWhenInactive() (gas: 64302) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 10.90ms (6.33ms CPU time)

Ran 6 tests for tests/unit/CoreStrategy.t.sol:MapleCoreStrategyRemoveSharesTests \[PASS] test\_removeShares\_failIfNotStrategyManager() (gas: 49886) \[PASS] test\_removeShares\_failReentrancy() (gas: 17696) \[PASS] test\_removeShares\_failWhenPaused() (gas: 34451) \[PASS] test\_removeShares\_successWithMaximum() (gas: 48220) \[PASS] test\_removeShares\_successWithMinimum() (gas: 48577) \[PASS] test\_removeShares\_zeroAmount() (gas: 39252) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 8.54ms (1.17ms CPU time)

Ran 8 tests for tests/unit/BasicStrategy.t.sol:MapleBasicStrategyReactivateStrategyTests \[PASS] test\_reactivateStrategy\_failIfAlreadyActive() (gas: 42305) \[PASS] test\_reactivateStrategy\_failIfNotProtocolAdmin() (gas: 110729) \[PASS] test\_reactivateStrategy\_failReentrancy() (gas: 17624) \[PASS] test\_reactivateStrategy\_failWhenPaused() (gas: 34292) \[PASS] test\_reactivateStrategy\_successWhenImpaired\_withAccountingUpdate() (gas: 64559) \[PASS] test\_reactivateStrategy\_successWhenImpaired\_withoutAccountingUpdate() (gas: 49538) \[PASS] test\_reactivateStrategy\_successWhenInactive\_withAccountingUpdate() (gas: 64560) \[PASS] test\_reactivateStrategy\_successWhenInactive\_withoutAccountingUpdate() (gas: 49516) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 10.36ms (2.14ms CPU time)

Ran 8 tests for tests/unit/CoreStrategy.t.sol:MapleCoreStrategyRequestWithdrawFromStrategyTests \[PASS] test\_requestWithdrawFromStrategy\_failIfNotStrategyManager() (gas: 51883) \[PASS] test\_requestWithdrawFromStrategy\_failIfZeroAssets() (gas: 39296) \[PASS] test\_requestWithdrawFromStrategy\_failReentrancy() (gas: 3463628) \[PASS] test\_requestWithdrawFromStrategy\_failWhenPaused() (gas: 36339) \[PASS] test\_requestWithdrawFromStrategy\_successWhenImpaired() (gas: 110367) \[PASS] test\_requestWithdrawFromStrategy\_successWhenInactive() (gas: 71998) \[PASS] test\_requestWithdrawFromStrategy\_successWithPoolDelegate() (gas: 105895) \[PASS] test\_requestWithdrawFromStrategy\_successWithStrategyManager() (gas: 107397) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 9.77ms (3.60ms CPU time)

Ran 8 tests for tests/unit/SkyStrategy.t.sol:MapleSkyStrategySetPsmTests \[PASS] test\_setPsm\_failIfInvalidGem() (gas: 57288) \[PASS] test\_setPsm\_failIfInvalidUsds() (gas: 60369) \[PASS] test\_setPsm\_failIfNotProtocolAdmin() (gas: 331573) \[PASS] test\_setPsm\_failIfNotValidInstance() (gas: 69928) \[PASS] test\_setPsm\_failIfZeroAddress() (gas: 38783) \[PASS] test\_setPsm\_failReentrancy() (gas: 19844) \[PASS] test\_setPsm\_failWhenPaused() (gas: 36579) \[PASS] test\_setPsm\_success() (gas: 174068) Suite result: ok. 8 passed; 0 failed; 0 skipped; finished in 22.06ms (14.98ms CPU time)

Ran 9 tests for tests/unit/BasicStrategy.t.sol:MapleBasicStrategySetStrategyFeeRateTests \[PASS] test\_setStrategyFeeRate\_failIfImpaired() (gas: 64342) \[PASS] test\_setStrategyFeeRate\_failIfInactive() (gas: 64299) \[PASS] test\_setStrategyFeeRate\_failIfNotProtocolAdmin() (gas: 162957) \[PASS] test\_setStrategyFeeRate\_failInvalidStrategyFeeRate() (gas: 43296) \[PASS] test\_setStrategyFeeRate\_failReentrancy() (gas: 17739) \[PASS] test\_setStrategyFeeRate\_failWhenPaused() (gas: 34452) \[PASS] test\_setStrategyFeeRate\_nonZeroPriorFeeRate\_totalAssetsIncreased() (gas: 172859) \[PASS] test\_setStrategyFeeRate\_zeroPriorFeeRateAndTotalAssets() (gas: 87207) \[PASS] test\_setStrategyFeeRate\_zeroPriorFeeRate\_totalAssetsIncreased() (gas: 158638) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 15.10ms (3.35ms CPU time)

Ran 9 tests for tests/unit/AaveStrategy.t.sol:MapleAaveStrategyWithdrawFromStrategyTests \[PASS] test\_withdrawFromStrategy\_failIfLowAssets() (gas: 65578) \[PASS] test\_withdrawFromStrategy\_failIfNonManager() (gas: 56850) \[PASS] test\_withdrawFromStrategy\_failIfZeroAssets() (gas: 44198) \[PASS] test\_withdrawFromStrategy\_failReentrancy() (gas: 23224) \[PASS] test\_withdrawFromStrategy\_failWhenPaused() (gas: 41374) \[PASS] test\_withdrawFromStrategy\_successWhenImpaired() (gas: 102820) \[PASS] test\_withdrawFromStrategy\_successWhenInactive() (gas: 102821) \[PASS] test\_withdrawFromStrategy\_successWithPoolDelegate() (gas: 94801) \[PASS] test\_withdrawFromStrategy\_successWithStrategyManager() (gas: 98024) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 8.42ms (2.48ms CPU time)

Ran 10 tests for tests/unit/SkyStrategy.t.sol:MapleSkyStrategySetStrategyFeeRateTests \[PASS] test\_setStrategyFeeRate\_failIfImpaired() (gas: 64386) \[PASS] test\_setStrategyFeeRate\_failIfInactive() (gas: 64431) \[PASS] test\_setStrategyFeeRate\_failIfNotProtocolAdmin() (gas: 189163) \[PASS] test\_setStrategyFeeRate\_failInvalidStrategyFeeRate() (gas: 41107) \[PASS] test\_setStrategyFeeRate\_failReentrancy() (gas: 17783) \[PASS] test\_setStrategyFeeRate\_failWhenPaused() (gas: 34474) \[PASS] test\_setStrategyFeeRate\_nonZeroPriorFeeRate\_totalAssetsIncreasedWithTout() (gas: 263450) \[PASS] test\_setStrategyFeeRate\_nonZeroPriorFeeRate\_totalAssetsIncreasedWithZeroTout() (gas: 252817) \[PASS] test\_setStrategyFeeRate\_zeroPriorFeeRateAndTotalAssetsAndZeroTout() (gas: 105388) \[PASS] test\_setStrategyFeeRate\_zeroPriorFeeRate\_totalAssetsIncreasedWithTout() (gas: 186699) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 21.12ms (7.14ms CPU time)

Ran 7 tests for tests/unit/BasicStrategy.t.sol:MapleBasicStrategyAccrueFeesTests \[PASS] test\_accrueFees\_strategyFeeOneHundredPercent() (gas: 127646) \[PASS] test\_accrueFees\_strategyFeeRoundedDown() (gas: 101126) \[PASS] test\_accrueFees\_totalAssetsDecreased() (gas: 63252) \[PASS] test\_accrueFees\_totalAssetsIncreased() (gas: 124915) \[PASS] test\_accrueFees\_zeroStrategyFeeRateAndNoChangeInTotalAssets() (gas: 30829) \[PASS] test\_accrueFees\_zeroStrategyFeeRate\_totalAssetsIncreased() (gas: 84552) \[PASS] test\_accrueFees\_zeroStrategyFeeRate\_totalAssetsUnchanged() (gas: 105865) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 8.94ms (2.62ms CPU time)

Ran 10 tests for tests/unit/CreateInstance.t.sol:MapleCoreStrategyCreateInstanceTests \[PASS] test\_createInstance\_invalidCaller() (gas: 415205) \[PASS] test\_createInstance\_invalidPoolManagerFactory() (gas: 185268) \[PASS] test\_createInstance\_invalidPoolManagerInstance() (gas: 181940) \[PASS] test\_createInstance\_invalidStrategyAsset() (gas: 830708) \[PASS] test\_createInstance\_invalidVaultFactory() (gas: 234693) \[PASS] test\_createInstance\_invalidVaultInstance() (gas: 201127) \[PASS] test\_createInstance\_invalidWithdrawalManagerFactory() (gas: 279560) \[PASS] test\_createInstance\_invalidWithdrawalManagerInstance() (gas: 217722) \[PASS] test\_createInstance\_success() (gas: 421493) \[PASS] test\_createInstance\_zeroPool() (gas: 157593) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 17.01ms (11.75ms CPU time)

Ran 4 tests for tests/unit/Migrate.t.sol:MapleBasicStrategyMigrateTests \[PASS] test\_migrate\_internalFailure() (gas: 34308) \[PASS] test\_migrate\_notFactory() (gas: 30803) \[PASS] test\_migrate\_protocolPaused() (gas: 36774) \[PASS] test\_migrate\_success() (gas: 41443) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 6.05ms (674.99µs CPU time)

Ran 10 tests for tests/unit/BasicStrategy.t.sol:MapleBasicStrategyWithdrawFromStrategyTests \[PASS] test\_withdrawFromStrategy\_failIfLowAssets() (gas: 67739) \[PASS] test\_withdrawFromStrategy\_failIfNotStrategyManager() (gas: 52125) \[PASS] test\_withdrawFromStrategy\_failIfSlippage() (gas: 75689) \[PASS] test\_withdrawFromStrategy\_failIfZeroAssets() (gas: 39517) \[PASS] test\_withdrawFromStrategy\_failReentrancy() (gas: 3223776) \[PASS] test\_withdrawFromStrategy\_failWhenPaused() (gas: 36715) \[PASS] test\_withdrawFromStrategy\_successWhenImpaired() (gas: 95306) \[PASS] test\_withdrawFromStrategy\_successWhenInactive() (gas: 95307) \[PASS] test\_withdrawFromStrategy\_successWithPoolDelegate() (gas: 96013) \[PASS] test\_withdrawFromStrategy\_successWithStrategyManager() (gas: 97625) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 11.73ms (6.90ms CPU time)

Ran 4 tests for tests/unit/Migrate.t.sol:MapleAaveStrategyMigrateTests \[PASS] test\_migrate\_internalFailure() (gas: 34308) \[PASS] test\_migrate\_notFactory() (gas: 30803) \[PASS] test\_migrate\_protocolPaused() (gas: 36774) \[PASS] test\_migrate\_success() (gas: 41487) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 8.50ms (656.25µs CPU time)

Ran 15 tests for tests/unit/AaveStrategy.t.sol:MapleAaveStrategyViewFunctionTests \[PASS] test\_aavePool() (gas: 18336) \[PASS] test\_aaveToken() (gas: 18250) \[PASS] test\_factory() (gas: 18373) \[PASS] test\_fundsAsset() (gas: 18295) \[PASS] test\_globals() (gas: 23964) \[PASS] test\_governor() (gas: 29640) \[PASS] test\_implementation() (gas: 16394) \[PASS] test\_locked() (gas: 15953) \[PASS] test\_pool() (gas: 18296) \[PASS] test\_poolDelegate() (gas: 23891) \[PASS] test\_poolManager() (gas: 18315) \[PASS] test\_securityAdmin() (gas: 29567) \[PASS] test\_strategyState() (gas: 16092) \[PASS] test\_strategyType() (gas: 15198) \[PASS] test\_treasury() (gas: 29525) Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 5.70ms (1.27ms CPU time)

Ran 10 tests for tests/unit/CreateInstance.t.sol:MapleSkyStrategyCreateInstanceTests \[PASS] test\_createInstance\_invalidCaller() (gas: 513632) \[PASS] test\_createInstance\_invalidFactory() (gas: 199223) \[PASS] test\_createInstance\_invalidGemPSM() (gas: 210310) \[PASS] test\_createInstance\_invalidInstance() (gas: 195855) \[PASS] test\_createInstance\_invalidPSM() (gas: 163477) \[PASS] test\_createInstance\_invalidSavingsUsds() (gas: 163355) \[PASS] test\_createInstance\_invalidUsdsPSM() (gas: 213371) \[PASS] test\_createInstance\_nonAuthorizedPSM() (gas: 199179) \[PASS] test\_createInstance\_success() (gas: 525588) \[PASS] test\_createInstance\_zeroPool() (gas: 163321) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 24.90ms (16.93ms CPU time)

Ran 7 tests for tests/unit/CreateInstance.t.sol:MapleAaveStrategyCreateInstanceTests \[PASS] test\_createInstance\_invalidCaller() (gas: 31209) \[PASS] test\_createInstance\_invalidPoolManagerFactory() (gas: 196191) \[PASS] test\_createInstance\_invalidPoolManagerInstance() (gas: 192841) \[PASS] test\_createInstance\_success() (gas: 422021) \[PASS] test\_createInstance\_underlyingAssetMismatch() (gas: 203244) \[PASS] test\_createInstance\_zeroAaveToken() (gas: 162993) \[PASS] test\_createInstance\_zeroPool() (gas: 162936) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 14.96ms (9.26ms CPU time)

Ran 4 tests for tests/unit/Migrate.t.sol:MapleCoreStrategyMigrateTests \[PASS] test\_migrate\_internalFailure() (gas: 34330) \[PASS] test\_migrate\_notFactory() (gas: 30825) \[PASS] test\_migrate\_protocolPaused() (gas: 36796) \[PASS] test\_migrate\_success() (gas: 41509) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 16.60ms (4.80ms CPU time)

Ran 6 tests for tests/unit/CreateInstance.t.sol:MapleBasicStrategyCreateInstanceTests \[PASS] test\_createInstance\_invalidCaller() (gas: 381850) \[PASS] test\_createInstance\_invalidFactory() (gas: 185311) \[PASS] test\_createInstance\_invalidInstance() (gas: 181943) \[PASS] test\_createInstance\_invalidStrategyAsset() (gas: 836139) \[PASS] test\_createInstance\_success() (gas: 388119) \[PASS] test\_createInstance\_zeroPool() (gas: 157572) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 14.46ms (9.52ms CPU time)

Ran 4 tests for tests/unit/Migrate.t.sol:MapleSkyStrategyMigrateTests \[PASS] test\_migrate\_internalFailure() (gas: 34330) \[PASS] test\_migrate\_notFactory() (gas: 30825) \[PASS] test\_migrate\_protocolPaused() (gas: 36796) \[PASS] test\_migrate\_success() (gas: 41553) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 10.86ms (1.21ms CPU time)

Ran 3 tests for tests/unit/SetImplementation.t.sol:MapleAaveStrategySetImplementationTests \[PASS] test\_setImplementation\_notFactory() (gas: 30369) \[PASS] test\_setImplementation\_protocolPaused() (gas: 36338) \[PASS] test\_setImplementation\_success() (gas: 42141) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 15.44ms (960.76µs CPU time)

Ran 6 tests for tests/unit/Upgrade.t.sol:MapleAaveStrategyUpgradeTests \[PASS] test\_upgrade\_notPoolDelegate() (gas: 123773) \[PASS] test\_upgrade\_notScheduled() (gas: 43201) \[PASS] test\_upgrade\_notSecurityAdmin() (gas: 117313) \[PASS] test\_upgrade\_protocolPaused() (gas: 35117) \[PASS] test\_upgrade\_success() (gas: 106458) \[PASS] test\_upgrade\_upgradeFailed() (gas: 90521) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 13.83ms (2.80ms CPU time)

Ran 6 tests for tests/unit/Upgrade.t.sol:MapleBasicStrategyUpgradeTests \[PASS] test\_upgrade\_notPoolDelegate() (gas: 123597) \[PASS] test\_upgrade\_notScheduled() (gas: 43157) \[PASS] test\_upgrade\_notSecurityAdmin() (gas: 117137) \[PASS] test\_upgrade\_protocolPaused() (gas: 35073) \[PASS] test\_upgrade\_success() (gas: 99320) \[PASS] test\_upgrade\_upgradeFailed() (gas: 90257) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 13.94ms (6.96ms CPU time)

Ran 6 tests for tests/unit/Upgrade.t.sol:MapleCoreStrategyUpgradeTests \[PASS] test\_upgrade\_notPoolDelegate() (gas: 123595) \[PASS] test\_upgrade\_notScheduled() (gas: 43178) \[PASS] test\_upgrade\_notSecurityAdmin() (gas: 117135) \[PASS] test\_upgrade\_protocolPaused() (gas: 35094) \[PASS] test\_upgrade\_success() (gas: 99209) \[PASS] test\_upgrade\_upgradeFailed() (gas: 90234) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 8.25ms (2.99ms CPU time)

Ran 6 tests for tests/unit/Upgrade.t.sol:MapleSkyStrategyUpgradeTests \[PASS] test\_upgrade\_notPoolDelegate() (gas: 123621) \[PASS] test\_upgrade\_notScheduled() (gas: 43201) \[PASS] test\_upgrade\_notSecurityAdmin() (gas: 117161) \[PASS] test\_upgrade\_protocolPaused() (gas: 35117) \[PASS] test\_upgrade\_success() (gas: 99214) \[PASS] test\_upgrade\_upgradeFailed() (gas: 90237) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 11.14ms (3.49ms CPU time)

Ran 9 tests for tests/unit/SkyStrategy.t.sol:MapleSkyStrategyWithdrawTests \[PASS] test\_withdrawFromStrategy\_failIfLowAssets() (gas: 71774) \[PASS] test\_withdrawFromStrategy\_failIfZeroAssets() (gas: 39228) \[PASS] test\_withdraw\_failReentrancy() (gas: 4119499) \[PASS] test\_withdraw\_failsIfNotStrategyManager() (gas: 51749) \[PASS] test\_withdraw\_failsIfProtocolPaused() (gas: 41724) \[PASS] test\_withdraw\_successWhenImpaired() (gas: 111890) \[PASS] test\_withdraw\_successWhenInactive() (gas: 111869) \[PASS] test\_withdraw\_successWithPoolDelegate() (gas: 119737) \[PASS] test\_withdraw\_successWithStrategyManager() (gas: 124441) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 16.74ms (4.18ms CPU time)

Ran 3 tests for tests/unit/AaveStrategy.t.sol:MapleAaveStrategyUnrealizedLossesTests \[PASS] testFuzz\_unrealizedLosses\_strategyActive(uint256,uint256,uint256) (runs: 1000, μ: 100756, \~: 101110) \[PASS] testFuzz\_unrealizedLosses\_strategyImpaired(uint256,uint256,uint256) (runs: 1000, μ: 129740, \~: 130651) \[PASS] testFuzz\_unrealizedLosses\_strategyInactive(uint256,uint256,uint256) (runs: 1000, μ: 120725, \~: 121010) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.07s (1.28s CPU time)

Ran 3 tests for tests/unit/AaveStrategy.t.sol:MapleAaveStrategyAssetsUnderManagementTests \[PASS] testFuzz\_assetsUnderManagement\_strategyActive(uint256,uint256,uint256) (runs: 1000, μ: 107283, \~: 108233) \[PASS] testFuzz\_assetsUnderManagement\_strategyImpaired(uint256,uint256,uint256) (runs: 1000, μ: 127319, \~: 128155) \[PASS] testFuzz\_assetsUnderManagement\_strategyInactive(uint256,uint256,uint256) (runs: 1000, μ: 120805, \~: 121094) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.11s (1.37s CPU time)

Ran 27 tests for tests/unit/SkyStrategy.t.sol:MapleSkyStrategyViewFunctionTests \[PASS] testFuzz\_assetsUnderManagement\_strategyActive(uint256,uint256,uint256) (runs: 1000, μ: 143927, \~: 144074) \[PASS] testFuzz\_assetsUnderManagement\_strategyImpaired(uint256,uint256,uint256) (runs: 1000, μ: 164010, \~: 164862) \[PASS] testFuzz\_assetsUnderManagement\_strategyInactive(uint256,uint256,uint256) (runs: 1000, μ: 140230, \~: 140647) \[PASS] testFuzz\_unrealizedLosses\_strategyActive(uint256,uint256,uint256) (runs: 1000, μ: 120474, \~: 120707) \[PASS] testFuzz\_unrealizedLosses\_strategyImpaired(uint256,uint256,uint256) (runs: 1000, μ: 166877, \~: 166844) \[PASS] testFuzz\_unrealizedLosses\_strategyInactive(uint256,uint256,uint256) (runs: 1000, μ: 140361, \~: 140629) \[PASS] test\_assetsUnderManagement\_strategyFundedAndZeroFeeAndZeroTout() (gas: 92997) \[PASS] test\_assetsUnderManagement\_strategyFundedAndZeroFeeWithTout() (gas: 96663) \[PASS] test\_assetsUnderManagement\_strategyFundedWithFeeAndLossAndTout() (gas: 141387) \[PASS] test\_assetsUnderManagement\_strategyFundedWithFeeAndLossAndZeroTout() (gas: 137677) \[PASS] test\_assetsUnderManagement\_strategyFundedWithFeeAndTotalAssetsIncreasedAndAndTout() (gas: 145956) \[PASS] test\_assetsUnderManagement\_strategyFundedWithFeeAndTotalAssetsIncreasedAndZeroTout() (gas: 138499) \[PASS] test\_assetsUnderManagement\_strategyNotFunded() (gas: 39240) \[PASS] test\_factory() (gas: 13375) \[PASS] test\_fundsAsset() (gas: 13386) \[PASS] test\_globals() (gas: 18944) \[PASS] test\_governor() (gas: 24641) \[PASS] test\_implementation() (gas: 13462) \[PASS] test\_locked() (gas: 11065) \[PASS] test\_pool() (gas: 13320) \[PASS] test\_poolDelegate() (gas: 19026) \[PASS] test\_poolManager() (gas: 13295) \[PASS] test\_savingsUsds() (gas: 13403) \[PASS] test\_securityAdmin() (gas: 24591) \[PASS] test\_strategyState() (gas: 11072) \[PASS] test\_strategyType() (gas: 10282) \[PASS] test\_treasury() (gas: 24637) Suite result: ok. 27 passed; 0 failed; 0 skipped; finished in 1.28s (2.65s CPU time)

Ran 23 tests for tests/unit/BasicStrategy.t.sol:MapleBasicStrategyViewFunctionTests \[PASS] testFuzz\_assetsUnderManagement\_strategyActive(uint256,uint256,uint256) (runs: 1000, μ: 107558, \~: 108270) \[PASS] testFuzz\_assetsUnderManagement\_strategyImpaired(uint256,uint256,uint256) (runs: 1000, μ: 127303, \~: 128083) \[PASS] testFuzz\_assetsUnderManagement\_strategyInactive(uint256,uint256,uint256) (runs: 1000, μ: 116973, \~: 117325) \[PASS] testFuzz\_unrealizedLosses\_strategyActive(uint256,uint256,uint256) (runs: 1000, μ: 96985, \~: 97341) \[PASS] testFuzz\_unrealizedLosses\_strategyImpaired(uint256,uint256,uint256) (runs: 1000, μ: 127421, \~: 128297) \[PASS] testFuzz\_unrealizedLosses\_strategyInactive(uint256,uint256,uint256) (runs: 1000, μ: 116842, \~: 117196) \[PASS] test\_assetsUnderManagement\_strategyFundedAndZeroFee() (gas: 57886) \[PASS] test\_assetsUnderManagement\_strategyFundedWithFeeAndLoss() (gas: 100565) \[PASS] test\_assetsUnderManagement\_strategyFundedWithFeeAndTotalAssetsIncreased() (gas: 101364) \[PASS] test\_assetsUnderManagement\_strategyNotFunded() (gas: 27763) \[PASS] test\_factory() (gas: 13397) \[PASS] test\_fundsAsset() (gas: 13297) \[PASS] test\_globals() (gas: 19032) \[PASS] test\_governor() (gas: 24641) \[PASS] test\_implementation() (gas: 13440) \[PASS] test\_locked() (gas: 10955) \[PASS] test\_pool() (gas: 13365) \[PASS] test\_poolDelegate() (gas: 18981) \[PASS] test\_poolManager() (gas: 13317) \[PASS] test\_securityAdmin() (gas: 24569) \[PASS] test\_strategyType() (gas: 10304) \[PASS] test\_strategyVault() (gas: 13384) \[PASS] test\_treasury() (gas: 24702) Suite result: ok. 23 passed; 0 failed; 0 skipped; finished in 1.44s (2.14s CPU time)

Ran 26 tests for tests/unit/CoreStrategy.t.sol:MapleCoreStrategyViewFunctionTests \[PASS] testFuzz\_assetsUnderManagement\_strategyActive(uint256,uint256,uint256,uint256) (runs: 1000, μ: 272974, \~: 272908) \[PASS] testFuzz\_assetsUnderManagement\_strategyImpaired(uint256,uint256,uint256,uint256) (runs: 1000, μ: 275668, \~: 276874) \[PASS] testFuzz\_assetsUnderManagement\_strategyInactive(uint256,uint256,uint256,uint256) (runs: 1000, μ: 255994, \~: 256187) \[PASS] testFuzz\_unrealizedLosses\_strategyActive(uint256) (runs: 1000, μ: 47445, \~: 47010) \[PASS] testFuzz\_unrealizedLosses\_strategyImpaired(uint256) (runs: 1000, μ: 80567, \~: 80313) \[PASS] testFuzz\_unrealizedLosses\_strategyInactive(uint256) (runs: 1000, μ: 50025, \~: 49723) \[PASS] test\_assetsUnderManagement\_strategyFunded() (gas: 71368) \[PASS] test\_assetsUnderManagement\_strategyFundedAndCash() (gas: 255661) \[PASS] test\_assetsUnderManagement\_strategyFundedWithSharesOnWithdrawalQueue() (gas: 208798) \[PASS] test\_assetsUnderManagement\_strategyFundedWithSharesOnWithdrawalQueueAndCash() (gas: 208786) \[PASS] test\_assetsUnderManagement\_strategyFundedWithSharesOnWithdrawalQueue\_multiple\_requests() (gas: 258633) \[PASS] test\_assetsUnderManagement\_strategyFundedWithTotalAssetsIncreased() (gas: 71345) \[PASS] test\_assetsUnderManagement\_strategyNotFunded() (gas: 44588) \[PASS] test\_factory() (gas: 13441) \[PASS] test\_fundsAsset() (gas: 13296) \[PASS] test\_globals() (gas: 18988) \[PASS] test\_governor() (gas: 24597) \[PASS] test\_implementation() (gas: 13374) \[PASS] test\_locked() (gas: 10932) \[PASS] test\_pool() (gas: 13320) \[PASS] test\_poolDelegate() (gas: 18894) \[PASS] test\_poolManager() (gas: 13361) \[PASS] test\_securityAdmin() (gas: 24525) \[PASS] test\_strategyType() (gas: 10303) \[PASS] test\_strategyVault() (gas: 13405) \[PASS] test\_treasury() (gas: 24636) Suite result: ok. 26 passed; 0 failed; 0 skipped; finished in 1.62s (2.46s CPU time)

Ran 71 test suites in 1.75s (7.40s CPU time): 545 tests passed, 0 failed, 0 skipped (545 total tests)

## syrup-utils

Ran 2 tests for tests/unit/MapleBorrowerActions.t.sol:MapleBorrowerActionsTests \[PASS] test\_acceptLoanTerms() (gas: 24480) \[PASS] test\_acceptLoanTerms\_notBorrower() (gas: 22166) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 969.44µs (202.23µs CPU time)

Ran 4 tests for tests/unit/MapleRouter.t.sol:SkimTests \[PASS] test\_skim\_notAdmin() (gas: 30155) \[PASS] test\_skim\_success() (gas: 103644) \[PASS] test\_skim\_zeroAddress() (gas: 28542) \[PASS] test\_skim\_zero\_amount() (gas: 36763) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 3.65ms (755.36µs CPU time)

Ran 4 tests for tests/unit/MapleRouter.t.sol:SetRouterFunctionSelectorWhitelistTests \[PASS] test\_setAllowedRouterFunction\_emitsEvent() (gas: 53067) \[PASS] test\_setAllowedRouterFunction\_notAdmin() (gas: 28044) \[PASS] test\_setAllowedRouterFunction\_removeMultipleFunctions() (gas: 88464) \[PASS] test\_setAllowedRouterFunction\_setMultipleFunctions() (gas: 91947) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 4.36ms (1.37ms CPU time)

Ran 7 tests for tests/unit/MapleRouter.t.sol:SetAllowedAssetsTests \[PASS] test\_setAllowedAssets\_addAsset() (gas: 159144) \[PASS] test\_setAllowedAssets\_addMultipleAssets() (gas: 214131) \[PASS] test\_setAllowedAssets\_lengthMismatch() (gas: 124302) \[PASS] test\_setAllowedAssets\_noAssets() (gas: 36861) \[PASS] test\_setAllowedAssets\_notAdmin() (gas: 120421) \[PASS] test\_setAllowedAssets\_removeAsset() (gas: 237388) \[PASS] test\_setAllowedAssets\_updateAssets() (gas: 334948) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 5.64ms (2.69ms CPU time)

Ran 3 tests for tests/unit/MapleRouter.t.sol:setAllowedAllowanceHolderTests \[PASS] test\_setAllowedAllowanceHolder\_notAdmin() (gas: 27809) \[PASS] test\_setAllowedAllowanceHolder\_updated() (gas: 58630) \[PASS] test\_setAllowedAllowanceHolder\_zeroAddress() (gas: 28358) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 3.28ms (470.86µs CPU time)

Ran 3 tests for tests/unit/MapleRouter.t.sol:SetAssetWhitelistingTests \[PASS] test\_setAssetWhitelisting\_identical() (gas: 34699) \[PASS] test\_setAssetWhitelisting\_notAdmin() (gas: 25196) \[PASS] test\_setAssetWhitelisting\_updated() (gas: 37481) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 3.47ms (613.01µs CPU time)

Ran 2 tests for tests/unit/MapleRouter.t.sol:DepositWithAlternativeAllowanceHolderTests \[PASS] test\_deposit\_allowance\_holder\_is\_router() (gas: 439040) \[PASS] test\_deposit\_different\_allowance\_holder\_than\_router() (gas: 562275) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 6.45ms (3.62ms CPU time)

\[PASS] test\_constructor() (gas: 1201715) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.78ms (779.73µs CPU time)

Ran 6 tests for tests/unit/MplUserActions.t.sol:MplUserActionsRedeemAndMigrateAndStakeTests \[PASS] testFuzz\_redeemAndMigrateAndStake() (gas: 166) \[PASS] test\_redeemAndMigrateAndStake\_differentReceiver() (gas: 384123) \[PASS] test\_redeemAndMigrateAndStake\_insufficientApproval() (gas: 51534) \[PASS] test\_redeemAndMigrateAndStake\_insufficientBalance() (gas: 68079) \[PASS] test\_redeemAndMigrateAndStake\_sameReceiver() (gas: 403570) \[PASS] test\_redeemAndMigrateAndStake\_zeroAmount() (gas: 14700) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 14.78ms (12.78ms CPU time)

Ran 4 tests for tests/unit/MapleRouter.t.sol:IsAssetAllowedTests \[PASS] test\_isAssetAllowed\_allAllowed() (gas: 27441) \[PASS] test\_isAssetAllowed\_allAllowedAgain() (gas: 235075) \[PASS] test\_isAssetAllowed\_multipleAllowed() (gas: 221837) \[PASS] test\_isAssetAllowed\_oneAllowed() (gas: 175678) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 9.46ms (1.58ms CPU time)

Ran 24 tests for tests/unit/MapleRouter.t.sol:DepositFailureTests \[PASS] test\_deposit\_approvalFailed() (gas: 227881) \[PASS] test\_deposit\_approveFail() (gas: 419921) \[PASS] test\_deposit\_emptyCalldata() (gas: 197062) \[PASS] test\_deposit\_expiredAuthorization() (gas: 357941) \[PASS] test\_deposit\_insufficientApproval() (gas: 121809) \[PASS] test\_deposit\_insufficientBalance() (gas: 173335) \[PASS] test\_deposit\_invalidAsset() (gas: 93367) \[PASS] test\_deposit\_invalidFactory() (gas: 88227) \[PASS] test\_deposit\_invalidInstance() (gas: 89280) \[PASS] test\_deposit\_invalidPermit() (gas: 131871) \[PASS] test\_deposit\_invalidSignature() (gas: 386344) \[PASS] test\_deposit\_malleableSignature\_v1() (gas: 357865) \[PASS] test\_deposit\_malleableSignature\_v2() (gas: 353636) \[PASS] test\_deposit\_maximumSlippage() (gas: 196253) \[PASS] test\_deposit\_notAllowedAllowanceHolder() (gas: 215612) \[PASS] test\_deposit\_notAllowedRouterFunction() (gas: 209843) \[PASS] test\_deposit\_notPermissionAdmin() (gas: 395607) \[PASS] test\_deposit\_slippageFailed() (gas: 358022) \[PASS] test\_deposit\_swapFailed() (gas: 271657) \[PASS] test\_deposit\_swapReentrancy() (gas: 67749) \[PASS] test\_deposit\_zeroAddressAsset() (gas: 86308) \[PASS] test\_deposit\_zeroAddressPoolManager() (gas: 63346) \[PASS] test\_deposit\_zeroAddressRouter() (gas: 196219) \[PASS] test\_deposit\_zeroAmount() (gas: 71614) Suite result: ok. 24 passed; 0 failed; 0 skipped; finished in 22.34ms (18.18ms CPU time)

Ran 5 tests for tests/integration/MplUserActions.t.sol:MigrateAndStakeTests \[PASS] test\_integration\_migrateAndStake\_insufficientApproval() (gas: 91272) \[PASS] test\_integration\_migrateAndStake\_insufficientBalance() (gas: 53190) \[PASS] test\_integration\_migrateAndStake\_migratorInactive() (gas: 79190) \[PASS] test\_integration\_migrateAndStake\_success() (gas: 486154) \[PASS] test\_integration\_migrateAndStake\_zeroAmount() (gas: 14612) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 25.50ms (9.53ms CPU time)

Ran 6 tests for tests/unit/MplUserActions.t.sol:MplUserActionsRedeemAndMigrateAndStakeWithPermitTests \[PASS] test\_redeemAndMigrateAndStakeWithPermit\_expiredDeadline() (gas: 45250) \[PASS] test\_redeemAndMigrateAndStakeWithPermit\_insufficientBalance() (gas: 115633) \[PASS] test\_redeemAndMigrateAndStakeWithPermit\_invalidSignature() (gas: 73348) \[PASS] test\_redeemAndMigrateAndStakeWithPermit\_malleable() (gas: 44711) \[PASS] test\_redeemAndMigrateAndStakeWithPermit\_success() (gas: 431573) \[PASS] test\_redeemAndMigrateAndStakeWithPermit\_zeroAmount() (gas: 39555) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 9.59ms (7.71ms CPU time)

Ran 6 tests for tests/unit/MplUserActions.t.sol:MplUserActionsMigrateAndStakeTests \[PASS] testFuzz\_migrateAndStake() (gas: 187) \[PASS] test\_migrateAndStake\_differentReceiver() (gas: 372800) \[PASS] test\_migrateAndStake\_insufficientApproval() (gas: 53903) \[PASS] test\_migrateAndStake\_insufficientBalance() (gas: 70447) \[PASS] test\_migrateAndStake\_sameReceiver() (gas: 383619) \[PASS] test\_migrateAndStake\_zeroAmount() (gas: 14678) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 13.29ms (10.83ms CPU time)

Ran 7 tests for tests/integration/MplUserActions.t.sol:RedeemAndMigrateAndStakeWithPermitTests \[PASS] test\_integration\_redeemAndMigrateAndStakeWithPermit\_expiredDeadline() (gas: 45353) \[PASS] test\_integration\_redeemAndMigrateAndStakeWithPermit\_insufficientBalance() (gas: 267786) \[PASS] test\_integration\_redeemAndMigrateAndStakeWithPermit\_invalidSignature() (gas: 73504) \[PASS] test\_integration\_redeemAndMigrateAndStakeWithPermit\_malleable() (gas: 44924) \[PASS] test\_integration\_redeemAndMigrateAndStakeWithPermit\_migratorInactive() (gas: 290944) \[PASS] test\_integration\_redeemAndMigrateAndStakeWithPermit\_success() (gas: 642664) \[PASS] test\_integration\_redeemAndMigrateAndStakeWithPermit\_zeroAmount() (gas: 39608) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 32.08ms (14.93ms CPU time)

Ran 6 tests for tests/unit/MplUserActions.t.sol:MplUserActionsRedeemAndMigrateWithPermitTests \[PASS] test\_redeemAndMigrateWithPermit\_expiredDeadline() (gas: 45204) \[PASS] test\_redeemAndMigrateWithPermit\_insufficientBalance() (gas: 115545) \[PASS] test\_redeemAndMigrateWithPermit\_invalidSignature() (gas: 73305) \[PASS] test\_redeemAndMigrateWithPermit\_malleable() (gas: 44753) \[PASS] test\_redeemAndMigrateWithPermit\_success() (gas: 371698) \[PASS] test\_redeemAndMigrateWithPermit\_zeroAmount() (gas: 39557) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 10.46ms (8.35ms CPU time)

Ran 6 tests for tests/unit/MplUserActions.t.sol:MplUserActionsRedeemAndMigrateTests \[PASS] testFuzz\_redeemAndMigrate() (gas: 188) \[PASS] test\_redeemAndMigrate\_differentReceiver() (gas: 324225) \[PASS] test\_redeemAndMigrate\_insufficientApproval() (gas: 51557) \[PASS] test\_redeemAndMigrate\_insufficientBalance() (gas: 68146) \[PASS] test\_redeemAndMigrate\_sameReceiver() (gas: 339715) \[PASS] test\_redeemAndMigrate\_zeroAmount() (gas: 14721) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 17.32ms (10.73ms CPU time)

Ran 7 tests for tests/integration/MplUserActions.t.sol:MigrateAndStakeWithPermitTests \[PASS] test\_integration\_migrateAndStakeWithPermit\_expiredDeadline() (gas: 40007) \[PASS] test\_integration\_migrateAndStakeWithPermit\_insufficientBalance() (gas: 93084) \[PASS] test\_integration\_migrateAndStakeWithPermit\_invalidSignature() (gas: 65194) \[PASS] test\_integration\_migrateAndStakeWithPermit\_malleable() (gas: 65412) \[PASS] test\_integration\_migrateAndStakeWithPermit\_migratorInactive() (gas: 119126) \[PASS] test\_integration\_migrateAndStakeWithPermit\_success() (gas: 526122) \[PASS] test\_integration\_migrateAndStakeWithPermit\_zeroAmount() (gas: 35525) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 34.27ms (17.26ms CPU time)

Ran 6 tests for tests/unit/MplUserActions.t.sol:MplUserActionsMigrateAndStakeWithPermitTests \[PASS] test\_migrateAndStakeWithPermit\_expiredDeadline() (gas: 45284) \[PASS] test\_migrateAndStakeWithPermit\_insufficientBalance() (gas: 117835) \[PASS] test\_migrateAndStakeWithPermit\_invalidSignature() (gas: 73360) \[PASS] test\_migrateAndStakeWithPermit\_malleable() (gas: 44745) \[PASS] test\_migrateAndStakeWithPermit\_success() (gas: 420152) \[PASS] test\_migrateAndStakeWithPermit\_zeroAmount() (gas: 39511) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 36.95ms (20.16ms CPU time)

Ran 5 tests for tests/integration/MplUserActions.t.sol:RedeemAndMigrateAndStakeTests \[PASS] test\_integration\_redeemAndMigrateAndStake\_insufficientApproval() (gas: 217309) \[PASS] test\_integration\_redeemAndMigrateAndStake\_insufficientBalance() (gas: 220179) \[PASS] test\_integration\_redeemAndMigrateAndStake\_migratorInactive() (gas: 252913) \[PASS] test\_integration\_redeemAndMigrateAndStake\_success() (gas: 604574) \[PASS] test\_integration\_redeemAndMigrateAndStake\_zeroAmount() (gas: 14655) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 28.37ms (13.11ms CPU time)

Ran 10 tests for tests/unit/MapleRouter.t.sol:DepositSuccessTests \[PASS] test\_deposit\_withAll() (gas: 743730) \[PASS] test\_deposit\_withAuth() (gas: 438356) \[PASS] test\_deposit\_withIgnoredPermit() (gas: 387059) \[PASS] test\_deposit\_withPermit() (gas: 414133) \[PASS] test\_deposit\_withPermitAndAuth() (gas: 579040) \[PASS] test\_deposit\_withPermitAndSwap() (gas: 591329) \[PASS] test\_deposit\_withSwap() (gas: 483578) \[PASS] test\_deposit\_withSwapAndAuth() (gas: 610688) \[PASS] test\_deposit\_withSwap\_withDust() (gas: 479235) \[PASS] test\_deposit\_withoutAnySwap() (gas: 275634) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 65.34ms (80.31ms CPU time)

Ran 5 tests for tests/integration/MplUserActions.t.sol:RedeemAndMigrateTests \[PASS] test\_integration\_redeemAndMigrate\_insufficientApproval() (gas: 217331) \[PASS] test\_integration\_redeemAndMigrate\_insufficientBalance() (gas: 220201) \[PASS] test\_integration\_redeemAndMigrate\_migratorInactive() (gas: 252912) \[PASS] test\_integration\_redeemAndMigrate\_success() (gas: 495878) \[PASS] test\_integration\_redeemAndMigrate\_zeroAmount() (gas: 14677) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 33.35ms (13.57ms CPU time)

Ran 2 tests for tests/unit/SyrupRateProvider.t.sol:SyrupRateProviderTests \[PASS] test\_constructor\_success() (gas: 181883) \[PASS] test\_getRate() (gas: 25875) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 1.25ms (246.82µs CPU time)

Ran 6 tests for tests/integration/SyrupDrip.t.sol:AllocateIntegrationTests \[PASS] test\_allocate\_expiredDeadline\_governor() (gas: 28041) \[PASS] test\_allocate\_expiredDeadline\_operationalAdmin() (gas: 32035) \[PASS] test\_allocate\_invalidMaxId() (gas: 109384) \[PASS] test\_allocate\_notAuthorized() (gas: 31232) \[PASS] test\_allocate\_success\_governor() (gas: 105419) \[PASS] test\_allocate\_success\_operationalAdmin() (gas: 109435) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 18.92ms (1.08ms CPU time)

Ran 5 tests for tests/unit/SyrupDrip.t.sol:SyrupDripReclaimTests \[PASS] test\_reclaim\_notAuthorized() (gas: 22481) \[PASS] test\_reclaim\_success\_governor() (gas: 68905) \[PASS] test\_reclaim\_success\_operationalAdmin() (gas: 71901) \[PASS] test\_reclaim\_transferFail() (gas: 31656) \[PASS] test\_reclaim\_zeroAmount() (gas: 20178) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 11.09ms (7.24ms CPU time)

Ran 7 tests for tests/integration/MplUserActions.t.sol:RedeemAndMigrateWithPermitTests \[PASS] test\_integration\_redeemAndMigrateWithPermit\_expiredDeadline() (gas: 45329) \[PASS] test\_integration\_redeemAndMigrateWithPermit\_insufficientBalance() (gas: 267719) \[PASS] test\_integration\_redeemAndMigrateWithPermit\_invalidSignature() (gas: 73483) \[PASS] test\_integration\_redeemAndMigrateWithPermit\_malleable() (gas: 44879) \[PASS] test\_integration\_redeemAndMigrateWithPermit\_migratorInactive() (gas: 290944) \[PASS] test\_integration\_redeemAndMigrateWithPermit\_success() (gas: 533951) \[PASS] test\_integration\_redeemAndMigrateWithPermit\_zeroAmount() (gas: 39586) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 33.61ms (9.99ms CPU time)

\[PASS] test\_constructor() (gas: 1453582) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 4.05ms (416.11µs CPU time)

Ran 6 tests for tests/unit/SyrupDrip.t.sol:SyrupDripAllocateTests \[PASS] test\_allocate\_expiredDeadline\_governor() (gas: 22429) \[PASS] test\_allocate\_expiredDeadline\_operationalAdmin() (gas: 25467) \[PASS] test\_allocate\_invalidMaxId() (gas: 100748) \[PASS] test\_allocate\_notAuthorized() (gas: 24669) \[PASS] test\_allocate\_success\_governor() (gas: 99807) \[PASS] test\_allocate\_success\_operationalAdmin() (gas: 102867) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 9.97ms (797.88µs CPU time)

\[PASS] test\_scenario\_drip() (gas: 741512) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 48.52ms (6.56ms CPU time)

Ran 22 tests for tests/unit/SyrupRouter.t.sol:SyrupRouterTests \[PASS] test\_authorizeAndDepositWithPermit\_expired() (gas: 21827) \[PASS] test\_authorizeAndDepositWithPermit\_malleable() (gas: 18722) \[PASS] test\_authorizeAndDepositWithPermit\_notPermissionAdmin() (gas: 77190) \[PASS] test\_authorizeAndDepositWithPermit\_success() (gas: 292699) \[PASS] test\_authorizeAndDeposit\_expired() (gas: 20754) \[PASS] test\_authorizeAndDeposit\_malleable() (gas: 17647) \[PASS] test\_authorizeAndDeposit\_notPermissionAdmin() (gas: 74817) \[PASS] test\_authorizeAndDeposit\_success() (gas: 236939) \[PASS] test\_constructor\_approveFails() (gas: 91197) \[PASS] test\_constructor\_success() (gas: 1583289) \[PASS] test\_depositWithPermit\_expiredDeadline() (gas: 43633) \[PASS] test\_depositWithPermit\_invalidSignature() (gas: 72412) \[PASS] test\_depositWithPermit\_notAuthorized() (gas: 107757) \[PASS] test\_depositWithPermit\_skipPermit() (gas: 205116) \[PASS] test\_depositWithPermit\_success() (gas: 230579) \[PASS] test\_depositWithPermit\_transferFails() (gas: 186071) \[PASS] test\_depositWithPermit\_transferFromFails\_insufficientAmount() (gas: 125860) \[PASS] test\_deposit\_notAuthorized() (gas: 27447) \[PASS] test\_deposit\_success() (gas: 189128) \[PASS] test\_deposit\_transferFails() (gas: 141618) \[PASS] test\_deposit\_transferFromFails\_insufficientAmount() (gas: 47419) \[PASS] test\_deposit\_transferFromFails\_insufficientApproval() (gas: 58932) Suite result: ok. 22 passed; 0 failed; 0 skipped; finished in 34.86ms (45.82ms CPU time)

Ran 5 tests for tests/integration/SyrupDrip.t.sol:ReclaimIntegrationTest \[PASS] test\_reclaim\_notAuthorized() (gas: 29044) \[PASS] test\_reclaim\_success\_governor() (gas: 81079) \[PASS] test\_reclaim\_success\_operationalAdmin() (gas: 85031) \[PASS] test\_reclaim\_transferFail() (gas: 40411) \[PASS] test\_reclaim\_zeroAmount() (gas: 25790) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 31.54ms (13.11ms CPU time)

Ran 14 tests for tests/integration/SyrupDrip.t.sol:ClaimIntegrationTests \[PASS] test\_claim\_alreadyClaimed() (gas: 103506) \[PASS] test\_claim\_expiredDeadline() (gas: 33983) \[PASS] test\_claim\_invalidProof\_account() (gas: 35733) \[PASS] test\_claim\_invalidProof\_amount() (gas: 35897) \[PASS] test\_claim\_invalidProof\_id() (gas: 35886) \[PASS] test\_claim\_invalidProof\_proof() (gas: 39332) \[PASS] test\_claim\_success\_duplicateId() (gas: 150434) \[PASS] test\_claim\_success\_multipleClaims() (gas: 204801) \[PASS] test\_claim\_success\_multipleInstances() (gas: 173403) \[PASS] test\_claim\_success\_multipleSlots() (gas: 239228) \[PASS] test\_claim\_success\_singleClaim() (gas: 129758) \[PASS] test\_claim\_success\_updatedAllocation() (gas: 256856) \[PASS] test\_claim\_success\_zeroAmount() (gas: 100440) \[PASS] test\_claim\_transferFail() (gas: 79478) Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 69.52ms (50.57ms CPU time)

Ran 15 tests for tests/unit/SyrupDrip.t.sol:SyrupDripClaimAndStakeTests \[PASS] testFuzz\_claimAndStake(uint256) (runs: 1000, μ: 305473, \~: 305001) \[PASS] test\_claimAndStake\_alreadyClaimed() (gas: 215006) \[PASS] test\_claimAndStake\_expiredDeadline() (gas: 34563) \[PASS] test\_claimAndStake\_fullStake() (gas: 273568) \[PASS] test\_claimAndStake\_invalidProof\_account() (gas: 36289) \[PASS] test\_claimAndStake\_invalidProof\_amount() (gas: 36499) \[PASS] test\_claimAndStake\_invalidProof\_id() (gas: 36465) \[PASS] test\_claimAndStake\_invalidProof\_proof() (gas: 39889) \[PASS] test\_claimAndStake\_invalidStakeAmount() (gas: 26927) \[PASS] test\_claimAndStake\_partialStake() (gas: 299155) \[PASS] test\_claimAndStake\_success\_multipleClaims() (gas: 419237) \[PASS] test\_claimAndStake\_success\_multipleInstances() (gas: 355103) \[PASS] test\_claimAndStake\_transferFail() (gas: 72786) \[PASS] test\_claimAndStake\_transferToStakeFail() (gas: 188212) \[PASS] test\_claimAndStake\_zeroStakeAmount() (gas: 26740) Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 2.56s (2.59s CPU time)

Ran 14 tests for tests/unit/SyrupDrip.t.sol:SyrupDripClaimTests \[PASS] test\_claim\_alreadyClaimed() (gas: 100384) \[PASS] test\_claim\_expiredDeadline() (gas: 33983) \[PASS] test\_claim\_invalidProof\_account() (gas: 35733) \[PASS] test\_claim\_invalidProof\_amount() (gas: 35897) \[PASS] test\_claim\_invalidProof\_id() (gas: 35886) \[PASS] test\_claim\_invalidProof\_proof() (gas: 39332) \[PASS] test\_claim\_success\_duplicateId() (gas: 149334) \[PASS] test\_claim\_success\_multipleClaims() (gas: 209697) \[PASS] test\_claim\_success\_multipleInstances() (gas: 180877) \[PASS] test\_claim\_success\_multipleSlots() (gas: 244128) \[PASS] test\_claim\_success\_singleClaim() (gas: 128654) \[PASS] test\_claim\_success\_updatedAllocation() (gas: 263378) \[PASS] test\_claim\_success\_zeroAmount() (gas: 97958) \[PASS] test\_claim\_transferFail() (gas: 72204) Suite result: ok. 14 passed; 0 failed; 0 skipped; finished in 2.60s (27.19ms CPU time)

Ran 15 tests for tests/integration/SyrupDrip.t.sol:ClaimAndStakeIntegrationTest \[PASS] testFuzz\_claimAndStake(uint256) (runs: 1000, μ: 313456, \~: 312944) \[PASS] test\_claimAndStake\_alreadyClaimed() (gas: 218027) \[PASS] test\_claimAndStake\_expiredDeadline() (gas: 34563) \[PASS] test\_claimAndStake\_fullStake() (gas: 282609) \[PASS] test\_claimAndStake\_invalidProof\_account() (gas: 36289) \[PASS] test\_claimAndStake\_invalidProof\_amount() (gas: 36499) \[PASS] test\_claimAndStake\_invalidProof\_id() (gas: 36465) \[PASS] test\_claimAndStake\_invalidProof\_proof() (gas: 39889) \[PASS] test\_claimAndStake\_invalidStakeAmount() (gas: 26927) \[PASS] test\_claimAndStake\_partialStake() (gas: 308818) \[PASS] test\_claimAndStake\_success\_multipleClaims() (gas: 433483) \[PASS] test\_claimAndStake\_success\_multipleInstances() (gas: 366147) \[PASS] test\_claimAndStake\_transferFail() (gas: 80060) \[PASS] test\_claimAndStake\_transferToStakeFail() (gas: 195387) \[PASS] test\_claimAndStake\_zeroStakeAmount() (gas: 26740) Suite result: ok. 15 passed; 0 failed; 0 skipped; finished in 2.63s (2.63s CPU time)

Ran 41 test suites in 2.71s (8.46s CPU time): 242 tests passed, 6 failed, 0 skipped (248 total tests)

## withdrawal-manager-queue

Ran 3 tests for tests/unit/MapleWithdrawalManagerMigrator.t.sol:WithdrawalManagerMigrateTests \[PASS] test\_migrate\_notFactory() (gas: 31188) \[PASS] test\_migrate\_protocolPaused() (gas: 37166) \[PASS] test\_migrate\_success\_xxx() (gas: 684975) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 5.39ms (1.12ms CPU time)

Ran 5 tests for tests/unit/CreateInstance.t.sol:CreateInstanceTests \[PASS] test\_createInstance\_invalidCaller() (gas: 312348) \[PASS] test\_createInstance\_invalidFactory() (gas: 185844) \[PASS] test\_createInstance\_invalidInstance() (gas: 187024) \[PASS] test\_createInstance\_success() (gas: 311984) \[PASS] test\_createInstance\_zeroPool() (gas: 162747) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 6.94ms (2.41ms CPU time)

Ran 4 tests for tests/unit/Migrate.t.sol:MigrateTests \[PASS] test\_migrate\_internalFailure() (gas: 34693) \[PASS] test\_migrate\_notFactory() (gas: 31166) \[PASS] test\_migrate\_protocolPaused() (gas: 37166) \[PASS] test\_migrate\_success() (gas: 41020) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 4.71ms (598.71µs CPU time)

Ran 3 tests for tests/unit/RemoveSharesById.t.sol:RemoveSharesByIdSuccessTests \[PASS] test\_removeSharesById\_decrease() (gas: 297027) \[PASS] test\_removeSharesById\_multipleLPsWithMultipleRequests() (gas: 916084) \[PASS] test\_removeSharesById\_remove\_request() (gas: 235653) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 10.62ms (6.15ms CPU time)

Ran 4 tests for tests/unit/PreviewRedeem.t.sol:PreviewRedeemTests \[PASS] test\_previewRedeem\_complete() (gas: 72722) \[PASS] test\_previewRedeem\_notProcessed() (gas: 21118) \[PASS] test\_previewRedeem\_partial() (gas: 89589) \[PASS] test\_previewRedeem\_tooManyShares() (gas: 44164) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 8.01ms (641.53µs CPU time)

Ran 9 tests for tests/unit/ProcessEmptyRedemptions.t.sol:ProcessEmptyRedemptionsSuccessTests \[PASS] test\_processEmptyRedemptions\_chunkProcessing() (gas: 1135048) \[PASS] test\_processEmptyRedemptions\_emptyQueueNoStateChange() (gas: 44215) \[PASS] test\_processEmptyRedemptions\_fullyProcessedQueueNoStateChange() (gas: 253610) \[PASS] test\_processEmptyRedemptions\_multipleEmptyRequests() (gas: 653049) \[PASS] test\_processEmptyRedemptions\_noEmptyRequests() (gas: 498840) \[PASS] test\_processEmptyRedemptions\_operationalAdmin() (gas: 242789) \[PASS] test\_processEmptyRedemptions\_poolDelegate() (gas: 252141) \[PASS] test\_processEmptyRedemptions\_redeemer() (gas: 245564) \[PASS] test\_processEmptyRedemptions\_stopsAtNonEmptyRequest() (gas: 702437) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 13.44ms (10.87ms CPU time)

Ran 4 tests for tests/unit/SetManualWithdrawal.t.sol:SetManualWithdrawalTests \[PASS] test\_setManualWithdrawal\_governotNotAllowed() (gas: 46121) \[PASS] test\_setManualWithdrawal\_notPoolDelegateOrOpsAdmin() (gas: 43468) \[PASS] test\_setManualWithdrawal\_protocolPaused() (gas: 37033) \[PASS] test\_setManualWithdrawal\_success() (gas: 73217) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 4.30ms (735.16µs CPU time)

Ran 16 tests for tests/unit/ProcessRedemptions.t.sol:ProcessRedemptionsTests \[PASS] test\_processRedemptions\_automatic\_complete() (gas: 218520) \[PASS] test\_processRedemptions\_automatic\_overkill() (gas: 231470) \[PASS] test\_processRedemptions\_automatic\_partial() (gas: 301136) \[PASS] test\_processRedemptions\_bot() (gas: 78963) \[PASS] test\_processRedemptions\_governorNotAllowed() (gas: 52717) \[PASS] test\_processRedemptions\_lowLiquidity() (gas: 90734) \[PASS] test\_processRedemptions\_manual\_complete() (gas: 248524) \[PASS] test\_processRedemptions\_manual\_multipleLps\_multiple\_requests() (gas: 715937) \[PASS] test\_processRedemptions\_manual\_multiple\_requests() (gas: 358748) \[PASS] test\_processRedemptions\_manual\_overkill() (gas: 263055) \[PASS] test\_processRedemptions\_manual\_partial() (gas: 339489) \[PASS] test\_processRedemptions\_multiple() (gas: 369099) \[PASS] test\_processRedemptions\_notRedeemer() (gas: 49995) \[PASS] test\_processRedemptions\_poolDelegate() (gas: 76172) \[PASS] test\_processRedemptions\_protocolPaused() (gas: 36590) \[PASS] test\_processRedemptions\_zeroShares() (gas: 47407) Suite result: ok. 16 passed; 0 failed; 0 skipped; finished in 25.15ms (20.59ms CPU time)

Ran 5 tests for tests/unit/SortedArray/Push.t.sol:PushTests \[PASS] test\_push\_failed\_outOfOrder() (gas: 83535) \[PASS] test\_push\_failed\_valueExists() (gas: 81436) \[PASS] test\_push\_failed\_zeroValue() (gas: 11498) \[PASS] test\_push\_multipleValues\_inOrder() (gas: 201721) \[PASS] test\_push\_singleValue() (gas: 83080) Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 993.37µs (669.85µs CPU time)

Ran 3 tests for tests/unit/SortedArray/Remove.t.sol:RemoveTests \[PASS] test\_remove\_failed\_valueNotExists() (gas: 11502) \[PASS] test\_remove\_multipleValues() (gas: 175044) \[PASS] test\_remove\_singleValue() (gas: 64156) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.06ms (705.46µs CPU time)

Ran 9 tests for tests/unit/ProcessExit.t.sol:ProcessExitTests \[PASS] test\_processExit\_automatic() (gas: 50973) \[PASS] test\_processExit\_manual\_complete() (gas: 339259) \[PASS] test\_processExit\_manual\_partial() (gas: 305388) \[PASS] test\_processExit\_noShares() (gas: 46623) \[PASS] test\_processExit\_notEnoughLiquidity() (gas: 281552) \[PASS] test\_processExit\_notPoolManager() (gas: 21515) \[PASS] test\_processExit\_tooManyShares() (gas: 50939) \[PASS] test\_processExit\_tooManyShares\_notProcessed() (gas: 201532) \[PASS] test\_processExit\_transferFail() (gas: 294066) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 7.37ms (3.37ms CPU time)

Ran 4 tests for tests/unit/ProcessEmptyRedemptions.t.sol:ProcessEmptyRedemptionsFailureTests \[PASS] test\_processEmptyRedemptions\_governorNotAllowed() (gas: 45645) \[PASS] test\_processEmptyRedemptions\_notRedeemer() (gas: 45690) \[PASS] test\_processEmptyRedemptions\_protocolPaused() (gas: 37277) \[PASS] test\_processEmptyRedemptions\_zeroRequests() (gas: 42417) Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 13.57ms (755.29µs CPU time)

Ran 6 tests for tests/unit/Upgrade.t.sol:UpgradeTests \[PASS] test\_upgrade\_notPoolDelegate() (gas: 125129) \[PASS] test\_upgrade\_notScheduled() (gas: 43911) \[PASS] test\_upgrade\_notSecurityAdmin() (gas: 116893) \[PASS] test\_upgrade\_protocolPaused() (gas: 35529) \[PASS] test\_upgrade\_success() (gas: 101099) \[PASS] test\_upgrade\_upgradeFailed() (gas: 92969) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 10.30ms (5.59ms CPU time)

Ran 6 tests for tests/unit/RemoveRequest.t.sol:RemoveRequestTests \[PASS] test\_removeRequest\_failedTransfer() (gas: 258500) \[PASS] test\_removeRequest\_multiple\_requests\_success() (gas: 504917) \[PASS] test\_removeRequest\_notAuthorized() (gas: 51939) \[PASS] test\_removeRequest\_notInQueue() (gas: 42504) \[PASS] test\_removeRequest\_protocolPaused() (gas: 37391) \[PASS] test\_removeRequest\_success() (gas: 263732) Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 14.58ms (10.07ms CPU time)

Ran 9 tests for tests/unit/RemoveSharesById.t.sol:RemoveSharesByIdFailureTests \[PASS] test\_removeSharesById\_insufficientShares() (gas: 257548) \[PASS] test\_removeSharesById\_invalidRequest() (gas: 38778) \[PASS] test\_removeSharesById\_maxUint128Exceeded() (gas: 36884) \[PASS] test\_removeSharesById\_noChange() (gas: 257492) \[PASS] test\_removeSharesById\_notOwner() (gas: 257318) \[PASS] test\_removeSharesById\_protocolPaused() (gas: 38089) \[PASS] test\_removeSharesById\_requestAlreadyRemoved() (gas: 239292) \[PASS] test\_removeSharesById\_transferFail() (gas: 254599) \[PASS] test\_removeSharesById\_zeroRequestId() (gas: 41452) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 6.54ms (2.50ms CPU time)

Ran 9 tests for tests/unit/RemoveShares.t.sol:RemoveSharesTests \[PASS] test\_removeShares\_decreaseOnly() (gas: 238267) \[PASS] test\_removeShares\_emptyRequest() (gas: 21981) \[PASS] test\_removeShares\_failedTransfer() (gas: 239568) \[PASS] test\_removeShares\_notInQueue() (gas: 33299) \[PASS] test\_removeShares\_notPoolManager() (gas: 19216) \[PASS] test\_removeShares\_success\_cancelAllRequests() (gas: 460622) \[PASS] test\_removeShares\_success\_cancelRequest() (gas: 232357) \[PASS] test\_removeShares\_success\_decreaseRequest() (gas: 291746) \[PASS] test\_removeShares\_success\_partial\_multipleRequests() (gas: 482843) Suite result: ok. 9 passed; 0 failed; 0 skipped; finished in 11.32ms (5.75ms CPU time)

Ran 3 tests for tests/unit/SetImplementation.t.sol:SetImplementationTests \[PASS] test\_setImplementation\_notFactory() (gas: 30726) \[PASS] test\_setImplementation\_protocolPaused() (gas: 36746) \[PASS] test\_setImplementation\_success() (gas: 41679) Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 5.30ms (460.77µs CPU time)

\[PASS] test\_processRedemptions\_complex() (gas: 886492) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 17.95ms (5.58ms CPU time)

Ran 7 tests for tests/unit/AddShares.t.sol:AddSharesTests \[PASS] test\_addShares\_emptyRequest() (gas: 22003) \[PASS] test\_addShares\_failedTransfer() (gas: 197319) \[PASS] test\_addShares\_multiple\_requests() (gas: 369979) \[PASS] test\_addShares\_newRequestAddedToQueue() (gas: 243606) \[PASS] test\_addShares\_newRequestAddedToQueue\_manual() (gas: 268012) \[PASS] test\_addShares\_notPoolManager() (gas: 19325) \[PASS] test\_addShares\_success() (gas: 420040) Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 45.79ms (28.20ms CPU time)

Ran 10 tests for tests/unit/ViewFunctions.t.sol:ViewFunctionsTests \[PASS] testFuzz\_isInExitWindow(address) (runs: 256, μ: 11801, \~: 11801) \[PASS] test\_asset() (gas: 21045) \[PASS] test\_globals() (gas: 21066) \[PASS] test\_governor() (gas: 26809) \[PASS] test\_lockedLiquidity() (gas: 10960) \[PASS] test\_lockedShares(address,uint256) (runs: 256, μ: 36379, \~: 36457) \[PASS] test\_previewWithdraw(address,uint256) (runs: 256, μ: 12580, \~: 12580) \[PASS] test\_requests\_by\_owner() (gas: 746657) \[PASS] test\_requests\_by\_requestId() (gas: 731015) \[PASS] test\_securityAdmin() (gas: 26876) Suite result: ok. 10 passed; 0 failed; 0 skipped; finished in 37.28ms (79.16ms CPU time)

\[PASS] testFuzz\_removeShares(address\[10],uint256\[10],uint256\[10]) (runs: 256, μ: 553896, \~: 538295) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 402.86ms (397.75ms CPU time)

\[PASS] testFuzz\_addShares(uint256\[10],address\[10]) (runs: 256, μ: 1884370, \~: 1884890) Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 811.44ms (807.31ms CPU time)

Ran 2 tests for tests/integration/EndToEndTests.t.sol:EndToEndTests \[PASS] testFuzz\_fullFLow\_fixedExchangeRate(address\[10],bool\[10],uint256\[10]) (runs: 256, μ: 2662144, \~: 2669480) \[PASS] test\_e2e\_fullFlow() (gas: 823046) Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 930.57ms (930.78ms CPU time)

Ran 23 test suites in 932.72ms (2.40s CPU time): 124 tests passed, 0 failed, 0 skipped (124 total tests)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.maple.finance/technical-resources/security/test-report.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
