From 2bec06244e63e1594b49de03c9398288d6e2be7c Mon Sep 17 00:00:00 2001 From: Vectorized Date: Sat, 31 Aug 2024 03:27:05 +0000 Subject: [PATCH 1/3] Optimize FixedPointMathLib and strengthen tests --- .gas-snapshot | 1142 +++++++++++++++---------------- src/utils/FixedPointMathLib.sol | 5 +- test/FixedPointMathLib.t.sol | 33 +- 3 files changed, 603 insertions(+), 577 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index dc132b6b9..f4c14a4e3 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,9 +1,9 @@ Base64Test:testBase64DecodeSentenceGas() (gas: 3663) Base64Test:testBase64DecodeShortStringGas() (gas: 896) -Base64Test:testBase64EncodeDecode(bytes) (runs: 316, μ: 6073, ~: 4968) -Base64Test:testBase64EncodeDecodeAltModes(bytes) (runs: 316, μ: 887335, ~: 735717) +Base64Test:testBase64EncodeDecode(bytes) (runs: 317, μ: 6069, ~: 4968) +Base64Test:testBase64EncodeDecodeAltModes(bytes) (runs: 317, μ: 886843, ~: 735714) Base64Test:testBase64EncodeEmptyString() (gas: 902) -Base64Test:testBase64EncodeFileSafeAndNoPadding(bytes,bool,bool) (runs: 316, μ: 15775, ~: 14264) +Base64Test:testBase64EncodeFileSafeAndNoPadding(bytes,bool,bool) (runs: 317, μ: 15756, ~: 14264) Base64Test:testBase64EncodeSentence() (gas: 4333) Base64Test:testBase64EncodeShortStrings() (gas: 7610) Base64Test:testBase64EncodeToStringWithDoublePadding() (gas: 1553) @@ -11,86 +11,86 @@ Base64Test:testBase64EncodeToStringWithNoPadding() (gas: 1531) Base64Test:testBase64EncodeToStringWithSinglePadding() (gas: 1487) Base64Test:testBase64WordBoundary() (gas: 11624) Base64Test:test__codesize() (gas: 6841) -BrutalizerTest:testBrutalizedAddress(bytes32,address) (runs: 316, μ: 1387, ~: 1330) -BrutalizerTest:testBrutalizedBool(bytes32,bool) (runs: 316, μ: 1136, ~: 741) -BrutalizerTest:testBrutalizedBytes1(bytes32,bytes1) (runs: 316, μ: 1464, ~: 1397) -BrutalizerTest:testBrutalizedBytes31(bytes32,bytes31) (runs: 316, μ: 1411, ~: 1336) -BrutalizerTest:testBrutalizedUint248(bytes32,uint248) (runs: 316, μ: 1341, ~: 1287) -BrutalizerTest:testBrutalizedUint8(bytes32,uint8) (runs: 316, μ: 1286, ~: 1203) +BrutalizerTest:testBrutalizedAddress(bytes32,address) (runs: 317, μ: 1387, ~: 1330) +BrutalizerTest:testBrutalizedBool(bytes32,bool) (runs: 317, μ: 1135, ~: 741) +BrutalizerTest:testBrutalizedBytes1(bytes32,bytes1) (runs: 317, μ: 1465, ~: 1397) +BrutalizerTest:testBrutalizedBytes31(bytes32,bytes31) (runs: 317, μ: 1411, ~: 1336) +BrutalizerTest:testBrutalizedUint248(bytes32,uint248) (runs: 317, μ: 1341, ~: 1287) +BrutalizerTest:testBrutalizedUint8(bytes32,uint8) (runs: 317, μ: 1287, ~: 1203) BrutalizerTest:test__codesize() (gas: 2592) CREATE3Test:testDeployERC20() (gas: 781627) -CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 316, μ: 827634, ~: 827713) +CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 317, μ: 827776, ~: 827713) CREATE3Test:testDeployedUpperBitsSafeForPlainSolidity() (gas: 613) CREATE3Test:testDoubleDeployDifferentBytecodeReverts() (gas: 96898738) -CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 316, μ: 96880301, ~: 96880242) +CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 317, μ: 96880304, ~: 96880246) CREATE3Test:testDoubleDeploySameBytecodeReverts() (gas: 96889196) -CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 316, μ: 96881054, ~: 96880998) +CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 317, μ: 96881055, ~: 96880999) CREATE3Test:test__codesize() (gas: 13862) -DateTimeLibTest:testAddSubDiffDays(uint256,uint256) (runs: 316, μ: 4203, ~: 4209) -DateTimeLibTest:testAddSubDiffHours(uint256,uint256) (runs: 316, μ: 4145, ~: 4155) -DateTimeLibTest:testAddSubDiffMinutes(uint256,uint256) (runs: 316, μ: 4140, ~: 4129) -DateTimeLibTest:testAddSubDiffMonths(uint256,uint256) (runs: 316, μ: 7249, ~: 7257) -DateTimeLibTest:testAddSubDiffSeconds(uint256,uint256) (runs: 316, μ: 3756, ~: 3721) -DateTimeLibTest:testAddSubDiffYears(uint256,uint256) (runs: 316, μ: 6814, ~: 6822) +DateTimeLibTest:testAddSubDiffDays(uint256,uint256) (runs: 317, μ: 4202, ~: 4209) +DateTimeLibTest:testAddSubDiffHours(uint256,uint256) (runs: 317, μ: 4144, ~: 4155) +DateTimeLibTest:testAddSubDiffMinutes(uint256,uint256) (runs: 317, μ: 4140, ~: 4129) +DateTimeLibTest:testAddSubDiffMonths(uint256,uint256) (runs: 317, μ: 7249, ~: 7257) +DateTimeLibTest:testAddSubDiffSeconds(uint256,uint256) (runs: 317, μ: 3756, ~: 3721) +DateTimeLibTest:testAddSubDiffYears(uint256,uint256) (runs: 317, μ: 6813, ~: 6822) DateTimeLibTest:testDateTimeArithmeticReverts() (gas: 4495) DateTimeLibTest:testDateTimeMaxSupported() (gas: 2823) -DateTimeLibTest:testDateTimeToAndFroTimestamp((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 316, μ: 4136, ~: 4089) -DateTimeLibTest:testDateToAndFroEpochDay((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 316, μ: 2563, ~: 2581) +DateTimeLibTest:testDateTimeToAndFroTimestamp((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 317, μ: 4135, ~: 4089) +DateTimeLibTest:testDateToAndFroEpochDay((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 317, μ: 2563, ~: 2575) DateTimeLibTest:testDateToAndFroEpochDay() (gas: 877945) DateTimeLibTest:testDateToAndFroTimestamp() (gas: 926776) DateTimeLibTest:testDateToEpochDay() (gas: 1559) -DateTimeLibTest:testDateToEpochDayDifferential((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 316, μ: 2302, ~: 2315) -DateTimeLibTest:testDateToEpochDayDifferential2((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 316, μ: 2224, ~: 2242) +DateTimeLibTest:testDateToEpochDayDifferential((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 317, μ: 2302, ~: 2309) +DateTimeLibTest:testDateToEpochDayDifferential2((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 317, μ: 2224, ~: 2236) DateTimeLibTest:testDateToEpochDayGas() (gas: 764427) DateTimeLibTest:testDateToEpochDayGas2() (gas: 770404) DateTimeLibTest:testDayOfWeek() (gas: 175255) DateTimeLibTest:testDaysInMonth() (gas: 1226) -DateTimeLibTest:testDaysInMonth(uint256,uint256) (runs: 316, μ: 1069, ~: 1084) +DateTimeLibTest:testDaysInMonth(uint256,uint256) (runs: 317, μ: 1069, ~: 1084) DateTimeLibTest:testDaysToDate() (gas: 8377) -DateTimeLibTest:testEpochDayToDate(uint256) (runs: 316, μ: 1045, ~: 1045) -DateTimeLibTest:testEpochDayToDateDifferential(uint256) (runs: 316, μ: 1778, ~: 1721) -DateTimeLibTest:testEpochDayToDateDifferential2(uint256) (runs: 316, μ: 1785, ~: 1709) +DateTimeLibTest:testEpochDayToDate(uint256) (runs: 317, μ: 1045, ~: 1045) +DateTimeLibTest:testEpochDayToDateDifferential(uint256) (runs: 317, μ: 1778, ~: 1721) +DateTimeLibTest:testEpochDayToDateDifferential2(uint256) (runs: 317, μ: 1785, ~: 1709) DateTimeLibTest:testEpochDayToDateGas() (gas: 348457) DateTimeLibTest:testEpochDayToDateGas2() (gas: 360513) DateTimeLibTest:testIsLeapYear() (gas: 741) -DateTimeLibTest:testIsLeapYear(uint256) (runs: 316, μ: 537, ~: 517) +DateTimeLibTest:testIsLeapYear(uint256) (runs: 317, μ: 537, ~: 517) DateTimeLibTest:testIsSupportedDateFalse() (gas: 1180) -DateTimeLibTest:testIsSupportedDateTime((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 316, μ: 2951, ~: 2949) +DateTimeLibTest:testIsSupportedDateTime((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 317, μ: 2952, ~: 2949) DateTimeLibTest:testIsSupportedDateTrue() (gas: 626) DateTimeLibTest:testIsSupportedEpochDayFalse() (gas: 494) DateTimeLibTest:testIsSupportedEpochDayTrue() (gas: 305) DateTimeLibTest:testIsSupportedTimestampFalse() (gas: 541) DateTimeLibTest:testIsSupportedTimestampTrue() (gas: 326) -DateTimeLibTest:testIsWeekEnd(uint256) (runs: 316, μ: 692, ~: 617) +DateTimeLibTest:testIsWeekEnd(uint256) (runs: 317, μ: 692, ~: 617) DateTimeLibTest:testMondayTimestamp() (gas: 1106) -DateTimeLibTest:testMondayTimestamp(uint256) (runs: 316, μ: 768, ~: 836) +DateTimeLibTest:testMondayTimestamp(uint256) (runs: 317, μ: 767, ~: 836) DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp() (gas: 12053) -DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp(uint256,uint256,uint256,uint256) (runs: 316, μ: 3527, ~: 3576) +DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp(uint256,uint256,uint256,uint256) (runs: 317, μ: 3527, ~: 3576) DateTimeLibTest:testWeekday() (gas: 682) DateTimeLibTest:test__codesize() (gas: 19163) DelegateCheckerLibTest:testCheckDelegateForAll() (gas: 36319) -DelegateCheckerLibTest:testCheckDelegateForAll(address,address,bytes32) (runs: 316, μ: 230628, ~: 243818) +DelegateCheckerLibTest:testCheckDelegateForAll(address,address,bytes32) (runs: 317, μ: 230713, ~: 244600) DelegateCheckerLibTest:testCheckDelegateForContract() (gas: 55887) -DelegateCheckerLibTest:testCheckDelegateForContract(address,address,address,bytes32) (runs: 316, μ: 358296, ~: 311985) +DelegateCheckerLibTest:testCheckDelegateForContract(address,address,address,bytes32) (runs: 317, μ: 358593, ~: 313385) DelegateCheckerLibTest:testCheckDelegateForERC1155() (gas: 64282) -DelegateCheckerLibTest:testCheckDelegateForERC1155(address,address,address,uint256,bytes32) (runs: 316, μ: 304780, ~: 305427) +DelegateCheckerLibTest:testCheckDelegateForERC1155(address,address,address,uint256,bytes32) (runs: 317, μ: 304147, ~: 305371) DelegateCheckerLibTest:testCheckDelegateForERC20() (gas: 63763) -DelegateCheckerLibTest:testCheckDelegateForERC20(address,address,address,bytes32) (runs: 316, μ: 303556, ~: 282608) +DelegateCheckerLibTest:testCheckDelegateForERC20(address,address,address,bytes32) (runs: 317, μ: 302912, ~: 282459) DelegateCheckerLibTest:testCheckDelegateForERC721() (gas: 71988) -DelegateCheckerLibTest:testCheckDelegateForERC721(address,address,address,uint256,bytes32) (runs: 316, μ: 430278, ~: 397771) +DelegateCheckerLibTest:testCheckDelegateForERC721(address,address,address,uint256,bytes32) (runs: 317, μ: 430043, ~: 396615) DelegateCheckerLibTest:test__codesize() (gas: 32210) -DeploylessPredeployQueryerTest:testPredeployQueryer(bytes32) (runs: 316, μ: 268034, ~: 222310) +DeploylessPredeployQueryerTest:testPredeployQueryer(bytes32) (runs: 317, μ: 267811, ~: 222308) DeploylessPredeployQueryerTest:testTargetGenerate() (gas: 363686) DeploylessPredeployQueryerTest:test__codesize() (gas: 8284) -DynamicBufferLibTest:testClear(uint256) (runs: 316, μ: 34650, ~: 34761) -DynamicBufferLibTest:testDynamicBuffer(bytes[],uint256) (runs: 316, μ: 861875, ~: 788885) -DynamicBufferLibTest:testDynamicBuffer(uint256) (runs: 316, μ: 825822, ~: 677514) +DynamicBufferLibTest:testClear(uint256) (runs: 317, μ: 34649, ~: 34757) +DynamicBufferLibTest:testDynamicBuffer(bytes[],uint256) (runs: 317, μ: 861867, ~: 789080) +DynamicBufferLibTest:testDynamicBuffer(uint256) (runs: 317, μ: 825369, ~: 677542) DynamicBufferLibTest:testDynamicBufferChaining() (gas: 12661) -DynamicBufferLibTest:testDynamicBufferPushSingles(uint256,uint256,uint256) (runs: 316, μ: 212059, ~: 34251) +DynamicBufferLibTest:testDynamicBufferPushSingles(uint256,uint256,uint256) (runs: 317, μ: 213481, ~: 34300) DynamicBufferLibTest:testDynamicBufferPushSinglesReinterpretCast() (gas: 21959) DynamicBufferLibTest:testDynamicBufferReserveFromEmpty() (gas: 2754) DynamicBufferLibTest:testDynamicBufferReserveFromEmpty2() (gas: 2463) -DynamicBufferLibTest:testDynamicBufferReserveFromEmpty3(bytes,uint256) (runs: 316, μ: 2879, ~: 2099) +DynamicBufferLibTest:testDynamicBufferReserveFromEmpty3(bytes,uint256) (runs: 317, μ: 2877, ~: 2099) DynamicBufferLibTest:testJoinWithConcat() (gas: 31429) DynamicBufferLibTest:testJoinWithDynamicBuffer() (gas: 10830) DynamicBufferLibTest:test__codesize() (gas: 12735) @@ -100,15 +100,15 @@ ECDSATest:testBytesToEthSignedMessageHashEmpty() (gas: 556) ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 615885) ECDSATest:testBytesToEthSignedMessageHashLong() (gas: 725) ECDSATest:testBytesToEthSignedMessageHashShort() (gas: 576) -ECDSATest:testCanonicalHash(bytes32) (runs: 316, μ: 137385, ~: 39072) +ECDSATest:testCanonicalHash(bytes32) (runs: 317, μ: 137080, ~: 39096) ECDSATest:testCanonicalHashCalldataWith64bytesSignature() (gas: 1232939) ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1232433) ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 614272) ECDSATest:testCanonicalHashWithRegularSignature() (gas: 612711) ECDSATest:testEmptyCalldataHelpers() (gas: 3268) ECDSATest:testMalleabilityTrick() (gas: 2564) -ECDSATest:testMalleabilityTrick(uint256) (runs: 316, μ: 450, ~: 449) -ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 316, μ: 2941951, ~: 2534914) +ECDSATest:testMalleabilityTrick(uint256) (runs: 317, μ: 450, ~: 449) +ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 317, μ: 2940672, ~: 2534928) ECDSATest:testRecoverWithInvalidLongSignatureReverts() (gas: 7395) ECDSATest:testRecoverWithInvalidShortSignatureReturnsZero() (gas: 7231) ECDSATest:testRecoverWithInvalidSignatureReverts() (gas: 8018) @@ -158,60 +158,60 @@ EIP712Test:testHashTypedDataWithChaindIdChange() (gas: 45554) EIP712Test:test__codesize() (gas: 11394) ERC1155HooksTest:testERC1155Hooks() (gas: 4543936) ERC1155HooksTest:test__codesize() (gas: 11851) -ERC1155Test:testApproveAll(address,bool) (runs: 316, μ: 49286, ~: 58445) -ERC1155Test:testAuthorizedEquivalence(address,address,bool) (runs: 316, μ: 715, ~: 715) -ERC1155Test:testBalanceOfBatchWithArrayMismatchReverts(uint256) (runs: 316, μ: 32090, ~: 34892) -ERC1155Test:testBatchBalanceOf(uint256) (runs: 316, μ: 175128, ~: 173542) -ERC1155Test:testBatchBurn(uint256) (runs: 316, μ: 214672, ~: 195651) -ERC1155Test:testBatchBurnInsufficientBalanceReverts(uint256) (runs: 316, μ: 227501, ~: 212304) -ERC1155Test:testBatchBurnWithArrayLengthMismatchReverts(uint256) (runs: 316, μ: 55490, ~: 54939) -ERC1155Test:testBatchMintToEOA(uint256) (runs: 316, μ: 176585, ~: 173110) -ERC1155Test:testBatchMintToERC1155Recipient(uint256) (runs: 316, μ: 1462634, ~: 792999) -ERC1155Test:testBatchMintToNonERC1155RecipientReverts(uint256) (runs: 316, μ: 197050, ~: 186366) -ERC1155Test:testBatchMintToRevertingERC1155RecipientReverts(uint256) (runs: 316, μ: 374743, ~: 367438) -ERC1155Test:testBatchMintToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 316, μ: 314648, ~: 288065) -ERC1155Test:testBatchMintToZeroReverts(uint256) (runs: 316, μ: 103684, ~: 86479) -ERC1155Test:testBatchMintWithArrayMismatchReverts(uint256) (runs: 316, μ: 47498, ~: 36005) -ERC1155Test:testBurn(uint256) (runs: 316, μ: 135382, ~: 126808) -ERC1155Test:testBurnInsufficientBalanceReverts(uint256) (runs: 316, μ: 147660, ~: 128180) -ERC1155Test:testDirectSetApprovalForAll(address,address,bool) (runs: 316, μ: 25691, ~: 16060) -ERC1155Test:testMintToEOA(uint256) (runs: 316, μ: 121948, ~: 103250) -ERC1155Test:testMintToERC1155Recipient(uint256) (runs: 316, μ: 1172096, ~: 684238) -ERC1155Test:testMintToNonERC155RecipientReverts(uint256) (runs: 316, μ: 117510, ~: 103741) -ERC1155Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 316, μ: 301642, ~: 284212) -ERC1155Test:testMintToWrongReturnDataERC155RecipientReverts(uint256) (runs: 316, μ: 253675, ~: 238868) -ERC1155Test:testMintToZeroReverts(uint256) (runs: 316, μ: 55494, ~: 33636) +ERC1155Test:testApproveAll(address,bool) (runs: 317, μ: 49254, ~: 58445) +ERC1155Test:testAuthorizedEquivalence(address,address,bool) (runs: 317, μ: 715, ~: 715) +ERC1155Test:testBalanceOfBatchWithArrayMismatchReverts(uint256) (runs: 317, μ: 32100, ~: 34897) +ERC1155Test:testBatchBalanceOf(uint256) (runs: 317, μ: 174940, ~: 173542) +ERC1155Test:testBatchBurn(uint256) (runs: 317, μ: 214855, ~: 195670) +ERC1155Test:testBatchBurnInsufficientBalanceReverts(uint256) (runs: 317, μ: 229467, ~: 212391) +ERC1155Test:testBatchBurnWithArrayLengthMismatchReverts(uint256) (runs: 317, μ: 55452, ~: 54920) +ERC1155Test:testBatchMintToEOA(uint256) (runs: 317, μ: 176449, ~: 173064) +ERC1155Test:testBatchMintToERC1155Recipient(uint256) (runs: 317, μ: 1460995, ~: 794170) +ERC1155Test:testBatchMintToNonERC1155RecipientReverts(uint256) (runs: 317, μ: 196709, ~: 186358) +ERC1155Test:testBatchMintToRevertingERC1155RecipientReverts(uint256) (runs: 317, μ: 374446, ~: 367410) +ERC1155Test:testBatchMintToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 317, μ: 314516, ~: 288063) +ERC1155Test:testBatchMintToZeroReverts(uint256) (runs: 317, μ: 105180, ~: 86541) +ERC1155Test:testBatchMintWithArrayMismatchReverts(uint256) (runs: 317, μ: 47462, ~: 36004) +ERC1155Test:testBurn(uint256) (runs: 317, μ: 135412, ~: 126816) +ERC1155Test:testBurnInsufficientBalanceReverts(uint256) (runs: 317, μ: 147595, ~: 128168) +ERC1155Test:testDirectSetApprovalForAll(address,address,bool) (runs: 317, μ: 25660, ~: 16060) +ERC1155Test:testMintToEOA(uint256) (runs: 317, μ: 121858, ~: 103250) +ERC1155Test:testMintToERC1155Recipient(uint256) (runs: 317, μ: 1170549, ~: 683753) +ERC1155Test:testMintToNonERC155RecipientReverts(uint256) (runs: 317, μ: 117502, ~: 103744) +ERC1155Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 317, μ: 301622, ~: 284215) +ERC1155Test:testMintToWrongReturnDataERC155RecipientReverts(uint256) (runs: 317, μ: 253626, ~: 238868) +ERC1155Test:testMintToZeroReverts(uint256) (runs: 317, μ: 55460, ~: 33639) ERC1155Test:testSafeBatchTransfer() (gas: 8332973) -ERC1155Test:testSafeBatchTransferFromToEOA(uint256) (runs: 316, μ: 281606, ~: 285187) -ERC1155Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 316, μ: 2423745, ~: 1001041) -ERC1155Test:testSafeBatchTransferFromToNonERC1155RecipientReverts(uint256) (runs: 316, μ: 295070, ~: 292583) -ERC1155Test:testSafeBatchTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 316, μ: 481744, ~: 472224) -ERC1155Test:testSafeBatchTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 316, μ: 439293, ~: 427981) -ERC1155Test:testSafeBatchTransferFromToZeroReverts(uint256) (runs: 316, μ: 217363, ~: 198348) -ERC1155Test:testSafeBatchTransferFromWithArrayLengthMismatchReverts(uint256) (runs: 316, μ: 73418, ~: 68200) -ERC1155Test:testSafeBatchTransferInsufficientBalanceReverts(uint256) (runs: 316, μ: 246357, ~: 220084) -ERC1155Test:testSafeTransferFromInsufficientBalanceReverts(uint256) (runs: 316, μ: 158376, ~: 132551) -ERC1155Test:testSafeTransferFromSelf(uint256) (runs: 316, μ: 172843, ~: 140558) -ERC1155Test:testSafeTransferFromSelfInsufficientBalanceReverts(uint256) (runs: 316, μ: 145868, ~: 103935) -ERC1155Test:testSafeTransferFromToEOA(uint256) (runs: 316, μ: 171866, ~: 155426) -ERC1155Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 316, μ: 1518658, ~: 764490) -ERC1155Test:testSafeTransferFromToNonERC155RecipientReverts(uint256) (runs: 316, μ: 200659, ~: 173648) -ERC1155Test:testSafeTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 316, μ: 387689, ~: 354822) -ERC1155Test:testSafeTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 316, μ: 342866, ~: 310064) -ERC1155Test:testSafeTransferFromToZeroReverts(uint256) (runs: 316, μ: 137324, ~: 103593) +ERC1155Test:testSafeBatchTransferFromToEOA(uint256) (runs: 317, μ: 282055, ~: 285251) +ERC1155Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 317, μ: 2419714, ~: 1001116) +ERC1155Test:testSafeBatchTransferFromToNonERC1155RecipientReverts(uint256) (runs: 317, μ: 294865, ~: 292295) +ERC1155Test:testSafeBatchTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 317, μ: 481290, ~: 472164) +ERC1155Test:testSafeBatchTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 317, μ: 440688, ~: 428121) +ERC1155Test:testSafeBatchTransferFromToZeroReverts(uint256) (runs: 317, μ: 217214, ~: 198235) +ERC1155Test:testSafeBatchTransferFromWithArrayLengthMismatchReverts(uint256) (runs: 317, μ: 73437, ~: 68203) +ERC1155Test:testSafeBatchTransferInsufficientBalanceReverts(uint256) (runs: 317, μ: 247132, ~: 220315) +ERC1155Test:testSafeTransferFromInsufficientBalanceReverts(uint256) (runs: 317, μ: 158295, ~: 132529) +ERC1155Test:testSafeTransferFromSelf(uint256) (runs: 317, μ: 172956, ~: 140598) +ERC1155Test:testSafeTransferFromSelfInsufficientBalanceReverts(uint256) (runs: 317, μ: 145748, ~: 103959) +ERC1155Test:testSafeTransferFromToEOA(uint256) (runs: 317, μ: 171863, ~: 155455) +ERC1155Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 317, μ: 1516245, ~: 764397) +ERC1155Test:testSafeTransferFromToNonERC155RecipientReverts(uint256) (runs: 317, μ: 200582, ~: 173656) +ERC1155Test:testSafeTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 317, μ: 387583, ~: 354762) +ERC1155Test:testSafeTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 317, μ: 342731, ~: 310061) +ERC1155Test:testSafeTransferFromToZeroReverts(uint256) (runs: 317, μ: 137183, ~: 103566) ERC1155Test:test__codesize() (gas: 42015) ERC1271Test:testBasefeeBytecodeContract() (gas: 45430) ERC1271Test:testIsValidSignature() (gas: 2390984) -ERC1271Test:testIsValidSignature(uint256) (runs: 316, μ: 248050, ~: 210746) +ERC1271Test:testIsValidSignature(uint256) (runs: 317, μ: 247947, ~: 210835) ERC1271Test:testSupportsNestedTypedDataSign() (gas: 165249) ERC1271Test:test__codesize() (gas: 29885) ERC1967FactoryTest:testChangeAdmin() (gas: 266261) ERC1967FactoryTest:testChangeAdminUnauthorized() (gas: 257261) ERC1967FactoryTest:testDeploy() (gas: 257129) -ERC1967FactoryTest:testDeployAndCall(uint256) (runs: 316, μ: 340245, ~: 340867) +ERC1967FactoryTest:testDeployAndCall(uint256) (runs: 317, μ: 340247, ~: 340868) ERC1967FactoryTest:testDeployAndCallWithRevert() (gas: 211629) -ERC1967FactoryTest:testDeployBrutalized(uint256) (runs: 316, μ: 98836, ~: 43744) -ERC1967FactoryTest:testDeployDeterministicAndCall(uint256) (runs: 316, μ: 317866, ~: 349793) +ERC1967FactoryTest:testDeployBrutalized(uint256) (runs: 317, μ: 98663, ~: 43744) +ERC1967FactoryTest:testDeployDeterministicAndCall(uint256) (runs: 317, μ: 317967, ~: 349792) ERC1967FactoryTest:testFactoryDeployment() (gas: 494423) ERC1967FactoryTest:testProxyFails() (gas: 258426) ERC1967FactoryTest:testProxySucceeds() (gas: 255451) @@ -224,45 +224,45 @@ ERC1967FactoryTest:test__codesize() (gas: 32273) ERC20Invariants:invariantBalanceSum() (runs: 10, calls: 150, reverts: 83) ERC20Invariants:test__codesize() (gas: 7280) ERC20Test:testApprove() (gas: 35730) -ERC20Test:testApprove(address,uint256) (runs: 316, μ: 31055, ~: 31181) +ERC20Test:testApprove(address,uint256) (runs: 317, μ: 31055, ~: 31181) ERC20Test:testBurn() (gas: 62424) -ERC20Test:testBurn(address,uint256,uint256) (runs: 316, μ: 62472, ~: 63044) -ERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 316, μ: 56595, ~: 56959) -ERC20Test:testDirectSpendAllowance(uint256) (runs: 316, μ: 61794, ~: 61563) -ERC20Test:testDirectTransfer(uint256) (runs: 316, μ: 99721, ~: 112559) +ERC20Test:testBurn(address,uint256,uint256) (runs: 317, μ: 62474, ~: 63044) +ERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 317, μ: 56596, ~: 56959) +ERC20Test:testDirectSpendAllowance(uint256) (runs: 317, μ: 61796, ~: 61564) +ERC20Test:testDirectTransfer(uint256) (runs: 317, μ: 99762, ~: 112559) ERC20Test:testInfiniteApproveTransferFrom() (gas: 90855) ERC20Test:testMetadata() (gas: 16516) ERC20Test:testMint() (gas: 58888) -ERC20Test:testMint(address,uint256) (runs: 316, μ: 58879, ~: 59131) +ERC20Test:testMint(address,uint256) (runs: 317, μ: 58880, ~: 59131) ERC20Test:testMintOverMaxUintReverts() (gas: 56350) ERC20Test:testPermit() (gas: 89369) -ERC20Test:testPermit(uint256) (runs: 316, μ: 89462, ~: 89461) -ERC20Test:testPermitBadDeadlineReverts(uint256) (runs: 316, μ: 41222, ~: 41221) -ERC20Test:testPermitBadNonceReverts(uint256) (runs: 316, μ: 41647, ~: 41595) -ERC20Test:testPermitPastDeadlineReverts(uint256) (runs: 316, μ: 35758, ~: 35752) -ERC20Test:testPermitReplayReverts(uint256) (runs: 316, μ: 92170, ~: 92166) +ERC20Test:testPermit(uint256) (runs: 317, μ: 89462, ~: 89461) +ERC20Test:testPermitBadDeadlineReverts(uint256) (runs: 317, μ: 41221, ~: 41221) +ERC20Test:testPermitBadNonceReverts(uint256) (runs: 317, μ: 41646, ~: 41592) +ERC20Test:testPermitPastDeadlineReverts(uint256) (runs: 317, μ: 35758, ~: 35752) +ERC20Test:testPermitReplayReverts(uint256) (runs: 317, μ: 92170, ~: 92166) ERC20Test:testTransfer() (gas: 65884) -ERC20Test:testTransfer(address,uint256) (runs: 316, μ: 65849, ~: 66100) +ERC20Test:testTransfer(address,uint256) (runs: 317, μ: 65850, ~: 66100) ERC20Test:testTransferFrom() (gas: 86323) -ERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 316, μ: 93172, ~: 95625) +ERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 317, μ: 93180, ~: 95625) ERC20Test:testTransferFromInsufficientAllowanceReverts() (gas: 82333) -ERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 316, μ: 82678, ~: 82853) +ERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 317, μ: 82679, ~: 82853) ERC20Test:testTransferFromInsufficientBalanceReverts() (gas: 62681) -ERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 316, μ: 63302, ~: 63288) +ERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 317, μ: 63302, ~: 63288) ERC20Test:testTransferInsufficientBalanceReverts() (gas: 56494) -ERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 316, μ: 56653, ~: 57018) +ERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 317, μ: 56655, ~: 57018) ERC20Test:test__codesize() (gas: 22610) -ERC2981Test:testRoyaltyOverflowCheckDifferential(uint256,uint256) (runs: 316, μ: 479, ~: 480) -ERC2981Test:testSetAndGetRoyaltyInfo(uint256) (runs: 316, μ: 108745, ~: 105306) +ERC2981Test:testRoyaltyOverflowCheckDifferential(uint256,uint256) (runs: 317, μ: 479, ~: 480) +ERC2981Test:testSetAndGetRoyaltyInfo(uint256) (runs: 317, μ: 108776, ~: 105307) ERC2981Test:test__codesize() (gas: 7229) ERC4337FactoryTest:testCreateAccountRepeatedDeployment() (gas: 149753) -ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 316, μ: 171339, ~: 171396) -ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 316, μ: 132020, ~: 139611) +ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 317, μ: 171339, ~: 171396) +ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 317, μ: 132044, ~: 139611) ERC4337FactoryTest:test__codesize() (gas: 13112) ERC4337Test:testCdFallback() (gas: 438041) ERC4337Test:testCdFallback2() (gas: 1135303) ERC4337Test:testDelegateExecute() (gas: 366407) -ERC4337Test:testDelegateExecute(uint256) (runs: 316, μ: 355592, ~: 345250) +ERC4337Test:testDelegateExecute(uint256) (runs: 317, μ: 355559, ~: 345250) ERC4337Test:testDelegateExecuteRevertsIfOwnerSlotValueChanged() (gas: 320067) ERC4337Test:testDepositFunctions() (gas: 497221) ERC4337Test:testDirectStorage() (gas: 70503) @@ -270,10 +270,10 @@ ERC4337Test:testDisableInitializerForImplementation() (gas: 1348481) ERC4337Test:testETHReceived() (gas: 16584) ERC4337Test:testExecute() (gas: 383460) ERC4337Test:testExecuteBatch() (gas: 694187) -ERC4337Test:testExecuteBatch(uint256) (runs: 316, μ: 542307, ~: 670562) +ERC4337Test:testExecuteBatch(uint256) (runs: 317, μ: 543702, ~: 670564) ERC4337Test:testInitializer() (gas: 285469) ERC4337Test:testIsValidSignature() (gas: 120476) -ERC4337Test:testIsValidSignaturePersonalSign(bytes32) (runs: 316, μ: 103746, ~: 103879) +ERC4337Test:testIsValidSignaturePersonalSign(bytes32) (runs: 317, μ: 103745, ~: 103879) ERC4337Test:testIsValidSignatureViaRPC() (gas: 96881551) ERC4337Test:testIsValidSignatureWrapped() (gas: 446377) ERC4337Test:testOnERC1155BatchReceived() (gas: 1467437) @@ -284,15 +284,15 @@ ERC4337Test:testValidateUserOp() (gas: 484693) ERC4337Test:test__codesize() (gas: 55947) ERC4626Test:testDepositWithNoApprovalReverts() (gas: 16954) ERC4626Test:testDepositWithNotEnoughApprovalReverts() (gas: 90752) -ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 316, μ: 3321, ~: 3213) +ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 317, μ: 3323, ~: 3319) ERC4626Test:testMetadata() (gas: 14354) ERC4626Test:testMintWithNoApprovalReverts() (gas: 16928) ERC4626Test:testMintZero() (gas: 53930) ERC4626Test:testMultipleMintDepositRedeemWithdraw() (gas: 412871) ERC4626Test:testRedeemWithNoShareAmountReverts() (gas: 10918) ERC4626Test:testRedeemWithNotEnoughShareAmountReverts() (gas: 143777) -ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 316, μ: 202556, ~: 202560) -ERC4626Test:testSingleMintRedeem(uint128) (runs: 316, μ: 201522, ~: 201525) +ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 317, μ: 202556, ~: 202560) +ERC4626Test:testSingleMintRedeem(uint128) (runs: 317, μ: 201522, ~: 201525) ERC4626Test:testTryGetAssetDecimals() (gas: 30700474) ERC4626Test:testUseVirtualShares() (gas: 2428448) ERC4626Test:testVaultInteractionsForSomeoneElse() (gas: 297836) @@ -303,156 +303,156 @@ ERC4626Test:testWithdrawZero() (gas: 52056) ERC4626Test:test__codesize() (gas: 36907) ERC6551Test:testBaseFeeMini() (gas: 39514) ERC6551Test:testCdFallback() (gas: 895614) -ERC6551Test:testDeployERC6551(uint256) (runs: 316, μ: 170023, ~: 168568) +ERC6551Test:testDeployERC6551(uint256) (runs: 317, μ: 170018, ~: 168568) ERC6551Test:testDeployERC6551Proxy() (gas: 80395) ERC6551Test:testExecute() (gas: 507328) ERC6551Test:testExecuteBatch() (gas: 817415) -ERC6551Test:testExecuteBatch(uint256) (runs: 316, μ: 643032, ~: 762178) +ERC6551Test:testExecuteBatch(uint256) (runs: 317, μ: 644333, ~: 762189) ERC6551Test:testInitializeERC6551ProxyImplementation() (gas: 189976) -ERC6551Test:testIsValidSigner(address) (runs: 316, μ: 167335, ~: 167323) +ERC6551Test:testIsValidSigner(address) (runs: 317, μ: 167335, ~: 167323) ERC6551Test:testOnERC1155BatchReceived() (gas: 1602799) ERC6551Test:testOnERC1155Received() (gas: 1600016) ERC6551Test:testOnERC721Received() (gas: 1523963) ERC6551Test:testOnERC721ReceivedCycles() (gas: 2975498) -ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 316, μ: 452595, ~: 457650) -ERC6551Test:testOwnerWorksWithChainIdChange(uint256,uint256) (runs: 316, μ: 1386677, ~: 1386687) +ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 317, μ: 452554, ~: 457628) +ERC6551Test:testOwnerWorksWithChainIdChange(uint256,uint256) (runs: 317, μ: 1386677, ~: 1386687) ERC6551Test:testSupportsInterface() (gas: 168994) -ERC6551Test:testUpdateState(uint256) (runs: 316, μ: 234735, ~: 234661) +ERC6551Test:testUpdateState(uint256) (runs: 317, μ: 234735, ~: 234661) ERC6551Test:testUpgrade() (gas: 248410) ERC6551Test:test__codesize() (gas: 50997) ERC6909Test:testApprove() (gas: 37066) -ERC6909Test:testApprove(address,uint256,uint256) (runs: 316, μ: 37582, ~: 37708) +ERC6909Test:testApprove(address,uint256,uint256) (runs: 317, μ: 37583, ~: 37708) ERC6909Test:testBurn() (gas: 41275) -ERC6909Test:testBurn(address,uint256,uint256,uint256) (runs: 316, μ: 41102, ~: 41786) -ERC6909Test:testBurnInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 316, μ: 35453, ~: 35627) +ERC6909Test:testBurn(address,uint256,uint256,uint256) (runs: 317, μ: 41104, ~: 41786) +ERC6909Test:testBurnInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 317, μ: 35453, ~: 35627) ERC6909Test:testDecimals() (gas: 5676) ERC6909Test:testDirectApprove() (gas: 36737) -ERC6909Test:testDirectFunctions(uint256) (runs: 316, μ: 200083, ~: 202153) +ERC6909Test:testDirectFunctions(uint256) (runs: 317, μ: 200158, ~: 202155) ERC6909Test:testDirectSetOperator() (gas: 35937) ERC6909Test:testDirectTransfer() (gas: 67044) ERC6909Test:testInfiniteApproveTransferFrom() (gas: 79389) -ERC6909Test:testMetadata(uint256) (runs: 316, μ: 8257, ~: 8257) +ERC6909Test:testMetadata(uint256) (runs: 317, μ: 8257, ~: 8257) ERC6909Test:testMint() (gas: 37240) -ERC6909Test:testMint(address,uint256,uint256) (runs: 316, μ: 37345, ~: 37471) +ERC6909Test:testMint(address,uint256,uint256) (runs: 317, μ: 37346, ~: 37471) ERC6909Test:testMintOverMaxUintReverts() (gas: 35009) -ERC6909Test:testMintOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 316, μ: 35915, ~: 35928) +ERC6909Test:testMintOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 317, μ: 35915, ~: 35928) ERC6909Test:testOperatorTransferFrom() (gas: 74717) ERC6909Test:testSetOperator() (gas: 37321) -ERC6909Test:testSetOperator(address,address,bool) (runs: 316, μ: 26402, ~: 16767) +ERC6909Test:testSetOperator(address,address,bool) (runs: 317, μ: 26371, ~: 16767) ERC6909Test:testTokenURI() (gas: 32876) ERC6909Test:testTransfer() (gas: 48585) -ERC6909Test:testTransfer(address,uint256,uint256) (runs: 316, μ: 47577, ~: 47707) +ERC6909Test:testTransfer(address,uint256,uint256) (runs: 317, μ: 47577, ~: 47707) ERC6909Test:testTransferFrom() (gas: 75316) -ERC6909Test:testTransferFrom(address,address,address,uint256,uint256,uint256) (runs: 316, μ: 80699, ~: 81977) -ERC6909Test:testTransferFromCallerIsNotOperator(address,uint256,uint256) (runs: 316, μ: 40214, ~: 40212) -ERC6909Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256,uint256) (runs: 316, μ: 68014, ~: 68581) +ERC6909Test:testTransferFrom(address,address,address,uint256,uint256,uint256) (runs: 317, μ: 80703, ~: 81977) +ERC6909Test:testTransferFromCallerIsNotOperator(address,uint256,uint256) (runs: 317, μ: 40214, ~: 40212) +ERC6909Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256,uint256) (runs: 317, μ: 68016, ~: 68581) ERC6909Test:testTransferFromInsufficientBalanceReverts() (gas: 50505) -ERC6909Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 316, μ: 51121, ~: 50733) +ERC6909Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 317, μ: 51120, ~: 50734) ERC6909Test:testTransferFromInsufficientPermission() (gas: 68051) ERC6909Test:testTransferFromOverMaxUintReverts() (gas: 91617) -ERC6909Test:testTransferFromOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 316, μ: 114681, ~: 114872) +ERC6909Test:testTransferFromOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 317, μ: 114682, ~: 114872) ERC6909Test:testTransferInsufficientBalanceReverts() (gas: 35133) -ERC6909Test:testTransferInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 316, μ: 35301, ~: 35675) +ERC6909Test:testTransferInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 317, μ: 35303, ~: 35675) ERC6909Test:testTransferOverMaxUintReverts() (gas: 64388) -ERC6909Test:testTransferOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 316, μ: 64941, ~: 64930) +ERC6909Test:testTransferOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 317, μ: 64942, ~: 64930) ERC6909Test:test__codesize() (gas: 25622) ERC721HooksTest:testERC721Hooks() (gas: 3012871) ERC721HooksTest:test__codesize() (gas: 9998) -ERC721Test:testApprove(uint256) (runs: 316, μ: 108320, ~: 108048) -ERC721Test:testApproveAll(uint256) (runs: 316, μ: 50335, ~: 59870) -ERC721Test:testApproveBurn(uint256) (runs: 316, μ: 86726, ~: 86515) -ERC721Test:testApproveNonExistentReverts(uint256,address) (runs: 316, μ: 33662, ~: 33658) -ERC721Test:testApproveUnauthorizedReverts(uint256) (runs: 316, μ: 83435, ~: 82818) -ERC721Test:testAuthorizedEquivalence(address,bool,bool) (runs: 316, μ: 684, ~: 678) -ERC721Test:testAux(uint256) (runs: 316, μ: 194499, ~: 193020) -ERC721Test:testBurn(uint256) (runs: 316, μ: 81526, ~: 69065) -ERC721Test:testBurnNonExistentReverts(uint256) (runs: 316, μ: 10805, ~: 10805) +ERC721Test:testApprove(uint256) (runs: 317, μ: 108319, ~: 108048) +ERC721Test:testApproveAll(uint256) (runs: 317, μ: 50302, ~: 59870) +ERC721Test:testApproveBurn(uint256) (runs: 317, μ: 86727, ~: 86515) +ERC721Test:testApproveNonExistentReverts(uint256,address) (runs: 317, μ: 33662, ~: 33658) +ERC721Test:testApproveUnauthorizedReverts(uint256) (runs: 317, μ: 83431, ~: 82818) +ERC721Test:testAuthorizedEquivalence(address,bool,bool) (runs: 317, μ: 684, ~: 678) +ERC721Test:testAux(uint256) (runs: 317, μ: 194493, ~: 193020) +ERC721Test:testBurn(uint256) (runs: 317, μ: 81566, ~: 69068) +ERC721Test:testBurnNonExistentReverts(uint256) (runs: 317, μ: 10805, ~: 10805) ERC721Test:testCannotExceedMaxBalance() (gas: 172230) -ERC721Test:testDoubleBurnReverts(uint256) (runs: 316, μ: 63632, ~: 63642) -ERC721Test:testDoubleMintReverts(uint256) (runs: 316, μ: 79489, ~: 79501) -ERC721Test:testEverything(uint256) (runs: 316, μ: 296137, ~: 305121) -ERC721Test:testExtraData(uint256) (runs: 316, μ: 99347, ~: 99348) -ERC721Test:testExtraData2(uint256,uint256) (runs: 316, μ: 53960, ~: 53889) -ERC721Test:testIsApprovedOrOwner(uint256) (runs: 316, μ: 137677, ~: 137711) -ERC721Test:testMint(uint256) (runs: 316, μ: 82803, ~: 82894) -ERC721Test:testMintAndSetExtraDataUnchecked(uint256) (runs: 316, μ: 84628, ~: 84716) -ERC721Test:testMintAndSetExtraDataUncheckedWithOverwrite(uint256,uint96) (runs: 316, μ: 84082, ~: 84075) -ERC721Test:testMintToZeroReverts(uint256) (runs: 316, μ: 40108, ~: 40107) -ERC721Test:testOwnerOfNonExistent(uint256) (runs: 316, μ: 33174, ~: 33185) -ERC721Test:testSafeMintToEOA(uint256) (runs: 316, μ: 83311, ~: 83232) -ERC721Test:testSafeMintToERC721Recipient(uint256) (runs: 316, μ: 409506, ~: 409920) -ERC721Test:testSafeMintToERC721RecipientWithData(uint256,bytes) (runs: 316, μ: 459381, ~: 453884) -ERC721Test:testSafeMintToERC721RecipientWithWrongReturnData(uint256) (runs: 316, μ: 170595, ~: 170595) -ERC721Test:testSafeMintToERC721RecipientWithWrongReturnDataWithData(uint256,bytes) (runs: 316, μ: 171832, ~: 171784) -ERC721Test:testSafeMintToNonERC721RecipientReverts(uint256) (runs: 316, μ: 100695, ~: 100695) -ERC721Test:testSafeMintToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 316, μ: 101964, ~: 101916) -ERC721Test:testSafeMintToRevertingERC721RecipientReverts(uint256) (runs: 316, μ: 203531, ~: 203531) -ERC721Test:testSafeMintToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 316, μ: 204789, ~: 204741) -ERC721Test:testSafeTransferFromToEOA(uint256) (runs: 316, μ: 122707, ~: 122727) -ERC721Test:testSafeTransferFromToERC721Recipient(uint256) (runs: 316, μ: 471956, ~: 472462) -ERC721Test:testSafeTransferFromToERC721RecipientWithData(uint256,bytes) (runs: 316, μ: 521931, ~: 516371) -ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataReverts(uint256) (runs: 316, μ: 202274, ~: 202152) -ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataWithDataReverts(uint256,bytes) (runs: 316, μ: 203700, ~: 203806) -ERC721Test:testSafeTransferFromToNonERC721RecipientReverts(uint256) (runs: 316, μ: 132389, ~: 132511) -ERC721Test:testSafeTransferFromToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 316, μ: 133802, ~: 133895) -ERC721Test:testSafeTransferFromToRevertingERC721RecipientReverts(uint256) (runs: 316, μ: 235226, ~: 235106) -ERC721Test:testSafeTransferFromToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 316, μ: 236582, ~: 236585) -ERC721Test:testSafetyOfCustomStorage(uint256,uint256) (runs: 316, μ: 784, ~: 713) +ERC721Test:testDoubleBurnReverts(uint256) (runs: 317, μ: 63632, ~: 63642) +ERC721Test:testDoubleMintReverts(uint256) (runs: 317, μ: 79489, ~: 79501) +ERC721Test:testEverything(uint256) (runs: 317, μ: 296171, ~: 305135) +ERC721Test:testExtraData(uint256) (runs: 317, μ: 99349, ~: 99355) +ERC721Test:testExtraData2(uint256,uint256) (runs: 317, μ: 53959, ~: 53889) +ERC721Test:testIsApprovedOrOwner(uint256) (runs: 317, μ: 137677, ~: 137711) +ERC721Test:testMint(uint256) (runs: 317, μ: 82803, ~: 82894) +ERC721Test:testMintAndSetExtraDataUnchecked(uint256) (runs: 317, μ: 84627, ~: 84716) +ERC721Test:testMintAndSetExtraDataUncheckedWithOverwrite(uint256,uint96) (runs: 317, μ: 84082, ~: 84075) +ERC721Test:testMintToZeroReverts(uint256) (runs: 317, μ: 40108, ~: 40107) +ERC721Test:testOwnerOfNonExistent(uint256) (runs: 317, μ: 33174, ~: 33185) +ERC721Test:testSafeMintToEOA(uint256) (runs: 317, μ: 83311, ~: 83232) +ERC721Test:testSafeMintToERC721Recipient(uint256) (runs: 317, μ: 409507, ~: 409920) +ERC721Test:testSafeMintToERC721RecipientWithData(uint256,bytes) (runs: 317, μ: 459363, ~: 453884) +ERC721Test:testSafeMintToERC721RecipientWithWrongReturnData(uint256) (runs: 317, μ: 170595, ~: 170595) +ERC721Test:testSafeMintToERC721RecipientWithWrongReturnDataWithData(uint256,bytes) (runs: 317, μ: 171832, ~: 171784) +ERC721Test:testSafeMintToNonERC721RecipientReverts(uint256) (runs: 317, μ: 100695, ~: 100695) +ERC721Test:testSafeMintToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 317, μ: 101964, ~: 101916) +ERC721Test:testSafeMintToRevertingERC721RecipientReverts(uint256) (runs: 317, μ: 203531, ~: 203531) +ERC721Test:testSafeMintToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 317, μ: 204789, ~: 204741) +ERC721Test:testSafeTransferFromToEOA(uint256) (runs: 317, μ: 122707, ~: 122731) +ERC721Test:testSafeTransferFromToERC721Recipient(uint256) (runs: 317, μ: 471956, ~: 472462) +ERC721Test:testSafeTransferFromToERC721RecipientWithData(uint256,bytes) (runs: 317, μ: 521914, ~: 516371) +ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataReverts(uint256) (runs: 317, μ: 202275, ~: 202152) +ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataWithDataReverts(uint256,bytes) (runs: 317, μ: 203700, ~: 203806) +ERC721Test:testSafeTransferFromToNonERC721RecipientReverts(uint256) (runs: 317, μ: 132389, ~: 132511) +ERC721Test:testSafeTransferFromToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 317, μ: 133802, ~: 133895) +ERC721Test:testSafeTransferFromToRevertingERC721RecipientReverts(uint256) (runs: 317, μ: 235225, ~: 235106) +ERC721Test:testSafeTransferFromToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 317, μ: 236582, ~: 236585) +ERC721Test:testSafetyOfCustomStorage(uint256,uint256) (runs: 317, μ: 783, ~: 713) ERC721Test:testTransferFrom() (gas: 86352) -ERC721Test:testTransferFrom(uint256) (runs: 316, μ: 114170, ~: 113163) -ERC721Test:testTransferFromApproveAll(uint256) (runs: 316, μ: 119772, ~: 119766) -ERC721Test:testTransferFromNotExistentReverts(address,address,uint256) (runs: 316, μ: 34558, ~: 34755) -ERC721Test:testTransferFromNotOwner(uint256) (runs: 316, μ: 85267, ~: 85442) -ERC721Test:testTransferFromSelf(uint256) (runs: 316, μ: 93024, ~: 93066) -ERC721Test:testTransferFromToZeroReverts(uint256) (runs: 316, μ: 63444, ~: 63319) -ERC721Test:testTransferFromWrongFromReverts(address,uint256) (runs: 316, μ: 80986, ~: 81161) +ERC721Test:testTransferFrom(uint256) (runs: 317, μ: 114167, ~: 113167) +ERC721Test:testTransferFromApproveAll(uint256) (runs: 317, μ: 119771, ~: 119766) +ERC721Test:testTransferFromNotExistentReverts(address,address,uint256) (runs: 317, μ: 34558, ~: 34755) +ERC721Test:testTransferFromNotOwner(uint256) (runs: 317, μ: 85267, ~: 85442) +ERC721Test:testTransferFromSelf(uint256) (runs: 317, μ: 93025, ~: 93066) +ERC721Test:testTransferFromToZeroReverts(uint256) (runs: 317, μ: 63445, ~: 63319) +ERC721Test:testTransferFromWrongFromReverts(address,uint256) (runs: 317, μ: 80986, ~: 81161) ERC721Test:test__codesize() (gas: 42126) EfficientHashLibTest:testEfficientHash() (gas: 8084) -EfficientHashLibTest:testEfficientHash(uint256) (runs: 316, μ: 8133, ~: 8133) +EfficientHashLibTest:testEfficientHash(uint256) (runs: 317, μ: 8133, ~: 8133) EfficientHashLibTest:testEfficientHashBytesSlice() (gas: 26774) -EfficientHashLibTest:testEfficientHashBytesSlice(bytes32,bytes) (runs: 316, μ: 26312, ~: 26262) +EfficientHashLibTest:testEfficientHashBytesSlice(bytes32,bytes) (runs: 317, μ: 26311, ~: 26262) EfficientHashLibTest:testEfficientHashFree() (gas: 350) -EfficientHashLibTest:testEfficientHashFree(uint8,bool,uint8) (runs: 316, μ: 1019, ~: 909) +EfficientHashLibTest:testEfficientHashFree(uint8,bool,uint8) (runs: 317, μ: 1019, ~: 866) EfficientHashLibTest:testEfficientHashSet() (gas: 2283) EfficientHashLibTest:testEfficientHashUints() (gas: 6636) EfficientHashLibTest:test__codesize() (gas: 6357) EnumerableSetLibTest:testEnumerableAddressSetBasic() (gas: 248436) EnumerableSetLibTest:testEnumerableAddressSetBasic2() (gas: 175344) EnumerableSetLibTest:testEnumerableAddressSetNoStorageCollision() (gas: 98950) -EnumerableSetLibTest:testEnumerableAddressSetRevertsOnSentinel(uint256) (runs: 316, μ: 47486, ~: 41054) +EnumerableSetLibTest:testEnumerableAddressSetRevertsOnSentinel(uint256) (runs: 317, μ: 47486, ~: 41501) EnumerableSetLibTest:testEnumerableBytes32SetBasic() (gas: 271282) EnumerableSetLibTest:testEnumerableBytes32SetBasic2() (gas: 178471) EnumerableSetLibTest:testEnumerableBytes32SetNoStorageCollision() (gas: 103477) -EnumerableSetLibTest:testEnumerableBytes32SetRevertsOnSentinel(uint256) (runs: 316, μ: 51859, ~: 49215) -EnumerableSetLibTest:testEnumerableSetFuzz(uint256) (runs: 316, μ: 605022, ~: 486411) +EnumerableSetLibTest:testEnumerableBytes32SetRevertsOnSentinel(uint256) (runs: 317, μ: 51896, ~: 49215) +EnumerableSetLibTest:testEnumerableSetFuzz(uint256) (runs: 317, μ: 605403, ~: 486868) EnumerableSetLibTest:test__codesize() (gas: 14261) FixedPointMathLibTest:testAbs() (gas: 723) -FixedPointMathLibTest:testAbs(int256) (runs: 316, μ: 510, ~: 479) +FixedPointMathLibTest:testAbs(int256) (runs: 317, μ: 510, ~: 479) FixedPointMathLibTest:testAbsEdgeCases() (gas: 513) FixedPointMathLibTest:testAvg() (gas: 442) FixedPointMathLibTest:testAvgEdgeCase() (gas: 492) FixedPointMathLibTest:testAvgSigned() (gas: 923) FixedPointMathLibTest:testCbrt() (gas: 10283) -FixedPointMathLibTest:testCbrt(uint256) (runs: 316, μ: 1522, ~: 1535) -FixedPointMathLibTest:testCbrtBack(uint256) (runs: 316, μ: 34075, ~: 42315) +FixedPointMathLibTest:testCbrt(uint256) (runs: 317, μ: 1522, ~: 1535) +FixedPointMathLibTest:testCbrtBack(uint256) (runs: 317, μ: 34385, ~: 42315) FixedPointMathLibTest:testCbrtWad() (gas: 12050) -FixedPointMathLibTest:testCbrtWad(uint256) (runs: 316, μ: 2143, ~: 1973) +FixedPointMathLibTest:testCbrtWad(uint256) (runs: 317, μ: 2153, ~: 1973) FixedPointMathLibTest:testCbrtWadConverged() (gas: 2682) -FixedPointMathLibTest:testCbrtWadConverged(uint256) (runs: 316, μ: 2181, ~: 2232) +FixedPointMathLibTest:testCbrtWadConverged(uint256) (runs: 317, μ: 2179, ~: 2232) FixedPointMathLibTest:testCbrtWadDebug() (gas: 7360) FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing() (gas: 4227) -FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 316, μ: 3109, ~: 2425) -FixedPointMathLibTest:testClamp(uint256,uint256,uint256) (runs: 316, μ: 547, ~: 546) -FixedPointMathLibTest:testClampSigned(int256,int256,int256) (runs: 316, μ: 611, ~: 611) +FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 317, μ: 3136, ~: 2977) +FixedPointMathLibTest:testClamp(uint256,uint256,uint256) (runs: 317, μ: 547, ~: 546) +FixedPointMathLibTest:testClampSigned(int256,int256,int256) (runs: 317, μ: 611, ~: 611) FixedPointMathLibTest:testDist() (gas: 615) -FixedPointMathLibTest:testDist(int256,int256) (runs: 316, μ: 511, ~: 507) -FixedPointMathLibTest:testDist(uint256,uint256) (runs: 316, μ: 511, ~: 516) +FixedPointMathLibTest:testDist(int256,int256) (runs: 317, μ: 512, ~: 517) +FixedPointMathLibTest:testDist(uint256,uint256) (runs: 317, μ: 510, ~: 506) FixedPointMathLibTest:testDistEdgeCases() (gas: 505) FixedPointMathLibTest:testDivWad() (gas: 692) -FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 316, μ: 2728, ~: 2225) +FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 317, μ: 25491, ~: 24680) FixedPointMathLibTest:testDivWadEdgeCases() (gas: 447) FixedPointMathLibTest:testDivWadUp() (gas: 2942) -FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 316, μ: 2801, ~: 2321) +FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 317, μ: 25494, ~: 24776) FixedPointMathLibTest:testDivWadUpEdgeCases() (gas: 428) FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts() (gas: 3196) FixedPointMathLibTest:testDivWadZeroDenominatorReverts() (gas: 3218) @@ -460,124 +460,124 @@ FixedPointMathLibTest:testExpWad() (gas: 8047) FixedPointMathLibTest:testFactorial() (gas: 98436) FixedPointMathLibTest:testFactorialOriginal() (gas: 94187) FixedPointMathLibTest:testFullMulDiv() (gas: 1127) -FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 316, μ: 1351, ~: 946) -FixedPointMathLibTest:testFullMulDivAlwaysRevertsIfDivisorIsZero(uint256,uint256) (runs: 316, μ: 3422, ~: 3422) +FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 317, μ: 1358, ~: 946) +FixedPointMathLibTest:testFullMulDivAlwaysRevertsIfDivisorIsZero(uint256,uint256) (runs: 317, μ: 3422, ~: 3422) FixedPointMathLibTest:testFullMulDivUnchecked() (gas: 1591) -FixedPointMathLibTest:testFullMulDivUnchecked(uint256,uint256,uint256) (runs: 316, μ: 1654, ~: 1554) -FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 316, μ: 1730, ~: 1423) +FixedPointMathLibTest:testFullMulDivUnchecked(uint256,uint256,uint256) (runs: 317, μ: 1656, ~: 1554) +FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 317, μ: 1749, ~: 1423) FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase1() (gas: 3683) FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase2() (gas: 3716) FixedPointMathLibTest:testGcd() (gas: 4206) -FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 316, μ: 6625, ~: 2800) -FixedPointMathLibTest:testIsEven(uint256) (runs: 316, μ: 497, ~: 497) +FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 317, μ: 6653, ~: 2985) +FixedPointMathLibTest:testIsEven(uint256) (runs: 317, μ: 497, ~: 497) FixedPointMathLibTest:testLambertW0WadAccuracy() (gas: 7160) -FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 316, μ: 2315, ~: 431) +FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 317, μ: 2362, ~: 431) FixedPointMathLibTest:testLambertW0WadKnownValues() (gas: 1685626) FixedPointMathLibTest:testLambertW0WadMonoDebug() (gas: 770667) FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing() (gas: 18416509) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 316, μ: 7109, ~: 6955) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 317, μ: 7264, ~: 6973) FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing2() (gas: 4035368) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 316, μ: 28962, ~: 35493) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 316, μ: 50208, ~: 17618) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 317, μ: 28917, ~: 35493) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 317, μ: 37292, ~: 17618) FixedPointMathLibTest:testLambertW0WadRevertsForOutOfDomain() (gas: 16530) FixedPointMathLibTest:testLambertW0WadWithinBounds() (gas: 122039) -FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 316, μ: 3672, ~: 4985) +FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 317, μ: 3659, ~: 4985) FixedPointMathLibTest:testLerpInt() (gas: 6439) -FixedPointMathLibTest:testLerpInt(int256,int256,int256,int256,int256) (runs: 316, μ: 1643, ~: 1245) +FixedPointMathLibTest:testLerpInt(int256,int256,int256,int256,int256) (runs: 317, μ: 1639, ~: 1176) FixedPointMathLibTest:testLerpUint() (gas: 6398) -FixedPointMathLibTest:testLerpUint(uint256,uint256,uint256,uint256,uint256) (runs: 316, μ: 1148, ~: 841) +FixedPointMathLibTest:testLerpUint(uint256,uint256,uint256,uint256,uint256) (runs: 317, μ: 1158, ~: 841) FixedPointMathLibTest:testLnWad() (gas: 2054) FixedPointMathLibTest:testLnWadBig() (gas: 2065) FixedPointMathLibTest:testLnWadNegativeReverts() (gas: 3285) FixedPointMathLibTest:testLnWadOverflowReverts() (gas: 3260) FixedPointMathLibTest:testLnWadSmall() (gas: 2666) FixedPointMathLibTest:testLog10() (gas: 76189) -FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 316, μ: 2201, ~: 2228) +FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 317, μ: 2204, ~: 2234) FixedPointMathLibTest:testLog10Up() (gas: 4435) FixedPointMathLibTest:testLog2() (gas: 243231) FixedPointMathLibTest:testLog256() (gas: 22831) -FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 316, μ: 2088, ~: 2146) +FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 317, μ: 2079, ~: 2146) FixedPointMathLibTest:testLog256Up() (gas: 1271) -FixedPointMathLibTest:testLog2Differential(uint256) (runs: 316, μ: 891, ~: 887) +FixedPointMathLibTest:testLog2Differential(uint256) (runs: 317, μ: 890, ~: 887) FixedPointMathLibTest:testLog2Up() (gas: 297368) -FixedPointMathLibTest:testMax(uint256,uint256) (runs: 316, μ: 498, ~: 494) -FixedPointMathLibTest:testMaxCasted(uint32,uint32,uint256) (runs: 316, μ: 869, ~: 874) -FixedPointMathLibTest:testMaxSigned(int256,int256) (runs: 316, μ: 520, ~: 525) -FixedPointMathLibTest:testMin(uint256,uint256) (runs: 316, μ: 477, ~: 482) -FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 316, μ: 829, ~: 839) -FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 316, μ: 540, ~: 536) +FixedPointMathLibTest:testMax(uint256,uint256) (runs: 317, μ: 499, ~: 504) +FixedPointMathLibTest:testMaxCasted(uint32,uint32,uint256) (runs: 317, μ: 869, ~: 874) +FixedPointMathLibTest:testMaxSigned(int256,int256) (runs: 317, μ: 519, ~: 515) +FixedPointMathLibTest:testMin(uint256,uint256) (runs: 317, μ: 476, ~: 472) +FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 317, μ: 828, ~: 819) +FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 317, μ: 541, ~: 546) FixedPointMathLibTest:testMulDiv() (gas: 1845) -FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 316, μ: 2931, ~: 2184) +FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 317, μ: 25802, ~: 24662) FixedPointMathLibTest:testMulDivEdgeCases() (gas: 762) FixedPointMathLibTest:testMulDivUp() (gas: 2103) -FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 316, μ: 3163, ~: 2511) +FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 317, μ: 25850, ~: 24975) FixedPointMathLibTest:testMulDivUpEdgeCases() (gas: 861) FixedPointMathLibTest:testMulDivUpZeroDenominator() (gas: 3179) FixedPointMathLibTest:testMulDivZeroDenominatorReverts() (gas: 3201) FixedPointMathLibTest:testMulWad() (gas: 712) -FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 316, μ: 2969, ~: 2176) +FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 317, μ: 2990, ~: 2176) FixedPointMathLibTest:testMulWadEdgeCases() (gas: 731) -FixedPointMathLibTest:testMulWadUp() (gas: 791) -FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 316, μ: 3039, ~: 2320) -FixedPointMathLibTest:testMulWadUpEdgeCases() (gas: 788) +FixedPointMathLibTest:testMulWadUp() (gas: 779) +FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 317, μ: 25706, ~: 24771) +FixedPointMathLibTest:testMulWadUpEdgeCases() (gas: 776) FixedPointMathLibTest:testPackUnpackSci() (gas: 129317) -FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 316, μ: 30414, ~: 30400) +FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 317, μ: 30428, ~: 30447) FixedPointMathLibTest:testRPow() (gas: 3298) FixedPointMathLibTest:testRPowOverflowReverts() (gas: 4940) -FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 316, μ: 440, ~: 440) -FixedPointMathLibTest:testRawAdd(uint256,uint256) (runs: 316, μ: 485, ~: 485) -FixedPointMathLibTest:testRawAddMod(uint256,uint256,uint256) (runs: 316, μ: 533, ~: 533) -FixedPointMathLibTest:testRawDiv(uint256,uint256) (runs: 316, μ: 487, ~: 487) -FixedPointMathLibTest:testRawMod(uint256,uint256) (runs: 316, μ: 486, ~: 486) -FixedPointMathLibTest:testRawMul(int256,int256) (runs: 316, μ: 434, ~: 434) -FixedPointMathLibTest:testRawMul(uint256,uint256) (runs: 316, μ: 463, ~: 463) -FixedPointMathLibTest:testRawMulMod(uint256,uint256,uint256) (runs: 316, μ: 557, ~: 557) -FixedPointMathLibTest:testRawSDiv(int256,int256) (runs: 316, μ: 487, ~: 487) -FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 316, μ: 422, ~: 422) -FixedPointMathLibTest:testRawSub(int256,int256) (runs: 316, μ: 463, ~: 463) -FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 316, μ: 463, ~: 463) +FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 317, μ: 440, ~: 440) +FixedPointMathLibTest:testRawAdd(uint256,uint256) (runs: 317, μ: 485, ~: 485) +FixedPointMathLibTest:testRawAddMod(uint256,uint256,uint256) (runs: 317, μ: 533, ~: 533) +FixedPointMathLibTest:testRawDiv(uint256,uint256) (runs: 317, μ: 487, ~: 487) +FixedPointMathLibTest:testRawMod(uint256,uint256) (runs: 317, μ: 486, ~: 486) +FixedPointMathLibTest:testRawMul(int256,int256) (runs: 317, μ: 434, ~: 434) +FixedPointMathLibTest:testRawMul(uint256,uint256) (runs: 317, μ: 463, ~: 463) +FixedPointMathLibTest:testRawMulMod(uint256,uint256,uint256) (runs: 317, μ: 557, ~: 557) +FixedPointMathLibTest:testRawSDiv(int256,int256) (runs: 317, μ: 487, ~: 487) +FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 317, μ: 422, ~: 422) +FixedPointMathLibTest:testRawSub(int256,int256) (runs: 317, μ: 463, ~: 463) +FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 317, μ: 463, ~: 463) FixedPointMathLibTest:testSDivWad() (gas: 840) -FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 316, μ: 2819, ~: 2343) +FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 317, μ: 25533, ~: 24798) FixedPointMathLibTest:testSDivWadEdgeCases() (gas: 404) FixedPointMathLibTest:testSMulWad() (gas: 1032) -FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 316, μ: 26654, ~: 25906) +FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 317, μ: 25541, ~: 24872) FixedPointMathLibTest:testSMulWadEdgeCases() (gas: 1287) -FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 316, μ: 643, ~: 654) +FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 317, μ: 643, ~: 654) FixedPointMathLibTest:testSci() (gas: 1838636) -FixedPointMathLibTest:testSci(uint256) (runs: 316, μ: 33988, ~: 37190) -FixedPointMathLibTest:testSci2(uint256) (runs: 316, μ: 911, ~: 911) +FixedPointMathLibTest:testSci(uint256) (runs: 317, μ: 33604, ~: 36539) +FixedPointMathLibTest:testSci2(uint256) (runs: 317, μ: 912, ~: 911) FixedPointMathLibTest:testSqrt() (gas: 43819) -FixedPointMathLibTest:testSqrt(uint256) (runs: 316, μ: 1091, ~: 1098) -FixedPointMathLibTest:testSqrtBack(uint256) (runs: 316, μ: 9737, ~: 363) -FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 316, μ: 54738, ~: 55107) +FixedPointMathLibTest:testSqrt(uint256) (runs: 317, μ: 1091, ~: 1098) +FixedPointMathLibTest:testSqrtBack(uint256) (runs: 317, μ: 10165, ~: 363) +FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 317, μ: 54689, ~: 54681) FixedPointMathLibTest:testSqrtHashedSingle() (gas: 54632) FixedPointMathLibTest:testSqrtWad() (gas: 7959) -FixedPointMathLibTest:testSqrtWad(uint256) (runs: 316, μ: 1587, ~: 1513) -FixedPointMathLibTest:testSqrtWadConverged(uint256) (runs: 316, μ: 1892, ~: 1922) -FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 316, μ: 2207, ~: 1802) -FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 316, μ: 518, ~: 514) -FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 316, μ: 550, ~: 579) -FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 316, μ: 926, ~: 890) -FixedPointMathLibTest:test__codesize() (gas: 44399) +FixedPointMathLibTest:testSqrtWad(uint256) (runs: 317, μ: 1589, ~: 1513) +FixedPointMathLibTest:testSqrtWadConverged(uint256) (runs: 317, μ: 1891, ~: 1922) +FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 317, μ: 2214, ~: 1802) +FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 317, μ: 518, ~: 514) +FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 317, μ: 548, ~: 518) +FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 317, μ: 926, ~: 890) +FixedPointMathLibTest:test__codesize() (gas: 44509) GasBurnerLibTest:testBurn() (gas: 105035) -GasBurnerLibTest:testBurn(uint256) (runs: 316, μ: 43418, ~: 33550) +GasBurnerLibTest:testBurn(uint256) (runs: 317, μ: 43360, ~: 33294) GasBurnerLibTest:testBurnPure() (gas: 1700850) -GasBurnerLibTest:testBurnPure(uint256) (runs: 316, μ: 25010, ~: 24540) +GasBurnerLibTest:testBurnPure(uint256) (runs: 317, μ: 25008, ~: 24537) GasBurnerLibTest:testBurnPureTiming() (gas: 300223) GasBurnerLibTest:testBurnTiming() (gas: 293139) GasBurnerLibTest:testBurnView() (gas: 66700) -GasBurnerLibTest:testBurnView(uint256) (runs: 316, μ: 27102, ~: 26318) +GasBurnerLibTest:testBurnView(uint256) (runs: 317, μ: 27089, ~: 26318) GasBurnerLibTest:testBurnViewTiming() (gas: 294223) GasBurnerLibTest:test__codesize() (gas: 2389) InitializableTest:testDisableInitializers() (gas: 42010) InitializableTest:testInitializableConstructor() (gas: 691882) InitializableTest:testInitialize() (gas: 54688) -InitializableTest:testInitializeInititalizerTrick(bool,uint64,uint16) (runs: 316, μ: 790, ~: 791) -InitializableTest:testInitializeReinititalize(uint256) (runs: 316, μ: 96439, ~: 95667) -InitializableTest:testInitializeReinititalizerTrick(bool,uint64,uint64) (runs: 316, μ: 674, ~: 687) +InitializableTest:testInitializeInititalizerTrick(bool,uint64,uint16) (runs: 317, μ: 790, ~: 791) +InitializableTest:testInitializeReinititalize(uint256) (runs: 317, μ: 96383, ~: 95554) +InitializableTest:testInitializeReinititalizerTrick(bool,uint64,uint64) (runs: 317, μ: 674, ~: 687) InitializableTest:testOnlyInitializing() (gas: 10420) InitializableTest:test__codesize() (gas: 10480) -JSONParserLibTest:testDecodeEncodedStringDoesNotRevert(string) (runs: 316, μ: 57540, ~: 56403) +JSONParserLibTest:testDecodeEncodedStringDoesNotRevert(string) (runs: 317, μ: 57536, ~: 56403) JSONParserLibTest:testDecodeInvalidStringReverts() (gas: 172924) JSONParserLibTest:testDecodeString() (gas: 193269) JSONParserLibTest:testEmptyItem() (gas: 2913) @@ -585,9 +585,9 @@ JSONParserLibTest:testParseEmptyArrays() (gas: 499245) JSONParserLibTest:testParseEmptyObjects() (gas: 500206) JSONParserLibTest:testParseGas() (gas: 151909) JSONParserLibTest:testParseInt() (gas: 204229) -JSONParserLibTest:testParseInt(int256) (runs: 316, μ: 18754, ~: 17408) -JSONParserLibTest:testParseIntReverts(uint256) (runs: 316, μ: 55937, ~: 55929) -JSONParserLibTest:testParseIntTrick(uint256,bool) (runs: 316, μ: 528, ~: 532) +JSONParserLibTest:testParseInt(int256) (runs: 317, μ: 18736, ~: 17408) +JSONParserLibTest:testParseIntReverts(uint256) (runs: 317, μ: 55937, ~: 55929) +JSONParserLibTest:testParseIntTrick(uint256,bool) (runs: 317, μ: 528, ~: 532) JSONParserLibTest:testParseInvalidIntReverts() (gas: 210681) JSONParserLibTest:testParseInvalidNumberReverts() (gas: 4068682) JSONParserLibTest:testParseInvalidReverts() (gas: 8589165) @@ -603,174 +603,174 @@ JSONParserLibTest:testParseSimpleUintArray() (gas: 1175003) JSONParserLibTest:testParseSpecials() (gas: 260199) JSONParserLibTest:testParseString() (gas: 1237483) JSONParserLibTest:testParseUint() (gas: 95659) -JSONParserLibTest:testParseUint(uint256) (runs: 316, μ: 35384, ~: 31924) +JSONParserLibTest:testParseUint(uint256) (runs: 317, μ: 35361, ~: 31924) JSONParserLibTest:testParseUintFromHex() (gas: 1382724) -JSONParserLibTest:testParseValidObjectDoesNotRevert(string,string) (runs: 316, μ: 50141, ~: 48844) +JSONParserLibTest:testParseValidObjectDoesNotRevert(string,string) (runs: 317, μ: 50138, ~: 48852) JSONParserLibTest:test__codesize() (gas: 38087) LibBitTest:testAnd() (gas: 192789) -LibBitTest:testAnd(bool,bool) (runs: 316, μ: 632, ~: 634) -LibBitTest:testAutoClean(uint256,uint256) (runs: 316, μ: 468, ~: 468) -LibBitTest:testBoolToUint(bool) (runs: 316, μ: 485, ~: 485) +LibBitTest:testAnd(bool,bool) (runs: 317, μ: 632, ~: 634) +LibBitTest:testAutoClean(uint256,uint256) (runs: 317, μ: 468, ~: 468) +LibBitTest:testBoolToUint(bool) (runs: 317, μ: 485, ~: 485) LibBitTest:testCLZ() (gas: 297260) LibBitTest:testFFS() (gas: 152877) LibBitTest:testFLS() (gas: 245237) LibBitTest:testIsPo2() (gas: 57663) -LibBitTest:testIsPo2(uint256) (runs: 316, μ: 3506, ~: 2098) -LibBitTest:testIsPo2(uint8,uint8) (runs: 316, μ: 623, ~: 624) +LibBitTest:testIsPo2(uint256) (runs: 317, μ: 3497, ~: 2066) +LibBitTest:testIsPo2(uint8,uint8) (runs: 317, μ: 623, ~: 624) LibBitTest:testOr() (gas: 194336) -LibBitTest:testOr(bool,bool) (runs: 316, μ: 649, ~: 648) +LibBitTest:testOr(bool,bool) (runs: 317, μ: 649, ~: 648) LibBitTest:testPassInBool() (gas: 830) LibBitTest:testPopCount() (gas: 63738) -LibBitTest:testPopCount(uint256) (runs: 316, μ: 3648, ~: 2240) +LibBitTest:testPopCount(uint256) (runs: 317, μ: 3639, ~: 2208) LibBitTest:testReturnsBool() (gas: 779) LibBitTest:testReverseBits() (gas: 131521) -LibBitTest:testReverseBitsDifferential(uint256) (runs: 316, μ: 18724, ~: 18724) +LibBitTest:testReverseBitsDifferential(uint256) (runs: 317, μ: 18724, ~: 18724) LibBitTest:testReverseBytes() (gas: 12492) -LibBitTest:testReverseBytesDifferential(uint256) (runs: 316, μ: 2675, ~: 2675) +LibBitTest:testReverseBytesDifferential(uint256) (runs: 317, μ: 2675, ~: 2675) LibBitTest:test__codesize() (gas: 5842) LibBitmapTest:testBitmapClaimWithGetSet() (gas: 27156) LibBitmapTest:testBitmapClaimWithToggle() (gas: 17480) LibBitmapTest:testBitmapFindFirstUnset() (gas: 54669) -LibBitmapTest:testBitmapFindFirstUnset(uint256,uint256,bytes32) (runs: 316, μ: 141313, ~: 140267) +LibBitmapTest:testBitmapFindFirstUnset(uint256,uint256,bytes32) (runs: 317, μ: 141308, ~: 140261) LibBitmapTest:testBitmapFindLastSet() (gas: 1300541) -LibBitmapTest:testBitmapFindLastSet(uint256,bytes32) (runs: 316, μ: 75945, ~: 76220) +LibBitmapTest:testBitmapFindLastSet(uint256,bytes32) (runs: 317, μ: 75945, ~: 76220) LibBitmapTest:testBitmapFindLastSet2() (gas: 23882) LibBitmapTest:testBitmapGet() (gas: 2549) -LibBitmapTest:testBitmapGet(uint256) (runs: 316, μ: 2599, ~: 2599) +LibBitmapTest:testBitmapGet(uint256) (runs: 317, μ: 2599, ~: 2599) LibBitmapTest:testBitmapPopCount() (gas: 751877) -LibBitmapTest:testBitmapPopCount(uint256,uint256,uint256) (runs: 316, μ: 214333, ~: 192956) +LibBitmapTest:testBitmapPopCount(uint256,uint256,uint256) (runs: 317, μ: 214349, ~: 193013) LibBitmapTest:testBitmapPopCountAcrossMultipleBuckets() (gas: 73634) LibBitmapTest:testBitmapPopCountWithinSingleBucket() (gas: 34032) LibBitmapTest:testBitmapSet() (gas: 22771) -LibBitmapTest:testBitmapSet(uint256) (runs: 316, μ: 22843, ~: 22843) -LibBitmapTest:testBitmapSetAndGet(uint256) (runs: 316, μ: 22864, ~: 22864) +LibBitmapTest:testBitmapSet(uint256) (runs: 317, μ: 22843, ~: 22843) +LibBitmapTest:testBitmapSetAndGet(uint256) (runs: 317, μ: 22864, ~: 22864) LibBitmapTest:testBitmapSetBatch() (gas: 2918603) LibBitmapTest:testBitmapSetBatchAcrossMultipleBuckets() (gas: 438393) LibBitmapTest:testBitmapSetBatchWithinSingleBucket() (gas: 389011) LibBitmapTest:testBitmapSetTo() (gas: 14652) -LibBitmapTest:testBitmapSetTo(uint256,bool,uint256) (runs: 316, μ: 12880, ~: 3113) -LibBitmapTest:testBitmapSetTo(uint256,uint256) (runs: 316, μ: 46765, ~: 51381) +LibBitmapTest:testBitmapSetTo(uint256,bool,uint256) (runs: 317, μ: 12850, ~: 3113) +LibBitmapTest:testBitmapSetTo(uint256,uint256) (runs: 317, μ: 46780, ~: 51382) LibBitmapTest:testBitmapToggle() (gas: 31525) -LibBitmapTest:testBitmapToggle(uint256,bool) (runs: 316, μ: 19295, ~: 23572) +LibBitmapTest:testBitmapToggle(uint256,bool) (runs: 317, μ: 19308, ~: 23572) LibBitmapTest:testBitmapUnset() (gas: 22794) -LibBitmapTest:testBitmapUnset(uint256) (runs: 316, μ: 14511, ~: 14525) +LibBitmapTest:testBitmapUnset(uint256) (runs: 317, μ: 14511, ~: 14525) LibBitmapTest:testBitmapUnsetBatch() (gas: 2981123) LibBitmapTest:testBitmapUnsetBatchAcrossMultipleBuckets() (gas: 438470) LibBitmapTest:testBitmapUnsetBatchWithinSingleBucket() (gas: 445869) LibBitmapTest:test__codesize() (gas: 8720) LibCWIATest:testCloneDeteministicWithImmutableArgs() (gas: 191965) -LibCWIATest:testCloneDeteministicWithImmutableArgs(address,uint256,uint256[],bytes,uint64,uint8,uint256) (runs: 316, μ: 1095212, ~: 1046677) +LibCWIATest:testCloneDeteministicWithImmutableArgs(address,uint256,uint256[],bytes,uint64,uint8,uint256) (runs: 317, μ: 1093293, ~: 1044034) LibCWIATest:testCloneWithImmutableArgs() (gas: 120548) -LibCWIATest:testCloneWithImmutableArgs(uint256,address,uint256,uint256[],uint64,uint8) (runs: 316, μ: 993312, ~: 978832) +LibCWIATest:testCloneWithImmutableArgs(uint256,address,uint256,uint256[],uint64,uint8) (runs: 317, μ: 992570, ~: 975327) LibCWIATest:testCloneWithImmutableArgsRevertsIfDataTooBig() (gas: 97306657) LibCWIATest:test__codesize() (gas: 12335) LibCloneTest:testClone() (gas: 97598) -LibCloneTest:testClone(uint256) (runs: 316, μ: 97692, ~: 97692) +LibCloneTest:testClone(uint256) (runs: 317, μ: 97692, ~: 97692) LibCloneTest:testCloneDeterministic() (gas: 98533) -LibCloneTest:testCloneDeterministic(bytes32) (runs: 316, μ: 2550687, ~: 98783) +LibCloneTest:testCloneDeterministic(bytes32) (runs: 317, μ: 2542952, ~: 98783) LibCloneTest:testCloneDeterministicWithImmutableArgs() (gas: 128890) -LibCloneTest:testCloneDeterministicWithImmutableArgs(bytes32) (runs: 316, μ: 8078969, ~: 121785) +LibCloneTest:testCloneDeterministicWithImmutableArgs(bytes32) (runs: 317, μ: 8055649, ~: 121912) LibCloneTest:testCloneWithImmutableArgs() (gas: 129436) -LibCloneTest:testCloneWithImmutableArgs(uint256) (runs: 316, μ: 3178556, ~: 119262) +LibCloneTest:testCloneWithImmutableArgs(uint256) (runs: 317, μ: 3168872, ~: 119260) LibCloneTest:testCloneWithImmutableArgsSlicing() (gas: 57948) -LibCloneTest:testCreateDeterministicERC1967(bytes32) (runs: 316, μ: 181156, ~: 128213) -LibCloneTest:testCreateDeterministicERC1967BeaconProxy(bytes32) (runs: 316, μ: 357584, ~: 360735) -LibCloneTest:testCreateDeterministicERC1967BeaconProxyWithImmutableArgs(bytes32) (runs: 316, μ: 528162, ~: 362740) -LibCloneTest:testCreateDeterministicERC1967I(bytes32) (runs: 316, μ: 207835, ~: 132666) -LibCloneTest:testCreateDeterministicERC1967IBeaconProxy(bytes32) (runs: 316, μ: 370107, ~: 361773) -LibCloneTest:testCreateDeterministicERC1967IBeaconProxyWithImmutableArgs(bytes32) (runs: 316, μ: 649613, ~: 365016) -LibCloneTest:testCreateDeterministicERC1967IWithImmutableArgs(bytes32) (runs: 316, μ: 732413, ~: 154353) -LibCloneTest:testCreateDeterministicERC1967WithImmutableArgs(bytes32) (runs: 316, μ: 496355, ~: 150227) +LibCloneTest:testCreateDeterministicERC1967(bytes32) (runs: 317, μ: 180989, ~: 128213) +LibCloneTest:testCreateDeterministicERC1967BeaconProxy(bytes32) (runs: 317, μ: 357595, ~: 360735) +LibCloneTest:testCreateDeterministicERC1967BeaconProxyWithImmutableArgs(bytes32) (runs: 317, μ: 537272, ~: 362740) +LibCloneTest:testCreateDeterministicERC1967I(bytes32) (runs: 317, μ: 207597, ~: 132666) +LibCloneTest:testCreateDeterministicERC1967IBeaconProxy(bytes32) (runs: 317, μ: 370081, ~: 361773) +LibCloneTest:testCreateDeterministicERC1967IBeaconProxyWithImmutableArgs(bytes32) (runs: 317, μ: 650332, ~: 365037) +LibCloneTest:testCreateDeterministicERC1967IWithImmutableArgs(bytes32) (runs: 317, μ: 745384, ~: 154356) +LibCloneTest:testCreateDeterministicERC1967WithImmutableArgs(bytes32) (runs: 317, μ: 495262, ~: 150221) LibCloneTest:testDeployDeterministicERC1967() (gas: 133653) -LibCloneTest:testDeployDeterministicERC1967(bytes32) (runs: 316, μ: 2388614, ~: 133492) -LibCloneTest:testDeployDeterministicERC1967BeaconProxy(bytes32) (runs: 316, μ: 5185030, ~: 357720) -LibCloneTest:testDeployDeterministicERC1967BeaconProxyWithImmutableArgs(bytes32) (runs: 316, μ: 6281520, ~: 368472) +LibCloneTest:testDeployDeterministicERC1967(bytes32) (runs: 317, μ: 2381500, ~: 133492) +LibCloneTest:testDeployDeterministicERC1967BeaconProxy(bytes32) (runs: 317, μ: 5171615, ~: 357720) +LibCloneTest:testDeployDeterministicERC1967BeaconProxyWithImmutableArgs(bytes32) (runs: 317, μ: 6262807, ~: 368444) LibCloneTest:testDeployDeterministicERC1967I() (gas: 129746) -LibCloneTest:testDeployDeterministicERC1967I(bytes32) (runs: 316, μ: 2898920, ~: 129708) -LibCloneTest:testDeployDeterministicERC1967IBeaconProxy(bytes32) (runs: 316, μ: 3381475, ~: 359955) -LibCloneTest:testDeployDeterministicERC1967IBeaconProxyWithImmutableArgs(bytes32) (runs: 316, μ: 5364237, ~: 370752) +LibCloneTest:testDeployDeterministicERC1967I(bytes32) (runs: 317, μ: 2890184, ~: 129708) +LibCloneTest:testDeployDeterministicERC1967IBeaconProxy(bytes32) (runs: 317, μ: 3371747, ~: 359955) +LibCloneTest:testDeployDeterministicERC1967IBeaconProxyWithImmutableArgs(bytes32) (runs: 317, μ: 5348481, ~: 370685) LibCloneTest:testDeployDeterministicERC1967IWithImmutableArgs() (gas: 129746) -LibCloneTest:testDeployDeterministicERC1967IWithImmutableArgs(bytes32) (runs: 316, μ: 6010445, ~: 151410) +LibCloneTest:testDeployDeterministicERC1967IWithImmutableArgs(bytes32) (runs: 317, μ: 5993897, ~: 151418) LibCloneTest:testDeployDeterministicERC1967WithImmutableArgs() (gas: 170813) -LibCloneTest:testDeployDeterministicERC1967WithImmutableArgs(bytes32) (runs: 316, μ: 5037046, ~: 146463) +LibCloneTest:testDeployDeterministicERC1967WithImmutableArgs(bytes32) (runs: 317, μ: 5021584, ~: 146451) LibCloneTest:testDeployERC1967() (gas: 130817) -LibCloneTest:testDeployERC1967(bytes32) (runs: 316, μ: 231350, ~: 130898) -LibCloneTest:testDeployERC1967BeaconProxy(bytes32) (runs: 316, μ: 358781, ~: 294993) +LibCloneTest:testDeployERC1967(bytes32) (runs: 317, μ: 231032, ~: 130898) +LibCloneTest:testDeployERC1967BeaconProxy(bytes32) (runs: 317, μ: 358579, ~: 294993) LibCloneTest:testDeployERC1967BeaconProxyWithImmutableArgs() (gas: 879000) -LibCloneTest:testDeployERC1967BeaconProxyWithImmutableArgs(address,bytes32) (runs: 316, μ: 27154237, ~: 267241) +LibCloneTest:testDeployERC1967BeaconProxyWithImmutableArgs(address,bytes32) (runs: 317, μ: 27374272, ~: 267326) LibCloneTest:testDeployERC1967I() (gas: 129964) -LibCloneTest:testDeployERC1967I(bytes32) (runs: 316, μ: 130034, ~: 130034) +LibCloneTest:testDeployERC1967I(bytes32) (runs: 317, μ: 130034, ~: 130034) LibCloneTest:testDeployERC1967IBeaconProxy() (gas: 359439) -LibCloneTest:testDeployERC1967IBeaconProxy(bytes32) (runs: 316, μ: 357994, ~: 359197) +LibCloneTest:testDeployERC1967IBeaconProxy(bytes32) (runs: 317, μ: 357998, ~: 359197) LibCloneTest:testDeployERC1967IBeaconProxyWithImmutableArgs() (gas: 940290) -LibCloneTest:testDeployERC1967IBeaconProxyWithImmutableArgs(address,bytes32) (runs: 316, μ: 25544365, ~: 259950) +LibCloneTest:testDeployERC1967IBeaconProxyWithImmutableArgs(address,bytes32) (runs: 317, μ: 25466521, ~: 259967) LibCloneTest:testDeployERC1967IWithImmutableArgs() (gas: 168734) -LibCloneTest:testDeployERC1967IWithImmutableArgs(bytes32) (runs: 316, μ: 2900683, ~: 151018) +LibCloneTest:testDeployERC1967IWithImmutableArgs(bytes32) (runs: 317, μ: 3197195, ~: 151030) LibCloneTest:testDeployERC1967WithImmutableArgs() (gas: 145438) -LibCloneTest:testDeployERC1967WithImmutableArgs(bytes32) (runs: 316, μ: 4825244, ~: 145231) -LibCloneTest:testERC1967BeaconProxyGasBehavior(uint256,uint256) (runs: 316, μ: 352946, ~: 346672) -LibCloneTest:testERC1967ConstantBootstrap(address,bytes32) (runs: 316, μ: 186093, ~: 169762) -LibCloneTest:testERC1967IBeaconProxyGasBehavior(uint256,uint256) (runs: 316, μ: 365473, ~: 347576) -LibCloneTest:testImplemenationOf(address) (runs: 316, μ: 543889, ~: 80320) +LibCloneTest:testDeployERC1967WithImmutableArgs(bytes32) (runs: 317, μ: 4810483, ~: 145231) +LibCloneTest:testERC1967BeaconProxyGasBehavior(uint256,uint256) (runs: 317, μ: 352933, ~: 346685) +LibCloneTest:testERC1967ConstantBootstrap(address,bytes32) (runs: 317, μ: 186056, ~: 169765) +LibCloneTest:testERC1967IBeaconProxyGasBehavior(uint256,uint256) (runs: 317, μ: 365226, ~: 347574) +LibCloneTest:testImplemenationOf(address) (runs: 317, μ: 543389, ~: 80350) LibCloneTest:testImplemenationOfGas() (gas: 631777) -LibCloneTest:testInitCode(address) (runs: 316, μ: 234424, ~: 43969) +LibCloneTest:testInitCode(address) (runs: 317, μ: 233792, ~: 43896) LibCloneTest:testInitialDeposit() (gas: 872449) -LibCloneTest:testSlicingRevertsOnZeroCodeAddress(address) (runs: 316, μ: 71095, ~: 31181) -LibCloneTest:testStartsWith(uint256) (runs: 316, μ: 30019, ~: 29987) +LibCloneTest:testSlicingRevertsOnZeroCodeAddress(address) (runs: 317, μ: 70971, ~: 31181) +LibCloneTest:testStartsWith(uint256) (runs: 317, μ: 30019, ~: 29987) LibCloneTest:test__codesize() (gas: 42104) -LibERC6551Test:testComputeAccountAddress(address,bytes32,uint256,address,uint256) (runs: 316, μ: 209139, ~: 29507) -LibERC6551Test:testContext(address,bytes32,uint256,address,uint256) (runs: 316, μ: 103037, ~: 102943) -LibERC6551Test:testInitCodeHash(address,bytes32,uint256,address,uint256) (runs: 316, μ: 252088, ~: 23818) -LibERC6551Test:testIsERC6551Account(address,bytes32,uint256,address,uint256) (runs: 316, μ: 114212, ~: 114208) +LibERC6551Test:testComputeAccountAddress(address,bytes32,uint256,address,uint256) (runs: 317, μ: 208810, ~: 29507) +LibERC6551Test:testContext(address,bytes32,uint256,address,uint256) (runs: 317, μ: 103036, ~: 102943) +LibERC6551Test:testInitCodeHash(address,bytes32,uint256,address,uint256) (runs: 317, μ: 253386, ~: 23818) +LibERC6551Test:testIsERC6551Account(address,bytes32,uint256,address,uint256) (runs: 317, μ: 114215, ~: 114208) LibERC6551Test:test__codesize() (gas: 5280) -LibMapTest:testFoundStatementDifferential(uint256,uint256,uint256) (runs: 316, μ: 499, ~: 499) +LibMapTest:testFoundStatementDifferential(uint256,uint256,uint256) (runs: 317, μ: 499, ~: 499) LibMapTest:testGeneralMapFunctionsGas() (gas: 3304775) -LibMapTest:testGeneralMapFunctionsWithSmallBitWidths(uint256) (runs: 316, μ: 84693, ~: 85698) +LibMapTest:testGeneralMapFunctionsWithSmallBitWidths(uint256) (runs: 317, μ: 84736, ~: 85699) LibMapTest:testGeneralMapFunctionsWithZeroBitWidth() (gas: 12260) -LibMapTest:testGeneralMapSearchSorted(uint256) (runs: 316, μ: 208413, ~: 152635) +LibMapTest:testGeneralMapSearchSorted(uint256) (runs: 317, μ: 208370, ~: 152795) LibMapTest:testMapGetFromBigArray() (gas: 3330) LibMapTest:testMapGetUint8() (gas: 3313) LibMapTest:testMapSetUint8() (gas: 23276) LibMapTest:testMapSetUint8FromBigArray() (gas: 23263) -LibMapTest:testUint128MapSearchSorted(uint256) (runs: 316, μ: 195323, ~: 130690) +LibMapTest:testUint128MapSearchSorted(uint256) (runs: 317, μ: 195033, ~: 130610) LibMapTest:testUint128MapSetAndGet() (gas: 1607264) -LibMapTest:testUint128MapSetAndGet(uint256) (runs: 316, μ: 180154, ~: 170727) -LibMapTest:testUint128MapSetAndGet2(uint256) (runs: 316, μ: 68979, ~: 69405) -LibMapTest:testUint16MapSearchSorted(uint256) (runs: 316, μ: 96292, ~: 86406) +LibMapTest:testUint128MapSetAndGet(uint256) (runs: 317, μ: 180259, ~: 171044) +LibMapTest:testUint128MapSetAndGet2(uint256) (runs: 317, μ: 68980, ~: 69334) +LibMapTest:testUint16MapSearchSorted(uint256) (runs: 317, μ: 96260, ~: 86351) LibMapTest:testUint16MapSetAndGet() (gas: 958101) -LibMapTest:testUint16MapSetAndGet(uint256) (runs: 316, μ: 81511, ~: 81715) -LibMapTest:testUint16MapSetAndGet2(uint256) (runs: 316, μ: 68491, ~: 69242) -LibMapTest:testUint32MapSearchSorted(uint256) (runs: 316, μ: 106802, ~: 87376) +LibMapTest:testUint16MapSetAndGet(uint256) (runs: 317, μ: 81513, ~: 81715) +LibMapTest:testUint16MapSetAndGet2(uint256) (runs: 317, μ: 68493, ~: 69242) +LibMapTest:testUint32MapSearchSorted(uint256) (runs: 317, μ: 107172, ~: 87380) LibMapTest:testUint32MapSetAndGet() (gas: 1067796) -LibMapTest:testUint32MapSetAndGet(uint256) (runs: 316, μ: 114348, ~: 124787) -LibMapTest:testUint32MapSetAndGet2(uint256) (runs: 316, μ: 68697, ~: 69197) -LibMapTest:testUint32Maps(uint256) (runs: 316, μ: 68503, ~: 72251) -LibMapTest:testUint40MapSearchSorted(uint256) (runs: 316, μ: 124887, ~: 107991) +LibMapTest:testUint32MapSetAndGet(uint256) (runs: 317, μ: 114312, ~: 124787) +LibMapTest:testUint32MapSetAndGet2(uint256) (runs: 317, μ: 68700, ~: 69197) +LibMapTest:testUint32Maps(uint256) (runs: 317, μ: 68516, ~: 72251) +LibMapTest:testUint40MapSearchSorted(uint256) (runs: 317, μ: 124747, ~: 107949) LibMapTest:testUint40MapSetAndGet() (gas: 1127509) -LibMapTest:testUint40MapSetAndGet(uint256) (runs: 316, μ: 136829, ~: 146781) -LibMapTest:testUint40MapSetAndGet2(uint256) (runs: 316, μ: 68533, ~: 69272) -LibMapTest:testUint64MapSearchSorted(uint256) (runs: 316, μ: 134018, ~: 108890) +LibMapTest:testUint40MapSetAndGet(uint256) (runs: 317, μ: 136861, ~: 146787) +LibMapTest:testUint40MapSetAndGet2(uint256) (runs: 317, μ: 68536, ~: 69272) +LibMapTest:testUint64MapSearchSorted(uint256) (runs: 317, μ: 133956, ~: 108932) LibMapTest:testUint64MapSetAndGet() (gas: 1220444) -LibMapTest:testUint64MapSetAndGet(uint256) (runs: 316, μ: 149121, ~: 147392) -LibMapTest:testUint64MapSetAndGet2(uint256) (runs: 316, μ: 68396, ~: 69261) -LibMapTest:testUint8MapSearchSorted(uint256) (runs: 316, μ: 100387, ~: 86263) +LibMapTest:testUint64MapSetAndGet(uint256) (runs: 317, μ: 149183, ~: 147394) +LibMapTest:testUint64MapSetAndGet2(uint256) (runs: 317, μ: 68399, ~: 69261) +LibMapTest:testUint8MapSearchSorted(uint256) (runs: 317, μ: 100829, ~: 86272) LibMapTest:testUint8MapSetAndGet() (gas: 884299) -LibMapTest:testUint8MapSetAndGet(uint256) (runs: 316, μ: 59498, ~: 59566) -LibMapTest:testUint8MapSetAndGet2(uint256) (runs: 316, μ: 68240, ~: 69180) +LibMapTest:testUint8MapSetAndGet(uint256) (runs: 317, μ: 59498, ~: 59566) +LibMapTest:testUint8MapSetAndGet2(uint256) (runs: 317, μ: 68245, ~: 69180) LibMapTest:test__codesize() (gas: 12065) LibPRNGTest:testExponentialWad() (gas: 4394348) LibPRNGTest:testLCGGas() (gas: 20803) LibPRNGTest:testLazyShufflerGet() (gas: 298845) -LibPRNGTest:testLazyShufflerGetOutOfBoundsReverts(uint256,uint256) (runs: 316, μ: 26626, ~: 26667) +LibPRNGTest:testLazyShufflerGetOutOfBoundsReverts(uint256,uint256) (runs: 317, μ: 26623, ~: 26667) LibPRNGTest:testLazyShufflerNoStorageCollisions() (gas: 266054) -LibPRNGTest:testLazyShufflerProducesShuffledRange(uint256) (runs: 316, μ: 202257, ~: 91266) +LibPRNGTest:testLazyShufflerProducesShuffledRange(uint256) (runs: 317, μ: 195270, ~: 91371) LibPRNGTest:testLazyShufflerProducesShuffledRange2() (gas: 9059432) -LibPRNGTest:testLazyShufflerProducesShuffledRangeWithGrow(uint256,uint256) (runs: 316, μ: 185823, ~: 176203) +LibPRNGTest:testLazyShufflerProducesShuffledRangeWithGrow(uint256,uint256) (runs: 317, μ: 184670, ~: 176119) LibPRNGTest:testLazyShufflerRestart() (gas: 276254) LibPRNGTest:testLazyShufflerRevertsOnDoubleInit() (gas: 26824) -LibPRNGTest:testLazyShufflerRevertsOnFinshedNext(uint256) (runs: 316, μ: 63496, ~: 54877) -LibPRNGTest:testLazyShufflerRevertsOnGrowWithInvalidLength(uint256,uint256) (runs: 316, μ: 24689, ~: 24708) -LibPRNGTest:testLazyShufflerRevertsOnInitWithInvalidLength(uint256) (runs: 316, μ: 22792, ~: 23673) +LibPRNGTest:testLazyShufflerRevertsOnFinshedNext(uint256) (runs: 317, μ: 64608, ~: 57057) +LibPRNGTest:testLazyShufflerRevertsOnGrowWithInvalidLength(uint256,uint256) (runs: 317, μ: 24688, ~: 24708) +LibPRNGTest:testLazyShufflerRevertsOnInitWithInvalidLength(uint256) (runs: 317, μ: 22794, ~: 23673) LibPRNGTest:testLazyShufflerRevertsOnZeroLengthNext() (gas: 27623) LibPRNGTest:testPRNGGas() (gas: 25667) LibPRNGTest:testPRNGNext() (gas: 16162) @@ -784,258 +784,258 @@ LibPRNGTest:testPRNGShuffleGas() (gas: 1610927) LibPRNGTest:testPRNGUniform() (gas: 559430) LibPRNGTest:testStandardNormalWad() (gas: 4425913) LibPRNGTest:test__codesize() (gas: 14449) -LibRLPTest:testComputeAddressDifferential(address,uint256) (runs: 316, μ: 4477, ~: 4322) +LibRLPTest:testComputeAddressDifferential(address,uint256) (runs: 317, μ: 4480, ~: 4353) LibRLPTest:testComputeAddressForLargeNonces() (gas: 1760) LibRLPTest:testComputeAddressForSmallNonces() (gas: 1007) LibRLPTest:testComputeAddressOriginalForLargeNonces() (gas: 3766) LibRLPTest:testComputeAddressOriginalForSmallNonces() (gas: 2185) -LibRLPTest:testRLPEncodeAddressDifferential(address) (runs: 316, μ: 238510, ~: 26225) -LibRLPTest:testRLPEncodeAddressViaList(address,address) (runs: 316, μ: 195773, ~: 28079) -LibRLPTest:testRLPEncodeBool(bool) (runs: 316, μ: 27682, ~: 27818) +LibRLPTest:testRLPEncodeAddressDifferential(address) (runs: 317, μ: 237840, ~: 26224) +LibRLPTest:testRLPEncodeAddressViaList(address,address) (runs: 317, μ: 195245, ~: 28079) +LibRLPTest:testRLPEncodeBool(bool) (runs: 317, μ: 27682, ~: 27818) LibRLPTest:testRLPEncodeBytes() (gas: 382181) LibRLPTest:testRLPEncodeBytes2() (gas: 156293) -LibRLPTest:testRLPEncodeBytesDifferential(bytes32) (runs: 316, μ: 274569, ~: 29721) +LibRLPTest:testRLPEncodeBytesDifferential(bytes32) (runs: 317, μ: 273788, ~: 29721) LibRLPTest:testRLPEncodeList() (gas: 2738950) LibRLPTest:testRLPEncodeList2() (gas: 803256) -LibRLPTest:testRLPEncodeListDifferential(bytes,uint256) (runs: 316, μ: 432564, ~: 39179) +LibRLPTest:testRLPEncodeListDifferential(bytes,uint256) (runs: 317, μ: 435168, ~: 645463) LibRLPTest:testRLPEncodeUint() (gas: 1291481) -LibRLPTest:testRLPEncodeUint(uint256) (runs: 316, μ: 99609, ~: 25002) -LibRLPTest:testRLPEncodeUintDifferential(uint256) (runs: 316, μ: 261272, ~: 27105) -LibRLPTest:testRLPMemory(bytes32) (runs: 316, μ: 301064, ~: 33339) +LibRLPTest:testRLPEncodeUint(uint256) (runs: 317, μ: 99373, ~: 25002) +LibRLPTest:testRLPEncodeUintDifferential(uint256) (runs: 317, μ: 260532, ~: 27104) +LibRLPTest:testRLPMemory(bytes32) (runs: 317, μ: 300198, ~: 33205) LibRLPTest:testRLPPUint256() (gas: 364901) -LibRLPTest:testSmallLog256Equivalence(uint256) (runs: 316, μ: 23678, ~: 23700) +LibRLPTest:testSmallLog256Equivalence(uint256) (runs: 317, μ: 23677, ~: 23700) LibRLPTest:test__codesize() (gas: 15520) -LibSortTest:testCopy(uint256) (runs: 316, μ: 56324, ~: 25734) -LibSortTest:testInsertionSortAddressesDifferential(uint256) (runs: 316, μ: 45151, ~: 24962) +LibSortTest:testCopy(uint256) (runs: 317, μ: 56229, ~: 25737) +LibSortTest:testInsertionSortAddressesDifferential(uint256) (runs: 317, μ: 45096, ~: 24962) LibSortTest:testInsertionSortInts() (gas: 80727) LibSortTest:testInsertionSortPsuedorandom() (gas: 63725) -LibSortTest:testInsertionSortPsuedorandom(uint256) (runs: 316, μ: 62371, ~: 62421) -LibSortTest:testIsSortedAddressesDifferential(uint256) (runs: 316, μ: 37231, ~: 29063) -LibSortTest:testIsSortedAndUniquifiedAddressesDifferential(uint256) (runs: 316, μ: 36237, ~: 28497) -LibSortTest:testIsSortedAndUniquifiedDifferential(uint256) (runs: 316, μ: 33515, ~: 28449) -LibSortTest:testIsSortedAndUniquifiedIntsDifferential(uint256) (runs: 316, μ: 43959, ~: 29868) -LibSortTest:testIsSortedDifferential(uint256) (runs: 316, μ: 38665, ~: 28567) -LibSortTest:testIsSortedIntsDifferential(uint256) (runs: 316, μ: 46269, ~: 29818) +LibSortTest:testInsertionSortPsuedorandom(uint256) (runs: 317, μ: 62372, ~: 62421) +LibSortTest:testIsSortedAddressesDifferential(uint256) (runs: 317, μ: 37215, ~: 29069) +LibSortTest:testIsSortedAndUniquifiedAddressesDifferential(uint256) (runs: 317, μ: 36209, ~: 28484) +LibSortTest:testIsSortedAndUniquifiedDifferential(uint256) (runs: 317, μ: 33509, ~: 28454) +LibSortTest:testIsSortedAndUniquifiedIntsDifferential(uint256) (runs: 317, μ: 43904, ~: 29831) +LibSortTest:testIsSortedDifferential(uint256) (runs: 317, μ: 38628, ~: 28567) +LibSortTest:testIsSortedIntsDifferential(uint256) (runs: 317, μ: 46200, ~: 29813) LibSortTest:testReverse() (gas: 117297) LibSortTest:testSearchSorted() (gas: 118972) LibSortTest:testSearchSortedAddresses() (gas: 251950) LibSortTest:testSearchSortedBasicCases() (gas: 2244) -LibSortTest:testSearchSortedDifferential(uint256) (runs: 316, μ: 47675, ~: 31531) +LibSortTest:testSearchSortedDifferential(uint256) (runs: 317, μ: 47604, ~: 31444) LibSortTest:testSearchSortedEdgeCases() (gas: 1617) -LibSortTest:testSearchSortedElementInArray(uint256) (runs: 316, μ: 56977, ~: 31355) +LibSortTest:testSearchSortedElementInArray(uint256) (runs: 317, μ: 56899, ~: 31372) LibSortTest:testSearchSortedElementNotInArray() (gas: 6135) -LibSortTest:testSearchSortedElementNotInArray(uint256) (runs: 316, μ: 49530, ~: 33214) +LibSortTest:testSearchSortedElementNotInArray(uint256) (runs: 317, μ: 49461, ~: 33193) LibSortTest:testSearchSortedInts() (gas: 120794) -LibSortTest:testSearchSortedInts(int256[],int256) (runs: 316, μ: 12182, ~: 11819) +LibSortTest:testSearchSortedInts(int256[],int256) (runs: 317, μ: 12213, ~: 11902) LibSortTest:testSearchSortedWithEmptyArray() (gas: 709) -LibSortTest:testSort(uint256) (runs: 316, μ: 39383, ~: 28990) -LibSortTest:testSortAddressesDifferential(uint256) (runs: 316, μ: 59065, ~: 31341) +LibSortTest:testSort(uint256) (runs: 317, μ: 39343, ~: 28963) +LibSortTest:testSortAddressesDifferential(uint256) (runs: 317, μ: 59127, ~: 31359) LibSortTest:testSortAddressesPsuedorandom() (gas: 148711) -LibSortTest:testSortAddressesPsuedorandom(uint256) (runs: 316, μ: 148906, ~: 148909) +LibSortTest:testSortAddressesPsuedorandom(uint256) (runs: 317, μ: 148901, ~: 148904) LibSortTest:testSortAddressesPsuedorandomBrutalizeUpperBits() (gas: 200629) LibSortTest:testSortAddressesReversed() (gas: 45400) LibSortTest:testSortAddressesSorted() (gas: 42376) LibSortTest:testSortBasicCase() (gas: 1210) -LibSortTest:testSortChecksumed(uint256) (runs: 316, μ: 46085, ~: 31235) -LibSortTest:testSortDifferential(uint256) (runs: 316, μ: 57943, ~: 27787) +LibSortTest:testSortChecksumed(uint256) (runs: 317, μ: 46027, ~: 31207) +LibSortTest:testSortDifferential(uint256) (runs: 317, μ: 58299, ~: 27799) LibSortTest:testSortInts() (gas: 895631) LibSortTest:testSortMostlySame() (gas: 67374) LibSortTest:testSortOriginalMostlySame() (gas: 207985) LibSortTest:testSortOriginalPsuedorandom() (gas: 283954) -LibSortTest:testSortOriginalPsuedorandom(uint256) (runs: 316, μ: 287586, ~: 286813) +LibSortTest:testSortOriginalPsuedorandom(uint256) (runs: 317, μ: 287578, ~: 286792) LibSortTest:testSortOriginalReversed() (gas: 156282) LibSortTest:testSortOriginalSorted() (gas: 142263) LibSortTest:testSortPsuedorandom() (gas: 141932) -LibSortTest:testSortPsuedorandom(uint256) (runs: 316, μ: 142245, ~: 142201) +LibSortTest:testSortPsuedorandom(uint256) (runs: 317, μ: 142249, ~: 142201) LibSortTest:testSortPsuedorandomNonuniform() (gas: 147496) -LibSortTest:testSortPsuedorandomNonuniform(uint256) (runs: 316, μ: 147775, ~: 147639) +LibSortTest:testSortPsuedorandomNonuniform(uint256) (runs: 317, μ: 147769, ~: 147633) LibSortTest:testSortReversed() (gas: 38827) LibSortTest:testSortSorted() (gas: 35785) LibSortTest:testSortTestOverhead() (gas: 103630) LibSortTest:testSortedDifferenceDifferential() (gas: 183604) -LibSortTest:testSortedDifferenceDifferential(uint256) (runs: 316, μ: 35366, ~: 35236) -LibSortTest:testSortedDifferenceDifferentialInt(uint256) (runs: 316, μ: 36942, ~: 36251) -LibSortTest:testSortedDifferenceUnionIntersection(uint256) (runs: 316, μ: 58581, ~: 52924) +LibSortTest:testSortedDifferenceDifferential(uint256) (runs: 317, μ: 35355, ~: 35220) +LibSortTest:testSortedDifferenceDifferentialInt(uint256) (runs: 317, μ: 36970, ~: 36352) +LibSortTest:testSortedDifferenceUnionIntersection(uint256) (runs: 317, μ: 58679, ~: 52929) LibSortTest:testSortedIntersectionDifferential() (gas: 209797) -LibSortTest:testSortedIntersectionDifferential(uint256) (runs: 316, μ: 33132, ~: 32371) -LibSortTest:testSortedIntersectionDifferentialInt(uint256) (runs: 316, μ: 34706, ~: 34214) +LibSortTest:testSortedIntersectionDifferential(uint256) (runs: 317, μ: 33116, ~: 32350) +LibSortTest:testSortedIntersectionDifferentialInt(uint256) (runs: 317, μ: 34694, ~: 34214) LibSortTest:testSortedUnionDifferential() (gas: 217387) -LibSortTest:testSortedUnionDifferential(uint256) (runs: 316, μ: 35315, ~: 34999) -LibSortTest:testSortedUnionDifferentialInt(uint256) (runs: 316, μ: 38464, ~: 37802) -LibSortTest:testTwoComplementConversionSort(int256,int256) (runs: 316, μ: 515, ~: 514) +LibSortTest:testSortedUnionDifferential(uint256) (runs: 317, μ: 35289, ~: 34997) +LibSortTest:testSortedUnionDifferentialInt(uint256) (runs: 317, μ: 38444, ~: 37744) +LibSortTest:testTwoComplementConversionSort(int256,int256) (runs: 317, μ: 515, ~: 514) LibSortTest:testUniquifySorted() (gas: 1710) -LibSortTest:testUniquifySorted(uint256) (runs: 316, μ: 50409, ~: 28582) +LibSortTest:testUniquifySorted(uint256) (runs: 317, μ: 50431, ~: 28614) LibSortTest:testUniquifySortedAddress() (gas: 4039) -LibSortTest:testUniquifySortedAddress(uint256) (runs: 316, μ: 50237, ~: 28918) -LibSortTest:testUniquifySortedDifferential(uint256) (runs: 316, μ: 52654, ~: 31845) +LibSortTest:testUniquifySortedAddress(uint256) (runs: 317, μ: 50232, ~: 28918) +LibSortTest:testUniquifySortedDifferential(uint256) (runs: 317, μ: 52563, ~: 31828) LibSortTest:testUniquifySortedWithEmptyArray() (gas: 506) LibSortTest:test__codesize() (gas: 21692) -LibStringTest:testAddressToHexStringZeroRightPadded(address) (runs: 316, μ: 3414, ~: 3414) +LibStringTest:testAddressToHexStringZeroRightPadded(address) (runs: 317, μ: 3414, ~: 3414) LibStringTest:testBytesToHexString() (gas: 4801) -LibStringTest:testBytesToHexString(bytes) (runs: 316, μ: 755403, ~: 624278) +LibStringTest:testBytesToHexString(bytes) (runs: 317, μ: 754989, ~: 624278) LibStringTest:testBytesToHexStringNoPrefix() (gas: 4489) -LibStringTest:testBytesToHexStringNoPrefix(bytes) (runs: 316, μ: 735831, ~: 623982) +LibStringTest:testBytesToHexStringNoPrefix(bytes) (runs: 317, μ: 735476, ~: 623982) LibStringTest:testContains() (gas: 43988) LibStringTest:testFromAddressToHexString() (gas: 3137) LibStringTest:testFromAddressToHexStringChecksummed() (gas: 35217) -LibStringTest:testFromAddressToHexStringChecksummedDifferential(uint256) (runs: 316, μ: 689598, ~: 612916) +LibStringTest:testFromAddressToHexStringChecksummedDifferential(uint256) (runs: 317, μ: 689356, ~: 612919) LibStringTest:testFromAddressToHexStringWithLeadingZeros() (gas: 3113) -LibStringTest:testHexStringNoPrefixVariants(uint256,uint256) (runs: 316, μ: 771504, ~: 622711) +LibStringTest:testHexStringNoPrefixVariants(uint256,uint256) (runs: 317, μ: 771048, ~: 622729) LibStringTest:testNormalizeSmallString() (gas: 1387) -LibStringTest:testNormalizeSmallString(bytes32) (runs: 316, μ: 3020, ~: 4213) +LibStringTest:testNormalizeSmallString(bytes32) (runs: 317, μ: 3016, ~: 4213) LibStringTest:testStringConcat() (gas: 4003) -LibStringTest:testStringConcat(string,string) (runs: 316, μ: 701385, ~: 604396) +LibStringTest:testStringConcat(string,string) (runs: 317, μ: 701079, ~: 604396) LibStringTest:testStringConcatOriginal() (gas: 4654) LibStringTest:testStringDirectReturn() (gas: 6741) -LibStringTest:testStringDirectReturn(string) (runs: 316, μ: 3002, ~: 2916) +LibStringTest:testStringDirectReturn(string) (runs: 317, μ: 3002, ~: 2916) LibStringTest:testStringEndsWith() (gas: 2829) -LibStringTest:testStringEndsWith(uint256) (runs: 316, μ: 700341, ~: 637082) -LibStringTest:testStringEq(string,string) (runs: 316, μ: 1566, ~: 1567) +LibStringTest:testStringEndsWith(uint256) (runs: 317, μ: 700190, ~: 637115) +LibStringTest:testStringEq(string,string) (runs: 317, μ: 1566, ~: 1567) LibStringTest:testStringEqs() (gas: 2013) LibStringTest:testStringEscapeHTML() (gas: 8427) -LibStringTest:testStringEscapeHTML(uint256) (runs: 316, μ: 735814, ~: 641333) +LibStringTest:testStringEscapeHTML(uint256) (runs: 317, μ: 735585, ~: 641388) LibStringTest:testStringEscapeJSON() (gas: 39797) LibStringTest:testStringEscapeJSONHexEncode() (gas: 727636) LibStringTest:testStringIndexOf() (gas: 17375) -LibStringTest:testStringIndexOf(uint256) (runs: 316, μ: 764851, ~: 645010) +LibStringTest:testStringIndexOf(uint256) (runs: 317, μ: 764462, ~: 644911) LibStringTest:testStringIndicesOf() (gas: 11700) -LibStringTest:testStringIndicesOf(uint256) (runs: 316, μ: 804310, ~: 648731) +LibStringTest:testStringIndicesOf(uint256) (runs: 317, μ: 803824, ~: 648743) LibStringTest:testStringIs7BitASCII() (gas: 205346) -LibStringTest:testStringIs7BitASCIIDifferential(bytes) (runs: 316, μ: 727223, ~: 604157) +LibStringTest:testStringIs7BitASCIIDifferential(bytes) (runs: 317, μ: 726856, ~: 604170) LibStringTest:testStringIs7BitASCIIWithAllowedLookup() (gas: 4939) -LibStringTest:testStringIs7BitASCIIWithAllowedLookupDifferential(bytes,uint128) (runs: 316, μ: 681694, ~: 603919) +LibStringTest:testStringIs7BitASCIIWithAllowedLookupDifferential(bytes,uint128) (runs: 317, μ: 681449, ~: 603922) LibStringTest:testStringLastIndexOf() (gas: 24042) -LibStringTest:testStringLastIndexOf(uint256) (runs: 316, μ: 720933, ~: 646323) +LibStringTest:testStringLastIndexOf(uint256) (runs: 317, μ: 720665, ~: 646305) LibStringTest:testStringLowerDifferential() (gas: 3405674) -LibStringTest:testStringLowerDifferential(string) (runs: 316, μ: 8331, ~: 7991) +LibStringTest:testStringLowerDifferential(string) (runs: 317, μ: 8350, ~: 7991) LibStringTest:testStringLowerOriginal() (gas: 1219) LibStringTest:testStringPackAndUnpackOne() (gas: 756426) -LibStringTest:testStringPackAndUnpackOne(string) (runs: 316, μ: 683335, ~: 603179) -LibStringTest:testStringPackAndUnpackOneDifferential(string) (runs: 316, μ: 689773, ~: 603035) +LibStringTest:testStringPackAndUnpackOne(string) (runs: 317, μ: 683082, ~: 603179) +LibStringTest:testStringPackAndUnpackOneDifferential(string) (runs: 317, μ: 689499, ~: 603035) LibStringTest:testStringPackAndUnpackTwo() (gas: 916242) -LibStringTest:testStringPackAndUnpackTwo(string,string) (runs: 316, μ: 775351, ~: 604566) -LibStringTest:testStringPackAndUnpackTwoDifferential(string,string) (runs: 316, μ: 722612, ~: 603980) +LibStringTest:testStringPackAndUnpackTwo(string,string) (runs: 317, μ: 774812, ~: 604566) +LibStringTest:testStringPackAndUnpackTwoDifferential(string,string) (runs: 317, μ: 722237, ~: 603980) LibStringTest:testStringRepeat() (gas: 4986) -LibStringTest:testStringRepeat(string,uint256) (runs: 316, μ: 691387, ~: 606494) +LibStringTest:testStringRepeat(string,uint256) (runs: 317, μ: 691112, ~: 606491) LibStringTest:testStringRepeatOriginal() (gas: 9620) -LibStringTest:testStringReplace(uint256) (runs: 316, μ: 820668, ~: 650743) +LibStringTest:testStringReplace(uint256) (runs: 317, μ: 820143, ~: 650912) LibStringTest:testStringReplaceLong() (gas: 8573) LibStringTest:testStringReplaceMedium() (gas: 7581) LibStringTest:testStringReplaceShort() (gas: 12329) LibStringTest:testStringRuneCount() (gas: 3035897) -LibStringTest:testStringRuneCountDifferential(string) (runs: 316, μ: 6143, ~: 5878) +LibStringTest:testStringRuneCountDifferential(string) (runs: 317, μ: 6159, ~: 5889) LibStringTest:testStringSlice() (gas: 9257) -LibStringTest:testStringSlice(bytes,uint256,uint256) (runs: 316, μ: 737693, ~: 628265) -LibStringTest:testStringSlice(uint256) (runs: 316, μ: 844532, ~: 645112) +LibStringTest:testStringSlice(bytes,uint256,uint256) (runs: 317, μ: 737349, ~: 628267) +LibStringTest:testStringSlice(uint256) (runs: 317, μ: 843918, ~: 645154) LibStringTest:testStringSplit() (gas: 20309) -LibStringTest:testStringSplit(uint256) (runs: 316, μ: 753098, ~: 647957) +LibStringTest:testStringSplit(uint256) (runs: 317, μ: 752798, ~: 648024) LibStringTest:testStringStartsWith() (gas: 2544) -LibStringTest:testStringStartsWith(uint256) (runs: 316, μ: 805978, ~: 636780) +LibStringTest:testStringStartsWith(uint256) (runs: 317, μ: 805431, ~: 636762) LibStringTest:testStringUpperDifferential() (gas: 3084191) -LibStringTest:testStringUpperDifferential(string) (runs: 316, μ: 8330, ~: 7990) +LibStringTest:testStringUpperDifferential(string) (runs: 317, μ: 8349, ~: 7990) LibStringTest:testStringUpperOriginal() (gas: 1218) LibStringTest:testTo7BitASCIIAllowedLookup() (gas: 3113) LibStringTest:testToHexStringFixedLengthInsufficientLength() (gas: 3395) LibStringTest:testToHexStringFixedLengthPositiveNumberLong() (gas: 3699) LibStringTest:testToHexStringFixedLengthPositiveNumberShort() (gas: 940) LibStringTest:testToHexStringFixedLengthUint256Max() (gas: 3656) -LibStringTest:testToHexStringFixedLengthZeroRightPadded(uint256,uint256) (runs: 316, μ: 8256, ~: 6478) +LibStringTest:testToHexStringFixedLengthZeroRightPadded(uint256,uint256) (runs: 317, μ: 8285, ~: 6478) LibStringTest:testToHexStringPositiveNumber() (gas: 865) LibStringTest:testToHexStringUint256Max() (gas: 3398) LibStringTest:testToHexStringZero() (gas: 805) -LibStringTest:testToHexStringZeroRightPadded(uint256) (runs: 316, μ: 1931, ~: 1506) +LibStringTest:testToHexStringZeroRightPadded(uint256) (runs: 317, μ: 1936, ~: 1548) LibStringTest:testToMinimalHexStringNoPrefixPositiveNumber() (gas: 3426) LibStringTest:testToMinimalHexStringNoPrefixUint256Max() (gas: 3424) LibStringTest:testToMinimalHexStringNoPrefixZero() (gas: 831) -LibStringTest:testToMinimalHexStringNoPrefixZeroRightPadded(uint256) (runs: 316, μ: 1951, ~: 1528) +LibStringTest:testToMinimalHexStringNoPrefixZeroRightPadded(uint256) (runs: 317, μ: 1957, ~: 1570) LibStringTest:testToMinimalHexStringPositiveNumber() (gas: 3556) LibStringTest:testToMinimalHexStringUint256Max() (gas: 3470) LibStringTest:testToMinimalHexStringZero() (gas: 829) -LibStringTest:testToMinimalHexStringZeroRightPadded(uint256) (runs: 316, μ: 1979, ~: 1553) +LibStringTest:testToMinimalHexStringZeroRightPadded(uint256) (runs: 317, μ: 1984, ~: 1595) LibStringTest:testToSmallString() (gas: 4448) LibStringTest:testToStringPositiveNumber() (gas: 910) LibStringTest:testToStringPositiveNumberBrutalized() (gas: 603313) -LibStringTest:testToStringSignedDifferential(int256) (runs: 316, μ: 744085, ~: 606103) +LibStringTest:testToStringSignedDifferential(int256) (runs: 317, μ: 743675, ~: 606139) LibStringTest:testToStringSignedGas() (gas: 7305) -LibStringTest:testToStringSignedMemory(int256) (runs: 316, μ: 689201, ~: 604269) +LibStringTest:testToStringSignedMemory(int256) (runs: 317, μ: 688945, ~: 604271) LibStringTest:testToStringSignedOriginalGas() (gas: 9839) LibStringTest:testToStringUint256Max() (gas: 6687) LibStringTest:testToStringUint256MaxBrutalized() (gas: 614604) LibStringTest:testToStringZero() (gas: 699) LibStringTest:testToStringZeroBrutalized() (gas: 602785) -LibStringTest:testToStringZeroRightPadded(uint256) (runs: 316, μ: 727004, ~: 603668) +LibStringTest:testToStringZeroRightPadded(uint256) (runs: 317, μ: 732535, ~: 603690) LibStringTest:test__codesize() (gas: 43124) LibZipTest:testCdCompress() (gas: 126842) -LibZipTest:testCdCompressDecompress(bytes) (runs: 316, μ: 773575, ~: 658750) -LibZipTest:testCdCompressDecompress(uint256) (runs: 316, μ: 759414, ~: 677503) +LibZipTest:testCdCompressDecompress(bytes) (runs: 317, μ: 773204, ~: 658719) +LibZipTest:testCdCompressDecompress(uint256) (runs: 317, μ: 759085, ~: 677465) LibZipTest:testCdDecompressOnInvalidInput() (gas: 1397) LibZipTest:testCdFallback() (gas: 5622174) -LibZipTest:testCdFallback(bytes,uint256) (runs: 316, μ: 1197914, ~: 1062847) -LibZipTest:testCdFallbackDecompressor(bytes) (runs: 316, μ: 121459, ~: 118046) -LibZipTest:testCdFallbackDecompressor(uint256) (runs: 316, μ: 173829, ~: 158204) -LibZipTest:testCdFallbackMaskTrick(uint256,uint256) (runs: 316, μ: 593, ~: 585) -LibZipTest:testDecompressWontRevert(bytes) (runs: 316, μ: 735059, ~: 637532) +LibZipTest:testCdFallback(bytes,uint256) (runs: 317, μ: 1197441, ~: 1062777) +LibZipTest:testCdFallbackDecompressor(bytes) (runs: 317, μ: 121448, ~: 118046) +LibZipTest:testCdFallbackDecompressor(uint256) (runs: 317, μ: 173753, ~: 158112) +LibZipTest:testCdFallbackMaskTrick(uint256,uint256) (runs: 317, μ: 593, ~: 585) +LibZipTest:testDecompressWontRevert(bytes) (runs: 317, μ: 734743, ~: 637486) LibZipTest:testFlzCompressDecompress() (gas: 1254342) -LibZipTest:testFlzCompressDecompress(bytes) (runs: 316, μ: 775018, ~: 673172) +LibZipTest:testFlzCompressDecompress(bytes) (runs: 317, μ: 774899, ~: 673227) LibZipTest:testFlzCompressDecompress2() (gas: 763987) LibZipTest:test__codesize() (gas: 20417) -LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 316, μ: 3053933, ~: 3342222) -LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 316, μ: 1367554, ~: 1367483) -LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 316, μ: 1370988, ~: 1362885) -LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 316, μ: 1351631, ~: 1331142) +LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 317, μ: 3056810, ~: 3342222) +LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 317, μ: 1367552, ~: 1367483) +LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 317, μ: 1370967, ~: 1362888) +LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 317, μ: 1351566, ~: 1331171) LifebuoyTest:testLockEverything() (gas: 960877) LifebuoyTest:testLockRescue() (gas: 978964) LifebuoyTest:testLockRescueETH() (gas: 991228) -LifebuoyTest:testRescueAll(bytes32) (runs: 316, μ: 1599019, ~: 991996) +LifebuoyTest:testRescueAll(bytes32) (runs: 317, μ: 1596967, ~: 991925) LifebuoyTest:test__codesize() (gas: 45955) MerkleProofLibTest:testEmptyCalldataHelpers() (gas: 985) -MerkleProofLibTest:testVerifyMultiProof(bool,bool,bool,bool,bytes32) (runs: 316, μ: 742505, ~: 640816) -MerkleProofLibTest:testVerifyMultiProofForHeightOneTree(bool,bool,bool,bool,bool,bool[]) (runs: 316, μ: 37817, ~: 39250) -MerkleProofLibTest:testVerifyMultiProofForHeightTwoTree(bool,bool,bool,bool,bool,bytes32) (runs: 316, μ: 6507, ~: 6509) -MerkleProofLibTest:testVerifyMultiProofForSingleLeaf(bytes32[],uint256) (runs: 316, μ: 925968, ~: 813424) +MerkleProofLibTest:testVerifyMultiProof(bool,bool,bool,bool,bytes32) (runs: 317, μ: 742179, ~: 640807) +MerkleProofLibTest:testVerifyMultiProofForHeightOneTree(bool,bool,bool,bool,bool,bool[]) (runs: 317, μ: 37758, ~: 38830) +MerkleProofLibTest:testVerifyMultiProofForHeightTwoTree(bool,bool,bool,bool,bool,bytes32) (runs: 317, μ: 6507, ~: 6490) +MerkleProofLibTest:testVerifyMultiProofForSingleLeaf(bytes32[],uint256) (runs: 317, μ: 925908, ~: 814648) MerkleProofLibTest:testVerifyMultiProofIsInvalid() (gas: 638379) MerkleProofLibTest:testVerifyMultiProofIsValid() (gas: 640255) MerkleProofLibTest:testVerifyMultiProofMalicious() (gas: 7918) -MerkleProofLibTest:testVerifyProof(bytes32[],uint256) (runs: 316, μ: 892443, ~: 794669) -MerkleProofLibTest:testVerifyProofBasicCase(bool,bool,bool,bytes32) (runs: 316, μ: 4044, ~: 3906) +MerkleProofLibTest:testVerifyProof(bytes32[],uint256) (runs: 317, μ: 892427, ~: 794714) +MerkleProofLibTest:testVerifyProofBasicCase(bool,bool,bool,bytes32) (runs: 317, μ: 4044, ~: 3906) MerkleProofLibTest:testVerifyProofBasicCaseIsInvalid() (gas: 3626) MerkleProofLibTest:testVerifyProofBasicCaseIsValid() (gas: 3590) -MerkleProofLibTest:testVerifyProofForHeightOneTree(bool,bool,bool,bool) (runs: 316, μ: 2694, ~: 2968) +MerkleProofLibTest:testVerifyProofForHeightOneTree(bool,bool,bool,bool) (runs: 317, μ: 2695, ~: 2968) MerkleProofLibTest:test__codesize() (gas: 11742) -MetadataReaderLibTest:testBoundsCheckDifferential(uint256) (runs: 316, μ: 25471, ~: 25476) +MetadataReaderLibTest:testBoundsCheckDifferential(uint256) (runs: 317, μ: 25471, ~: 25477) MetadataReaderLibTest:testReadBytes32String() (gas: 664725) MetadataReaderLibTest:testReadBytes32StringTruncated() (gas: 775178) -MetadataReaderLibTest:testReadString(uint256) (runs: 316, μ: 837609, ~: 719679) +MetadataReaderLibTest:testReadString(uint256) (runs: 317, μ: 837226, ~: 719663) MetadataReaderLibTest:testReadStringChopped() (gas: 272350) -MetadataReaderLibTest:testReadStringTruncated(uint256) (runs: 316, μ: 818366, ~: 707176) +MetadataReaderLibTest:testReadStringTruncated(uint256) (runs: 317, μ: 818009, ~: 707148) MetadataReaderLibTest:testReadUint() (gas: 921729) -MetadataReaderLibTest:testReadUint(uint256) (runs: 316, μ: 46641, ~: 47134) +MetadataReaderLibTest:testReadUint(uint256) (runs: 317, μ: 46642, ~: 47133) MetadataReaderLibTest:test__codesize() (gas: 8122) -MinHeapLibTest:testHeapEnqueue(uint256) (runs: 316, μ: 182016, ~: 179806) -MinHeapLibTest:testHeapEnqueue2(uint256) (runs: 316, μ: 583974, ~: 424572) +MinHeapLibTest:testHeapEnqueue(uint256) (runs: 317, μ: 181896, ~: 179753) +MinHeapLibTest:testHeapEnqueue2(uint256) (runs: 317, μ: 583386, ~: 422888) MinHeapLibTest:testHeapEnqueueGas() (gas: 841356) -MinHeapLibTest:testHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 316, μ: 46681, ~: 28352) -MinHeapLibTest:testHeapPSiftTrick(uint256,uint256,uint256) (runs: 316, μ: 684, ~: 517) -MinHeapLibTest:testHeapPushAndPop(uint256) (runs: 316, μ: 114454, ~: 124819) -MinHeapLibTest:testHeapPushPop(uint256) (runs: 316, μ: 245808, ~: 232054) -MinHeapLibTest:testHeapPushPopLength(uint256) (runs: 316, μ: 961104, ~: 851653) -MinHeapLibTest:testHeapReplace(uint256) (runs: 316, μ: 294510, ~: 299449) -MinHeapLibTest:testHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 316, μ: 44606, ~: 28724) -MinHeapLibTest:testHeapRoot(uint256) (runs: 316, μ: 47084, ~: 47448) -MinHeapLibTest:testHeapSmallest(uint256) (runs: 316, μ: 1337948, ~: 1111314) +MinHeapLibTest:testHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 317, μ: 46624, ~: 28352) +MinHeapLibTest:testHeapPSiftTrick(uint256,uint256,uint256) (runs: 317, μ: 685, ~: 517) +MinHeapLibTest:testHeapPushAndPop(uint256) (runs: 317, μ: 114488, ~: 124825) +MinHeapLibTest:testHeapPushPop(uint256) (runs: 317, μ: 246089, ~: 232118) +MinHeapLibTest:testHeapPushPopLength(uint256) (runs: 317, μ: 960582, ~: 851400) +MinHeapLibTest:testHeapReplace(uint256) (runs: 317, μ: 294684, ~: 300192) +MinHeapLibTest:testHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 317, μ: 44554, ~: 28724) +MinHeapLibTest:testHeapRoot(uint256) (runs: 317, μ: 47022, ~: 47448) +MinHeapLibTest:testHeapSmallest(uint256) (runs: 317, μ: 1336850, ~: 1108875) MinHeapLibTest:testHeapSmallestGas() (gas: 50069382) -MinHeapLibTest:testMemHeapEnqueue(uint256) (runs: 316, μ: 1629627, ~: 951269) -MinHeapLibTest:testMemHeapEnqueue2(uint256) (runs: 316, μ: 870034, ~: 752171) +MinHeapLibTest:testMemHeapEnqueue(uint256) (runs: 317, μ: 1626731, ~: 948973) +MinHeapLibTest:testMemHeapEnqueue2(uint256) (runs: 317, μ: 869941, ~: 752544) MinHeapLibTest:testMemHeapEnqueueGas() (gas: 249458) -MinHeapLibTest:testMemHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 316, μ: 24967, ~: 23896) -MinHeapLibTest:testMemHeapPushAndPop(uint256) (runs: 316, μ: 987229, ~: 840046) +MinHeapLibTest:testMemHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 317, μ: 24971, ~: 23896) +MinHeapLibTest:testMemHeapPushAndPop(uint256) (runs: 317, μ: 986233, ~: 838889) MinHeapLibTest:testMemHeapPushGas() (gas: 35596) -MinHeapLibTest:testMemHeapPushPop(uint256) (runs: 316, μ: 1404174, ~: 1037761) -MinHeapLibTest:testMemHeapPushPopLength(uint256) (runs: 316, μ: 869600, ~: 718270) -MinHeapLibTest:testMemHeapReplace(uint256) (runs: 316, μ: 945575, ~: 801585) -MinHeapLibTest:testMemHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 316, μ: 25712, ~: 25271) -MinHeapLibTest:testMemHeapRoot(uint256) (runs: 316, μ: 759774, ~: 655854) -MinHeapLibTest:testMemHeapSmallest(uint256) (runs: 316, μ: 1000588, ~: 767547) +MinHeapLibTest:testMemHeapPushPop(uint256) (runs: 317, μ: 1401936, ~: 1036205) +MinHeapLibTest:testMemHeapPushPopLength(uint256) (runs: 317, μ: 869729, ~: 718288) +MinHeapLibTest:testMemHeapReplace(uint256) (runs: 317, μ: 944917, ~: 799592) +MinHeapLibTest:testMemHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 317, μ: 25709, ~: 25269) +MinHeapLibTest:testMemHeapRoot(uint256) (runs: 317, μ: 759450, ~: 655854) +MinHeapLibTest:testMemHeapSmallest(uint256) (runs: 317, μ: 999527, ~: 767494) MinHeapLibTest:testMemHeapSmallestGas() (gas: 2985537) MinHeapLibTest:testMemHeapWriteAndReadFromStorage() (gas: 67756) MinHeapLibTest:testMemHeapWriteAndReadFromStorage2() (gas: 67774) @@ -1044,66 +1044,66 @@ MulticallableTest:testMulticallableBenchmark() (gas: 29642) MulticallableTest:testMulticallableOriginalBenchmark() (gas: 38935) MulticallableTest:testMulticallablePreservesMsgSender() (gas: 11166) MulticallableTest:testMulticallableReturnDataIsProperlyEncoded() (gas: 11665) -MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(string,string,uint256) (runs: 316, μ: 12156, ~: 7437) -MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(uint256,uint256,uint256,uint256) (runs: 316, μ: 11811, ~: 11811) +MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(string,string,uint256) (runs: 317, μ: 12173, ~: 7437) +MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(uint256,uint256,uint256,uint256) (runs: 317, μ: 11811, ~: 11811) MulticallableTest:testMulticallableRevertWithCustomError() (gas: 11811) MulticallableTest:testMulticallableRevertWithMessage() (gas: 13483) -MulticallableTest:testMulticallableRevertWithMessage(string) (runs: 316, μ: 14094, ~: 13944) +MulticallableTest:testMulticallableRevertWithMessage(string) (runs: 317, μ: 14095, ~: 13944) MulticallableTest:testMulticallableRevertWithNothing() (gas: 11673) MulticallableTest:testMulticallableWithNoData() (gas: 6286) MulticallableTest:test__codesize() (gas: 8867) OwnableRolesTest:testBytecodeSize() (gas: 350635) -OwnableRolesTest:testGrantAndRemoveRolesDirect(address,uint256,uint256) (runs: 316, μ: 41491, ~: 42162) -OwnableRolesTest:testGrantAndRevokeOrRenounceRoles(address,bool,bool,bool,uint256,uint256) (runs: 316, μ: 27865, ~: 23108) +OwnableRolesTest:testGrantAndRemoveRolesDirect(address,uint256,uint256) (runs: 317, μ: 41493, ~: 42162) +OwnableRolesTest:testGrantAndRevokeOrRenounceRoles(address,bool,bool,bool,uint256,uint256) (runs: 317, μ: 27815, ~: 20899) OwnableRolesTest:testGrantRoles() (gas: 36348) OwnableRolesTest:testHandoverOwnership() (gas: 32807) -OwnableRolesTest:testHandoverOwnership(address) (runs: 316, μ: 32844, ~: 32832) +OwnableRolesTest:testHandoverOwnership(address) (runs: 317, μ: 32844, ~: 32832) OwnableRolesTest:testHandoverOwnershipAfterExpiration() (gas: 37152) OwnableRolesTest:testHandoverOwnershipBeforeExpiration() (gas: 28907) OwnableRolesTest:testHandoverOwnershipRevertsIfCompleteIsNotOwner() (gas: 35826) OwnableRolesTest:testHandoverOwnershipWithCancellation() (gas: 31247) -OwnableRolesTest:testHasAllRoles(address,uint256,uint256,uint256,bool) (runs: 316, μ: 34003, ~: 34003) -OwnableRolesTest:testHasAnyRole(address,uint256,uint256) (runs: 316, μ: 33605, ~: 33793) +OwnableRolesTest:testHasAllRoles(address,uint256,uint256,uint256,bool) (runs: 317, μ: 34003, ~: 34003) +OwnableRolesTest:testHasAnyRole(address,uint256,uint256) (runs: 317, μ: 33606, ~: 33793) OwnableRolesTest:testInitializeOwnerDirect() (gas: 16950) -OwnableRolesTest:testOnlyOwnerModifier(address,bool) (runs: 316, μ: 21015, ~: 30023) +OwnableRolesTest:testOnlyOwnerModifier(address,bool) (runs: 317, μ: 20984, ~: 30023) OwnableRolesTest:testOnlyOwnerOrRolesModifier() (gas: 36455) -OwnableRolesTest:testOnlyOwnerOrRolesModifier(address,bool,uint256,uint256) (runs: 316, μ: 55661, ~: 55319) -OwnableRolesTest:testOnlyRolesModifier(address,uint256,uint256) (runs: 316, μ: 56274, ~: 58115) -OwnableRolesTest:testOnlyRolesOrOwnerModifier(address,bool,uint256,uint256) (runs: 316, μ: 56618, ~: 57486) +OwnableRolesTest:testOnlyOwnerOrRolesModifier(address,bool,uint256,uint256) (runs: 317, μ: 55670, ~: 55319) +OwnableRolesTest:testOnlyRolesModifier(address,uint256,uint256) (runs: 317, μ: 56280, ~: 58115) +OwnableRolesTest:testOnlyRolesOrOwnerModifier(address,bool,uint256,uint256) (runs: 317, μ: 56623, ~: 57486) OwnableRolesTest:testOrdinalsFromRoles() (gas: 3756443) -OwnableRolesTest:testOrdinalsFromRoles(uint256) (runs: 316, μ: 58560, ~: 41054) +OwnableRolesTest:testOrdinalsFromRoles(uint256) (runs: 317, μ: 58481, ~: 39974) OwnableRolesTest:testOwnershipHandoverValidForDefaultValue() (gas: 5825) OwnableRolesTest:testRenounceOwnership() (gas: 12945) OwnableRolesTest:testRolesFromOrdinals() (gas: 652364) -OwnableRolesTest:testRolesFromOrdinals(uint8[]) (runs: 316, μ: 81549, ~: 84732) +OwnableRolesTest:testRolesFromOrdinals(uint8[]) (runs: 317, μ: 81758, ~: 85017) OwnableRolesTest:testSetOwnerDirect() (gas: 18019) -OwnableRolesTest:testSetOwnerDirect(address) (runs: 316, μ: 18124, ~: 18139) -OwnableRolesTest:testSetRolesDirect(uint256) (runs: 316, μ: 101499, ~: 101614) +OwnableRolesTest:testSetOwnerDirect(address) (runs: 317, μ: 18124, ~: 18139) +OwnableRolesTest:testSetRolesDirect(uint256) (runs: 317, μ: 101500, ~: 101614) OwnableRolesTest:testTransferOwnership() (gas: 19549) -OwnableRolesTest:testTransferOwnership(address,bool,bool) (runs: 316, μ: 14412, ~: 12589) +OwnableRolesTest:testTransferOwnership(address,bool,bool) (runs: 317, μ: 14430, ~: 12589) OwnableRolesTest:test__codesize() (gas: 21146) OwnableTest:testBytecodeSize() (gas: 235158) OwnableTest:testHandoverOwnership() (gas: 32465) -OwnableTest:testHandoverOwnership(address) (runs: 316, μ: 32485, ~: 32472) +OwnableTest:testHandoverOwnership(address) (runs: 317, μ: 32485, ~: 32472) OwnableTest:testHandoverOwnershipAfterExpiration() (gas: 36930) OwnableTest:testHandoverOwnershipBeforeExpiration() (gas: 28756) OwnableTest:testHandoverOwnershipRevertsIfCompleteIsNotOwner() (gas: 35560) OwnableTest:testHandoverOwnershipWithCancellation() (gas: 30890) OwnableTest:testInitializeOwnerDirect() (gas: 16825) -OwnableTest:testOnlyOwnerModifier(address,bool) (runs: 316, μ: 20961, ~: 30001) +OwnableTest:testOnlyOwnerModifier(address,bool) (runs: 317, μ: 20930, ~: 30001) OwnableTest:testOwnershipHandoverValidForDefaultValue() (gas: 5737) OwnableTest:testRenounceOwnership() (gas: 12779) OwnableTest:testSetOwnerDirect() (gas: 17929) -OwnableTest:testSetOwnerDirect(address) (runs: 316, μ: 18020, ~: 18050) +OwnableTest:testSetOwnerDirect(address) (runs: 317, μ: 18020, ~: 18050) OwnableTest:testTransferOwnership() (gas: 19446) -OwnableTest:testTransferOwnership(address,bool,bool) (runs: 316, μ: 14239, ~: 12395) +OwnableTest:testTransferOwnership(address,bool,bool) (runs: 317, μ: 14256, ~: 12395) OwnableTest:test__codesize() (gas: 10746) -P256Test:testP256Verify(uint256,bytes32) (runs: 316, μ: 493364, ~: 493089) +P256Test:testP256Verify(uint256,bytes32) (runs: 317, μ: 493384, ~: 493091) P256Test:testP256VerifyMalleableRIPPrecompile() (gas: 341155) P256Test:testP256VerifyMalleableVerifier() (gas: 341175) P256Test:testP256VerifyNonMalleableRIPPrecompile() (gas: 341117) P256Test:testP256VerifyNonMalleableVerifier() (gas: 341095) -P256Test:testP256VerifyNotDeployedReverts(bytes32,bytes32,bytes32,bytes32,bytes32,bool) (runs: 316, μ: 10815, ~: 10799) +P256Test:testP256VerifyNotDeployedReverts(bytes32,bytes32,bytes32,bytes32,bytes32,bool) (runs: 317, μ: 10815, ~: 10799) P256Test:testP256VerifyOutOfBounds() (gas: 201377) P256Test:testP256VerifyWycheproof() (gas: 3268) P256Test:test__codesize() (gas: 11373) @@ -1114,8 +1114,8 @@ ReceiverTest:testOnERC721Received() (gas: 65589) ReceiverTest:test__codesize() (gas: 3053) RedBlackTreeLibTest:testRedBlackTreeBenchUint160() (gas: 3428194) RedBlackTreeLibTest:testRedBlackTreeBenchUint256() (gas: 5841865) -RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove(uint256) (runs: 316, μ: 569166, ~: 565522) -RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove2(uint256) (runs: 316, μ: 418216, ~: 422473) +RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove(uint256) (runs: 317, μ: 568573, ~: 565035) +RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove2(uint256) (runs: 317, μ: 417963, ~: 419965) RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove3() (gas: 21564928) RedBlackTreeLibTest:testRedBlackTreeInsertBenchStep() (gas: 3702908) RedBlackTreeLibTest:testRedBlackTreeInsertBenchUint160() (gas: 3468526) @@ -1124,16 +1124,16 @@ RedBlackTreeLibTest:testRedBlackTreeInsertOneGas() (gas: 45558) RedBlackTreeLibTest:testRedBlackTreeInsertTenGas() (gas: 282691) RedBlackTreeLibTest:testRedBlackTreeInsertThreeGas() (gas: 96175) RedBlackTreeLibTest:testRedBlackTreeInsertTwoGas() (gas: 69785) -RedBlackTreeLibTest:testRedBlackTreeNearest(uint256) (runs: 316, μ: 252640, ~: 248559) -RedBlackTreeLibTest:testRedBlackTreeNearestAfter(uint256) (runs: 316, μ: 247059, ~: 226958) -RedBlackTreeLibTest:testRedBlackTreeNearestBefore(uint256) (runs: 316, μ: 266837, ~: 250725) +RedBlackTreeLibTest:testRedBlackTreeNearest(uint256) (runs: 317, μ: 252829, ~: 250257) +RedBlackTreeLibTest:testRedBlackTreeNearestAfter(uint256) (runs: 317, μ: 247073, ~: 227006) +RedBlackTreeLibTest:testRedBlackTreeNearestBefore(uint256) (runs: 317, μ: 266774, ~: 250318) RedBlackTreeLibTest:testRedBlackTreePointers() (gas: 91643) RedBlackTreeLibTest:testRedBlackTreeRejectsEmptyValue() (gas: 3232) RedBlackTreeLibTest:testRedBlackTreeRemoveViaPointer() (gas: 58157) RedBlackTreeLibTest:testRedBlackTreeTreeFullReverts() (gas: 50317) RedBlackTreeLibTest:testRedBlackTreeTryInsertAndRemove() (gas: 56062) RedBlackTreeLibTest:testRedBlackTreeValues() (gas: 188809) -RedBlackTreeLibTest:testRedBlackTreeValues(uint256) (runs: 316, μ: 388563, ~: 242077) +RedBlackTreeLibTest:testRedBlackTreeValues(uint256) (runs: 317, μ: 390797, ~: 243207) RedBlackTreeLibTest:test__codesize() (gas: 13203) ReentrancyGuardTest:testRecursiveDirectUnguardedCall() (gas: 34276) ReentrancyGuardTest:testRecursiveIndirectUnguardedCall() (gas: 47727) @@ -1143,109 +1143,109 @@ ReentrancyGuardTest:testRevertRecursiveDirectGuardedCall() (gas: 55123) ReentrancyGuardTest:testRevertRecursiveIndirectGuardedCall() (gas: 56529) ReentrancyGuardTest:testRevertRemoteCallback() (gas: 56230) ReentrancyGuardTest:test__codesize() (gas: 4403) -SSTORE2Test:testReadRevertsOnZeroCodeAddress(address) (runs: 316, μ: 93586, ~: 30000) +SSTORE2Test:testReadRevertsOnZeroCodeAddress(address) (runs: 317, μ: 93383, ~: 30000) SSTORE2Test:testReadSlicing() (gas: 48874) SSTORE2Test:testWriteRead() (gas: 35880) -SSTORE2Test:testWriteRead(uint256,uint256) (runs: 316, μ: 1109872, ~: 67100) -SSTORE2Test:testWriteReadCounterfactual(bytes,bytes32,address) (runs: 316, μ: 4400850, ~: 108268) +SSTORE2Test:testWriteRead(uint256,uint256) (runs: 317, μ: 1106568, ~: 67024) +SSTORE2Test:testWriteReadCounterfactual(bytes,bytes32,address) (runs: 317, μ: 4387309, ~: 108268) SSTORE2Test:testWriteReadCustomBounds() (gas: 33936) SSTORE2Test:testWriteReadCustomStartBound() (gas: 34020) SSTORE2Test:testWriteReadDeterministic() (gas: 70156) -SSTORE2Test:testWriteReadDeterministic(bytes,bytes32) (runs: 316, μ: 4080846, ~: 96934) +SSTORE2Test:testWriteReadDeterministic(bytes,bytes32) (runs: 317, μ: 4068278, ~: 96934) SSTORE2Test:testWriteReadEmptyBound() (gas: 33734) SSTORE2Test:testWriteReadFullBoundedRead() (gas: 35937) SSTORE2Test:testWriteReadFullStartBound() (gas: 33983) SSTORE2Test:testWriteWithTooBigDataReverts() (gas: 97303641) SSTORE2Test:test__codesize() (gas: 8624) -SafeCastLibTest:testSafeCastInt256ToInt(int256,uint256) (runs: 316, μ: 19076, ~: 24773) +SafeCastLibTest:testSafeCastInt256ToInt(int256,uint256) (runs: 317, μ: 19095, ~: 24774) SafeCastLibTest:testSafeCastInt256ToIntBench() (gas: 341694) -SafeCastLibTest:testSafeCastInt256ToIntTrickEquivalence(int256) (runs: 316, μ: 406, ~: 406) -SafeCastLibTest:testSafeCastToInt256(uint256) (runs: 316, μ: 495, ~: 405) -SafeCastLibTest:testSafeCastToUint256(int256) (runs: 316, μ: 1291, ~: 428) -SafeCastLibTest:testSafeCastUint256ToInt(uint256,uint256) (runs: 316, μ: 27006, ~: 26204) +SafeCastLibTest:testSafeCastInt256ToIntTrickEquivalence(int256) (runs: 317, μ: 406, ~: 406) +SafeCastLibTest:testSafeCastToInt256(uint256) (runs: 317, μ: 495, ~: 405) +SafeCastLibTest:testSafeCastToUint256(int256) (runs: 317, μ: 1288, ~: 428) +SafeCastLibTest:testSafeCastUint256ToInt(uint256,uint256) (runs: 317, μ: 27000, ~: 26204) SafeCastLibTest:testSafeCastUint256ToInt256Bench() (gas: 29380) SafeCastLibTest:testSafeCastUint256ToIntBench() (gas: 330222) SafeCastLibTest:testSafeCastUint256ToUintBench() (gas: 326262) -SafeCastLibTest:testSafeCastUintToUint(uint256,uint256) (runs: 316, μ: 19144, ~: 24810) +SafeCastLibTest:testSafeCastUintToUint(uint256,uint256) (runs: 317, μ: 19174, ~: 24811) SafeCastLibTest:test__codesize() (gas: 23416) -SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 316, μ: 110700, ~: 124067) +SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 317, μ: 110601, ~: 124067) SafeTransferLibTest:testApproveWithMissingReturn() (gas: 32462) -SafeTransferLibTest:testApproveWithMissingReturn(address,uint256) (runs: 316, μ: 32557, ~: 32682) +SafeTransferLibTest:testApproveWithMissingReturn(address,uint256) (runs: 317, μ: 32557, ~: 32682) SafeTransferLibTest:testApproveWithNonContract() (gas: 2967) -SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 316, μ: 3754, ~: 3825) -SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 316, μ: 79724, ~: 59765) +SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 317, μ: 3754, ~: 3825) +SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 317, μ: 79660, ~: 59765) SafeTransferLibTest:testApproveWithRetry() (gas: 790140) -SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 316, μ: 790042, ~: 790310) +SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 317, μ: 790042, ~: 790310) SafeTransferLibTest:testApproveWithRetryWithNonContract() (gas: 2990) -SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 316, μ: 3773, ~: 3844) +SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 317, μ: 3773, ~: 3844) SafeTransferLibTest:testApproveWithReturnsFalseReverts() (gas: 10122) -SafeTransferLibTest:testApproveWithReturnsFalseReverts(address,uint256) (runs: 316, μ: 10276, ~: 10275) +SafeTransferLibTest:testApproveWithReturnsFalseReverts(address,uint256) (runs: 317, μ: 10276, ~: 10275) SafeTransferLibTest:testApproveWithReturnsTooLittleReverts() (gas: 10026) -SafeTransferLibTest:testApproveWithReturnsTooLittleReverts(address,uint256) (runs: 316, μ: 10205, ~: 10204) +SafeTransferLibTest:testApproveWithReturnsTooLittleReverts(address,uint256) (runs: 317, μ: 10205, ~: 10204) SafeTransferLibTest:testApproveWithReturnsTooMuch() (gas: 32913) -SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256) (runs: 316, μ: 32941, ~: 33066) -SafeTransferLibTest:testApproveWithReturnsTwoReverts(address,uint256) (runs: 316, μ: 10233, ~: 10232) +SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256) (runs: 317, μ: 32941, ~: 33066) +SafeTransferLibTest:testApproveWithReturnsTwoReverts(address,uint256) (runs: 317, μ: 10233, ~: 10232) SafeTransferLibTest:testApproveWithRevertingReverts() (gas: 9983) -SafeTransferLibTest:testApproveWithRevertingReverts(address,uint256) (runs: 316, μ: 10194, ~: 10193) +SafeTransferLibTest:testApproveWithRevertingReverts(address,uint256) (runs: 317, μ: 10194, ~: 10193) SafeTransferLibTest:testApproveWithStandardERC20() (gas: 32348) -SafeTransferLibTest:testApproveWithStandardERC20(address,uint256) (runs: 316, μ: 32445, ~: 32570) +SafeTransferLibTest:testApproveWithStandardERC20(address,uint256) (runs: 317, μ: 32445, ~: 32570) SafeTransferLibTest:testBalanceOfStandardERC20() (gas: 7852) -SafeTransferLibTest:testBalanceOfStandardERC20(address,uint256) (runs: 316, μ: 37746, ~: 38062) +SafeTransferLibTest:testBalanceOfStandardERC20(address,uint256) (runs: 317, μ: 37747, ~: 38062) SafeTransferLibTest:testForceTransferETHToGriever() (gas: 1511587) -SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 316, μ: 532708, ~: 570885) +SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 317, μ: 532520, ~: 570885) SafeTransferLibTest:testPermit2() (gas: 90097) -SafeTransferLibTest:testPermit2InvalidAmount(uint256) (runs: 316, μ: 103408, ~: 103354) +SafeTransferLibTest:testPermit2InvalidAmount(uint256) (runs: 317, μ: 103408, ~: 103352) SafeTransferLibTest:testPermit2OnDAI() (gas: 90296) -SafeTransferLibTest:testPermit2TransferFromInvalidAmount(uint256) (runs: 316, μ: 137475, ~: 137833) +SafeTransferLibTest:testPermit2TransferFromInvalidAmount(uint256) (runs: 317, μ: 137475, ~: 137833) SafeTransferLibTest:testSimplePermit2AndPermit2TransferFrom() (gas: 1136342) SafeTransferLibTest:testSimplePermit2AndPermit2TransferFromGas() (gas: 141122) SafeTransferLibTest:testTransferAllETH() (gas: 34643) -SafeTransferLibTest:testTransferAllETH(bytes32) (runs: 316, μ: 57052, ~: 57052) +SafeTransferLibTest:testTransferAllETH(bytes32) (runs: 317, μ: 57052, ~: 57052) SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts() (gas: 10782) -SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts(uint256) (runs: 316, μ: 10869, ~: 10869) +SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts(uint256) (runs: 317, μ: 10869, ~: 10869) SafeTransferLibTest:testTransferAllFromWithStandardERC20() (gas: 33702) -SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 316, μ: 58285, ~: 58270) +SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 317, μ: 58285, ~: 58271) SafeTransferLibTest:testTransferAllWithStandardERC20() (gas: 31014) -SafeTransferLibTest:testTransferAllWithStandardERC20(address,uint256) (runs: 316, μ: 40084, ~: 40082) +SafeTransferLibTest:testTransferAllWithStandardERC20(address,uint256) (runs: 317, μ: 40084, ~: 40082) SafeTransferLibTest:testTransferETH() (gas: 34622) -SafeTransferLibTest:testTransferETH(bytes32,uint256) (runs: 316, μ: 57091, ~: 57320) +SafeTransferLibTest:testTransferETH(bytes32,uint256) (runs: 317, μ: 57092, ~: 57320) SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts() (gas: 10851) -SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 316, μ: 10700, ~: 10888) -SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 316, μ: 736473, ~: 656160) +SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 317, μ: 10701, ~: 10888) +SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 317, μ: 736287, ~: 656188) SafeTransferLibTest:testTransferFromWithMissingReturn() (gas: 542453) -SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 316, μ: 648050, ~: 543314) +SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 317, μ: 647721, ~: 543314) SafeTransferLibTest:testTransferFromWithNonContract() (gas: 3066) -SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256) (runs: 316, μ: 4254, ~: 4288) -SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 316, μ: 742650, ~: 593489) +SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256) (runs: 317, μ: 4254, ~: 4288) +SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 317, μ: 742045, ~: 593489) SafeTransferLibTest:testTransferFromWithReturnsFalseReverts() (gas: 508851) -SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 316, μ: 582435, ~: 509171) +SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 317, μ: 582203, ~: 509171) SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts() (gas: 508583) -SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 316, μ: 589543, ~: 509001) +SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 317, μ: 589289, ~: 509001) SafeTransferLibTest:testTransferFromWithReturnsTooMuch() (gas: 543405) -SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 316, μ: 630407, ~: 544121) -SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 316, μ: 600130, ~: 509144) +SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 317, μ: 630132, ~: 544121) +SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 317, μ: 599842, ~: 509144) SafeTransferLibTest:testTransferFromWithRevertingReverts() (gas: 501317) -SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 316, μ: 542518, ~: 501814) +SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 317, μ: 542390, ~: 501795) SafeTransferLibTest:testTransferFromWithStandardERC20() (gas: 541616) -SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 316, μ: 622988, ~: 541449) -SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 316, μ: 748209, ~: 623053) +SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 317, μ: 622731, ~: 541449) +SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 317, μ: 747665, ~: 623034) SafeTransferLibTest:testTransferWithMissingReturn() (gas: 529120) -SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 316, μ: 580662, ~: 529480) +SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 317, μ: 580500, ~: 529480) SafeTransferLibTest:testTransferWithNonContract() (gas: 3010) -SafeTransferLibTest:testTransferWithNonContract(bytes32,address,uint256) (runs: 316, μ: 26314, ~: 26313) -SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 316, μ: 703257, ~: 598672) +SafeTransferLibTest:testTransferWithNonContract(bytes32,address,uint256) (runs: 317, μ: 26314, ~: 26313) +SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 317, μ: 702795, ~: 598672) SafeTransferLibTest:testTransferWithReturnsFalseReverts() (gas: 505938) -SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 316, μ: 621422, ~: 505935) +SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 317, μ: 621057, ~: 505935) SafeTransferLibTest:testTransferWithReturnsTooLittleReverts() (gas: 505526) -SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 316, μ: 593770, ~: 505859) +SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 317, μ: 593493, ~: 505859) SafeTransferLibTest:testTransferWithReturnsTooMuch() (gas: 529897) -SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 316, μ: 648513, ~: 529975) -SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 316, μ: 602351, ~: 505935) +SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 317, μ: 648140, ~: 529975) +SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 317, μ: 602047, ~: 505935) SafeTransferLibTest:testTransferWithRevertingReverts() (gas: 776726) -SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 316, μ: 592868, ~: 505833) +SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 317, μ: 592594, ~: 505833) SafeTransferLibTest:testTransferWithStandardERC20() (gas: 529956) -SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 316, μ: 648843, ~: 529932) -SafeTransferLibTest:testTrySafeTransferFrom(address,address,uint256) (runs: 316, μ: 108919, ~: 112161) +SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 317, μ: 648468, ~: 529932) +SafeTransferLibTest:testTrySafeTransferFrom(address,address,uint256) (runs: 317, μ: 108929, ~: 112161) SafeTransferLibTest:testTryTransferAllETH() (gas: 148698) SafeTransferLibTest:testTryTransferETH() (gas: 148701) SafeTransferLibTest:testTryTransferETHWithNoGrief() (gas: 537025) @@ -1258,7 +1258,7 @@ SignatureCheckerLibTest:testERC6492PreDeploy() (gas: 1227033) SignatureCheckerLibTest:testERC6492WithoutRevertingVerifier() (gas: 61874) SignatureCheckerLibTest:testEmptyCalldataHelpers() (gas: 3987) SignatureCheckerLibTest:testEtchERC6492RevertingVerifier() (gas: 56459) -SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 316, μ: 55507, ~: 45511) +SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 317, μ: 55475, ~: 45511) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSignature() (gas: 21300) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSigner() (gas: 30800) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithMatchingSignerAndSignature() (gas: 17697) @@ -1269,13 +1269,13 @@ SignatureCheckerLibTest:testSignatureCheckerOnWalletWithInvalidSigner() (gas: 25 SignatureCheckerLibTest:testSignatureCheckerOnWalletWithMatchingSignerAndSignature() (gas: 64518) SignatureCheckerLibTest:testSignatureCheckerOnWalletWithWrongSignedMessageHash() (gas: 64597) SignatureCheckerLibTest:testSignatureCheckerOnWalletWithZeroAddressSigner() (gas: 12364) -SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes) (runs: 316, μ: 1285, ~: 1284) -SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes32) (runs: 316, μ: 481, ~: 481) +SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes) (runs: 317, μ: 1285, ~: 1284) +SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes32) (runs: 317, μ: 481, ~: 481) SignatureCheckerLibTest:test__codesize() (gas: 15448) SoladyTest:test__codesize() (gas: 840) TestPlus:test__codesize() (gas: 406) -TestPlusrTest:testRandomUnique(bytes32,bytes32) (runs: 316, μ: 113688, ~: 113690) -TestPlusrTest:testRandomUniqueAddress(bytes32,bytes32) (runs: 316, μ: 113405, ~: 113371) +TestPlusrTest:testRandomUnique(bytes32,bytes32) (runs: 317, μ: 113688, ~: 113692) +TestPlusrTest:testRandomUniqueAddress(bytes32,bytes32) (runs: 317, μ: 113405, ~: 113371) TestPlusrTest:test__codesize() (gas: 2162) UUPSUpgradeableTest:testNotDelegatedGuard() (gas: 15875) UUPSUpgradeableTest:testOnlyProxyGuard() (gas: 9217) @@ -1289,7 +1289,7 @@ UUPSUpgradeableTest:testUpgradeToRevertWithUpgradeFailed() (gas: 18819) UUPSUpgradeableTest:test__codesize() (gas: 6059) UpgradeableBeaconTest:testInitializeUpgradeableSolidityBeacon() (gas: 296434) UpgradeableBeaconTest:testInitializeUpgradeableYulBeacon() (gas: 335455) -UpgradeableBeaconTest:testUpgradeableBeacon(uint256) (runs: 316, μ: 245599, ~: 255829) +UpgradeableBeaconTest:testUpgradeableBeacon(uint256) (runs: 317, μ: 245599, ~: 255829) UpgradeableBeaconTest:testUpgradeableSolidityBeaconOnlyFnSelectorNotRecognised() (gas: 234560) UpgradeableBeaconTest:testUpgradeableSolidityBeaconOnlyOwnerFunctions() (gas: 260339) UpgradeableBeaconTest:testUpgradeableYulBeaconOnlyFnSelectorNotRecognised() (gas: 172796) @@ -1298,12 +1298,12 @@ UpgradeableBeaconTest:test__codesize() (gas: 8511) WETHInvariants:invariantTotalSupplyEqualsBalance() (runs: 10, calls: 150, reverts: 65) WETHInvariants:test__codesize() (gas: 5178) WETHTest:testDeposit() (gas: 62272) -WETHTest:testDeposit(uint256) (runs: 316, μ: 61307, ~: 62566) +WETHTest:testDeposit(uint256) (runs: 317, μ: 61311, ~: 62566) WETHTest:testFallbackDeposit() (gas: 61978) -WETHTest:testFallbackDeposit(uint256) (runs: 316, μ: 60968, ~: 62227) +WETHTest:testFallbackDeposit(uint256) (runs: 317, μ: 60972, ~: 62227) WETHTest:testMetadata() (gas: 9013) WETHTest:testPartialWithdraw() (gas: 70422) WETHTest:testWithdraw() (gas: 52047) -WETHTest:testWithdraw(uint256,uint256) (runs: 316, μ: 69753, ~: 71175) +WETHTest:testWithdraw(uint256,uint256) (runs: 317, μ: 69757, ~: 71175) WETHTest:testWithdrawToContractWithoutReceiveReverts() (gas: 90164) WETHTest:test__codesize() (gas: 9410) \ No newline at end of file diff --git a/src/utils/FixedPointMathLib.sol b/src/utils/FixedPointMathLib.sol index d9a7fe30f..03f6f2829 100644 --- a/src/utils/FixedPointMathLib.sol +++ b/src/utils/FixedPointMathLib.sol @@ -109,14 +109,15 @@ library FixedPointMathLib { function mulWadUp(uint256 x, uint256 y) internal pure returns (uint256 z) { /// @solidity memory-safe-assembly assembly { + z := mul(x, y) // Equivalent to `require(y == 0 || x <= type(uint256).max / y)`. - if gt(x, div(not(0), y)) { + if iszero(eq(div(z, y), x)) { if y { mstore(0x00, 0xbac65e5b) // `MulWadFailed()`. revert(0x1c, 0x04) } } - z := add(iszero(iszero(mod(mul(x, y), WAD))), div(mul(x, y), WAD)) + z := add(iszero(iszero(mod(z, WAD))), div(z, WAD)) } } diff --git a/test/FixedPointMathLib.t.sol b/test/FixedPointMathLib.t.sol index e6d6bec93..203db8060 100644 --- a/test/FixedPointMathLib.t.sol +++ b/test/FixedPointMathLib.t.sol @@ -1198,11 +1198,30 @@ contract FixedPointMathLibTest is SoladyTest { return !success; } + function _sampleEdgeCases(int256 x, int256 y) internal returns (int256, int256) { + uint256 r = _randomUniform(); + if (r & 0xf00000 == uint256(0)) y = -1; + if (r & 0x0f0000 == uint256(0)) y = type(int256).min; + if (r & 0x00f000 == uint256(0)) x = -1; + if (r & 0x000f00 == uint256(0)) x = type(int256).min; + if (r & 0x0000f0 == uint256(0)) y = 0; + if (r & 0x00000f == uint256(0)) x = 0; + return (x, y); + } + + function _sampleEdgeCases(uint256 x, uint256 y) internal returns (uint256, uint256) { + uint256 r = _randomUniform(); + if (r & 0xf00000 == uint256(0)) y = uint256(int256(-1)); + if (r & 0x0f0000 == uint256(0)) y = uint256(type(int256).min); + if (r & 0x00f000 == uint256(0)) x = uint256(int256(-1)); + if (r & 0x000f00 == uint256(0)) x = uint256(type(int256).min); + if (r & 0x0000f0 == uint256(0)) y = 0; + if (r & 0x00000f == uint256(0)) x = 0; + return (x, y); + } + function testSMulWad(int256 x, int256 y) public { - if (_randomChance(16)) y = -1; - if (_randomChance(16)) y = type(int256).min; - if (_randomChance(16)) x = -1; - if (_randomChance(16)) x = type(int256).min; + (x, y) = _sampleEdgeCases(x, y); if (_sMulWadWillFail(x, y)) { vm.expectRevert(FixedPointMathLib.SMulWadFailed.selector); FixedPointMathLib.sMulWad(x, y); @@ -1214,6 +1233,7 @@ contract FixedPointMathLibTest is SoladyTest { } function testMulWadUp(uint256 x, uint256 y) public { + (x, y) = _sampleEdgeCases(x, y); if (_mulWadWillFail(x, y)) { vm.expectRevert(FixedPointMathLib.MulWadFailed.selector); FixedPointMathLib.mulWadUp(x, y); @@ -1233,6 +1253,7 @@ contract FixedPointMathLibTest is SoladyTest { } function testDivWad(uint256 x, uint256 y) public { + (x, y) = _sampleEdgeCases(x, y); if (_divWadWillFail(x, y)) { vm.expectRevert(FixedPointMathLib.DivWadFailed.selector); FixedPointMathLib.divWad(x, y); @@ -1254,6 +1275,7 @@ contract FixedPointMathLibTest is SoladyTest { } function testSDivWad(int256 x, int256 y) public { + (x, y) = _sampleEdgeCases(x, y); if (_sDivWadWillFail(x, y)) { vm.expectRevert(FixedPointMathLib.SDivWadFailed.selector); FixedPointMathLib.sDivWad(x, y); @@ -1265,6 +1287,7 @@ contract FixedPointMathLibTest is SoladyTest { } function testDivWadUp(uint256 x, uint256 y) public { + (x, y) = _sampleEdgeCases(x, y); if (_divWadWillFail(x, y)) { vm.expectRevert(FixedPointMathLib.DivWadFailed.selector); FixedPointMathLib.divWadUp(x, y); @@ -1293,6 +1316,7 @@ contract FixedPointMathLibTest is SoladyTest { } function testMulDiv(uint256 x, uint256 y, uint256 denominator) public { + (x, y) = _sampleEdgeCases(x, y); if (_mulDivWillFail(x, y, denominator)) { vm.expectRevert(FixedPointMathLib.MulDivFailed.selector); FixedPointMathLib.mulDiv(x, y, denominator); @@ -1302,6 +1326,7 @@ contract FixedPointMathLibTest is SoladyTest { } function testMulDivUp(uint256 x, uint256 y, uint256 denominator) public { + (x, y) = _sampleEdgeCases(x, y); if (_mulDivWillFail(x, y, denominator)) { vm.expectRevert(FixedPointMathLib.MulDivFailed.selector); FixedPointMathLib.mulDivUp(x, y, denominator); From dbc07b0f3f224d98342b63a7c111acebf9659240 Mon Sep 17 00:00:00 2001 From: Vectorized Date: Sat, 31 Aug 2024 03:28:02 +0000 Subject: [PATCH 2/3] T --- .gas-snapshot | 28 +++++++++++----------- test/FixedPointMathLib.t.sol | 45 ++++++++++++++++++------------------ 2 files changed, 37 insertions(+), 36 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index f4c14a4e3..26e4dc6a8 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -449,10 +449,10 @@ FixedPointMathLibTest:testDist(int256,int256) (runs: 317, μ: 512, ~: 517) FixedPointMathLibTest:testDist(uint256,uint256) (runs: 317, μ: 510, ~: 506) FixedPointMathLibTest:testDistEdgeCases() (gas: 505) FixedPointMathLibTest:testDivWad() (gas: 692) -FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 317, μ: 25491, ~: 24680) +FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 317, μ: 25468, ~: 24680) FixedPointMathLibTest:testDivWadEdgeCases() (gas: 447) FixedPointMathLibTest:testDivWadUp() (gas: 2942) -FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 317, μ: 25494, ~: 24776) +FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 317, μ: 25487, ~: 24776) FixedPointMathLibTest:testDivWadUpEdgeCases() (gas: 428) FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts() (gas: 3196) FixedPointMathLibTest:testDivWadZeroDenominatorReverts() (gas: 3218) @@ -468,7 +468,7 @@ FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 317, μ: FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase1() (gas: 3683) FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase2() (gas: 3716) FixedPointMathLibTest:testGcd() (gas: 4206) -FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 317, μ: 6653, ~: 2985) +FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 317, μ: 6652, ~: 2985) FixedPointMathLibTest:testIsEven(uint256) (runs: 317, μ: 497, ~: 497) FixedPointMathLibTest:testLambertW0WadAccuracy() (gas: 7160) FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 317, μ: 2362, ~: 431) @@ -496,7 +496,7 @@ FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 317, μ: 2204, ~: 2234) FixedPointMathLibTest:testLog10Up() (gas: 4435) FixedPointMathLibTest:testLog2() (gas: 243231) FixedPointMathLibTest:testLog256() (gas: 22831) -FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 317, μ: 2079, ~: 2146) +FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 317, μ: 2076, ~: 2146) FixedPointMathLibTest:testLog256Up() (gas: 1271) FixedPointMathLibTest:testLog2Differential(uint256) (runs: 317, μ: 890, ~: 887) FixedPointMathLibTest:testLog2Up() (gas: 297368) @@ -507,21 +507,21 @@ FixedPointMathLibTest:testMin(uint256,uint256) (runs: 317, μ: 476, ~: 472) FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 317, μ: 828, ~: 819) FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 317, μ: 541, ~: 546) FixedPointMathLibTest:testMulDiv() (gas: 1845) -FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 317, μ: 25802, ~: 24662) +FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 317, μ: 25810, ~: 24667) FixedPointMathLibTest:testMulDivEdgeCases() (gas: 762) FixedPointMathLibTest:testMulDivUp() (gas: 2103) -FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 317, μ: 25850, ~: 24975) +FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 317, μ: 25822, ~: 24975) FixedPointMathLibTest:testMulDivUpEdgeCases() (gas: 861) FixedPointMathLibTest:testMulDivUpZeroDenominator() (gas: 3179) FixedPointMathLibTest:testMulDivZeroDenominatorReverts() (gas: 3201) FixedPointMathLibTest:testMulWad() (gas: 712) -FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 317, μ: 2990, ~: 2176) +FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 317, μ: 25627, ~: 24653) FixedPointMathLibTest:testMulWadEdgeCases() (gas: 731) FixedPointMathLibTest:testMulWadUp() (gas: 779) -FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 317, μ: 25706, ~: 24771) +FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 317, μ: 25700, ~: 24771) FixedPointMathLibTest:testMulWadUpEdgeCases() (gas: 776) FixedPointMathLibTest:testPackUnpackSci() (gas: 129317) -FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 317, μ: 30428, ~: 30447) +FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 317, μ: 30425, ~: 30421) FixedPointMathLibTest:testRPow() (gas: 3298) FixedPointMathLibTest:testRPowOverflowReverts() (gas: 4940) FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 317, μ: 440, ~: 440) @@ -537,19 +537,19 @@ FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 317, μ: 422, ~: 422) FixedPointMathLibTest:testRawSub(int256,int256) (runs: 317, μ: 463, ~: 463) FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 317, μ: 463, ~: 463) FixedPointMathLibTest:testSDivWad() (gas: 840) -FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 317, μ: 25533, ~: 24798) +FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 317, μ: 25526, ~: 24798) FixedPointMathLibTest:testSDivWadEdgeCases() (gas: 404) FixedPointMathLibTest:testSMulWad() (gas: 1032) -FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 317, μ: 25541, ~: 24872) +FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 317, μ: 25548, ~: 24880) FixedPointMathLibTest:testSMulWadEdgeCases() (gas: 1287) FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 317, μ: 643, ~: 654) FixedPointMathLibTest:testSci() (gas: 1838636) -FixedPointMathLibTest:testSci(uint256) (runs: 317, μ: 33604, ~: 36539) +FixedPointMathLibTest:testSci(uint256) (runs: 317, μ: 33630, ~: 36539) FixedPointMathLibTest:testSci2(uint256) (runs: 317, μ: 912, ~: 911) FixedPointMathLibTest:testSqrt() (gas: 43819) FixedPointMathLibTest:testSqrt(uint256) (runs: 317, μ: 1091, ~: 1098) FixedPointMathLibTest:testSqrtBack(uint256) (runs: 317, μ: 10165, ~: 363) -FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 317, μ: 54689, ~: 54681) +FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 317, μ: 54683, ~: 54681) FixedPointMathLibTest:testSqrtHashedSingle() (gas: 54632) FixedPointMathLibTest:testSqrtWad() (gas: 7959) FixedPointMathLibTest:testSqrtWad(uint256) (runs: 317, μ: 1589, ~: 1513) @@ -558,7 +558,7 @@ FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 317, μ: 518, ~: 514) FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 317, μ: 548, ~: 518) FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 317, μ: 926, ~: 890) -FixedPointMathLibTest:test__codesize() (gas: 44509) +FixedPointMathLibTest:test__codesize() (gas: 44524) GasBurnerLibTest:testBurn() (gas: 105035) GasBurnerLibTest:testBurn(uint256) (runs: 317, μ: 43360, ~: 33294) GasBurnerLibTest:testBurnPure() (gas: 1700850) diff --git a/test/FixedPointMathLib.t.sol b/test/FixedPointMathLib.t.sol index 203db8060..30de0ea83 100644 --- a/test/FixedPointMathLib.t.sol +++ b/test/FixedPointMathLib.t.sol @@ -1167,6 +1167,28 @@ contract FixedPointMathLibTest is SoladyTest { } } + function _sampleEdgeCases(int256 x, int256 y) internal returns (int256, int256) { + uint256 r = _randomUniform(); + if (r & 0xf00000 == uint256(0)) y = -1; + if (r & 0x0f0000 == uint256(0)) y = type(int256).min; + if (r & 0x00f000 == uint256(0)) x = -1; + if (r & 0x000f00 == uint256(0)) x = type(int256).min; + if (r & 0x0000f0 == uint256(0)) y = 0; + if (r & 0x00000f == uint256(0)) x = 0; + return (x, y); + } + + function _sampleEdgeCases(uint256 x, uint256 y) internal returns (uint256, uint256) { + uint256 r = _randomUniform(); + if (r & 0xf00000 == uint256(0)) y = uint256(int256(-1)); + if (r & 0x0f0000 == uint256(0)) y = uint256(type(int256).min); + if (r & 0x00f000 == uint256(0)) x = uint256(int256(-1)); + if (r & 0x000f00 == uint256(0)) x = uint256(type(int256).min); + if (r & 0x0000f0 == uint256(0)) y = 0; + if (r & 0x00000f == uint256(0)) x = 0; + return (x, y); + } + function mulWadOriginal(uint256 x, uint256 y) public pure returns (uint256) { return (x * y) / 1e18; } @@ -1178,6 +1200,7 @@ contract FixedPointMathLibTest is SoladyTest { } function testMulWad(uint256 x, uint256 y) public { + (x, y) = _sampleEdgeCases(x, y); if (_mulWadWillFail(x, y)) { vm.expectRevert(FixedPointMathLib.MulWadFailed.selector); FixedPointMathLib.mulWad(x, y); @@ -1198,28 +1221,6 @@ contract FixedPointMathLibTest is SoladyTest { return !success; } - function _sampleEdgeCases(int256 x, int256 y) internal returns (int256, int256) { - uint256 r = _randomUniform(); - if (r & 0xf00000 == uint256(0)) y = -1; - if (r & 0x0f0000 == uint256(0)) y = type(int256).min; - if (r & 0x00f000 == uint256(0)) x = -1; - if (r & 0x000f00 == uint256(0)) x = type(int256).min; - if (r & 0x0000f0 == uint256(0)) y = 0; - if (r & 0x00000f == uint256(0)) x = 0; - return (x, y); - } - - function _sampleEdgeCases(uint256 x, uint256 y) internal returns (uint256, uint256) { - uint256 r = _randomUniform(); - if (r & 0xf00000 == uint256(0)) y = uint256(int256(-1)); - if (r & 0x0f0000 == uint256(0)) y = uint256(type(int256).min); - if (r & 0x00f000 == uint256(0)) x = uint256(int256(-1)); - if (r & 0x000f00 == uint256(0)) x = uint256(type(int256).min); - if (r & 0x0000f0 == uint256(0)) y = 0; - if (r & 0x00000f == uint256(0)) x = 0; - return (x, y); - } - function testSMulWad(int256 x, int256 y) public { (x, y) = _sampleEdgeCases(x, y); if (_sMulWadWillFail(x, y)) { From aee793ed5a8495b463d77014184b29e08eb12689 Mon Sep 17 00:00:00 2001 From: Vectorized Date: Sat, 31 Aug 2024 03:30:03 +0000 Subject: [PATCH 3/3] T --- .gas-snapshot | 20 ++++++++++---------- test/FixedPointMathLib.t.sol | 26 ++++++++++++++------------ 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index 26e4dc6a8..10b8dfa72 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -449,10 +449,10 @@ FixedPointMathLibTest:testDist(int256,int256) (runs: 317, μ: 512, ~: 517) FixedPointMathLibTest:testDist(uint256,uint256) (runs: 317, μ: 510, ~: 506) FixedPointMathLibTest:testDistEdgeCases() (gas: 505) FixedPointMathLibTest:testDivWad() (gas: 692) -FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 317, μ: 25468, ~: 24680) +FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 317, μ: 25656, ~: 24703) FixedPointMathLibTest:testDivWadEdgeCases() (gas: 447) FixedPointMathLibTest:testDivWadUp() (gas: 2942) -FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 317, μ: 25487, ~: 24776) +FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 317, μ: 25613, ~: 24799) FixedPointMathLibTest:testDivWadUpEdgeCases() (gas: 428) FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts() (gas: 3196) FixedPointMathLibTest:testDivWadZeroDenominatorReverts() (gas: 3218) @@ -468,7 +468,7 @@ FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 317, μ: FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase1() (gas: 3683) FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase2() (gas: 3716) FixedPointMathLibTest:testGcd() (gas: 4206) -FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 317, μ: 6652, ~: 2985) +FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 317, μ: 6651, ~: 2985) FixedPointMathLibTest:testIsEven(uint256) (runs: 317, μ: 497, ~: 497) FixedPointMathLibTest:testLambertW0WadAccuracy() (gas: 7160) FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 317, μ: 2362, ~: 431) @@ -507,18 +507,18 @@ FixedPointMathLibTest:testMin(uint256,uint256) (runs: 317, μ: 476, ~: 472) FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 317, μ: 828, ~: 819) FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 317, μ: 541, ~: 546) FixedPointMathLibTest:testMulDiv() (gas: 1845) -FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 317, μ: 25810, ~: 24667) +FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 317, μ: 25940, ~: 24690) FixedPointMathLibTest:testMulDivEdgeCases() (gas: 762) FixedPointMathLibTest:testMulDivUp() (gas: 2103) -FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 317, μ: 25822, ~: 24975) +FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 317, μ: 26019, ~: 24998) FixedPointMathLibTest:testMulDivUpEdgeCases() (gas: 861) FixedPointMathLibTest:testMulDivUpZeroDenominator() (gas: 3179) FixedPointMathLibTest:testMulDivZeroDenominatorReverts() (gas: 3201) FixedPointMathLibTest:testMulWad() (gas: 712) -FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 317, μ: 25627, ~: 24653) +FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 317, μ: 25793, ~: 24681) FixedPointMathLibTest:testMulWadEdgeCases() (gas: 731) FixedPointMathLibTest:testMulWadUp() (gas: 779) -FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 317, μ: 25700, ~: 24771) +FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 317, μ: 25858, ~: 24794) FixedPointMathLibTest:testMulWadUpEdgeCases() (gas: 776) FixedPointMathLibTest:testPackUnpackSci() (gas: 129317) FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 317, μ: 30425, ~: 30421) @@ -537,10 +537,10 @@ FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 317, μ: 422, ~: 422) FixedPointMathLibTest:testRawSub(int256,int256) (runs: 317, μ: 463, ~: 463) FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 317, μ: 463, ~: 463) FixedPointMathLibTest:testSDivWad() (gas: 840) -FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 317, μ: 25526, ~: 24798) +FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 317, μ: 25582, ~: 24829) FixedPointMathLibTest:testSDivWadEdgeCases() (gas: 404) FixedPointMathLibTest:testSMulWad() (gas: 1032) -FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 317, μ: 25548, ~: 24880) +FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 317, μ: 25777, ~: 24903) FixedPointMathLibTest:testSMulWadEdgeCases() (gas: 1287) FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 317, μ: 643, ~: 654) FixedPointMathLibTest:testSci() (gas: 1838636) @@ -558,7 +558,7 @@ FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 317, μ: 518, ~: 514) FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 317, μ: 548, ~: 518) FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 317, μ: 926, ~: 890) -FixedPointMathLibTest:test__codesize() (gas: 44524) +FixedPointMathLibTest:test__codesize() (gas: 44557) GasBurnerLibTest:testBurn() (gas: 105035) GasBurnerLibTest:testBurn(uint256) (runs: 317, μ: 43360, ~: 33294) GasBurnerLibTest:testBurnPure() (gas: 1700850) diff --git a/test/FixedPointMathLib.t.sol b/test/FixedPointMathLib.t.sol index 30de0ea83..4fef24390 100644 --- a/test/FixedPointMathLib.t.sol +++ b/test/FixedPointMathLib.t.sol @@ -1169,23 +1169,25 @@ contract FixedPointMathLibTest is SoladyTest { function _sampleEdgeCases(int256 x, int256 y) internal returns (int256, int256) { uint256 r = _randomUniform(); - if (r & 0xf00000 == uint256(0)) y = -1; - if (r & 0x0f0000 == uint256(0)) y = type(int256).min; - if (r & 0x00f000 == uint256(0)) x = -1; - if (r & 0x000f00 == uint256(0)) x = type(int256).min; - if (r & 0x0000f0 == uint256(0)) y = 0; - if (r & 0x00000f == uint256(0)) x = 0; + if (r & 0xf000000 == uint256(0)) y = -1; + if (r & 0x0f00000 == uint256(0)) y = type(int256).min; + if (r & 0x00f0000 == uint256(0)) x = -1; + if (r & 0x000f000 == uint256(0)) x = type(int256).min; + if (r & 0x0000f00 == uint256(0)) y = 0; + if (r & 0x00000f0 == uint256(0)) x = 0; + if (r & 0x000000f == uint256(0)) (x, y) = (int256(_random()), int256(_random())); return (x, y); } function _sampleEdgeCases(uint256 x, uint256 y) internal returns (uint256, uint256) { uint256 r = _randomUniform(); - if (r & 0xf00000 == uint256(0)) y = uint256(int256(-1)); - if (r & 0x0f0000 == uint256(0)) y = uint256(type(int256).min); - if (r & 0x00f000 == uint256(0)) x = uint256(int256(-1)); - if (r & 0x000f00 == uint256(0)) x = uint256(type(int256).min); - if (r & 0x0000f0 == uint256(0)) y = 0; - if (r & 0x00000f == uint256(0)) x = 0; + if (r & 0xf000000 == uint256(0)) y = uint256(int256(-1)); + if (r & 0x0f00000 == uint256(0)) y = uint256(type(int256).min); + if (r & 0x00f0000 == uint256(0)) x = uint256(int256(-1)); + if (r & 0x000f000 == uint256(0)) x = uint256(type(int256).min); + if (r & 0x0000f00 == uint256(0)) y = 0; + if (r & 0x00000f0 == uint256(0)) x = 0; + if (r & 0x000000f == uint256(0)) (x, y) = (uint256(_random()), uint256(_random())); return (x, y); }