1,000,000 free RPC requestsJust a wallet, via x402.

Start building
ERC-8004 Explorer by
Mantle Mainnet risk:100 verified

Feedback #12

For agent 97 on Mantle Mainnet · 2026-06-16

archon.audit.report
100.0

Off-chain feedback document

raw JSON
{
  "chain": {
    "name": "Mantle Mainnet",
    "chainId": 5000
  },
  "report": {
    "id": "24689892-6faf-421f-aa71-d10bbf18f780",
    "scope": {
      "pragma": "^0.8.24",
      "network": "mantle-mainnet",
      "lineCount": 1480,
      "protocols": [
        "mETH",
        "cmETH",
        "USDY",
        "Aave V3",
        "Merchant Moe",
        "Agni"
      ],
      "sourceKind": "paste",
      "aiReasoning": {
        "hits": 0,
        "total": 192,
        "misses": 192,
        "batches": 8,
        "reasons": {
          "bounded": 176
        },
        "skipped": 176,
        "provider": "tokenhub",
        "timeoutMs": 75000,
        "fallbackCount": 176,
        "providersUsed": [
          "Tencent Cloud TokenHub (deepseek-v4-pro)"
        ]
      },
      "reducedMode": null,
      "solcVersion": "0.8.24",
      "gasOptimizer": {
        "pricing": {
          "mode": "calibrated-receipts",
          "pricedAt": "2026-06-16T15:09:50.984Z",
          "l2GasPriceWei": "50000100000",
          "deployDataFeeMnt": "0",
          "deployDataFeeWei": "0",
          "calldataZeroBytes": 0,
          "calibrationErrorPct": 0,
          "calldataGasEstimate": 0,
          "calldataNonZeroBytes": 0,
          "creationBytecodeBytes": 0
        },
        "daPricing": {
          "model": {
            "mode": "calibrated-receipts",
            "samples": [
              {
                "txHash": "0x82d99588e5f1bff33d618743025d598445493032637de25844a67aa8e88088ef",
                "l1FeeWei": "699231354481640",
                "l1GasUsed": "2530",
                "zeroBytes": 135,
                "l1GasPrice": "538782662",
                "totalBytes": 228,
                "blobGasUsed": "63200",
                "blockNumber": "96205628",
                "nonZeroBytes": 93,
                "l1BlobBaseFee": "330004069609410902",
                "l1BaseFeeScalar": "169019",
                "operatorFeeScalar": "100000000",
                "calldataGasEstimate": 2028,
                "l1BlobBaseFeeScalar": "0",
                "operatorFeeConstant": "0",
                "daFootprintGasScalar": "400"
              },
              {
                "txHash": "0xb9ce87de86b212b91eb64012bbdab91014373da1f6d960470b340e1991a1a7c5",
                "l1FeeWei": "6874261528561290",
                "l1GasUsed": "22258",
                "zeroBytes": 28,
                "l1GasPrice": "603039864",
                "totalBytes": 1945,
                "blobGasUsed": "556400",
                "blockNumber": "96205472",
                "nonZeroBytes": 1917,
                "l1BlobBaseFee": "321479049246759320",
                "l1BaseFeeScalar": "169019",
                "operatorFeeScalar": "100000000",
                "calldataGasEstimate": 30784,
                "l1BlobBaseFeeScalar": "0",
                "operatorFeeConstant": "0",
                "daFootprintGasScalar": "400"
              }
            ],
            "validation": [
              {
                "txHash": "0x82d99588e5f1bff33d618743025d598445493032637de25844a67aa8e88088ef",
                "errorPct": 0,
                "actualL1FeeWei": "699231354481640",
                "predictedL1FeeWei": "699231354481572"
              },
              {
                "txHash": "0xb9ce87de86b212b91eb64012bbdab91014373da1f6d960470b340e1991a1a7c5",
                "errorPct": 0,
                "actualL1FeeWei": "6874261528561290",
                "predictedL1FeeWei": "6874261528560500"
              }
            ],
            "sampleCount": 2,
            "zeroByteFeeWei": "2736708878864",
            "nonZeroByteFeeWei": "3545974793924",
            "maxValidationErrorPct": 0,
            "meanValidationErrorPct": 0
          },
          "source": "receipt-calibrated",
          "groundTruthField": "l1Fee"
        },
        "sourceHash": "0x9ae40c57eaa348c7dd5e431ce92576e0ec9043d7a7a36e55eb6caf83354bb4ce",
        "measurement": {
          "forge": {
            "ok": false,
            "error": "Error (7576): Undeclared identifier.",
            "command": "forge test --gas-report",
            "attempted": true,
            "gasReport": null
          },
          "source": "deterministic-estimate",
          "status": "degraded",
          "patches": [
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "Group adjacent bool/address/small uint fields together and place full-slot fields after them.",
              "before": "address buyToken; … bool filled;",
              "ruleId": "storage-packing",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 20000,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "Group adjacent bool/address/small uint fields together and place full-slot fields after them.",
              "before": "address target; … bool enabled;",
              "ruleId": "storage-packing",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 20000,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "Group adjacent bool/address/small uint fields together and place full-slot fields after them.",
              "before": "address[] public marketList; … mapping(address => uint256[]) public positionsOf;",
              "ruleId": "storage-packing",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 20000,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
              "before": "function transfer(address to, uint256 amount) external returns (bool);",
              "ruleId": "calldata-smaller-types",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": null,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
              "before": "function transferFrom(address from, address to, uint256 amount) external returns (bool);",
              "ruleId": "calldata-smaller-types",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": null,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
              "before": "function approve(address spender, uint256 amount) external returns (bool);",
              "ruleId": "calldata-smaller-types",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": null,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
              "before": "function repay(uint256 loanId, uint256 amount) external notPaused {",
              "ruleId": "calldata-smaller-types",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": null,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
              "before": "function unsafeTokenValue(address, uint256 amount) public view returns (uint256) {",
              "ruleId": "calldata-smaller-types",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": null,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
              "before": "function flashLoan(address receiver, address token, uint256 amount, bytes calldata data) external notPaused {",
              "ruleId": "calldata-smaller-types",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": null,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
              "before": "function emergencySweepByOrigin(address token, address to, uint256 amount) external {",
              "ruleId": "calldata-smaller-types",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": null,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
              "before": "function emergencySweep(address token, address to, uint256 amount) external onlyGuardianOrOwner {",
              "ruleId": "calldata-smaller-types",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": null,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error NOTGUARDIANOROWNER(); … if (!(condition)) revert NOTGUARDIANOROWNER();",
              "before": "require(msg.sender == owner || msg.sender == guardian, \"NOT_GUARDIAN_OR_OWNER\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error ORIGINNOTOWNER(); … if (!(condition)) revert ORIGINNOTOWNER();",
              "before": "require(tx.origin == owner, \"ORIGIN_NOT_OWNER\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error NOTPENDINGOWNER(); … if (!(condition)) revert NOTPENDINGOWNER();",
              "before": "require(msg.sender == pendingOwner, \"NOT_PENDING_OWNER\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error MARKETNOTLISTED(); … if (!(condition)) revert MARKETNOTLISTED();",
              "before": "require(m.listed, \"MARKET_NOT_LISTED\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error NOTPOSITIONOWNER(); … if (!(condition)) revert NOTPOSITIONOWNER();",
              "before": "require(p.owner == msg.sender, \"NOT_POSITION_OWNER\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error NOTPOSITIONOWNER(); … if (!(condition)) revert NOTPOSITIONOWNER();",
              "before": "require(p.owner == msg.sender, \"NOT_POSITION_OWNER\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error NOTPOSITIONOWNER(); … if (!(condition)) revert NOTPOSITIONOWNER();",
              "before": "require(p.owner == msg.sender, \"NOT_POSITION_OWNER\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error NOTOWNEROFPOSITION(); … if (!(condition)) revert NOTOWNEROFPOSITION();",
              "before": "require(p.owner == msg.sender, \"NOT_OWNER_OF_POSITION\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error UNDERCOLLATERALIZED(); … if (!(condition)) revert UNDERCOLLATERALIZED();",
              "before": "require((collateralValue * collateralMarket.collateralFactorBps) / BPS >= debtValue, \"UNDERCOLLATERALIZED\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error TOKENNOTLISTED(); … if (!(condition)) revert TOKENNOTLISTED();",
              "before": "require(markets[token].listed, \"TOKEN_NOT_LISTED\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error INSUFFICIENTLIQUIDITY(); … if (!(condition)) revert INSUFFICIENTLIQUIDITY();",
              "before": "require(balanceBefore >= amount, \"INSUFFICIENT_LIQUIDITY\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error BADFLASHCALLBACK(); … if (!(condition)) revert BADFLASHCALLBACK();",
              "before": "require(result == FLASH_CALLBACK_SUCCESS, \"BAD_FLASH_CALLBACK\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error FLASHNOTREPAID(); … if (!(condition)) revert FLASHNOTREPAID();",
              "before": "require(balanceAfter >= balanceBefore + fee, \"FLASH_NOT_REPAID\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error INSUFFICIENTBUY(); … if (!(condition)) revert INSUFFICIENTBUY();",
              "before": "require(buyAmount >= o.minBuyAmount, \"INSUFFICIENT_BUY\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error REPORTSDISABLED(); … if (!(condition)) revert REPORTSDISABLED();",
              "before": "require(allowPublicReports || auditor[msg.sender], \"REPORTS_DISABLED\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error PROPOSALCALLFAILED(); … if (!(condition)) revert PROPOSALCALLFAILED();",
              "before": "require(ok, \"PROPOSAL_CALL_FAILED\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error STRATEGYDISABLED(); … if (!(condition)) revert STRATEGYDISABLED();",
              "before": "require(s.enabled, \"STRATEGY_DISABLED\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error OWNERCALLFAILED(); … if (!(condition)) revert OWNERCALLFAILED();",
              "before": "require(ok, \"OWNER_CALL_FAILED\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error OWNERDELEGATECALLFAILED(); … if (!(condition)) revert OWNERDELEGATECALLFAILED();",
              "before": "require(ok, \"OWNER_DELEGATECALL_FAILED\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error MESSAGECONSUMED(); … if (!(condition)) revert MESSAGECONSUMED();",
              "before": "require(!consumedMessages[messageHash], \"MESSAGE_CONSUMED\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "error ORIGINNOTOWNER(); … if (!(condition)) revert ORIGINNOTOWNER();",
              "before": "require(tx.origin == owner, \"ORIGIN_NOT_OWNER\");",
              "ruleId": "custom-errors",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 120,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "address immutable public owner;",
              "before": "address public owner;",
              "ruleId": "immutable-constant",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 2100,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "address immutable owner;",
              "before": "address owner;",
              "ruleId": "immutable-constant",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 2100,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "uint256 cached = frozenAccount[user]; // reuse cached value",
              "before": "frozenAccount[user] read 2 times",
              "ruleId": "cache-repeated-sload",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 100,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "uint256 cached = keeper[msg.sender]; // reuse cached value",
              "before": "keeper[msg.sender] read 2 times",
              "ruleId": "cache-repeated-sload",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 100,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "uint256 cached = auditor[msg.sender]; // reuse cached value",
              "before": "auditor[msg.sender] read 2 times",
              "ruleId": "cache-repeated-sload",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 100,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "uint256 cached = strategyExecutor[msg.sender]; // reuse cached value",
              "before": "strategyExecutor[msg.sender] read 2 times",
              "ruleId": "cache-repeated-sload",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 100,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "uint256 cached = allowlistedHook[hook]; // reuse cached value",
              "before": "allowlistedHook[hook] read 2 times",
              "ruleId": "cache-repeated-sload",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 100,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "for (uint256 i = 0; i < marketList.length; unchecked { ++i; }) {",
              "before": "for (uint256 i = 0; i < marketList.length; i++) {",
              "ruleId": "unchecked-loop-increment",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 30,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "for (uint256 i = 0; i < ids.length; unchecked { ++i; }) {",
              "before": "for (uint256 i = 0; i < ids.length; i++) {",
              "ruleId": "unchecked-loop-increment",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 30,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "for (uint256 i = 0; i < ids.length; unchecked { ++i; }) {",
              "before": "for (uint256 i = 0; i < ids.length; i++) {",
              "ruleId": "unchecked-loop-increment",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 30,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "for (uint256 i = 0; i < tags.length; unchecked { ++i; }) {",
              "before": "for (uint256 i = 0; i < tags.length; i++) {",
              "ruleId": "unchecked-loop-increment",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 30,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "for (uint256 i = 0; i < inputs.length; unchecked { ++i; }) {",
              "before": "for (uint256 i = 0; i < inputs.length; i++) {",
              "ruleId": "unchecked-loop-increment",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 30,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "for (uint256 i = 0; i < allPositionIds.length; unchecked { ++i; }) {",
              "before": "for (uint256 i = 0; i < allPositionIds.length; i++) {",
              "ruleId": "unchecked-loop-increment",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 30,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "for (uint256 i = 0; i < allLoanIds.length; unchecked { ++i; }) {",
              "before": "for (uint256 i = 0; i < allLoanIds.length; i++) {",
              "ruleId": "unchecked-loop-increment",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 30,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "for (uint256 i = 0; i < allPositionIds.length; unchecked { ++i; }) {",
              "before": "for (uint256 i = 0; i < allPositionIds.length; i++) {",
              "ruleId": "unchecked-loop-increment",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 30,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "for (uint256 i = 0; i < length; unchecked { ++i; }) {",
              "before": "for (uint256 i = 0; i < length; i++) {",
              "ruleId": "unchecked-loop-increment",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 30,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "for (uint256 i = 0; i < pids.length && i < scanPositions; unchecked { ++i; }) {",
              "before": "for (uint256 i = 0; i < pids.length && i < scanPositions; i++) {",
              "ruleId": "unchecked-loop-increment",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 30,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
              "before": "for (uint256 i = 0; i < marketList.length; i++) {",
              "ruleId": "loop-hygiene",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 100,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
              "before": "for (uint256 i = 0; i < ids.length; i++) {",
              "ruleId": "loop-hygiene",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 100,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
              "before": "for (uint256 i = 0; i < ids.length; i++) {",
              "ruleId": "loop-hygiene",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 100,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
              "before": "for (uint256 i = 0; i < tags.length; i++) {",
              "ruleId": "loop-hygiene",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 100,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
              "before": "for (uint256 i = 0; i < inputs.length; i++) {",
              "ruleId": "loop-hygiene",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 100,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
              "before": "for (uint256 i = 0; i < allPositionIds.length; i++) {",
              "ruleId": "loop-hygiene",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 100,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
              "before": "for (uint256 i = 0; i < allLoanIds.length; i++) {",
              "ruleId": "loop-hygiene",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 100,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
              "before": "for (uint256 i = 0; i < allPositionIds.length; i++) {",
              "ruleId": "loop-hygiene",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 100,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "require(amount != 0, \"ZERO_AMOUNT\");",
              "before": "require(amount > 0, \"ZERO_AMOUNT\");",
              "ruleId": "nonzero-comparison",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "if (fee != 0) {",
              "before": "if (fee > 0) {",
              "ruleId": "nonzero-comparison",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "require(reward != 0, \"NO_REWARD\");",
              "before": "require(reward > 0, \"NO_REWARD\");",
              "ruleId": "nonzero-comparison",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "require(collateralAmount != 0 && debtAmount != 0, \"ZERO_AMOUNT\");",
              "before": "require(collateralAmount > 0 && debtAmount > 0, \"ZERO_AMOUNT\");",
              "ruleId": "nonzero-comparison",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "require(amount != 0, \"ZERO_AMOUNT\");",
              "before": "require(amount > 0, \"ZERO_AMOUNT\");",
              "ruleId": "nonzero-comparison",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "require(sellAmount != 0 && minBuyAmount != 0, \"ZERO_AMOUNT\");",
              "before": "require(sellAmount > 0 && minBuyAmount > 0, \"ZERO_AMOUNT\");",
              "ruleId": "nonzero-comparison",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "if (arbitraryData.length != 0 && implementation != address(0)) {",
              "before": "if (arbitraryData.length > 0 && implementation != address(0)) {",
              "ruleId": "nonzero-comparison",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "require(maxAmount != 0, \"ZERO_MAX\");",
              "before": "require(maxAmount > 0, \"ZERO_MAX\");",
              "ruleId": "nonzero-comparison",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "mapping(uint256 => uint256) bitmap; // pack 256 flags per slot",
              "before": "mapping(bytes32 => bool) public reportExists;",
              "ruleId": "bitmap-bools",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 20000,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "mapping(uint256 => uint256) bitmap; // pack 256 flags per slot",
              "before": "mapping(address => bool) public keeper;",
              "ruleId": "bitmap-bools",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 20000,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "mapping(uint256 => uint256) bitmap; // pack 256 flags per slot",
              "before": "mapping(address => bool) public auditor;",
              "ruleId": "bitmap-bools",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 20000,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "mapping(uint256 => uint256) bitmap; // pack 256 flags per slot",
              "before": "mapping(address => bool) public strategyExecutor;",
              "ruleId": "bitmap-bools",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 20000,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "mapping(uint256 => uint256) bitmap; // pack 256 flags per slot",
              "before": "mapping(address => bool) public frozenAccount;",
              "ruleId": "bitmap-bools",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 20000,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "mapping(uint256 => uint256) bitmap; // pack 256 flags per slot",
              "before": "mapping(address => bool) public allowlistedHook;",
              "ruleId": "bitmap-bools",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 20000,
              "l1DaDeltaWei": null
            },
            {
              "note": "Review-only patch is not auto-applied for measurement.",
              "after": "mapping(uint256 => uint256) bitmap; // pack 256 flags per slot",
              "before": "mapping(bytes32 => bool) public consumedMessages;",
              "ruleId": "bitmap-bools",
              "safety": "review",
              "status": "skipped",
              "l2GasDelta": 20000,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "for (uint256 i; i < marketList.length; i++) {",
              "before": "for (uint256 i = 0; i < marketList.length; i++) {",
              "ruleId": "remove-zero-init",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "for (uint256 i; i < ids.length; i++) {",
              "before": "for (uint256 i = 0; i < ids.length; i++) {",
              "ruleId": "remove-zero-init",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "for (uint256 i; i < ids.length; i++) {",
              "before": "for (uint256 i = 0; i < ids.length; i++) {",
              "ruleId": "remove-zero-init",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "for (uint256 i; i < tags.length; i++) {",
              "before": "for (uint256 i = 0; i < tags.length; i++) {",
              "ruleId": "remove-zero-init",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "for (uint256 i; i < inputs.length; i++) {",
              "before": "for (uint256 i = 0; i < inputs.length; i++) {",
              "ruleId": "remove-zero-init",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "uint256 count;",
              "before": "uint256 count = 0;",
              "ruleId": "remove-zero-init",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "for (uint256 j; j < count; j++) {",
              "before": "for (uint256 j = 0; j < count; j++) {",
              "ruleId": "remove-zero-init",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "for (uint256 i; i < allPositionIds.length; i++) {",
              "before": "for (uint256 i = 0; i < allPositionIds.length; i++) {",
              "ruleId": "remove-zero-init",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "for (uint256 i; i < allLoanIds.length; i++) {",
              "before": "for (uint256 i = 0; i < allLoanIds.length; i++) {",
              "ruleId": "remove-zero-init",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "for (uint256 i; i < allPositionIds.length; i++) {",
              "before": "for (uint256 i = 0; i < allPositionIds.length; i++) {",
              "ruleId": "remove-zero-init",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "uint256 iterations;",
              "before": "uint256 iterations = 0;",
              "ruleId": "remove-zero-init",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "uint256 i;",
              "before": "uint256 i = 0;",
              "ruleId": "remove-zero-init",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "for (uint256 i; i < length; i++) {",
              "before": "for (uint256 i = 0; i < length; i++) {",
              "ruleId": "remove-zero-init",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "for (uint256 i; i < pids.length && i < scanPositions; i++) {",
              "before": "for (uint256 i = 0; i < pids.length && i < scanPositions; i++) {",
              "ruleId": "remove-zero-init",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            },
            {
              "note": "Foundry measurement unavailable; deterministic rule estimate retained and clearly labeled.",
              "after": "for (uint256 j; j < lids.length && j < scanLoans; j++) {",
              "before": "for (uint256 j = 0; j < lids.length && j < scanLoans; j++) {",
              "ruleId": "remove-zero-init",
              "safety": "safe",
              "status": "estimated",
              "l2GasDelta": 3,
              "l1DaDeltaWei": null
            }
          ],
          "version": "archon.gasMeasurement.v1",
          "measuredAt": "2026-06-16T15:09:51.282Z",
          "rulesetHash": "f889eb3ae94e9dfd43ff3660ff387c1a3ff410c836b8b270f6eafd3d5cc9a6c4",
          "contractHash": "9ae40c57eaa348c7dd5e431ce92576e0ec9043d7a7a36e55eb6caf83354bb4ce"
        },
        "opportunities": [
          {
            "id": "storage-packing",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "Group adjacent bool/address/small uint fields together and place full-slot fields after them.",
            "patch": {
              "newText": "        address buyToken; // REVIEW: reorder adjacent small storage fields with nearby small fields to reduce SSTORE/SLOAD slots",
              "oldText": "        address buyToken;"
            },
            "title": "Pack small storage variables into fewer slots",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:166",
            "before": "address buyToken; … bool filled;",
            "safety": "review",
            "newText": "        address buyToken; // REVIEW: reorder adjacent small storage fields with nearby small fields to reduce SSTORE/SLOAD slots",
            "oldText": "        address buyToken;",
            "category": "storage",
            "severity": "medium",
            "lineStart": 166,
            "rationale": "Storage slot packing can remove entire SSTORE/SLOAD slots but changes layout, so upgradeable contracts need manual review.",
            "confidence": 0.64,
            "estL1Delta": null,
            "estL2Delta": 20000,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 20000,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "storage-packing",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "Group adjacent bool/address/small uint fields together and place full-slot fields after them.",
            "patch": {
              "newText": "        address target; // REVIEW: reorder adjacent small storage fields with nearby small fields to reduce SSTORE/SLOAD slots",
              "oldText": "        address target;"
            },
            "title": "Pack small storage variables into fewer slots",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:189",
            "before": "address target; … bool enabled;",
            "safety": "review",
            "newText": "        address target; // REVIEW: reorder adjacent small storage fields with nearby small fields to reduce SSTORE/SLOAD slots",
            "oldText": "        address target;",
            "category": "storage",
            "severity": "medium",
            "lineStart": 189,
            "rationale": "Storage slot packing can remove entire SSTORE/SLOAD slots but changes layout, so upgradeable contracts need manual review.",
            "confidence": 0.64,
            "estL1Delta": null,
            "estL2Delta": 20000,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 20000,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "storage-packing",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "Group adjacent bool/address/small uint fields together and place full-slot fields after them.",
            "patch": {
              "newText": "    address[] public marketList; // REVIEW: reorder adjacent small storage fields with nearby small fields to reduce SSTORE/SLOAD slots",
              "oldText": "    address[] public marketList;"
            },
            "title": "Pack small storage variables into fewer slots",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:210",
            "before": "address[] public marketList; … mapping(address => uint256[]) public positionsOf;",
            "safety": "review",
            "newText": "    address[] public marketList; // REVIEW: reorder adjacent small storage fields with nearby small fields to reduce SSTORE/SLOAD slots",
            "oldText": "    address[] public marketList;",
            "category": "storage",
            "severity": "medium",
            "lineStart": 210,
            "rationale": "Storage slot packing can remove entire SSTORE/SLOAD slots but changes layout, so upgradeable contracts need manual review.",
            "confidence": 0.64,
            "estL1Delta": null,
            "estL2Delta": 20000,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 20000,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "calldata-smaller-types",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
            "patch": {
              "newText": "    function transfer(address to, uint256 amount) external returns (bool); // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
              "oldText": "    function transfer(address to, uint256 amount) external returns (bool);"
            },
            "title": "Review calldata parameter width",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:37",
            "before": "function transfer(address to, uint256 amount) external returns (bool);",
            "safety": "review",
            "newText": "    function transfer(address to, uint256 amount) external returns (bool); // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
            "oldText": "    function transfer(address to, uint256 amount) external returns (bool);",
            "category": "calldata",
            "severity": "low",
            "lineStart": 37,
            "rationale": "For individual ABI params uint256 still occupies a full word, but bounded types help packed structs/batches and prevent redundant calldata.",
            "confidence": 0.55,
            "estL1Delta": 16,
            "estL2Delta": null,
            "annualizedBasis": "Receipt-calibrated DA estimate for calldata/data bytes; exact deltas require V2.1.2 harness measurement.",
            "estimatedGasSaved": null,
            "estimatedDataBytesSaved": 16
          },
          {
            "id": "calldata-smaller-types",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
            "patch": {
              "newText": "    function transferFrom(address from, address to, uint256 amount) external returns (bool); // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
              "oldText": "    function transferFrom(address from, address to, uint256 amount) external returns (bool);"
            },
            "title": "Review calldata parameter width",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:39",
            "before": "function transferFrom(address from, address to, uint256 amount) external returns (bool);",
            "safety": "review",
            "newText": "    function transferFrom(address from, address to, uint256 amount) external returns (bool); // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
            "oldText": "    function transferFrom(address from, address to, uint256 amount) external returns (bool);",
            "category": "calldata",
            "severity": "low",
            "lineStart": 39,
            "rationale": "For individual ABI params uint256 still occupies a full word, but bounded types help packed structs/batches and prevent redundant calldata.",
            "confidence": 0.55,
            "estL1Delta": 16,
            "estL2Delta": null,
            "annualizedBasis": "Receipt-calibrated DA estimate for calldata/data bytes; exact deltas require V2.1.2 harness measurement.",
            "estimatedGasSaved": null,
            "estimatedDataBytesSaved": 16
          },
          {
            "id": "calldata-smaller-types",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
            "patch": {
              "newText": "    function approve(address spender, uint256 amount) external returns (bool); // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
              "oldText": "    function approve(address spender, uint256 amount) external returns (bool);"
            },
            "title": "Review calldata parameter width",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:41",
            "before": "function approve(address spender, uint256 amount) external returns (bool);",
            "safety": "review",
            "newText": "    function approve(address spender, uint256 amount) external returns (bool); // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
            "oldText": "    function approve(address spender, uint256 amount) external returns (bool);",
            "category": "calldata",
            "severity": "low",
            "lineStart": 41,
            "rationale": "For individual ABI params uint256 still occupies a full word, but bounded types help packed structs/batches and prevent redundant calldata.",
            "confidence": 0.55,
            "estL1Delta": 16,
            "estL2Delta": null,
            "annualizedBasis": "Receipt-calibrated DA estimate for calldata/data bytes; exact deltas require V2.1.2 harness measurement.",
            "estimatedGasSaved": null,
            "estimatedDataBytesSaved": 16
          },
          {
            "id": "calldata-smaller-types",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
            "patch": {
              "newText": "    function repay(uint256 loanId, uint256 amount) external notPaused { // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
              "oldText": "    function repay(uint256 loanId, uint256 amount) external notPaused {"
            },
            "title": "Review calldata parameter width",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:723",
            "before": "function repay(uint256 loanId, uint256 amount) external notPaused {",
            "safety": "review",
            "newText": "    function repay(uint256 loanId, uint256 amount) external notPaused { // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
            "oldText": "    function repay(uint256 loanId, uint256 amount) external notPaused {",
            "category": "calldata",
            "severity": "low",
            "lineStart": 723,
            "rationale": "For individual ABI params uint256 still occupies a full word, but bounded types help packed structs/batches and prevent redundant calldata.",
            "confidence": 0.55,
            "estL1Delta": 16,
            "estL2Delta": null,
            "annualizedBasis": "Receipt-calibrated DA estimate for calldata/data bytes; exact deltas require V2.1.2 harness measurement.",
            "estimatedGasSaved": null,
            "estimatedDataBytesSaved": 16
          },
          {
            "id": "calldata-smaller-types",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
            "patch": {
              "newText": "    function unsafeTokenValue(address, uint256 amount) public view returns (uint256) { // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
              "oldText": "    function unsafeTokenValue(address, uint256 amount) public view returns (uint256) {"
            },
            "title": "Review calldata parameter width",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:811",
            "before": "function unsafeTokenValue(address, uint256 amount) public view returns (uint256) {",
            "safety": "review",
            "newText": "    function unsafeTokenValue(address, uint256 amount) public view returns (uint256) { // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
            "oldText": "    function unsafeTokenValue(address, uint256 amount) public view returns (uint256) {",
            "category": "calldata",
            "severity": "low",
            "lineStart": 811,
            "rationale": "For individual ABI params uint256 still occupies a full word, but bounded types help packed structs/batches and prevent redundant calldata.",
            "confidence": 0.55,
            "estL1Delta": 16,
            "estL2Delta": null,
            "annualizedBasis": "Receipt-calibrated DA estimate for calldata/data bytes; exact deltas require V2.1.2 harness measurement.",
            "estimatedGasSaved": null,
            "estimatedDataBytesSaved": 16
          },
          {
            "id": "calldata-smaller-types",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
            "patch": {
              "newText": "    function flashLoan(address receiver, address token, uint256 amount, bytes calldata data) external notPaused { // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
              "oldText": "    function flashLoan(address receiver, address token, uint256 amount, bytes calldata data) external notPaused {"
            },
            "title": "Review calldata parameter width",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:833",
            "before": "function flashLoan(address receiver, address token, uint256 amount, bytes calldata data) external notPaused {",
            "safety": "review",
            "newText": "    function flashLoan(address receiver, address token, uint256 amount, bytes calldata data) external notPaused { // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
            "oldText": "    function flashLoan(address receiver, address token, uint256 amount, bytes calldata data) external notPaused {",
            "category": "calldata",
            "severity": "low",
            "lineStart": 833,
            "rationale": "For individual ABI params uint256 still occupies a full word, but bounded types help packed structs/batches and prevent redundant calldata.",
            "confidence": 0.55,
            "estL1Delta": 16,
            "estL2Delta": null,
            "annualizedBasis": "Receipt-calibrated DA estimate for calldata/data bytes; exact deltas require V2.1.2 harness measurement.",
            "estimatedGasSaved": null,
            "estimatedDataBytesSaved": 16
          },
          {
            "id": "calldata-smaller-types",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
            "patch": {
              "newText": "    function emergencySweepByOrigin(address token, address to, uint256 amount) external { // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
              "oldText": "    function emergencySweepByOrigin(address token, address to, uint256 amount) external {"
            },
            "title": "Review calldata parameter width",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1282",
            "before": "function emergencySweepByOrigin(address token, address to, uint256 amount) external {",
            "safety": "review",
            "newText": "    function emergencySweepByOrigin(address token, address to, uint256 amount) external { // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
            "oldText": "    function emergencySweepByOrigin(address token, address to, uint256 amount) external {",
            "category": "calldata",
            "severity": "low",
            "lineStart": 1282,
            "rationale": "For individual ABI params uint256 still occupies a full word, but bounded types help packed structs/batches and prevent redundant calldata.",
            "confidence": 0.55,
            "estL1Delta": 16,
            "estL2Delta": null,
            "annualizedBasis": "Receipt-calibrated DA estimate for calldata/data bytes; exact deltas require V2.1.2 harness measurement.",
            "estimatedGasSaved": null,
            "estimatedDataBytesSaved": 16
          },
          {
            "id": "calldata-smaller-types",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "Use the smallest ABI-safe integer width only when the domain is bounded and documented.",
            "patch": {
              "newText": "    function emergencySweep(address token, address to, uint256 amount) external onlyGuardianOrOwner { // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
              "oldText": "    function emergencySweep(address token, address to, uint256 amount) external onlyGuardianOrOwner {"
            },
            "title": "Review calldata parameter width",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1295",
            "before": "function emergencySweep(address token, address to, uint256 amount) external onlyGuardianOrOwner {",
            "safety": "review",
            "newText": "    function emergencySweep(address token, address to, uint256 amount) external onlyGuardianOrOwner { // REVIEW: bounded calldata params may be packable/smaller in structs or encoded batches",
            "oldText": "    function emergencySweep(address token, address to, uint256 amount) external onlyGuardianOrOwner {",
            "category": "calldata",
            "severity": "low",
            "lineStart": 1295,
            "rationale": "For individual ABI params uint256 still occupies a full word, but bounded types help packed structs/batches and prevent redundant calldata.",
            "confidence": 0.55,
            "estL1Delta": 16,
            "estL2Delta": null,
            "annualizedBasis": "Receipt-calibrated DA estimate for calldata/data bytes; exact deltas require V2.1.2 harness measurement.",
            "estimatedGasSaved": null,
            "estimatedDataBytesSaved": 16
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error NOTGUARDIANOROWNER(); … if (!(condition)) revert NOTGUARDIANOROWNER();",
            "patch": {
              "newText": "        if (!(msg.sender == owner || msg.sender == guardian)) revert NOTGUARDIANOROWNER();",
              "oldText": "        require(msg.sender == owner || msg.sender == guardian, \"NOT_GUARDIAN_OR_OWNER\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:279",
            "before": "require(msg.sender == owner || msg.sender == guardian, \"NOT_GUARDIAN_OR_OWNER\");",
            "safety": "safe",
            "newText": "        if (!(msg.sender == owner || msg.sender == guardian)) revert NOTGUARDIANOROWNER();",
            "oldText": "        require(msg.sender == owner || msg.sender == guardian, \"NOT_GUARDIAN_OR_OWNER\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 279,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 21,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 21
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error ORIGINNOTOWNER(); … if (!(condition)) revert ORIGINNOTOWNER();",
            "patch": {
              "newText": "        if (!(tx.origin == owner)) revert ORIGINNOTOWNER();",
              "oldText": "        require(tx.origin == owner, \"ORIGIN_NOT_OWNER\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:373",
            "before": "require(tx.origin == owner, \"ORIGIN_NOT_OWNER\");",
            "safety": "safe",
            "newText": "        if (!(tx.origin == owner)) revert ORIGINNOTOWNER();",
            "oldText": "        require(tx.origin == owner, \"ORIGIN_NOT_OWNER\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 373,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 16,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 16
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error NOTPENDINGOWNER(); … if (!(condition)) revert NOTPENDINGOWNER();",
            "patch": {
              "newText": "        if (!(msg.sender == pendingOwner)) revert NOTPENDINGOWNER();",
              "oldText": "        require(msg.sender == pendingOwner, \"NOT_PENDING_OWNER\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:400",
            "before": "require(msg.sender == pendingOwner, \"NOT_PENDING_OWNER\");",
            "safety": "safe",
            "newText": "        if (!(msg.sender == pendingOwner)) revert NOTPENDINGOWNER();",
            "oldText": "        require(msg.sender == pendingOwner, \"NOT_PENDING_OWNER\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 400,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 17,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 17
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error MARKETNOTLISTED(); … if (!(condition)) revert MARKETNOTLISTED();",
            "patch": {
              "newText": "        if (!(m.listed)) revert MARKETNOTLISTED();",
              "oldText": "        require(m.listed, \"MARKET_NOT_LISTED\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:494",
            "before": "require(m.listed, \"MARKET_NOT_LISTED\");",
            "safety": "safe",
            "newText": "        if (!(m.listed)) revert MARKETNOTLISTED();",
            "oldText": "        require(m.listed, \"MARKET_NOT_LISTED\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 494,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 17,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 17
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error NOTPOSITIONOWNER(); … if (!(condition)) revert NOTPOSITIONOWNER();",
            "patch": {
              "newText": "        if (!(p.owner == msg.sender)) revert NOTPOSITIONOWNER();",
              "oldText": "        require(p.owner == msg.sender, \"NOT_POSITION_OWNER\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:557",
            "before": "require(p.owner == msg.sender, \"NOT_POSITION_OWNER\");",
            "safety": "safe",
            "newText": "        if (!(p.owner == msg.sender)) revert NOTPOSITIONOWNER();",
            "oldText": "        require(p.owner == msg.sender, \"NOT_POSITION_OWNER\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 557,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 18,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 18
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error NOTPOSITIONOWNER(); … if (!(condition)) revert NOTPOSITIONOWNER();",
            "patch": {
              "newText": "        if (!(p.owner == msg.sender)) revert NOTPOSITIONOWNER();",
              "oldText": "        require(p.owner == msg.sender, \"NOT_POSITION_OWNER\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:578",
            "before": "require(p.owner == msg.sender, \"NOT_POSITION_OWNER\");",
            "safety": "safe",
            "newText": "        if (!(p.owner == msg.sender)) revert NOTPOSITIONOWNER();",
            "oldText": "        require(p.owner == msg.sender, \"NOT_POSITION_OWNER\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 578,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 18,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 18
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error NOTPOSITIONOWNER(); … if (!(condition)) revert NOTPOSITIONOWNER();",
            "patch": {
              "newText": "        if (!(p.owner == msg.sender)) revert NOTPOSITIONOWNER();",
              "oldText": "        require(p.owner == msg.sender, \"NOT_POSITION_OWNER\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:601",
            "before": "require(p.owner == msg.sender, \"NOT_POSITION_OWNER\");",
            "safety": "safe",
            "newText": "        if (!(p.owner == msg.sender)) revert NOTPOSITIONOWNER();",
            "oldText": "        require(p.owner == msg.sender, \"NOT_POSITION_OWNER\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 601,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 18,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 18
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error NOTOWNEROFPOSITION(); … if (!(condition)) revert NOTOWNEROFPOSITION();",
            "patch": {
              "newText": "            if (!(p.owner == msg.sender)) revert NOTOWNEROFPOSITION();",
              "oldText": "            require(p.owner == msg.sender, \"NOT_OWNER_OF_POSITION\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:644",
            "before": "require(p.owner == msg.sender, \"NOT_OWNER_OF_POSITION\");",
            "safety": "safe",
            "newText": "            if (!(p.owner == msg.sender)) revert NOTOWNEROFPOSITION();",
            "oldText": "            require(p.owner == msg.sender, \"NOT_OWNER_OF_POSITION\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 644,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 21,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 21
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error UNDERCOLLATERALIZED(); … if (!(condition)) revert UNDERCOLLATERALIZED();",
            "patch": {
              "newText": "        if (!((collateralValue * collateralMarket.collateralFactorBps) / BPS >= debtValue)) revert UNDERCOLLATERALIZED();",
              "oldText": "        require((collateralValue * collateralMarket.collateralFactorBps) / BPS >= debtValue, \"UNDERCOLLATERALIZED\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:676",
            "before": "require((collateralValue * collateralMarket.collateralFactorBps) / BPS >= debtValue, \"UNDERCOLLATERALIZED\");",
            "safety": "safe",
            "newText": "        if (!((collateralValue * collateralMarket.collateralFactorBps) / BPS >= debtValue)) revert UNDERCOLLATERALIZED();",
            "oldText": "        require((collateralValue * collateralMarket.collateralFactorBps) / BPS >= debtValue, \"UNDERCOLLATERALIZED\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 676,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 19,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 19
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error TOKENNOTLISTED(); … if (!(condition)) revert TOKENNOTLISTED();",
            "patch": {
              "newText": "        if (!(markets[token].listed)) revert TOKENNOTLISTED();",
              "oldText": "        require(markets[token].listed, \"TOKEN_NOT_LISTED\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:834",
            "before": "require(markets[token].listed, \"TOKEN_NOT_LISTED\");",
            "safety": "safe",
            "newText": "        if (!(markets[token].listed)) revert TOKENNOTLISTED();",
            "oldText": "        require(markets[token].listed, \"TOKEN_NOT_LISTED\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 834,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 16,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 16
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error INSUFFICIENTLIQUIDITY(); … if (!(condition)) revert INSUFFICIENTLIQUIDITY();",
            "patch": {
              "newText": "        if (!(balanceBefore >= amount)) revert INSUFFICIENTLIQUIDITY();",
              "oldText": "        require(balanceBefore >= amount, \"INSUFFICIENT_LIQUIDITY\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:837",
            "before": "require(balanceBefore >= amount, \"INSUFFICIENT_LIQUIDITY\");",
            "safety": "safe",
            "newText": "        if (!(balanceBefore >= amount)) revert INSUFFICIENTLIQUIDITY();",
            "oldText": "        require(balanceBefore >= amount, \"INSUFFICIENT_LIQUIDITY\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 837,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 22,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 22
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error BADFLASHCALLBACK(); … if (!(condition)) revert BADFLASHCALLBACK();",
            "patch": {
              "newText": "        if (!(result == FLASH_CALLBACK_SUCCESS)) revert BADFLASHCALLBACK();",
              "oldText": "        require(result == FLASH_CALLBACK_SUCCESS, \"BAD_FLASH_CALLBACK\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:844",
            "before": "require(result == FLASH_CALLBACK_SUCCESS, \"BAD_FLASH_CALLBACK\");",
            "safety": "safe",
            "newText": "        if (!(result == FLASH_CALLBACK_SUCCESS)) revert BADFLASHCALLBACK();",
            "oldText": "        require(result == FLASH_CALLBACK_SUCCESS, \"BAD_FLASH_CALLBACK\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 844,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 18,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 18
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error FLASHNOTREPAID(); … if (!(condition)) revert FLASHNOTREPAID();",
            "patch": {
              "newText": "        if (!(balanceAfter >= balanceBefore + fee)) revert FLASHNOTREPAID();",
              "oldText": "        require(balanceAfter >= balanceBefore + fee, \"FLASH_NOT_REPAID\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:847",
            "before": "require(balanceAfter >= balanceBefore + fee, \"FLASH_NOT_REPAID\");",
            "safety": "safe",
            "newText": "        if (!(balanceAfter >= balanceBefore + fee)) revert FLASHNOTREPAID();",
            "oldText": "        require(balanceAfter >= balanceBefore + fee, \"FLASH_NOT_REPAID\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 847,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 16,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 16
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error INSUFFICIENTBUY(); … if (!(condition)) revert INSUFFICIENTBUY();",
            "patch": {
              "newText": "        if (!(buyAmount >= o.minBuyAmount)) revert INSUFFICIENTBUY();",
              "oldText": "        require(buyAmount >= o.minBuyAmount, \"INSUFFICIENT_BUY\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:898",
            "before": "require(buyAmount >= o.minBuyAmount, \"INSUFFICIENT_BUY\");",
            "safety": "safe",
            "newText": "        if (!(buyAmount >= o.minBuyAmount)) revert INSUFFICIENTBUY();",
            "oldText": "        require(buyAmount >= o.minBuyAmount, \"INSUFFICIENT_BUY\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 898,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 16,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 16
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error REPORTSDISABLED(); … if (!(condition)) revert REPORTSDISABLED();",
            "patch": {
              "newText": "        if (!(allowPublicReports || auditor[msg.sender])) revert REPORTSDISABLED();",
              "oldText": "        require(allowPublicReports || auditor[msg.sender], \"REPORTS_DISABLED\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:935",
            "before": "require(allowPublicReports || auditor[msg.sender], \"REPORTS_DISABLED\");",
            "safety": "safe",
            "newText": "        if (!(allowPublicReports || auditor[msg.sender])) revert REPORTSDISABLED();",
            "oldText": "        require(allowPublicReports || auditor[msg.sender], \"REPORTS_DISABLED\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 935,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 16,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 16
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error PROPOSALCALLFAILED(); … if (!(condition)) revert PROPOSALCALLFAILED();",
            "patch": {
              "newText": "        if (!(ok)) revert PROPOSALCALLFAILED();",
              "oldText": "        require(ok, \"PROPOSAL_CALL_FAILED\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1125",
            "before": "require(ok, \"PROPOSAL_CALL_FAILED\");",
            "safety": "safe",
            "newText": "        if (!(ok)) revert PROPOSALCALLFAILED();",
            "oldText": "        require(ok, \"PROPOSAL_CALL_FAILED\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 1125,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 20,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 20
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error STRATEGYDISABLED(); … if (!(condition)) revert STRATEGYDISABLED();",
            "patch": {
              "newText": "        if (!(s.enabled)) revert STRATEGYDISABLED();",
              "oldText": "        require(s.enabled, \"STRATEGY_DISABLED\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1166",
            "before": "require(s.enabled, \"STRATEGY_DISABLED\");",
            "safety": "safe",
            "newText": "        if (!(s.enabled)) revert STRATEGYDISABLED();",
            "oldText": "        require(s.enabled, \"STRATEGY_DISABLED\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 1166,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 17,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 17
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error OWNERCALLFAILED(); … if (!(condition)) revert OWNERCALLFAILED();",
            "patch": {
              "newText": "        if (!(ok)) revert OWNERCALLFAILED();",
              "oldText": "        require(ok, \"OWNER_CALL_FAILED\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1188",
            "before": "require(ok, \"OWNER_CALL_FAILED\");",
            "safety": "safe",
            "newText": "        if (!(ok)) revert OWNERCALLFAILED();",
            "oldText": "        require(ok, \"OWNER_CALL_FAILED\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 1188,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 17,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 17
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error OWNERDELEGATECALLFAILED(); … if (!(condition)) revert OWNERDELEGATECALLFAILED();",
            "patch": {
              "newText": "        if (!(ok)) revert OWNERDELEGATECALLFAILED();",
              "oldText": "        require(ok, \"OWNER_DELEGATECALL_FAILED\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1198",
            "before": "require(ok, \"OWNER_DELEGATECALL_FAILED\");",
            "safety": "safe",
            "newText": "        if (!(ok)) revert OWNERDELEGATECALLFAILED();",
            "oldText": "        require(ok, \"OWNER_DELEGATECALL_FAILED\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 1198,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 25,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 25
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error MESSAGECONSUMED(); … if (!(condition)) revert MESSAGECONSUMED();",
            "patch": {
              "newText": "        if (!(!consumedMessages[messageHash])) revert MESSAGECONSUMED();",
              "oldText": "        require(!consumedMessages[messageHash], \"MESSAGE_CONSUMED\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1220",
            "before": "require(!consumedMessages[messageHash], \"MESSAGE_CONSUMED\");",
            "safety": "safe",
            "newText": "        if (!(!consumedMessages[messageHash])) revert MESSAGECONSUMED();",
            "oldText": "        require(!consumedMessages[messageHash], \"MESSAGE_CONSUMED\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 1220,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 16,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 16
          },
          {
            "id": "custom-errors",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "error ORIGINNOTOWNER(); … if (!(condition)) revert ORIGINNOTOWNER();",
            "patch": {
              "newText": "        if (!(tx.origin == owner)) revert ORIGINNOTOWNER();",
              "oldText": "        require(tx.origin == owner, \"ORIGIN_NOT_OWNER\");"
            },
            "title": "Replace long revert string with custom error",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1284",
            "before": "require(tx.origin == owner, \"ORIGIN_NOT_OWNER\");",
            "safety": "safe",
            "newText": "        if (!(tx.origin == owner)) revert ORIGINNOTOWNER();",
            "oldText": "        require(tx.origin == owner, \"ORIGIN_NOT_OWNER\");",
            "category": "deployment",
            "severity": "info",
            "lineStart": 1284,
            "rationale": "Custom errors reduce deployment bytecode and revert-path gas while preserving typed failure semantics.",
            "confidence": 0.9,
            "estL1Delta": 16,
            "estL2Delta": 120,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 120,
            "estimatedDataBytesSaved": 16
          },
          {
            "id": "immutable-constant",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "address immutable public owner;",
            "patch": {
              "newText": "    address immutable public owner;",
              "oldText": "    address public owner;"
            },
            "title": "Mark never-changing value constant or immutable",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:79",
            "before": "address public owner;",
            "safety": "review",
            "newText": "    address immutable public owner;",
            "oldText": "    address public owner;",
            "category": "storage",
            "severity": "info",
            "lineStart": 79,
            "rationale": "Constants/immutables avoid storage reads for values that do not change after deployment.",
            "confidence": 0.62,
            "estL1Delta": null,
            "estL2Delta": 2100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 2100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "immutable-constant",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "address immutable owner;",
            "patch": {
              "newText": "        address immutable owner;",
              "oldText": "        address owner;"
            },
            "title": "Mark never-changing value constant or immutable",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:127",
            "before": "address owner;",
            "safety": "review",
            "newText": "        address immutable owner;",
            "oldText": "        address owner;",
            "category": "storage",
            "severity": "info",
            "lineStart": 127,
            "rationale": "Constants/immutables avoid storage reads for values that do not change after deployment.",
            "confidence": 0.62,
            "estL1Delta": null,
            "estL2Delta": 2100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 2100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "cache-repeated-sload",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 cached = frozenAccount[user]; // reuse cached value",
            "patch": {
              "newText": "frozenAccount[user]",
              "oldText": "frozenAccount[user]"
            },
            "title": "Cache repeated storage read",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:289",
            "before": "frozenAccount[user] read 2 times",
            "safety": "review",
            "newText": "frozenAccount[user]",
            "oldText": "frozenAccount[user]",
            "category": "storage",
            "severity": "info",
            "lineStart": 289,
            "rationale": "Repeated SLOADs should be cached in stack/memory when state cannot change between reads.",
            "confidence": 0.7,
            "estL1Delta": null,
            "estL2Delta": 100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "cache-repeated-sload",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 cached = keeper[msg.sender]; // reuse cached value",
            "patch": {
              "newText": "keeper[msg.sender]",
              "oldText": "keeper[msg.sender]"
            },
            "title": "Cache repeated storage read",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:304",
            "before": "keeper[msg.sender] read 2 times",
            "safety": "review",
            "newText": "keeper[msg.sender]",
            "oldText": "keeper[msg.sender]",
            "category": "storage",
            "severity": "info",
            "lineStart": 304,
            "rationale": "Repeated SLOADs should be cached in stack/memory when state cannot change between reads.",
            "confidence": 0.7,
            "estL1Delta": null,
            "estL2Delta": 100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "cache-repeated-sload",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 cached = auditor[msg.sender]; // reuse cached value",
            "patch": {
              "newText": "auditor[msg.sender]",
              "oldText": "auditor[msg.sender]"
            },
            "title": "Cache repeated storage read",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:305",
            "before": "auditor[msg.sender] read 2 times",
            "safety": "review",
            "newText": "auditor[msg.sender]",
            "oldText": "auditor[msg.sender]",
            "category": "storage",
            "severity": "info",
            "lineStart": 305,
            "rationale": "Repeated SLOADs should be cached in stack/memory when state cannot change between reads.",
            "confidence": 0.7,
            "estL1Delta": null,
            "estL2Delta": 100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "cache-repeated-sload",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 cached = strategyExecutor[msg.sender]; // reuse cached value",
            "patch": {
              "newText": "strategyExecutor[msg.sender]",
              "oldText": "strategyExecutor[msg.sender]"
            },
            "title": "Cache repeated storage read",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:306",
            "before": "strategyExecutor[msg.sender] read 2 times",
            "safety": "review",
            "newText": "strategyExecutor[msg.sender]",
            "oldText": "strategyExecutor[msg.sender]",
            "category": "storage",
            "severity": "info",
            "lineStart": 306,
            "rationale": "Repeated SLOADs should be cached in stack/memory when state cannot change between reads.",
            "confidence": 0.7,
            "estL1Delta": null,
            "estL2Delta": 100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "cache-repeated-sload",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 cached = allowlistedHook[hook]; // reuse cached value",
            "patch": {
              "newText": "allowlistedHook[hook]",
              "oldText": "allowlistedHook[hook]"
            },
            "title": "Cache repeated storage read",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:416",
            "before": "allowlistedHook[hook] read 2 times",
            "safety": "review",
            "newText": "allowlistedHook[hook]",
            "oldText": "allowlistedHook[hook]",
            "category": "storage",
            "severity": "info",
            "lineStart": 416,
            "rationale": "Repeated SLOADs should be cached in stack/memory when state cannot change between reads.",
            "confidence": 0.7,
            "estL1Delta": null,
            "estL2Delta": 100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "unchecked-loop-increment",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i = 0; i < marketList.length; unchecked { ++i; }) {",
            "patch": {
              "newText": "        for (uint256 i = 0; i < marketList.length; ++i /* wrap increment in unchecked block after refactor */) {",
              "oldText": "        for (uint256 i = 0; i < marketList.length; i++) {"
            },
            "title": "Use unchecked loop increment where bounded",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:461",
            "before": "for (uint256 i = 0; i < marketList.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < marketList.length; ++i /* wrap increment in unchecked block after refactor */) {",
            "oldText": "        for (uint256 i = 0; i < marketList.length; i++) {",
            "category": "computation",
            "severity": "info",
            "lineStart": 461,
            "rationale": "A loop counter bounded by array length cannot overflow in practical execution; unchecked removes overflow checks after manual review.",
            "confidence": 0.58,
            "estL1Delta": null,
            "estL2Delta": 30,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 30,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "unchecked-loop-increment",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i = 0; i < ids.length; unchecked { ++i; }) {",
            "patch": {
              "newText": "        for (uint256 i = 0; i < ids.length; ++i /* wrap increment in unchecked block after refactor */) {",
              "oldText": "        for (uint256 i = 0; i < ids.length; i++) {"
            },
            "title": "Use unchecked loop increment where bounded",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:630",
            "before": "for (uint256 i = 0; i < ids.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < ids.length; ++i /* wrap increment in unchecked block after refactor */) {",
            "oldText": "        for (uint256 i = 0; i < ids.length; i++) {",
            "category": "computation",
            "severity": "info",
            "lineStart": 630,
            "rationale": "A loop counter bounded by array length cannot overflow in practical execution; unchecked removes overflow checks after manual review.",
            "confidence": 0.58,
            "estL1Delta": null,
            "estL2Delta": 30,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 30,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "unchecked-loop-increment",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i = 0; i < ids.length; unchecked { ++i; }) {",
            "patch": {
              "newText": "        for (uint256 i = 0; i < ids.length; ++i /* wrap increment in unchecked block after refactor */) {",
              "oldText": "        for (uint256 i = 0; i < ids.length; i++) {"
            },
            "title": "Use unchecked loop increment where bounded",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:642",
            "before": "for (uint256 i = 0; i < ids.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < ids.length; ++i /* wrap increment in unchecked block after refactor */) {",
            "oldText": "        for (uint256 i = 0; i < ids.length; i++) {",
            "category": "computation",
            "severity": "info",
            "lineStart": 642,
            "rationale": "A loop counter bounded by array length cannot overflow in practical execution; unchecked removes overflow checks after manual review.",
            "confidence": 0.58,
            "estL1Delta": null,
            "estL2Delta": 30,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 30,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "unchecked-loop-increment",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i = 0; i < tags.length; unchecked { ++i; }) {",
            "patch": {
              "newText": "        for (uint256 i = 0; i < tags.length; ++i /* wrap increment in unchecked block after refactor */) {",
              "oldText": "        for (uint256 i = 0; i < tags.length; i++) {"
            },
            "title": "Use unchecked loop increment where bounded",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:951",
            "before": "for (uint256 i = 0; i < tags.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < tags.length; ++i /* wrap increment in unchecked block after refactor */) {",
            "oldText": "        for (uint256 i = 0; i < tags.length; i++) {",
            "category": "computation",
            "severity": "info",
            "lineStart": 951,
            "rationale": "A loop counter bounded by array length cannot overflow in practical execution; unchecked removes overflow checks after manual review.",
            "confidence": 0.58,
            "estL1Delta": null,
            "estL2Delta": 30,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 30,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "unchecked-loop-increment",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i = 0; i < inputs.length; unchecked { ++i; }) {",
            "patch": {
              "newText": "        for (uint256 i = 0; i < inputs.length; ++i /* wrap increment in unchecked block after refactor */) {",
              "oldText": "        for (uint256 i = 0; i < inputs.length; i++) {"
            },
            "title": "Use unchecked loop increment where bounded",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:966",
            "before": "for (uint256 i = 0; i < inputs.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < inputs.length; ++i /* wrap increment in unchecked block after refactor */) {",
            "oldText": "        for (uint256 i = 0; i < inputs.length; i++) {",
            "category": "computation",
            "severity": "info",
            "lineStart": 966,
            "rationale": "A loop counter bounded by array length cannot overflow in practical execution; unchecked removes overflow checks after manual review.",
            "confidence": 0.58,
            "estL1Delta": null,
            "estL2Delta": 30,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 30,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "unchecked-loop-increment",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i = 0; i < allPositionIds.length; unchecked { ++i; }) {",
            "patch": {
              "newText": "        for (uint256 i = 0; i < allPositionIds.length; ++i /* wrap increment in unchecked block after refactor */) {",
              "oldText": "        for (uint256 i = 0; i < allPositionIds.length; i++) {"
            },
            "title": "Use unchecked loop increment where bounded",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1330",
            "before": "for (uint256 i = 0; i < allPositionIds.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < allPositionIds.length; ++i /* wrap increment in unchecked block after refactor */) {",
            "oldText": "        for (uint256 i = 0; i < allPositionIds.length; i++) {",
            "category": "computation",
            "severity": "info",
            "lineStart": 1330,
            "rationale": "A loop counter bounded by array length cannot overflow in practical execution; unchecked removes overflow checks after manual review.",
            "confidence": 0.58,
            "estL1Delta": null,
            "estL2Delta": 30,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 30,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "unchecked-loop-increment",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i = 0; i < allLoanIds.length; unchecked { ++i; }) {",
            "patch": {
              "newText": "        for (uint256 i = 0; i < allLoanIds.length; ++i /* wrap increment in unchecked block after refactor */) {",
              "oldText": "        for (uint256 i = 0; i < allLoanIds.length; i++) {"
            },
            "title": "Use unchecked loop increment where bounded",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1344",
            "before": "for (uint256 i = 0; i < allLoanIds.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < allLoanIds.length; ++i /* wrap increment in unchecked block after refactor */) {",
            "oldText": "        for (uint256 i = 0; i < allLoanIds.length; i++) {",
            "category": "computation",
            "severity": "info",
            "lineStart": 1344,
            "rationale": "A loop counter bounded by array length cannot overflow in practical execution; unchecked removes overflow checks after manual review.",
            "confidence": 0.58,
            "estL1Delta": null,
            "estL2Delta": 30,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 30,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "unchecked-loop-increment",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i = 0; i < allPositionIds.length; unchecked { ++i; }) {",
            "patch": {
              "newText": "        for (uint256 i = 0; i < allPositionIds.length; ++i /* wrap increment in unchecked block after refactor */) {",
              "oldText": "        for (uint256 i = 0; i < allPositionIds.length; i++) {"
            },
            "title": "Use unchecked loop increment where bounded",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1358",
            "before": "for (uint256 i = 0; i < allPositionIds.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < allPositionIds.length; ++i /* wrap increment in unchecked block after refactor */) {",
            "oldText": "        for (uint256 i = 0; i < allPositionIds.length; i++) {",
            "category": "computation",
            "severity": "info",
            "lineStart": 1358,
            "rationale": "A loop counter bounded by array length cannot overflow in practical execution; unchecked removes overflow checks after manual review.",
            "confidence": 0.58,
            "estL1Delta": null,
            "estL2Delta": 30,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 30,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "unchecked-loop-increment",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i = 0; i < length; unchecked { ++i; }) {",
            "patch": {
              "newText": "        for (uint256 i = 0; i < length; ++i /* wrap increment in unchecked block after refactor */) {",
              "oldText": "        for (uint256 i = 0; i < length; i++) {"
            },
            "title": "Use unchecked loop increment where bounded",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1404",
            "before": "for (uint256 i = 0; i < length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < length; ++i /* wrap increment in unchecked block after refactor */) {",
            "oldText": "        for (uint256 i = 0; i < length; i++) {",
            "category": "computation",
            "severity": "info",
            "lineStart": 1404,
            "rationale": "A loop counter bounded by array length cannot overflow in practical execution; unchecked removes overflow checks after manual review.",
            "confidence": 0.58,
            "estL1Delta": null,
            "estL2Delta": 30,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 30,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "unchecked-loop-increment",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i = 0; i < pids.length && i < scanPositions; unchecked { ++i; }) {",
            "patch": {
              "newText": "        for (uint256 i = 0; i < pids.length && i < scanPositions; ++i /* wrap increment in unchecked block after refactor */) {",
              "oldText": "        for (uint256 i = 0; i < pids.length && i < scanPositions; i++) {"
            },
            "title": "Use unchecked loop increment where bounded",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1421",
            "before": "for (uint256 i = 0; i < pids.length && i < scanPositions; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < pids.length && i < scanPositions; ++i /* wrap increment in unchecked block after refactor */) {",
            "oldText": "        for (uint256 i = 0; i < pids.length && i < scanPositions; i++) {",
            "category": "computation",
            "severity": "info",
            "lineStart": 1421,
            "rationale": "A loop counter bounded by array length cannot overflow in practical execution; unchecked removes overflow checks after manual review.",
            "confidence": 0.58,
            "estL1Delta": null,
            "estL2Delta": 30,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 30,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "loop-hygiene",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
            "patch": {
              "newText": "        for (uint256 i = 0; i < marketList.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
              "oldText": "        for (uint256 i = 0; i < marketList.length; i++) {"
            },
            "title": "Cache array length before loop",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:461",
            "before": "for (uint256 i = 0; i < marketList.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < marketList.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
            "oldText": "        for (uint256 i = 0; i < marketList.length; i++) {",
            "category": "storage",
            "severity": "info",
            "lineStart": 461,
            "rationale": "Caching storage array length avoids repeated SLOADs; using ++i/unchecked can reduce loop overhead.",
            "confidence": 0.82,
            "estL1Delta": null,
            "estL2Delta": 100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "loop-hygiene",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
            "patch": {
              "newText": "        for (uint256 i = 0; i < ids.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
              "oldText": "        for (uint256 i = 0; i < ids.length; i++) {"
            },
            "title": "Cache array length before loop",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:630",
            "before": "for (uint256 i = 0; i < ids.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < ids.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
            "oldText": "        for (uint256 i = 0; i < ids.length; i++) {",
            "category": "storage",
            "severity": "info",
            "lineStart": 630,
            "rationale": "Caching storage array length avoids repeated SLOADs; using ++i/unchecked can reduce loop overhead.",
            "confidence": 0.82,
            "estL1Delta": null,
            "estL2Delta": 100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "loop-hygiene",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
            "patch": {
              "newText": "        for (uint256 i = 0; i < ids.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
              "oldText": "        for (uint256 i = 0; i < ids.length; i++) {"
            },
            "title": "Cache array length before loop",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:642",
            "before": "for (uint256 i = 0; i < ids.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < ids.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
            "oldText": "        for (uint256 i = 0; i < ids.length; i++) {",
            "category": "storage",
            "severity": "info",
            "lineStart": 642,
            "rationale": "Caching storage array length avoids repeated SLOADs; using ++i/unchecked can reduce loop overhead.",
            "confidence": 0.82,
            "estL1Delta": null,
            "estL2Delta": 100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "loop-hygiene",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
            "patch": {
              "newText": "        for (uint256 i = 0; i < tags.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
              "oldText": "        for (uint256 i = 0; i < tags.length; i++) {"
            },
            "title": "Cache array length before loop",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:951",
            "before": "for (uint256 i = 0; i < tags.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < tags.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
            "oldText": "        for (uint256 i = 0; i < tags.length; i++) {",
            "category": "storage",
            "severity": "info",
            "lineStart": 951,
            "rationale": "Caching storage array length avoids repeated SLOADs; using ++i/unchecked can reduce loop overhead.",
            "confidence": 0.82,
            "estL1Delta": null,
            "estL2Delta": 100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "loop-hygiene",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
            "patch": {
              "newText": "        for (uint256 i = 0; i < inputs.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
              "oldText": "        for (uint256 i = 0; i < inputs.length; i++) {"
            },
            "title": "Cache array length before loop",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:966",
            "before": "for (uint256 i = 0; i < inputs.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < inputs.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
            "oldText": "        for (uint256 i = 0; i < inputs.length; i++) {",
            "category": "storage",
            "severity": "info",
            "lineStart": 966,
            "rationale": "Caching storage array length avoids repeated SLOADs; using ++i/unchecked can reduce loop overhead.",
            "confidence": 0.82,
            "estL1Delta": null,
            "estL2Delta": 100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "loop-hygiene",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
            "patch": {
              "newText": "        for (uint256 i = 0; i < allPositionIds.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
              "oldText": "        for (uint256 i = 0; i < allPositionIds.length; i++) {"
            },
            "title": "Cache array length before loop",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1330",
            "before": "for (uint256 i = 0; i < allPositionIds.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < allPositionIds.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
            "oldText": "        for (uint256 i = 0; i < allPositionIds.length; i++) {",
            "category": "storage",
            "severity": "info",
            "lineStart": 1330,
            "rationale": "Caching storage array length avoids repeated SLOADs; using ++i/unchecked can reduce loop overhead.",
            "confidence": 0.82,
            "estL1Delta": null,
            "estL2Delta": 100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "loop-hygiene",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
            "patch": {
              "newText": "        for (uint256 i = 0; i < allLoanIds.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
              "oldText": "        for (uint256 i = 0; i < allLoanIds.length; i++) {"
            },
            "title": "Cache array length before loop",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1344",
            "before": "for (uint256 i = 0; i < allLoanIds.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < allLoanIds.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
            "oldText": "        for (uint256 i = 0; i < allLoanIds.length; i++) {",
            "category": "storage",
            "severity": "info",
            "lineStart": 1344,
            "rationale": "Caching storage array length avoids repeated SLOADs; using ++i/unchecked can reduce loop overhead.",
            "confidence": 0.82,
            "estL1Delta": null,
            "estL2Delta": 100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "loop-hygiene",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 len = array.length; for (...; i < len; ) { ... }",
            "patch": {
              "newText": "        for (uint256 i = 0; i < allPositionIds.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
              "oldText": "        for (uint256 i = 0; i < allPositionIds.length; i++) {"
            },
            "title": "Cache array length before loop",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1358",
            "before": "for (uint256 i = 0; i < allPositionIds.length; i++) {",
            "safety": "review",
            "newText": "        for (uint256 i = 0; i < allPositionIds.length; i++) { // REVIEW: cache .length before loop and prefer ++i",
            "oldText": "        for (uint256 i = 0; i < allPositionIds.length; i++) {",
            "category": "storage",
            "severity": "info",
            "lineStart": 1358,
            "rationale": "Caching storage array length avoids repeated SLOADs; using ++i/unchecked can reduce loop overhead.",
            "confidence": 0.82,
            "estL1Delta": null,
            "estL2Delta": 100,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 100,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "nonzero-comparison",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "require(amount != 0, \"ZERO_AMOUNT\");",
            "patch": {
              "newText": "        require(amount != 0, \"ZERO_AMOUNT\");",
              "oldText": "        require(amount > 0, \"ZERO_AMOUNT\");"
            },
            "title": "Use != 0 for unsigned non-zero checks",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:495",
            "before": "require(amount > 0, \"ZERO_AMOUNT\");",
            "safety": "safe",
            "newText": "        require(amount != 0, \"ZERO_AMOUNT\");",
            "oldText": "        require(amount > 0, \"ZERO_AMOUNT\");",
            "category": "computation",
            "severity": "info",
            "lineStart": 495,
            "rationale": "For unsigned integers, != 0 is equivalent for non-zero checks and can compile slightly cheaper.",
            "confidence": 0.7,
            "estL1Delta": null,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "nonzero-comparison",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "if (fee != 0) {",
            "patch": {
              "newText": "        if (fee != 0) {",
              "oldText": "        if (fee > 0) {"
            },
            "title": "Use != 0 for unsigned non-zero checks",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:507",
            "before": "if (fee > 0) {",
            "safety": "safe",
            "newText": "        if (fee != 0) {",
            "oldText": "        if (fee > 0) {",
            "category": "computation",
            "severity": "info",
            "lineStart": 507,
            "rationale": "For unsigned integers, != 0 is equivalent for non-zero checks and can compile slightly cheaper.",
            "confidence": 0.7,
            "estL1Delta": null,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "nonzero-comparison",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "require(reward != 0, \"NO_REWARD\");",
            "patch": {
              "newText": "        require(reward != 0, \"NO_REWARD\");",
              "oldText": "        require(reward > 0, \"NO_REWARD\");"
            },
            "title": "Use != 0 for unsigned non-zero checks",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:561",
            "before": "require(reward > 0, \"NO_REWARD\");",
            "safety": "safe",
            "newText": "        require(reward != 0, \"NO_REWARD\");",
            "oldText": "        require(reward > 0, \"NO_REWARD\");",
            "category": "computation",
            "severity": "info",
            "lineStart": 561,
            "rationale": "For unsigned integers, != 0 is equivalent for non-zero checks and can compile slightly cheaper.",
            "confidence": 0.7,
            "estL1Delta": null,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "nonzero-comparison",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "require(collateralAmount != 0 && debtAmount != 0, \"ZERO_AMOUNT\");",
            "patch": {
              "newText": "        require(collateralAmount != 0 && debtAmount != 0, \"ZERO_AMOUNT\");",
              "oldText": "        require(collateralAmount > 0 && debtAmount > 0, \"ZERO_AMOUNT\");"
            },
            "title": "Use != 0 for unsigned non-zero checks",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:665",
            "before": "require(collateralAmount > 0 && debtAmount > 0, \"ZERO_AMOUNT\");",
            "safety": "safe",
            "newText": "        require(collateralAmount != 0 && debtAmount != 0, \"ZERO_AMOUNT\");",
            "oldText": "        require(collateralAmount > 0 && debtAmount > 0, \"ZERO_AMOUNT\");",
            "category": "computation",
            "severity": "info",
            "lineStart": 665,
            "rationale": "For unsigned integers, != 0 is equivalent for non-zero checks and can compile slightly cheaper.",
            "confidence": 0.7,
            "estL1Delta": null,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "nonzero-comparison",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "require(amount != 0, \"ZERO_AMOUNT\");",
            "patch": {
              "newText": "        require(amount != 0, \"ZERO_AMOUNT\");",
              "oldText": "        require(amount > 0, \"ZERO_AMOUNT\");"
            },
            "title": "Use != 0 for unsigned non-zero checks",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:728",
            "before": "require(amount > 0, \"ZERO_AMOUNT\");",
            "safety": "safe",
            "newText": "        require(amount != 0, \"ZERO_AMOUNT\");",
            "oldText": "        require(amount > 0, \"ZERO_AMOUNT\");",
            "category": "computation",
            "severity": "info",
            "lineStart": 728,
            "rationale": "For unsigned integers, != 0 is equivalent for non-zero checks and can compile slightly cheaper.",
            "confidence": 0.7,
            "estL1Delta": null,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "nonzero-comparison",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "require(sellAmount != 0 && minBuyAmount != 0, \"ZERO_AMOUNT\");",
            "patch": {
              "newText": "        require(sellAmount != 0 && minBuyAmount != 0, \"ZERO_AMOUNT\");",
              "oldText": "        require(sellAmount > 0 && minBuyAmount > 0, \"ZERO_AMOUNT\");"
            },
            "title": "Use != 0 for unsigned non-zero checks",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:864",
            "before": "require(sellAmount > 0 && minBuyAmount > 0, \"ZERO_AMOUNT\");",
            "safety": "safe",
            "newText": "        require(sellAmount != 0 && minBuyAmount != 0, \"ZERO_AMOUNT\");",
            "oldText": "        require(sellAmount > 0 && minBuyAmount > 0, \"ZERO_AMOUNT\");",
            "category": "computation",
            "severity": "info",
            "lineStart": 864,
            "rationale": "For unsigned integers, != 0 is equivalent for non-zero checks and can compile slightly cheaper.",
            "confidence": 0.7,
            "estL1Delta": null,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "nonzero-comparison",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "if (arbitraryData.length != 0 && implementation != address(0)) {",
            "patch": {
              "newText": "        if (arbitraryData.length != 0 && implementation != address(0)) {",
              "oldText": "        if (arbitraryData.length > 0 && implementation != address(0)) {"
            },
            "title": "Use != 0 for unsigned non-zero checks",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1224",
            "before": "if (arbitraryData.length > 0 && implementation != address(0)) {",
            "safety": "safe",
            "newText": "        if (arbitraryData.length != 0 && implementation != address(0)) {",
            "oldText": "        if (arbitraryData.length > 0 && implementation != address(0)) {",
            "category": "computation",
            "severity": "info",
            "lineStart": 1224,
            "rationale": "For unsigned integers, != 0 is equivalent for non-zero checks and can compile slightly cheaper.",
            "confidence": 0.7,
            "estL1Delta": null,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "nonzero-comparison",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "require(maxAmount != 0, \"ZERO_MAX\");",
            "patch": {
              "newText": "        require(maxAmount != 0, \"ZERO_MAX\");",
              "oldText": "        require(maxAmount > 0, \"ZERO_MAX\");"
            },
            "title": "Use != 0 for unsigned non-zero checks",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1248",
            "before": "require(maxAmount > 0, \"ZERO_MAX\");",
            "safety": "safe",
            "newText": "        require(maxAmount != 0, \"ZERO_MAX\");",
            "oldText": "        require(maxAmount > 0, \"ZERO_MAX\");",
            "category": "computation",
            "severity": "info",
            "lineStart": 1248,
            "rationale": "For unsigned integers, != 0 is equivalent for non-zero checks and can compile slightly cheaper.",
            "confidence": 0.7,
            "estL1Delta": null,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "bitmap-bools",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "mapping(uint256 => uint256) bitmap; // pack 256 flags per slot",
            "patch": {
              "newText": "    mapping(bytes32 => bool) public reportExists; // REVIEW: high-volume bool flags can be bitmap-packed",
              "oldText": "    mapping(bytes32 => bool) public reportExists;"
            },
            "title": "Bitmap-pack boolean flags",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:221",
            "before": "mapping(bytes32 => bool) public reportExists;",
            "safety": "review",
            "newText": "    mapping(bytes32 => bool) public reportExists; // REVIEW: high-volume bool flags can be bitmap-packed",
            "oldText": "    mapping(bytes32 => bool) public reportExists;",
            "category": "storage",
            "severity": "medium",
            "lineStart": 221,
            "rationale": "Bitmap packing can reduce many boolean SSTOREs from one slot per flag to one slot per 256 flags.",
            "confidence": 0.62,
            "estL1Delta": null,
            "estL2Delta": 20000,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 20000,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "bitmap-bools",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "mapping(uint256 => uint256) bitmap; // pack 256 flags per slot",
            "patch": {
              "newText": "    mapping(address => bool) public keeper; // REVIEW: high-volume bool flags can be bitmap-packed",
              "oldText": "    mapping(address => bool) public keeper;"
            },
            "title": "Bitmap-pack boolean flags",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:230",
            "before": "mapping(address => bool) public keeper;",
            "safety": "review",
            "newText": "    mapping(address => bool) public keeper; // REVIEW: high-volume bool flags can be bitmap-packed",
            "oldText": "    mapping(address => bool) public keeper;",
            "category": "storage",
            "severity": "medium",
            "lineStart": 230,
            "rationale": "Bitmap packing can reduce many boolean SSTOREs from one slot per flag to one slot per 256 flags.",
            "confidence": 0.62,
            "estL1Delta": null,
            "estL2Delta": 20000,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 20000,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "bitmap-bools",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "mapping(uint256 => uint256) bitmap; // pack 256 flags per slot",
            "patch": {
              "newText": "    mapping(address => bool) public auditor; // REVIEW: high-volume bool flags can be bitmap-packed",
              "oldText": "    mapping(address => bool) public auditor;"
            },
            "title": "Bitmap-pack boolean flags",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:231",
            "before": "mapping(address => bool) public auditor;",
            "safety": "review",
            "newText": "    mapping(address => bool) public auditor; // REVIEW: high-volume bool flags can be bitmap-packed",
            "oldText": "    mapping(address => bool) public auditor;",
            "category": "storage",
            "severity": "medium",
            "lineStart": 231,
            "rationale": "Bitmap packing can reduce many boolean SSTOREs from one slot per flag to one slot per 256 flags.",
            "confidence": 0.62,
            "estL1Delta": null,
            "estL2Delta": 20000,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 20000,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "bitmap-bools",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "mapping(uint256 => uint256) bitmap; // pack 256 flags per slot",
            "patch": {
              "newText": "    mapping(address => bool) public strategyExecutor; // REVIEW: high-volume bool flags can be bitmap-packed",
              "oldText": "    mapping(address => bool) public strategyExecutor;"
            },
            "title": "Bitmap-pack boolean flags",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:232",
            "before": "mapping(address => bool) public strategyExecutor;",
            "safety": "review",
            "newText": "    mapping(address => bool) public strategyExecutor; // REVIEW: high-volume bool flags can be bitmap-packed",
            "oldText": "    mapping(address => bool) public strategyExecutor;",
            "category": "storage",
            "severity": "medium",
            "lineStart": 232,
            "rationale": "Bitmap packing can reduce many boolean SSTOREs from one slot per flag to one slot per 256 flags.",
            "confidence": 0.62,
            "estL1Delta": null,
            "estL2Delta": 20000,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 20000,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "bitmap-bools",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "mapping(uint256 => uint256) bitmap; // pack 256 flags per slot",
            "patch": {
              "newText": "    mapping(address => bool) public frozenAccount; // REVIEW: high-volume bool flags can be bitmap-packed",
              "oldText": "    mapping(address => bool) public frozenAccount;"
            },
            "title": "Bitmap-pack boolean flags",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:233",
            "before": "mapping(address => bool) public frozenAccount;",
            "safety": "review",
            "newText": "    mapping(address => bool) public frozenAccount; // REVIEW: high-volume bool flags can be bitmap-packed",
            "oldText": "    mapping(address => bool) public frozenAccount;",
            "category": "storage",
            "severity": "medium",
            "lineStart": 233,
            "rationale": "Bitmap packing can reduce many boolean SSTOREs from one slot per flag to one slot per 256 flags.",
            "confidence": 0.62,
            "estL1Delta": null,
            "estL2Delta": 20000,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 20000,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "bitmap-bools",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "mapping(uint256 => uint256) bitmap; // pack 256 flags per slot",
            "patch": {
              "newText": "    mapping(address => bool) public allowlistedHook; // REVIEW: high-volume bool flags can be bitmap-packed",
              "oldText": "    mapping(address => bool) public allowlistedHook;"
            },
            "title": "Bitmap-pack boolean flags",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:234",
            "before": "mapping(address => bool) public allowlistedHook;",
            "safety": "review",
            "newText": "    mapping(address => bool) public allowlistedHook; // REVIEW: high-volume bool flags can be bitmap-packed",
            "oldText": "    mapping(address => bool) public allowlistedHook;",
            "category": "storage",
            "severity": "medium",
            "lineStart": 234,
            "rationale": "Bitmap packing can reduce many boolean SSTOREs from one slot per flag to one slot per 256 flags.",
            "confidence": 0.62,
            "estL1Delta": null,
            "estL2Delta": 20000,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 20000,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "bitmap-bools",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "mapping(uint256 => uint256) bitmap; // pack 256 flags per slot",
            "patch": {
              "newText": "    mapping(bytes32 => bool) public consumedMessages; // REVIEW: high-volume bool flags can be bitmap-packed",
              "oldText": "    mapping(bytes32 => bool) public consumedMessages;"
            },
            "title": "Bitmap-pack boolean flags",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:242",
            "before": "mapping(bytes32 => bool) public consumedMessages;",
            "safety": "review",
            "newText": "    mapping(bytes32 => bool) public consumedMessages; // REVIEW: high-volume bool flags can be bitmap-packed",
            "oldText": "    mapping(bytes32 => bool) public consumedMessages;",
            "category": "storage",
            "severity": "medium",
            "lineStart": 242,
            "rationale": "Bitmap packing can reduce many boolean SSTOREs from one slot per flag to one slot per 256 flags.",
            "confidence": 0.62,
            "estL1Delta": null,
            "estL2Delta": 20000,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 20000,
            "estimatedDataBytesSaved": null
          },
          {
            "id": "remove-zero-init",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i; i < marketList.length; i++) {",
            "patch": {
              "newText": "        for (uint256 i; i < marketList.length; i++) {",
              "oldText": "        for (uint256 i = 0; i < marketList.length; i++) {"
            },
            "title": "Remove redundant zero initialization",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:461",
            "before": "for (uint256 i = 0; i < marketList.length; i++) {",
            "safety": "safe",
            "newText": "        for (uint256 i; i < marketList.length; i++) {",
            "oldText": "        for (uint256 i = 0; i < marketList.length; i++) {",
            "category": "deployment",
            "severity": "info",
            "lineStart": 461,
            "rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
            "confidence": 0.86,
            "estL1Delta": 4,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": 4
          },
          {
            "id": "remove-zero-init",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i; i < ids.length; i++) {",
            "patch": {
              "newText": "        for (uint256 i; i < ids.length; i++) {",
              "oldText": "        for (uint256 i = 0; i < ids.length; i++) {"
            },
            "title": "Remove redundant zero initialization",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:630",
            "before": "for (uint256 i = 0; i < ids.length; i++) {",
            "safety": "safe",
            "newText": "        for (uint256 i; i < ids.length; i++) {",
            "oldText": "        for (uint256 i = 0; i < ids.length; i++) {",
            "category": "deployment",
            "severity": "info",
            "lineStart": 630,
            "rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
            "confidence": 0.86,
            "estL1Delta": 4,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": 4
          },
          {
            "id": "remove-zero-init",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i; i < ids.length; i++) {",
            "patch": {
              "newText": "        for (uint256 i; i < ids.length; i++) {",
              "oldText": "        for (uint256 i = 0; i < ids.length; i++) {"
            },
            "title": "Remove redundant zero initialization",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:642",
            "before": "for (uint256 i = 0; i < ids.length; i++) {",
            "safety": "safe",
            "newText": "        for (uint256 i; i < ids.length; i++) {",
            "oldText": "        for (uint256 i = 0; i < ids.length; i++) {",
            "category": "deployment",
            "severity": "info",
            "lineStart": 642,
            "rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
            "confidence": 0.86,
            "estL1Delta": 4,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": 4
          },
          {
            "id": "remove-zero-init",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i; i < tags.length; i++) {",
            "patch": {
              "newText": "        for (uint256 i; i < tags.length; i++) {",
              "oldText": "        for (uint256 i = 0; i < tags.length; i++) {"
            },
            "title": "Remove redundant zero initialization",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:951",
            "before": "for (uint256 i = 0; i < tags.length; i++) {",
            "safety": "safe",
            "newText": "        for (uint256 i; i < tags.length; i++) {",
            "oldText": "        for (uint256 i = 0; i < tags.length; i++) {",
            "category": "deployment",
            "severity": "info",
            "lineStart": 951,
            "rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
            "confidence": 0.86,
            "estL1Delta": 4,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": 4
          },
          {
            "id": "remove-zero-init",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i; i < inputs.length; i++) {",
            "patch": {
              "newText": "        for (uint256 i; i < inputs.length; i++) {",
              "oldText": "        for (uint256 i = 0; i < inputs.length; i++) {"
            },
            "title": "Remove redundant zero initialization",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:966",
            "before": "for (uint256 i = 0; i < inputs.length; i++) {",
            "safety": "safe",
            "newText": "        for (uint256 i; i < inputs.length; i++) {",
            "oldText": "        for (uint256 i = 0; i < inputs.length; i++) {",
            "category": "deployment",
            "severity": "info",
            "lineStart": 966,
            "rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
            "confidence": 0.86,
            "estL1Delta": 4,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": 4
          },
          {
            "id": "remove-zero-init",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 count;",
            "patch": {
              "newText": "        uint256 count;",
              "oldText": "        uint256 count = 0;"
            },
            "title": "Remove redundant zero initialization",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:995",
            "before": "uint256 count = 0;",
            "safety": "safe",
            "newText": "        uint256 count;",
            "oldText": "        uint256 count = 0;",
            "category": "deployment",
            "severity": "info",
            "lineStart": 995,
            "rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
            "confidence": 0.86,
            "estL1Delta": 4,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": 4
          },
          {
            "id": "remove-zero-init",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 j; j < count; j++) {",
            "patch": {
              "newText": "        for (uint256 j; j < count; j++) {",
              "oldText": "        for (uint256 j = 0; j < count; j++) {"
            },
            "title": "Remove redundant zero initialization",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1006",
            "before": "for (uint256 j = 0; j < count; j++) {",
            "safety": "safe",
            "newText": "        for (uint256 j; j < count; j++) {",
            "oldText": "        for (uint256 j = 0; j < count; j++) {",
            "category": "deployment",
            "severity": "info",
            "lineStart": 1006,
            "rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
            "confidence": 0.86,
            "estL1Delta": 4,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": 4
          },
          {
            "id": "remove-zero-init",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i; i < allPositionIds.length; i++) {",
            "patch": {
              "newText": "        for (uint256 i; i < allPositionIds.length; i++) {",
              "oldText": "        for (uint256 i = 0; i < allPositionIds.length; i++) {"
            },
            "title": "Remove redundant zero initialization",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1330",
            "before": "for (uint256 i = 0; i < allPositionIds.length; i++) {",
            "safety": "safe",
            "newText": "        for (uint256 i; i < allPositionIds.length; i++) {",
            "oldText": "        for (uint256 i = 0; i < allPositionIds.length; i++) {",
            "category": "deployment",
            "severity": "info",
            "lineStart": 1330,
            "rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
            "confidence": 0.86,
            "estL1Delta": 4,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": 4
          },
          {
            "id": "remove-zero-init",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i; i < allLoanIds.length; i++) {",
            "patch": {
              "newText": "        for (uint256 i; i < allLoanIds.length; i++) {",
              "oldText": "        for (uint256 i = 0; i < allLoanIds.length; i++) {"
            },
            "title": "Remove redundant zero initialization",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1344",
            "before": "for (uint256 i = 0; i < allLoanIds.length; i++) {",
            "safety": "safe",
            "newText": "        for (uint256 i; i < allLoanIds.length; i++) {",
            "oldText": "        for (uint256 i = 0; i < allLoanIds.length; i++) {",
            "category": "deployment",
            "severity": "info",
            "lineStart": 1344,
            "rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
            "confidence": 0.86,
            "estL1Delta": 4,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": 4
          },
          {
            "id": "remove-zero-init",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i; i < allPositionIds.length; i++) {",
            "patch": {
              "newText": "        for (uint256 i; i < allPositionIds.length; i++) {",
              "oldText": "        for (uint256 i = 0; i < allPositionIds.length; i++) {"
            },
            "title": "Remove redundant zero initialization",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1358",
            "before": "for (uint256 i = 0; i < allPositionIds.length; i++) {",
            "safety": "safe",
            "newText": "        for (uint256 i; i < allPositionIds.length; i++) {",
            "oldText": "        for (uint256 i = 0; i < allPositionIds.length; i++) {",
            "category": "deployment",
            "severity": "info",
            "lineStart": 1358,
            "rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
            "confidence": 0.86,
            "estL1Delta": 4,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": 4
          },
          {
            "id": "remove-zero-init",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 iterations;",
            "patch": {
              "newText": "        uint256 iterations;",
              "oldText": "        uint256 iterations = 0;"
            },
            "title": "Remove redundant zero initialization",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1373",
            "before": "uint256 iterations = 0;",
            "safety": "safe",
            "newText": "        uint256 iterations;",
            "oldText": "        uint256 iterations = 0;",
            "category": "deployment",
            "severity": "info",
            "lineStart": 1373,
            "rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
            "confidence": 0.86,
            "estL1Delta": 4,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": 4
          },
          {
            "id": "remove-zero-init",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "uint256 i;",
            "patch": {
              "newText": "        uint256 i;",
              "oldText": "        uint256 i = 0;"
            },
            "title": "Remove redundant zero initialization",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1374",
            "before": "uint256 i = 0;",
            "safety": "safe",
            "newText": "        uint256 i;",
            "oldText": "        uint256 i = 0;",
            "category": "deployment",
            "severity": "info",
            "lineStart": 1374,
            "rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
            "confidence": 0.86,
            "estL1Delta": 4,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": 4
          },
          {
            "id": "remove-zero-init",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i; i < length; i++) {",
            "patch": {
              "newText": "        for (uint256 i; i < length; i++) {",
              "oldText": "        for (uint256 i = 0; i < length; i++) {"
            },
            "title": "Remove redundant zero initialization",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1404",
            "before": "for (uint256 i = 0; i < length; i++) {",
            "safety": "safe",
            "newText": "        for (uint256 i; i < length; i++) {",
            "oldText": "        for (uint256 i = 0; i < length; i++) {",
            "category": "deployment",
            "severity": "info",
            "lineStart": 1404,
            "rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
            "confidence": 0.86,
            "estL1Delta": 4,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": 4
          },
          {
            "id": "remove-zero-init",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 i; i < pids.length && i < scanPositions; i++) {",
            "patch": {
              "newText": "        for (uint256 i; i < pids.length && i < scanPositions; i++) {",
              "oldText": "        for (uint256 i = 0; i < pids.length && i < scanPositions; i++) {"
            },
            "title": "Remove redundant zero initialization",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1421",
            "before": "for (uint256 i = 0; i < pids.length && i < scanPositions; i++) {",
            "safety": "safe",
            "newText": "        for (uint256 i; i < pids.length && i < scanPositions; i++) {",
            "oldText": "        for (uint256 i = 0; i < pids.length && i < scanPositions; i++) {",
            "category": "deployment",
            "severity": "info",
            "lineStart": 1421,
            "rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
            "confidence": 0.86,
            "estL1Delta": 4,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": 4
          },
          {
            "id": "remove-zero-init",
            "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
            "after": "for (uint256 j; j < lids.length && j < scanLoans; j++) {",
            "patch": {
              "newText": "        for (uint256 j; j < lids.length && j < scanLoans; j++) {",
              "oldText": "        for (uint256 j = 0; j < lids.length && j < scanLoans; j++) {"
            },
            "title": "Remove redundant zero initialization",
            "where": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol:1429",
            "before": "for (uint256 j = 0; j < lids.length && j < scanLoans; j++) {",
            "safety": "safe",
            "newText": "        for (uint256 j; j < lids.length && j < scanLoans; j++) {",
            "oldText": "        for (uint256 j = 0; j < lids.length && j < scanLoans; j++) {",
            "category": "deployment",
            "severity": "info",
            "lineStart": 1429,
            "rationale": "Solidity initializes variables to zero by default; explicit zero init adds bytecode/instructions.",
            "confidence": 0.86,
            "estL1Delta": 4,
            "estL2Delta": 3,
            "annualizedBasis": "Static deterministic estimate. Exact runtime deltas require queued Foundry snapshots with representative inputs.",
            "estimatedGasSaved": 3,
            "estimatedDataBytesSaved": 4
          }
        ]
      }
    },
    "scanId": "2a9cf6d3-9ba0-445d-a666-cdb225714e11",
    "createdAt": "2026-06-16T15:17:39.913Z",
    "riskScore": 100,
    "contractName": "MantleMainnetHyperVaultExtended_Suite__5_contracts_",
    "severityCounts": {
      "low": 67,
      "high": 20,
      "info": 78,
      "medium": 27,
      "critical": 0
    },
    "executiveSummary": "Archon completed a read-only Mantle Mainnet audit of MantleMainnetHyperVaultExtended_Suite__5_contracts_ and found 192 deterministic findings. The highest-priority issue is Weak Prng, with risk score 100/100 based on severity-weighted findings. The `claimWeakRandomReward` function derives randomness solely from on-chain, predictable values (block.timestamp, block.prevrandao, block.number, msg.sender, tx.origin, contract token balance). An attacker can compute the same hash in advance or within the same block, then call the function to claim rewards at a favorable `maxAmount` threshold deterministically. Review the recommended fixes and run regression tests before deployment."
  },
  "schema": "archon.proof.metadata.v1",
  "erc8004": {
    "verifiedConfig": true,
    "agentIdentityRef": "eip155:5000:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432:97",
    "identityRegistry": "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432",
    "reputationRegistry": "0x8004BAa17C55a88189AE136b182e5fdA19dE9b63",
    "validationRegistry": null
  },
  "product": "Archon",
  "findings": [
    {
      "id": "e1ec5be4-25a7-4bf3-b524-f1bcec251123",
      "title": "Weak Prng",
      "category": "weak-prng",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1268,
        "lineStart": 1247
      },
      "severity": "high"
    },
    {
      "id": "b8a74c67-1188-40ea-874b-20d727616fda",
      "title": "Controlled Delegatecall",
      "category": "controlled-delegatecall",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1199,
        "lineStart": 1195
      },
      "severity": "high"
    },
    {
      "id": "e0f133eb-0fec-4f67-bc66-223e88702efa",
      "title": "Encode Packed Collision",
      "category": "encode-packed-collision",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1233,
        "lineStart": 1210
      },
      "severity": "high"
    },
    {
      "id": "bb2093d9-1803-438d-bd8a-05aa710ea190",
      "title": "Reentrancy Balance",
      "category": "reentrancy-balance",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 850,
        "lineStart": 833
      },
      "severity": "high"
    },
    {
      "id": "c7825c25-03df-4dcf-b972-a3669200b93d",
      "title": "Unchecked Transfer",
      "category": "unchecked-transfer",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 569,
        "lineStart": 554
      },
      "severity": "high"
    },
    {
      "id": "ccf7e768-f6bb-464f-a8c3-4f2b35990da4",
      "title": "Unchecked Transfer",
      "category": "unchecked-transfer",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 906,
        "lineStart": 893
      },
      "severity": "high"
    },
    {
      "id": "9d7a8885-3dd9-4690-9f59-71e6ed441062",
      "title": "Unchecked Transfer",
      "category": "unchecked-transfer",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 538,
        "lineStart": 486
      },
      "severity": "high"
    },
    {
      "id": "b325fe21-6990-4765-bab2-f3282b26214b",
      "title": "Unchecked Transfer",
      "category": "unchecked-transfer",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 703,
        "lineStart": 653
      },
      "severity": "high"
    },
    {
      "id": "b7d97fdf-4fe8-4da6-bcdd-e82330255c64",
      "title": "Unchecked Transfer",
      "category": "unchecked-transfer",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 623,
        "lineStart": 598
      },
      "severity": "high"
    },
    {
      "id": "fef3c1f0-fd30-45dd-a71d-9d153b95482e",
      "title": "Unchecked Transfer",
      "category": "unchecked-transfer",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 850,
        "lineStart": 833
      },
      "severity": "high"
    },
    {
      "id": "974824d7-f275-4acd-82ec-066309f340b4",
      "title": "Unchecked Transfer",
      "category": "unchecked-transfer",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 789,
        "lineStart": 757
      },
      "severity": "high"
    },
    {
      "id": "c39e857b-8a87-4645-a193-2cbe958ff75c",
      "title": "Unchecked Transfer",
      "category": "unchecked-transfer",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 917,
        "lineStart": 908
      },
      "severity": "high"
    },
    {
      "id": "bcd633be-dadd-44d2-982f-3c61e15fcb22",
      "title": "Unchecked Transfer",
      "category": "unchecked-transfer",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 886,
        "lineStart": 856
      },
      "severity": "high"
    },
    {
      "id": "f09205e1-1473-4021-af56-8198689ab106",
      "title": "Unchecked Transfer",
      "category": "unchecked-transfer",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1299,
        "lineStart": 1295
      },
      "severity": "high"
    },
    {
      "id": "a794a353-069c-432b-b7d7-b08b07844f84",
      "title": "Unchecked Transfer",
      "category": "unchecked-transfer",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1057,
        "lineStart": 1044
      },
      "severity": "high"
    },
    {
      "id": "aca234f6-f7c9-4702-a9bb-a945b8bf9276",
      "title": "Unchecked Transfer",
      "category": "unchecked-transfer",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 751,
        "lineStart": 723
      },
      "severity": "high"
    },
    {
      "id": "1ca4ee82-624b-4be5-8ac4-5426f1a137fd",
      "title": "Unchecked Transfer",
      "category": "unchecked-transfer",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1268,
        "lineStart": 1247
      },
      "severity": "high"
    },
    {
      "id": "83b9c7f5-0d00-430d-b1b0-e31538091453",
      "title": "Unchecked Transfer",
      "category": "unchecked-transfer",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1289,
        "lineStart": 1282
      },
      "severity": "high"
    },
    {
      "id": "afa84ffa-1200-4778-afa3-b2e78c437db6",
      "title": "Unchecked Transfer",
      "category": "unchecked-transfer",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 592,
        "lineStart": 575
      },
      "severity": "high"
    },
    {
      "id": "3c503a63-e21d-4b37-ae8e-01f64cf414f5",
      "title": "Incorrect Equality",
      "category": "incorrect-equality",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 480,
        "lineStart": 466
      },
      "severity": "medium"
    },
    {
      "id": "da836799-17a2-4faa-aacb-34e2ce56c47a",
      "title": "Reentrancy No Eth",
      "category": "reentrancy-no-eth",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 592,
        "lineStart": 575
      },
      "severity": "medium"
    },
    {
      "id": "779cccf5-11c2-4efb-bd84-1fbe510d195c",
      "title": "Reentrancy No Eth",
      "category": "reentrancy-no-eth",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 623,
        "lineStart": 598
      },
      "severity": "medium"
    },
    {
      "id": "014383e2-e64c-477e-a1cd-a14503145ebb",
      "title": "Reentrancy No Eth",
      "category": "reentrancy-no-eth",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 751,
        "lineStart": 723
      },
      "severity": "medium"
    },
    {
      "id": "1d853a1d-3bfc-4abb-ae97-6e66af1be515",
      "title": "Reentrancy No Eth",
      "category": "reentrancy-no-eth",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 906,
        "lineStart": 893
      },
      "severity": "medium"
    },
    {
      "id": "654d1acf-9d5c-45a3-95c5-e5b30c1373ad",
      "title": "Reentrancy No Eth",
      "category": "reentrancy-no-eth",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 538,
        "lineStart": 486
      },
      "severity": "medium"
    },
    {
      "id": "37d24c18-8879-49b1-9da8-47517ba9dd8b",
      "title": "Reentrancy No Eth",
      "category": "reentrancy-no-eth",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 789,
        "lineStart": 757
      },
      "severity": "medium"
    },
    {
      "id": "7a7bdfc4-43b2-45c3-8e7f-9f27b68666ab",
      "title": "Reentrancy No Eth",
      "category": "reentrancy-no-eth",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 703,
        "lineStart": 653
      },
      "severity": "medium"
    },
    {
      "id": "a24144e6-18c3-4998-85dd-8b7012db63b8",
      "title": "Reentrancy No Eth",
      "category": "reentrancy-no-eth",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 850,
        "lineStart": 833
      },
      "severity": "medium"
    },
    {
      "id": "58949fd4-b4c1-4358-9f06-64716d6d3f12",
      "title": "Reentrancy No Eth",
      "category": "reentrancy-no-eth",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 569,
        "lineStart": 554
      },
      "severity": "medium"
    },
    {
      "id": "51103755-5e14-434c-8810-fd374a82cd2b",
      "title": "Tx Origin",
      "category": "tx-origin",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 375,
        "lineStart": 372
      },
      "severity": "medium"
    },
    {
      "id": "5371c126-4fef-4ec7-a543-73c749602ba7",
      "title": "Tx Origin",
      "category": "tx-origin",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1289,
        "lineStart": 1282
      },
      "severity": "medium"
    },
    {
      "id": "85a5b324-31d8-490f-85d5-d6d91a9fd889",
      "title": "Unchecked Lowlevel",
      "category": "unchecked-lowlevel",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1233,
        "lineStart": 1210
      },
      "severity": "medium"
    },
    {
      "id": "3cb50732-59d0-4215-827c-bf5fe8fa5bc3",
      "title": "Unchecked Lowlevel",
      "category": "unchecked-lowlevel",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 623,
        "lineStart": 598
      },
      "severity": "medium"
    },
    {
      "id": "6cc38f1a-25af-48d5-bbb0-f6d9a397d08b",
      "title": "Unused Return",
      "category": "unused-return",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 822,
        "lineStart": 811
      },
      "severity": "medium"
    },
    {
      "id": "7bf83d82-5c1f-4e0e-9c30-61f4accbf32b",
      "title": "Unused Return",
      "category": "unused-return",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 623,
        "lineStart": 598
      },
      "severity": "medium"
    },
    {
      "id": "1f5ec416-fa67-4738-a4da-a975aec2c098",
      "title": "Events Access",
      "category": "events-access",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 333,
        "lineStart": 331
      },
      "severity": "low"
    },
    {
      "id": "8381f51d-6105-4412-995f-aca3acf5bb76",
      "title": "Events Access",
      "category": "events-access",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 393,
        "lineStart": 391
      },
      "severity": "low"
    },
    {
      "id": "79aa705b-2f0b-4d05-a294-f97ba90d0671",
      "title": "Events Maths",
      "category": "events-maths",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 361,
        "lineStart": 359
      },
      "severity": "low"
    },
    {
      "id": "608398a2-9d01-4dea-a224-bbc439e02ca5",
      "title": "Events Maths",
      "category": "events-maths",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 357,
        "lineStart": 355
      },
      "severity": "low"
    },
    {
      "id": "468e0c20-085d-4754-938c-b5cd6d430ce5",
      "title": "Events Maths",
      "category": "events-maths",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 353,
        "lineStart": 351
      },
      "severity": "low"
    },
    {
      "id": "01a1505d-2e5a-48c4-8d55-6af7ba18bad5",
      "title": "Missing Zero Check",
      "category": "missing-zero-check",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 381,
        "lineStart": 381
      },
      "severity": "low"
    },
    {
      "id": "9b106bba-20e5-4a5b-93f2-78e2b8279498",
      "title": "Missing Zero Check",
      "category": "missing-zero-check",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 391,
        "lineStart": 391
      },
      "severity": "low"
    },
    {
      "id": "97214305-003f-4149-b0dc-39108b400ca2",
      "title": "Missing Zero Check",
      "category": "missing-zero-check",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1195,
        "lineStart": 1195
      },
      "severity": "low"
    },
    {
      "id": "a2b8e443-a745-47ac-844f-ba7517477d35",
      "title": "Missing Zero Check",
      "category": "missing-zero-check",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 335,
        "lineStart": 335
      },
      "severity": "low"
    },
    {
      "id": "7198145a-c9e6-41ef-a267-970197fbb155",
      "title": "Missing Zero Check",
      "category": "missing-zero-check",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1185,
        "lineStart": 1185
      },
      "severity": "low"
    },
    {
      "id": "bbbbc969-f077-456b-8420-bb34fb87c84b",
      "title": "Missing Zero Check",
      "category": "missing-zero-check",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1467,
        "lineStart": 1467
      },
      "severity": "low"
    },
    {
      "id": "0d12caee-a9e1-44f8-90a9-e1e076d1189e",
      "title": "Missing Zero Check",
      "category": "missing-zero-check",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 297,
        "lineStart": 297
      },
      "severity": "low"
    },
    {
      "id": "ee9dc969-32a9-4e7a-b6c4-88ab469ca2e9",
      "title": "Missing Zero Check",
      "category": "missing-zero-check",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 372,
        "lineStart": 372
      },
      "severity": "low"
    },
    {
      "id": "0f02b9a7-fb5a-4e91-b003-83fec92aa4cb",
      "title": "Missing Zero Check",
      "category": "missing-zero-check",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 395,
        "lineStart": 395
      },
      "severity": "low"
    },
    {
      "id": "16bc2d9c-c684-4793-b5e6-200b1533cfd0",
      "title": "Missing Zero Check",
      "category": "missing-zero-check",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 363,
        "lineStart": 363
      },
      "severity": "low"
    },
    {
      "id": "4480859c-0a04-4c0e-9ed3-b03c5974932d",
      "title": "Missing Zero Check",
      "category": "missing-zero-check",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 331,
        "lineStart": 331
      },
      "severity": "low"
    },
    {
      "id": "11fe3af6-6e89-4c19-b0c1-2dab92063831",
      "title": "Missing Zero Check",
      "category": "missing-zero-check",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1235,
        "lineStart": 1235
      },
      "severity": "low"
    },
    {
      "id": "9c915ced-7db8-443f-bb35-cb05d41beb3c",
      "title": "Calls Loop",
      "category": "calls-loop",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 592,
        "lineStart": 575
      },
      "severity": "low"
    },
    {
      "id": "e9e25f08-f478-49b4-87c0-d0125ae526d6",
      "title": "Reentrancy Benign",
      "category": "reentrancy-benign",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 703,
        "lineStart": 653
      },
      "severity": "low"
    },
    {
      "id": "32b4e2d0-024d-48bc-86c6-de7eacd69255",
      "title": "Reentrancy Benign",
      "category": "reentrancy-benign",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 538,
        "lineStart": 486
      },
      "severity": "low"
    },
    {
      "id": "a2c735f0-341e-4360-9718-d14e05ceb79f",
      "title": "Reentrancy Benign",
      "category": "reentrancy-benign",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 886,
        "lineStart": 856
      },
      "severity": "low"
    },
    {
      "id": "9fa9efe3-5adb-4994-aebf-7c8548e2cee5",
      "title": "Reentrancy Benign",
      "category": "reentrancy-benign",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 592,
        "lineStart": 575
      },
      "severity": "low"
    },
    {
      "id": "700ab760-9124-4d4a-85e6-d067d0a78a70",
      "title": "Reentrancy Benign",
      "category": "reentrancy-benign",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 789,
        "lineStart": 757
      },
      "severity": "low"
    },
    {
      "id": "6c186324-dba8-45c2-9f8f-29c6bb3e6e44",
      "title": "Reentrancy Events",
      "category": "reentrancy-events",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1233,
        "lineStart": 1210
      },
      "severity": "low"
    },
    {
      "id": "949a1544-c4cb-441c-844b-4f5eba310bd4",
      "title": "Reentrancy Events",
      "category": "reentrancy-events",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 569,
        "lineStart": 554
      },
      "severity": "low"
    },
    {
      "id": "1a0b2c65-f45c-40d0-80b5-01044539e647",
      "title": "Reentrancy Events",
      "category": "reentrancy-events",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 789,
        "lineStart": 757
      },
      "severity": "low"
    },
    {
      "id": "29b7113a-fae3-4088-a2fb-5b192b681eae",
      "title": "Reentrancy Events",
      "category": "reentrancy-events",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1299,
        "lineStart": 1295
      },
      "severity": "low"
    },
    {
      "id": "6fda29cf-e34e-448d-9b98-b7f604117533",
      "title": "Reentrancy Events",
      "category": "reentrancy-events",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1126,
        "lineStart": 1111
      },
      "severity": "low"
    },
    {
      "id": "fa988229-94e0-4f42-a219-421c50997e65",
      "title": "Reentrancy Events",
      "category": "reentrancy-events",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 538,
        "lineStart": 486
      },
      "severity": "low"
    },
    {
      "id": "ca10c535-0c78-401a-84f1-b958d9bfd76e",
      "title": "Reentrancy Events",
      "category": "reentrancy-events",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1268,
        "lineStart": 1247
      },
      "severity": "low"
    },
    {
      "id": "a746a744-e86f-41e1-9fe1-54f99aab8635",
      "title": "Reentrancy Events",
      "category": "reentrancy-events",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 886,
        "lineStart": 856
      },
      "severity": "low"
    },
    {
      "id": "2ff69f93-496a-434c-b967-f14d8ff47257",
      "title": "Reentrancy Events",
      "category": "reentrancy-events",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 906,
        "lineStart": 893
      },
      "severity": "low"
    },
    {
      "id": "ff660fd0-e0e8-4c44-a24a-8191b1f5c2a9",
      "title": "Reentrancy Events",
      "category": "reentrancy-events",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 703,
        "lineStart": 653
      },
      "severity": "low"
    },
    {
      "id": "24ec458d-b853-4202-b7e3-54f263530b05",
      "title": "Reentrancy Events",
      "category": "reentrancy-events",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1179,
        "lineStart": 1161
      },
      "severity": "low"
    },
    {
      "id": "e565f7d2-9f1e-4ba4-9a89-5d17e7ec6141",
      "title": "Reentrancy Events",
      "category": "reentrancy-events",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 623,
        "lineStart": 598
      },
      "severity": "low"
    },
    {
      "id": "477e394f-019e-4b2f-b866-54c6b8a08591",
      "title": "Reentrancy Events",
      "category": "reentrancy-events",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 592,
        "lineStart": 575
      },
      "severity": "low"
    },
    {
      "id": "4c22df5d-ee65-4594-85d6-822ec99e6b94",
      "title": "Reentrancy Events",
      "category": "reentrancy-events",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1289,
        "lineStart": 1282
      },
      "severity": "low"
    },
    {
      "id": "9c454edc-121f-44af-a093-8ea9ef2a7b8a",
      "title": "Reentrancy Events",
      "category": "reentrancy-events",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 751,
        "lineStart": 723
      },
      "severity": "low"
    },
    {
      "id": "a1b7be00-db75-4668-b79a-0063488ebdf5",
      "title": "Timestamp",
      "category": "timestamp",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1009,
        "lineStart": 993
      },
      "severity": "low"
    },
    {
      "id": "af859e26-19df-4804-a261-ec351d1ed8ca",
      "title": "Timestamp",
      "category": "timestamp",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 538,
        "lineStart": 486
      },
      "severity": "low"
    },
    {
      "id": "5dc1006c-781f-4e25-bfc4-abc61e2dea03",
      "title": "Timestamp",
      "category": "timestamp",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 647,
        "lineStart": 639
      },
      "severity": "low"
    },
    {
      "id": "6e1e45b3-30a3-460e-89c9-41987134d471",
      "title": "Timestamp",
      "category": "timestamp",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 789,
        "lineStart": 757
      },
      "severity": "low"
    },
    {
      "id": "359a62ca-3c91-4edc-9458-dab613beebf6",
      "title": "Timestamp",
      "category": "timestamp",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 751,
        "lineStart": 723
      },
      "severity": "low"
    },
    {
      "id": "a3d306a5-bf75-4e9d-b232-8c9456fb5686",
      "title": "Timestamp",
      "category": "timestamp",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 623,
        "lineStart": 598
      },
      "severity": "low"
    },
    {
      "id": "57ff8999-1540-4755-827a-9e16983d4557",
      "title": "Timestamp",
      "category": "timestamp",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 569,
        "lineStart": 554
      },
      "severity": "low"
    },
    {
      "id": "8074217b-e7a1-43d6-85f3-ab3879683d3b",
      "title": "Timestamp",
      "category": "timestamp",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 592,
        "lineStart": 575
      },
      "severity": "low"
    },
    {
      "id": "446a284e-d2a4-466c-b59a-7d96c60bb4d0",
      "title": "Timestamp",
      "category": "timestamp",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 906,
        "lineStart": 893
      },
      "severity": "low"
    },
    {
      "id": "ac9bada0-c86a-4324-b1b6-67dace9373d4",
      "title": "Timestamp",
      "category": "timestamp",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 480,
        "lineStart": 466
      },
      "severity": "low"
    },
    {
      "id": "c80381d9-cc31-47f5-8673-32e95faa8725",
      "title": "Timestamp",
      "category": "timestamp",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 850,
        "lineStart": 833
      },
      "severity": "low"
    },
    {
      "id": "c6a77e31-d3fa-4cda-91d1-54034a46eb48",
      "title": "Timestamp",
      "category": "timestamp",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1126,
        "lineStart": 1111
      },
      "severity": "low"
    },
    {
      "id": "2db2b8a2-a735-45ef-a862-87efb0dfa3d1",
      "title": "Timestamp",
      "category": "timestamp",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 703,
        "lineStart": 653
      },
      "severity": "low"
    },
    {
      "id": "1d4eedd4-e924-44d4-b20a-f088f44c3ccd",
      "title": "Costly Loop",
      "category": "costly-loop",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1391,
        "lineStart": 1372
      },
      "severity": "info"
    },
    {
      "id": "bb259e02-089a-425a-8655-6a921b8d4637",
      "title": "Costly Loop",
      "category": "costly-loop",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 959,
        "lineStart": 928
      },
      "severity": "info"
    },
    {
      "id": "45cbec4f-53b2-4fca-810e-dc26685aa96c",
      "title": "Low Level Calls",
      "category": "low-level-calls",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1179,
        "lineStart": 1161
      },
      "severity": "info"
    },
    {
      "id": "660048fa-82c0-4f39-9319-9c29334db4af",
      "title": "Low Level Calls",
      "category": "low-level-calls",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1126,
        "lineStart": 1111
      },
      "severity": "info"
    },
    {
      "id": "2d978463-7c34-44ac-ba5d-e903cb9f4e7d",
      "title": "Low Level Calls",
      "category": "low-level-calls",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 623,
        "lineStart": 598
      },
      "severity": "info"
    },
    {
      "id": "5b85b178-c49b-4cc8-b95f-7b4e3906b157",
      "title": "Low Level Calls",
      "category": "low-level-calls",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1199,
        "lineStart": 1195
      },
      "severity": "info"
    },
    {
      "id": "18faa2c9-c7e2-488c-b56f-0eb86fa4a243",
      "title": "Low Level Calls",
      "category": "low-level-calls",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1189,
        "lineStart": 1185
      },
      "severity": "info"
    },
    {
      "id": "6eb33625-7411-4551-9995-96c34ac76f00",
      "title": "Low Level Calls",
      "category": "low-level-calls",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1465,
        "lineStart": 1447
      },
      "severity": "info"
    },
    {
      "id": "e8c7a2cf-3b9b-4dba-849f-b0b48833bac2",
      "title": "Low Level Calls",
      "category": "low-level-calls",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1233,
        "lineStart": 1210
      },
      "severity": "info"
    },
    {
      "id": "207e6d49-6f0b-4a21-a477-2b2a5ef7ef0f",
      "title": "Cache Array Length",
      "category": "cache-array-length",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1358,
        "lineStart": 1358
      },
      "severity": "low"
    },
    {
      "id": "7a14e5b7-f0cc-441e-8564-631cdf78a2f0",
      "title": "Cache Array Length",
      "category": "cache-array-length",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 461,
        "lineStart": 461
      },
      "severity": "low"
    },
    {
      "id": "06c53bf8-4fe6-4f99-8cb7-0783416e09a2",
      "title": "Cache Array Length",
      "category": "cache-array-length",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1330,
        "lineStart": 1330
      },
      "severity": "low"
    },
    {
      "id": "1929d88c-6265-4cae-9682-784a06e1ed71",
      "title": "Cache Array Length",
      "category": "cache-array-length",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1344,
        "lineStart": 1344
      },
      "severity": "low"
    },
    {
      "id": "56dcc1e9-79c1-42c1-9fb5-1c4bfa30376d",
      "title": "Constable States",
      "category": "constable-states",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 92,
        "lineStart": 92
      },
      "severity": "low"
    },
    {
      "id": "c0db4304-17ab-4791-abe4-95d701a43f9e",
      "title": "Constable States",
      "category": "constable-states",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 104,
        "lineStart": 104
      },
      "severity": "low"
    },
    {
      "id": "ce6e181c-1665-4ccb-9493-acada854eba3",
      "title": "Constable States",
      "category": "constable-states",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 91,
        "lineStart": 91
      },
      "severity": "low"
    },
    {
      "id": "32127602-4d47-4524-acec-3e046450c9ac",
      "title": "Immutable States",
      "category": "immutable-states",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 87,
        "lineStart": 87
      },
      "severity": "low"
    },
    {
      "id": "5cdd6886-1829-4f55-8ab4-7234060e8623",
      "title": "tx.origin authorization can be phished through proxy calls",
      "category": "mantle-origin-auth",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": null,
        "lineStart": 15
      },
      "severity": "high"
    },
    {
      "id": "69734a27-257f-4d6d-b55c-739632f15da2",
      "title": "Timestamp-sensitive settlement lacks explicit tolerance window",
      "category": "mantle-timestamp-assumption",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": null,
        "lineStart": 448
      },
      "severity": "medium"
    },
    {
      "id": "a4048e31-5a36-4245-b6f4-dbdcee9a4ef7",
      "title": "Pack small storage variables into fewer slots",
      "category": "mantle-gas-optimizer/storage/storage-packing",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 166,
        "lineStart": 166
      },
      "severity": "medium"
    },
    {
      "id": "1a86e049-6a23-4f25-be1a-c069baef667b",
      "title": "Pack small storage variables into fewer slots",
      "category": "mantle-gas-optimizer/storage/storage-packing",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 189,
        "lineStart": 189
      },
      "severity": "medium"
    },
    {
      "id": "c32ea2d0-ed7d-4d28-b082-e7b1030f3fdd",
      "title": "Pack small storage variables into fewer slots",
      "category": "mantle-gas-optimizer/storage/storage-packing",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 210,
        "lineStart": 210
      },
      "severity": "medium"
    },
    {
      "id": "1a356777-2b85-4eb4-b616-0869e9859331",
      "title": "Review calldata parameter width",
      "category": "mantle-gas-optimizer/calldata/calldata-smaller-types",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 37,
        "lineStart": 37
      },
      "severity": "low"
    },
    {
      "id": "d081b171-a6fc-480c-a5a1-4862d0bbded9",
      "title": "Review calldata parameter width",
      "category": "mantle-gas-optimizer/calldata/calldata-smaller-types",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 39,
        "lineStart": 39
      },
      "severity": "low"
    },
    {
      "id": "f3510628-2ba7-46aa-905b-a46bb6603ecf",
      "title": "Review calldata parameter width",
      "category": "mantle-gas-optimizer/calldata/calldata-smaller-types",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 41,
        "lineStart": 41
      },
      "severity": "low"
    },
    {
      "id": "106db534-06d8-4953-bcf9-8d70f13e6d40",
      "title": "Review calldata parameter width",
      "category": "mantle-gas-optimizer/calldata/calldata-smaller-types",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 723,
        "lineStart": 723
      },
      "severity": "low"
    },
    {
      "id": "0fe8b1b8-dc2b-4866-a9ac-aaae118be1c8",
      "title": "Review calldata parameter width",
      "category": "mantle-gas-optimizer/calldata/calldata-smaller-types",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 811,
        "lineStart": 811
      },
      "severity": "low"
    },
    {
      "id": "d167477f-9e3b-467d-b5c8-fd9d39747110",
      "title": "Review calldata parameter width",
      "category": "mantle-gas-optimizer/calldata/calldata-smaller-types",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 833,
        "lineStart": 833
      },
      "severity": "low"
    },
    {
      "id": "bc304e64-95c9-4c21-84cf-7a865015d1b3",
      "title": "Review calldata parameter width",
      "category": "mantle-gas-optimizer/calldata/calldata-smaller-types",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1282,
        "lineStart": 1282
      },
      "severity": "low"
    },
    {
      "id": "26d88594-ec66-4a87-a4f3-c1158b2dfb28",
      "title": "Review calldata parameter width",
      "category": "mantle-gas-optimizer/calldata/calldata-smaller-types",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1295,
        "lineStart": 1295
      },
      "severity": "low"
    },
    {
      "id": "09f6fcad-39d0-43e3-a988-a2c81890739a",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 279,
        "lineStart": 279
      },
      "severity": "info"
    },
    {
      "id": "aa35275d-0686-4c83-8e71-57bd03ba0358",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 373,
        "lineStart": 373
      },
      "severity": "info"
    },
    {
      "id": "cc3649c7-d936-468a-925f-0977f6f9d811",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 400,
        "lineStart": 400
      },
      "severity": "info"
    },
    {
      "id": "efa8eb94-ca43-4922-8982-597f602ea2a7",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 494,
        "lineStart": 494
      },
      "severity": "info"
    },
    {
      "id": "82d0d460-5992-4003-a6f0-dad329e29b60",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 557,
        "lineStart": 557
      },
      "severity": "info"
    },
    {
      "id": "cd0e4891-fb72-45e5-985d-ab560d650d44",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 578,
        "lineStart": 578
      },
      "severity": "info"
    },
    {
      "id": "dc8c9116-dd86-4dff-b536-096d2fd5336c",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 601,
        "lineStart": 601
      },
      "severity": "info"
    },
    {
      "id": "ba3a7c05-a4dc-4fdc-aa01-c6d500919924",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 644,
        "lineStart": 644
      },
      "severity": "info"
    },
    {
      "id": "dd0917a8-a4b3-4458-9789-38173f251140",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 676,
        "lineStart": 676
      },
      "severity": "info"
    },
    {
      "id": "00f23d0b-1ef2-4901-bc08-1912391b1b2f",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 834,
        "lineStart": 834
      },
      "severity": "info"
    },
    {
      "id": "11242538-ec79-4755-9e17-6396a0feed4e",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 837,
        "lineStart": 837
      },
      "severity": "info"
    },
    {
      "id": "e6cd7fed-1578-49e3-b307-33e1404d7668",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 844,
        "lineStart": 844
      },
      "severity": "info"
    },
    {
      "id": "1d33d8e6-0daa-4d00-bfde-db7c8ea9e856",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 847,
        "lineStart": 847
      },
      "severity": "info"
    },
    {
      "id": "4ebcbba7-e8e1-4c10-980f-2bed6264eaa7",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 898,
        "lineStart": 898
      },
      "severity": "info"
    },
    {
      "id": "675a1533-39a7-48f8-ad7f-7a708444db34",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 935,
        "lineStart": 935
      },
      "severity": "info"
    },
    {
      "id": "5ffa7f2f-a54d-4270-9ef6-107c2a663f64",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1125,
        "lineStart": 1125
      },
      "severity": "info"
    },
    {
      "id": "f4fa62ab-f7b1-4280-aa67-26b55567c101",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1166,
        "lineStart": 1166
      },
      "severity": "info"
    },
    {
      "id": "891294fa-df1c-4395-8a66-02b3c937f3ad",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1188,
        "lineStart": 1188
      },
      "severity": "info"
    },
    {
      "id": "467ecfe3-4b08-46ba-a61b-4256c554fbfe",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1198,
        "lineStart": 1198
      },
      "severity": "info"
    },
    {
      "id": "bd888461-477d-4f90-aa55-806ff80b79c4",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1220,
        "lineStart": 1220
      },
      "severity": "info"
    },
    {
      "id": "e3e8f552-2da9-467f-881b-752ea3343269",
      "title": "Replace long revert string with custom error",
      "category": "mantle-gas-optimizer/deployment/custom-errors",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1284,
        "lineStart": 1284
      },
      "severity": "info"
    },
    {
      "id": "0811ec04-704e-4992-9f07-271c174d1d1c",
      "title": "Mark never-changing value constant or immutable",
      "category": "mantle-gas-optimizer/storage/immutable-constant",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 79,
        "lineStart": 79
      },
      "severity": "info"
    },
    {
      "id": "799d0bdf-840a-4d0b-95ec-8580fd314c68",
      "title": "Mark never-changing value constant or immutable",
      "category": "mantle-gas-optimizer/storage/immutable-constant",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 127,
        "lineStart": 127
      },
      "severity": "info"
    },
    {
      "id": "dacdb27d-b5da-4638-bbff-1c42504d808f",
      "title": "Cache repeated storage read",
      "category": "mantle-gas-optimizer/storage/cache-repeated-sload",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 289,
        "lineStart": 289
      },
      "severity": "info"
    },
    {
      "id": "5f400697-be98-4ee2-affb-899b613ffb6f",
      "title": "Cache repeated storage read",
      "category": "mantle-gas-optimizer/storage/cache-repeated-sload",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 304,
        "lineStart": 304
      },
      "severity": "info"
    },
    {
      "id": "0c753cb5-cdf7-4d06-a6fe-b1fda25c6663",
      "title": "Cache repeated storage read",
      "category": "mantle-gas-optimizer/storage/cache-repeated-sload",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 305,
        "lineStart": 305
      },
      "severity": "info"
    },
    {
      "id": "739445dd-d086-4f6e-8f95-ff54a23fa131",
      "title": "Cache repeated storage read",
      "category": "mantle-gas-optimizer/storage/cache-repeated-sload",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 306,
        "lineStart": 306
      },
      "severity": "info"
    },
    {
      "id": "a0dce0ca-0fdd-4af3-8e34-d3152023b630",
      "title": "Cache repeated storage read",
      "category": "mantle-gas-optimizer/storage/cache-repeated-sload",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 416,
        "lineStart": 416
      },
      "severity": "info"
    },
    {
      "id": "4e21e307-b64c-439b-914d-09e68de06268",
      "title": "Use unchecked loop increment where bounded",
      "category": "mantle-gas-optimizer/computation/unchecked-loop-increment",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 461,
        "lineStart": 461
      },
      "severity": "info"
    },
    {
      "id": "eb4f23dd-3765-4a53-88d3-31cb17f40a3c",
      "title": "Use unchecked loop increment where bounded",
      "category": "mantle-gas-optimizer/computation/unchecked-loop-increment",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 630,
        "lineStart": 630
      },
      "severity": "info"
    },
    {
      "id": "2c644fc0-b786-424f-a2ac-09f0cec668a7",
      "title": "Use unchecked loop increment where bounded",
      "category": "mantle-gas-optimizer/computation/unchecked-loop-increment",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 642,
        "lineStart": 642
      },
      "severity": "info"
    },
    {
      "id": "ff2fe2d4-b544-4e20-b1fb-95fdf5384ab2",
      "title": "Use unchecked loop increment where bounded",
      "category": "mantle-gas-optimizer/computation/unchecked-loop-increment",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 951,
        "lineStart": 951
      },
      "severity": "info"
    },
    {
      "id": "1773a07c-2a87-4faa-b2ee-2486e129a155",
      "title": "Use unchecked loop increment where bounded",
      "category": "mantle-gas-optimizer/computation/unchecked-loop-increment",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 966,
        "lineStart": 966
      },
      "severity": "info"
    },
    {
      "id": "0c2f0c6d-6de4-4399-8308-fc307d550fe3",
      "title": "Use unchecked loop increment where bounded",
      "category": "mantle-gas-optimizer/computation/unchecked-loop-increment",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1330,
        "lineStart": 1330
      },
      "severity": "info"
    },
    {
      "id": "793f274d-a3bb-4e1e-bbeb-b40da2da1505",
      "title": "Use unchecked loop increment where bounded",
      "category": "mantle-gas-optimizer/computation/unchecked-loop-increment",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1344,
        "lineStart": 1344
      },
      "severity": "info"
    },
    {
      "id": "71f08fa0-779c-4783-a998-47d25cf55fa9",
      "title": "Use unchecked loop increment where bounded",
      "category": "mantle-gas-optimizer/computation/unchecked-loop-increment",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1358,
        "lineStart": 1358
      },
      "severity": "info"
    },
    {
      "id": "51a25f40-c725-4936-b3cc-cf2b0ba730a4",
      "title": "Use unchecked loop increment where bounded",
      "category": "mantle-gas-optimizer/computation/unchecked-loop-increment",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1404,
        "lineStart": 1404
      },
      "severity": "info"
    },
    {
      "id": "d9516522-59d3-4cca-8f18-87b2739e2139",
      "title": "Use unchecked loop increment where bounded",
      "category": "mantle-gas-optimizer/computation/unchecked-loop-increment",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1421,
        "lineStart": 1421
      },
      "severity": "info"
    },
    {
      "id": "ed60debf-4b5d-4ca7-8e0a-914d2665b0eb",
      "title": "Cache array length before loop",
      "category": "mantle-gas-optimizer/storage/loop-hygiene",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 461,
        "lineStart": 461
      },
      "severity": "info"
    },
    {
      "id": "8e48c519-c0fd-420f-a662-c429e7e2497e",
      "title": "Cache array length before loop",
      "category": "mantle-gas-optimizer/storage/loop-hygiene",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 630,
        "lineStart": 630
      },
      "severity": "info"
    },
    {
      "id": "649b96a0-107a-4d49-9a81-0b8a06ec314c",
      "title": "Cache array length before loop",
      "category": "mantle-gas-optimizer/storage/loop-hygiene",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 642,
        "lineStart": 642
      },
      "severity": "info"
    },
    {
      "id": "4b0d1afa-0706-4168-9b53-9ba21524c927",
      "title": "Cache array length before loop",
      "category": "mantle-gas-optimizer/storage/loop-hygiene",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 951,
        "lineStart": 951
      },
      "severity": "info"
    },
    {
      "id": "2ad7bd7a-77fc-4e35-8bf9-dbb5c5c8920c",
      "title": "Cache array length before loop",
      "category": "mantle-gas-optimizer/storage/loop-hygiene",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 966,
        "lineStart": 966
      },
      "severity": "info"
    },
    {
      "id": "e77ede7d-745b-4ae8-9559-d9a4aa8fef32",
      "title": "Cache array length before loop",
      "category": "mantle-gas-optimizer/storage/loop-hygiene",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1330,
        "lineStart": 1330
      },
      "severity": "info"
    },
    {
      "id": "c3583569-364d-4b32-9221-92e66bd0d93d",
      "title": "Cache array length before loop",
      "category": "mantle-gas-optimizer/storage/loop-hygiene",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1344,
        "lineStart": 1344
      },
      "severity": "info"
    },
    {
      "id": "409c92dc-5486-4b2b-9e04-6d94b2e4a29e",
      "title": "Cache array length before loop",
      "category": "mantle-gas-optimizer/storage/loop-hygiene",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1358,
        "lineStart": 1358
      },
      "severity": "info"
    },
    {
      "id": "fe9ddb64-ca09-493f-9899-c2d8c86ba314",
      "title": "Use != 0 for unsigned non-zero checks",
      "category": "mantle-gas-optimizer/computation/nonzero-comparison",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 495,
        "lineStart": 495
      },
      "severity": "info"
    },
    {
      "id": "0b65c218-0c33-4731-9d1f-85c8e987d932",
      "title": "Use != 0 for unsigned non-zero checks",
      "category": "mantle-gas-optimizer/computation/nonzero-comparison",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 507,
        "lineStart": 507
      },
      "severity": "info"
    },
    {
      "id": "884f2ffd-2805-419f-a331-e04a320bdf84",
      "title": "Use != 0 for unsigned non-zero checks",
      "category": "mantle-gas-optimizer/computation/nonzero-comparison",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 561,
        "lineStart": 561
      },
      "severity": "info"
    },
    {
      "id": "8d03995d-18ef-4398-a09f-921c2b901865",
      "title": "Use != 0 for unsigned non-zero checks",
      "category": "mantle-gas-optimizer/computation/nonzero-comparison",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 665,
        "lineStart": 665
      },
      "severity": "info"
    },
    {
      "id": "afc16c2f-fac3-4344-8ced-a64e086dd5a5",
      "title": "Use != 0 for unsigned non-zero checks",
      "category": "mantle-gas-optimizer/computation/nonzero-comparison",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 728,
        "lineStart": 728
      },
      "severity": "info"
    },
    {
      "id": "a84451fb-e67b-498a-a0a4-a8af4c83bb2b",
      "title": "Use != 0 for unsigned non-zero checks",
      "category": "mantle-gas-optimizer/computation/nonzero-comparison",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 864,
        "lineStart": 864
      },
      "severity": "info"
    },
    {
      "id": "847d24c3-c96c-466f-9ba4-ffc80330c88a",
      "title": "Use != 0 for unsigned non-zero checks",
      "category": "mantle-gas-optimizer/computation/nonzero-comparison",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1224,
        "lineStart": 1224
      },
      "severity": "info"
    },
    {
      "id": "179d0a94-6579-45dd-b017-226495595f5f",
      "title": "Use != 0 for unsigned non-zero checks",
      "category": "mantle-gas-optimizer/computation/nonzero-comparison",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1248,
        "lineStart": 1248
      },
      "severity": "info"
    },
    {
      "id": "cb28680c-5e53-4e49-aec4-93984b051471",
      "title": "Bitmap-pack boolean flags",
      "category": "mantle-gas-optimizer/storage/bitmap-bools",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 221,
        "lineStart": 221
      },
      "severity": "medium"
    },
    {
      "id": "f93ff49c-5d20-41a7-b92f-da3912ae9e33",
      "title": "Bitmap-pack boolean flags",
      "category": "mantle-gas-optimizer/storage/bitmap-bools",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 230,
        "lineStart": 230
      },
      "severity": "medium"
    },
    {
      "id": "c5c2a895-213e-4f1e-91c2-5e308bad414d",
      "title": "Bitmap-pack boolean flags",
      "category": "mantle-gas-optimizer/storage/bitmap-bools",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 231,
        "lineStart": 231
      },
      "severity": "medium"
    },
    {
      "id": "c941a059-ff44-4a1b-b81b-2651acc77b18",
      "title": "Bitmap-pack boolean flags",
      "category": "mantle-gas-optimizer/storage/bitmap-bools",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 232,
        "lineStart": 232
      },
      "severity": "medium"
    },
    {
      "id": "df2a91da-466c-45bd-8f75-17f821730805",
      "title": "Bitmap-pack boolean flags",
      "category": "mantle-gas-optimizer/storage/bitmap-bools",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 233,
        "lineStart": 233
      },
      "severity": "medium"
    },
    {
      "id": "f13cfe84-5b1c-4a54-97fc-887b0bce34a3",
      "title": "Bitmap-pack boolean flags",
      "category": "mantle-gas-optimizer/storage/bitmap-bools",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 234,
        "lineStart": 234
      },
      "severity": "medium"
    },
    {
      "id": "b8b90582-86f0-4900-ab0e-098518ece509",
      "title": "Bitmap-pack boolean flags",
      "category": "mantle-gas-optimizer/storage/bitmap-bools",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 242,
        "lineStart": 242
      },
      "severity": "medium"
    },
    {
      "id": "1479705a-6a83-4dd0-87f3-b8793e84e547",
      "title": "Remove redundant zero initialization",
      "category": "mantle-gas-optimizer/deployment/remove-zero-init",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 461,
        "lineStart": 461
      },
      "severity": "info"
    },
    {
      "id": "7f107d95-600a-48c1-9043-7ef39a23f0da",
      "title": "Remove redundant zero initialization",
      "category": "mantle-gas-optimizer/deployment/remove-zero-init",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 630,
        "lineStart": 630
      },
      "severity": "info"
    },
    {
      "id": "f5366426-271a-45af-a080-7952431545f2",
      "title": "Remove redundant zero initialization",
      "category": "mantle-gas-optimizer/deployment/remove-zero-init",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 642,
        "lineStart": 642
      },
      "severity": "info"
    },
    {
      "id": "5820c0df-da05-42ed-84ac-47c140563f6e",
      "title": "Remove redundant zero initialization",
      "category": "mantle-gas-optimizer/deployment/remove-zero-init",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 951,
        "lineStart": 951
      },
      "severity": "info"
    },
    {
      "id": "9a7c25f6-9c1a-492b-a624-9f3d6b4f6f7a",
      "title": "Remove redundant zero initialization",
      "category": "mantle-gas-optimizer/deployment/remove-zero-init",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 966,
        "lineStart": 966
      },
      "severity": "info"
    },
    {
      "id": "b42937b0-a432-4b67-8608-a56f790ffc76",
      "title": "Remove redundant zero initialization",
      "category": "mantle-gas-optimizer/deployment/remove-zero-init",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 995,
        "lineStart": 995
      },
      "severity": "info"
    },
    {
      "id": "28d1cb6e-8707-4810-b2cc-06e6a81096ea",
      "title": "Remove redundant zero initialization",
      "category": "mantle-gas-optimizer/deployment/remove-zero-init",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1006,
        "lineStart": 1006
      },
      "severity": "info"
    },
    {
      "id": "54eeb38e-0b3d-49d6-9002-a3295a0885b8",
      "title": "Remove redundant zero initialization",
      "category": "mantle-gas-optimizer/deployment/remove-zero-init",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1330,
        "lineStart": 1330
      },
      "severity": "info"
    },
    {
      "id": "3bb775d1-6772-446a-ae02-4075000f0e9c",
      "title": "Remove redundant zero initialization",
      "category": "mantle-gas-optimizer/deployment/remove-zero-init",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1344,
        "lineStart": 1344
      },
      "severity": "info"
    },
    {
      "id": "20050afd-69ff-4b65-8343-5bcb2eeb4d77",
      "title": "Remove redundant zero initialization",
      "category": "mantle-gas-optimizer/deployment/remove-zero-init",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1358,
        "lineStart": 1358
      },
      "severity": "info"
    },
    {
      "id": "f73d1def-1ef4-4866-87de-08f0ee633ad1",
      "title": "Remove redundant zero initialization",
      "category": "mantle-gas-optimizer/deployment/remove-zero-init",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1373,
        "lineStart": 1373
      },
      "severity": "info"
    },
    {
      "id": "2f312f38-0095-4f71-8a1e-b8787ddc3838",
      "title": "Remove redundant zero initialization",
      "category": "mantle-gas-optimizer/deployment/remove-zero-init",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1374,
        "lineStart": 1374
      },
      "severity": "info"
    },
    {
      "id": "00f533bd-00d8-491d-b909-7c7cd4199e18",
      "title": "Remove redundant zero initialization",
      "category": "mantle-gas-optimizer/deployment/remove-zero-init",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1404,
        "lineStart": 1404
      },
      "severity": "info"
    },
    {
      "id": "286fa4a9-9b35-4ddb-9e82-59e6b09bf1fa",
      "title": "Remove redundant zero initialization",
      "category": "mantle-gas-optimizer/deployment/remove-zero-init",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1421,
        "lineStart": 1421
      },
      "severity": "info"
    },
    {
      "id": "7f55e569-1c36-4f59-b438-cbdcdd2f77e2",
      "title": "Remove redundant zero initialization",
      "category": "mantle-gas-optimizer/deployment/remove-zero-init",
      "location": {
        "file": "MantleMainnetHyperVaultExtended_Suite__5_contracts_.sol",
        "lineEnd": 1429,
        "lineStart": 1429
      },
      "severity": "info"
    }
  ]
}
source URI: ipfs://QmbibjFruNbLRkR1eKUfAMfA7mz4UK1TWbYwq7gqmoEFAz