[
  {
    "id": "0b6d0d6699a3fa3c78250e527327e43538895feecaa6cfd8a1793dfcc1d20c72",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.setOwner(address) (src/legacy/L1ChugSplashProxy.sol#138-140) calls L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "function",
    "name": "setOwner",
    "start": 6890,
    "length": 97,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "0b6d0d6699a3fa3c78250e527327e43538895feecaa6cfd8a1793dfcc1d20c72",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.setOwner(address) (src/legacy/L1ChugSplashProxy.sol#138-140) calls L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "function",
    "name": "proxyCallIfNotOwner",
    "start": 3867,
    "length": 237,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "0b6d0d6699a3fa3c78250e527327e43538895feecaa6cfd8a1793dfcc1d20c72",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.setOwner(address) (src/legacy/L1ChugSplashProxy.sol#138-140) calls L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "node",
    "name": "return(uint256,uint256)(0x0,returndatasize()())",
    "start": 9403,
    "length": 29,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "0d4915766a9a2117c655d6bc36e42594e95bbba8293384ec5b2c4904ff7a131f",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.target() (src/L1/DelayedVetoable.sol#108-110) calls DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "function",
    "name": "target",
    "start": 4421,
    "length": 99,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "0d4915766a9a2117c655d6bc36e42594e95bbba8293384ec5b2c4904ff7a131f",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.target() (src/L1/DelayedVetoable.sol#108-110) calls DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "function",
    "name": "readOrHandle",
    "start": 2953,
    "length": 200,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "0d4915766a9a2117c655d6bc36e42594e95bbba8293384ec5b2c4904ff7a131f",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.target() (src/L1/DelayedVetoable.sol#108-110) calls DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "node",
    "name": "return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata))",
    "start": 7723,
    "length": 48,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "11c5e51d3a0080a2b8f208ae6ec1a4c5617c6df83441ac96c67f322294f73f2b",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.getImplementation() (src/legacy/L1ChugSplashProxy.sol#152-154) calls L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "function",
    "name": "getImplementation",
    "start": 7519,
    "length": 120,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "11c5e51d3a0080a2b8f208ae6ec1a4c5617c6df83441ac96c67f322294f73f2b",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.getImplementation() (src/legacy/L1ChugSplashProxy.sol#152-154) calls L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "function",
    "name": "proxyCallIfNotOwner",
    "start": 3867,
    "length": 237,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "11c5e51d3a0080a2b8f208ae6ec1a4c5617c6df83441ac96c67f322294f73f2b",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.getImplementation() (src/legacy/L1ChugSplashProxy.sol#152-154) calls L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "node",
    "name": "return(uint256,uint256)(0x0,returndatasize()())",
    "start": 9403,
    "length": 29,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "1e96b3f3be5c5b827284291533d15f8b70c3f8bc774e863359baa95195e8a79c",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.implementation() (src/universal/Proxy.sol#97-99) calls Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "function",
    "name": "implementation",
    "start": 3967,
    "length": 123,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "1e96b3f3be5c5b827284291533d15f8b70c3f8bc774e863359baa95195e8a79c",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.implementation() (src/universal/Proxy.sol#97-99) calls Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "function",
    "name": "proxyCallIfNotAdmin",
    "start": 1295,
    "length": 237,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "1e96b3f3be5c5b827284291533d15f8b70c3f8bc774e863359baa95195e8a79c",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.implementation() (src/universal/Proxy.sol#97-99) calls Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "node",
    "name": "return(uint256,uint256)(0x0,returndatasize()())",
    "start": 5922,
    "length": 29,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "2792614492719714cdcff9f7f8e1c602931befa4b0b2d9e0845a2fbf3964f949",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.upgradeToAndCall(address,bytes) (src/universal/Proxy.sol#67-81) calls Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "function",
    "name": "upgradeToAndCall",
    "start": 2959,
    "length": 458,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "2792614492719714cdcff9f7f8e1c602931befa4b0b2d9e0845a2fbf3964f949",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.upgradeToAndCall(address,bytes) (src/universal/Proxy.sol#67-81) calls Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "function",
    "name": "proxyCallIfNotAdmin",
    "start": 1295,
    "length": 237,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "2792614492719714cdcff9f7f8e1c602931befa4b0b2d9e0845a2fbf3964f949",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.upgradeToAndCall(address,bytes) (src/universal/Proxy.sol#67-81) calls Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "node",
    "name": "return(uint256,uint256)(0x0,returndatasize()())",
    "start": 5922,
    "length": 29,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "35ba264224a7ea48dc7cd248e60c07e4aae32401690ae90b217f017e3a1b8112",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.vetoer() (src/L1/DelayedVetoable.sol#102-104) calls DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "function",
    "name": "vetoer",
    "start": 4223,
    "length": 107,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "35ba264224a7ea48dc7cd248e60c07e4aae32401690ae90b217f017e3a1b8112",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.vetoer() (src/L1/DelayedVetoable.sol#102-104) calls DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "function",
    "name": "readOrHandle",
    "start": 2953,
    "length": 200,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "35ba264224a7ea48dc7cd248e60c07e4aae32401690ae90b217f017e3a1b8112",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.vetoer() (src/L1/DelayedVetoable.sol#102-104) calls DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "node",
    "name": "return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata))",
    "start": 7723,
    "length": 48,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "38dac452acbdd7762ba9aa67e268c249835dad01e219ff2f50d93e4533aa7c52",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) calls DelayedVetoable._handleCall() (src/L1/DelayedVetoable.sol#133-181) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "function",
    "name": "readOrHandle",
    "start": 2953,
    "length": 200,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "38dac452acbdd7762ba9aa67e268c249835dad01e219ff2f50d93e4533aa7c52",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) calls DelayedVetoable._handleCall() (src/L1/DelayedVetoable.sol#133-181) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "function",
    "name": "_handleCall",
    "start": 5365,
    "length": 2009,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "38dac452acbdd7762ba9aa67e268c249835dad01e219ff2f50d93e4533aa7c52",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) calls DelayedVetoable._handleCall() (src/L1/DelayedVetoable.sol#133-181) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "node",
    "name": "return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata))",
    "start": 7723,
    "length": 48,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "39745c2ba61544fe128a7627287a023e043a087ee32100d6e0bfe5b404209670",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.initiator() (src/L1/DelayedVetoable.sol#96-98) calls DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "function",
    "name": "initiator",
    "start": 4013,
    "length": 119,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "39745c2ba61544fe128a7627287a023e043a087ee32100d6e0bfe5b404209670",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.initiator() (src/L1/DelayedVetoable.sol#96-98) calls DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "function",
    "name": "readOrHandle",
    "start": 2953,
    "length": 200,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "39745c2ba61544fe128a7627287a023e043a087ee32100d6e0bfe5b404209670",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.initiator() (src/L1/DelayedVetoable.sol#96-98) calls DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "node",
    "name": "return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata))",
    "start": 7723,
    "length": 48,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "3f56bbd28cbf0b716ac3b0a61479a74ece176d3e2f2a53dd16994daa375a5468",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable._handleCall() (src/L1/DelayedVetoable.sol#133-181) calls DelayedVetoable._forwardAndHalt(bytes32) (src/L1/DelayedVetoable.sol#184-197) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "function",
    "name": "_handleCall",
    "start": 5365,
    "length": 2009,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "3f56bbd28cbf0b716ac3b0a61479a74ece176d3e2f2a53dd16994daa375a5468",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable._handleCall() (src/L1/DelayedVetoable.sol#133-181) calls DelayedVetoable._forwardAndHalt(bytes32) (src/L1/DelayedVetoable.sol#184-197) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "function",
    "name": "_forwardAndHalt",
    "start": 7454,
    "length": 466,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "3f56bbd28cbf0b716ac3b0a61479a74ece176d3e2f2a53dd16994daa375a5468",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable._handleCall() (src/L1/DelayedVetoable.sol#133-181) calls DelayedVetoable._forwardAndHalt(bytes32) (src/L1/DelayedVetoable.sol#184-197) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "node",
    "name": "return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata))",
    "start": 7723,
    "length": 48,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "40da9d5df6ace4d9b107bfd175846739fa74c9a29d3b6d94d1b8ce9dfa13aa05",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.queuedAt(bytes32) (src/L1/DelayedVetoable.sol#121-123) calls DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "function",
    "name": "queuedAt",
    "start": 4865,
    "length": 134,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "40da9d5df6ace4d9b107bfd175846739fa74c9a29d3b6d94d1b8ce9dfa13aa05",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.queuedAt(bytes32) (src/L1/DelayedVetoable.sol#121-123) calls DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "function",
    "name": "readOrHandle",
    "start": 2953,
    "length": 200,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "40da9d5df6ace4d9b107bfd175846739fa74c9a29d3b6d94d1b8ce9dfa13aa05",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.queuedAt(bytes32) (src/L1/DelayedVetoable.sol#121-123) calls DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "node",
    "name": "return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata))",
    "start": 7723,
    "length": 48,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "4ea64b8e0080de740c9c25e7841217213a680d8680654c8c9f744be145a1431a",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.setCode(bytes) (src/legacy/L1ChugSplashProxy.sol#96-124) calls L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "function",
    "name": "setCode",
    "start": 5022,
    "length": 1285,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "4ea64b8e0080de740c9c25e7841217213a680d8680654c8c9f744be145a1431a",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.setCode(bytes) (src/legacy/L1ChugSplashProxy.sol#96-124) calls L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "function",
    "name": "proxyCallIfNotOwner",
    "start": 3867,
    "length": 237,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "4ea64b8e0080de740c9c25e7841217213a680d8680654c8c9f744be145a1431a",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.setCode(bytes) (src/legacy/L1ChugSplashProxy.sol#96-124) calls L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "node",
    "name": "return(uint256,uint256)(0x0,returndatasize()())",
    "start": 9403,
    "length": 29,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "5dbecee956931b503b0ed4fbb7be62ba5f9f64bab10ac87b3c5ba4dab3694bec",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.upgradeTo(address) (src/universal/Proxy.sol#59-61) calls Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "function",
    "name": "upgradeTo",
    "start": 2498,
    "length": 131,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "5dbecee956931b503b0ed4fbb7be62ba5f9f64bab10ac87b3c5ba4dab3694bec",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.upgradeTo(address) (src/universal/Proxy.sol#59-61) calls Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "function",
    "name": "proxyCallIfNotAdmin",
    "start": 1295,
    "length": 237,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "5dbecee956931b503b0ed4fbb7be62ba5f9f64bab10ac87b3c5ba4dab3694bec",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.upgradeTo(address) (src/universal/Proxy.sol#59-61) calls Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "node",
    "name": "return(uint256,uint256)(0x0,returndatasize()())",
    "start": 5922,
    "length": 29,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "5f00d9ac316494d702da33c92ba3267b0b2a5ab498b5c720e942923a75fd0f50",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.changeAdmin(address) (src/universal/Proxy.sol#85-87) calls Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "function",
    "name": "changeAdmin",
    "start": 3563,
    "length": 109,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "5f00d9ac316494d702da33c92ba3267b0b2a5ab498b5c720e942923a75fd0f50",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.changeAdmin(address) (src/universal/Proxy.sol#85-87) calls Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "function",
    "name": "proxyCallIfNotAdmin",
    "start": 1295,
    "length": 237,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "5f00d9ac316494d702da33c92ba3267b0b2a5ab498b5c720e942923a75fd0f50",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.changeAdmin(address) (src/universal/Proxy.sol#85-87) calls Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "node",
    "name": "return(uint256,uint256)(0x0,returndatasize()())",
    "start": 5922,
    "length": 29,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "61c6823d9d96abad705c3e29c3768a5d2ade61e6f226c9241e6f3278063ab469",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.admin() (src/universal/Proxy.sol#91-93) calls Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "function",
    "name": "admin",
    "start": 3763,
    "length": 105,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "61c6823d9d96abad705c3e29c3768a5d2ade61e6f226c9241e6f3278063ab469",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.admin() (src/universal/Proxy.sol#91-93) calls Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "function",
    "name": "proxyCallIfNotAdmin",
    "start": 1295,
    "length": 237,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "61c6823d9d96abad705c3e29c3768a5d2ade61e6f226c9241e6f3278063ab469",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.admin() (src/universal/Proxy.sol#91-93) calls Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "node",
    "name": "return(uint256,uint256)(0x0,returndatasize()())",
    "start": 5922,
    "length": 29,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "648de83c485a902ab3df50445e187c6390720ae77705d14edbcc112e4fd8fe1a",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) calls L1ChugSplashProxy._doProxyCall() (src/legacy/L1ChugSplashProxy.sol#175-198) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "function",
    "name": "proxyCallIfNotOwner",
    "start": 3867,
    "length": 237,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "648de83c485a902ab3df50445e187c6390720ae77705d14edbcc112e4fd8fe1a",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) calls L1ChugSplashProxy._doProxyCall() (src/legacy/L1ChugSplashProxy.sol#175-198) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "function",
    "name": "_doProxyCall",
    "start": 8349,
    "length": 1099,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "648de83c485a902ab3df50445e187c6390720ae77705d14edbcc112e4fd8fe1a",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) calls L1ChugSplashProxy._doProxyCall() (src/legacy/L1ChugSplashProxy.sol#175-198) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "node",
    "name": "return(uint256,uint256)(0x0,returndatasize()())",
    "start": 9403,
    "length": 29,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "6cf6408cd8c7aedc182552abc25970ede8e033409292304b75b62006b0ad9491",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.delay() (src/L1/DelayedVetoable.sol#114-116) calls DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "function",
    "name": "delay",
    "start": 4595,
    "length": 96,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "6cf6408cd8c7aedc182552abc25970ede8e033409292304b75b62006b0ad9491",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.delay() (src/L1/DelayedVetoable.sol#114-116) calls DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "function",
    "name": "readOrHandle",
    "start": 2953,
    "length": 200,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "6cf6408cd8c7aedc182552abc25970ede8e033409292304b75b62006b0ad9491",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "DelayedVetoable.delay() (src/L1/DelayedVetoable.sol#114-116) calls DelayedVetoable.readOrHandle() (src/L1/DelayedVetoable.sol#67-74) which halt the execution return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata)) (src/L1/DelayedVetoable.sol#190)\n",
    "type": "node",
    "name": "return(uint256,uint256)(returndata + 0x20,mload(uint256)(returndata))",
    "start": 7723,
    "length": 48,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "98821b545d4849522091839fbd87144e6fcc256a73b9dd1817676bd127be6d8c",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.getOwner() (src/legacy/L1ChugSplashProxy.sol#145-147) calls L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "function",
    "name": "getOwner",
    "start": 7200,
    "length": 102,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "98821b545d4849522091839fbd87144e6fcc256a73b9dd1817676bd127be6d8c",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.getOwner() (src/legacy/L1ChugSplashProxy.sol#145-147) calls L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "function",
    "name": "proxyCallIfNotOwner",
    "start": 3867,
    "length": 237,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "98821b545d4849522091839fbd87144e6fcc256a73b9dd1817676bd127be6d8c",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.getOwner() (src/legacy/L1ChugSplashProxy.sol#145-147) calls L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "node",
    "name": "return(uint256,uint256)(0x0,returndatasize()())",
    "start": 9403,
    "length": 29,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "c116aac23f49ec7d5d6574972abfbf02d56d0521ea2285dc09d239a829e7d2af",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.setStorage(bytes32,bytes32) (src/legacy/L1ChugSplashProxy.sol#130-134) calls L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "function",
    "name": "setStorage",
    "start": 6596,
    "length": 148,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "c116aac23f49ec7d5d6574972abfbf02d56d0521ea2285dc09d239a829e7d2af",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.setStorage(bytes32,bytes32) (src/legacy/L1ChugSplashProxy.sol#130-134) calls L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "function",
    "name": "proxyCallIfNotOwner",
    "start": 3867,
    "length": 237,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "c116aac23f49ec7d5d6574972abfbf02d56d0521ea2285dc09d239a829e7d2af",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "L1ChugSplashProxy.setStorage(bytes32,bytes32) (src/legacy/L1ChugSplashProxy.sol#130-134) calls L1ChugSplashProxy.proxyCallIfNotOwner() (src/legacy/L1ChugSplashProxy.sol#64-71) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/legacy/L1ChugSplashProxy.sol#196)\n",
    "type": "node",
    "name": "return(uint256,uint256)(0x0,returndatasize()())",
    "start": 9403,
    "length": 29,
    "filename_relative": "src/legacy/L1ChugSplashProxy.sol"
  },
  {
    "id": "d14996b9cc4486d4926155fb1f3d0c1ffc8be9b4af43a61074039356721c7e45",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) calls Proxy._doProxyCall() (src/universal/Proxy.sol#123-145) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "function",
    "name": "proxyCallIfNotAdmin",
    "start": 1295,
    "length": 237,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "d14996b9cc4486d4926155fb1f3d0c1ffc8be9b4af43a61074039356721c7e45",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) calls Proxy._doProxyCall() (src/universal/Proxy.sol#123-145) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "function",
    "name": "_doProxyCall",
    "start": 4928,
    "length": 1039,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "d14996b9cc4486d4926155fb1f3d0c1ffc8be9b4af43a61074039356721c7e45",
    "impact": "High",
    "confidence": "Medium",
    "check": "incorrect-return",
    "description": "Proxy.proxyCallIfNotAdmin() (src/universal/Proxy.sol#26-33) calls Proxy._doProxyCall() (src/universal/Proxy.sol#123-145) which halt the execution return(uint256,uint256)(0x0,returndatasize()()) (src/universal/Proxy.sol#143)\n",
    "type": "node",
    "name": "return(uint256,uint256)(0x0,returndatasize()())",
    "start": 5922,
    "length": 29,
    "filename_relative": "src/universal/Proxy.sol"
  },
  {
    "id": "89460308ae3bd86a612657eb7bfe28221ced6a7a7fe723ec2a19149bfc819cb5",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract L2OutputOracle (src/L1/L2OutputOracle.sol#14-296) has payable functions:\n\t - L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256) (src/L1/L2OutputOracle.sol#168-215)\n\tBut does not have a function to withdraw the ether\n",
    "type": "contract",
    "name": "L2OutputOracle",
    "start": 611,
    "length": 12768,
    "filename_relative": "src/L1/L2OutputOracle.sol"
  },
  {
    "id": "89460308ae3bd86a612657eb7bfe28221ced6a7a7fe723ec2a19149bfc819cb5",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract L2OutputOracle (src/L1/L2OutputOracle.sol#14-296) has payable functions:\n\t - L2OutputOracle.proposeL2Output(bytes32,uint256,bytes32,uint256) (src/L1/L2OutputOracle.sol#168-215)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "proposeL2Output",
    "start": 7598,
    "length": 1981,
    "filename_relative": "src/L1/L2OutputOracle.sol"
  },
  {
    "id": "99c01b42fc96fd11586bce47c0e6edbb6697d3feda3cfe6ede5b03b79ac5af81",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract FaultDisputeGame (src/dispute/FaultDisputeGame.sol#24-557) has payable functions:\n\t - IFaultDisputeGame.attack(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#51)\n\t - IFaultDisputeGame.defend(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#56)\n\t - IFaultDisputeGame.resolveClaim(uint256) (src/dispute/interfaces/IFaultDisputeGame.sol#83)\n\t - FaultDisputeGame.move(uint256,Claim,bool) (src/dispute/FaultDisputeGame.sol#190-268)\n\t - FaultDisputeGame.attack(uint256,Claim) (src/dispute/FaultDisputeGame.sol#271-273)\n\t - FaultDisputeGame.defend(uint256,Claim) (src/dispute/FaultDisputeGame.sol#276-278)\n\t - FaultDisputeGame.resolveClaim(uint256) (src/dispute/FaultDisputeGame.sol#372-422)\n\tBut does not have a function to withdraw the ether\n",
    "type": "contract",
    "name": "FaultDisputeGame",
    "start": 1080,
    "length": 24930,
    "filename_relative": "src/dispute/FaultDisputeGame.sol"
  },
  {
    "id": "99c01b42fc96fd11586bce47c0e6edbb6697d3feda3cfe6ede5b03b79ac5af81",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract FaultDisputeGame (src/dispute/FaultDisputeGame.sol#24-557) has payable functions:\n\t - IFaultDisputeGame.attack(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#51)\n\t - IFaultDisputeGame.defend(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#56)\n\t - IFaultDisputeGame.resolveClaim(uint256) (src/dispute/interfaces/IFaultDisputeGame.sol#83)\n\t - FaultDisputeGame.move(uint256,Claim,bool) (src/dispute/FaultDisputeGame.sol#190-268)\n\t - FaultDisputeGame.attack(uint256,Claim) (src/dispute/FaultDisputeGame.sol#271-273)\n\t - FaultDisputeGame.defend(uint256,Claim) (src/dispute/FaultDisputeGame.sol#276-278)\n\t - FaultDisputeGame.resolveClaim(uint256) (src/dispute/FaultDisputeGame.sol#372-422)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "attack",
    "start": 2181,
    "length": 69,
    "filename_relative": "src/dispute/interfaces/IFaultDisputeGame.sol"
  },
  {
    "id": "99c01b42fc96fd11586bce47c0e6edbb6697d3feda3cfe6ede5b03b79ac5af81",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract FaultDisputeGame (src/dispute/FaultDisputeGame.sol#24-557) has payable functions:\n\t - IFaultDisputeGame.attack(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#51)\n\t - IFaultDisputeGame.defend(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#56)\n\t - IFaultDisputeGame.resolveClaim(uint256) (src/dispute/interfaces/IFaultDisputeGame.sol#83)\n\t - FaultDisputeGame.move(uint256,Claim,bool) (src/dispute/FaultDisputeGame.sol#190-268)\n\t - FaultDisputeGame.attack(uint256,Claim) (src/dispute/FaultDisputeGame.sol#271-273)\n\t - FaultDisputeGame.defend(uint256,Claim) (src/dispute/FaultDisputeGame.sol#276-278)\n\t - FaultDisputeGame.resolveClaim(uint256) (src/dispute/FaultDisputeGame.sol#372-422)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "defend",
    "start": 2454,
    "length": 69,
    "filename_relative": "src/dispute/interfaces/IFaultDisputeGame.sol"
  },
  {
    "id": "99c01b42fc96fd11586bce47c0e6edbb6697d3feda3cfe6ede5b03b79ac5af81",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract FaultDisputeGame (src/dispute/FaultDisputeGame.sol#24-557) has payable functions:\n\t - IFaultDisputeGame.attack(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#51)\n\t - IFaultDisputeGame.defend(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#56)\n\t - IFaultDisputeGame.resolveClaim(uint256) (src/dispute/interfaces/IFaultDisputeGame.sol#83)\n\t - FaultDisputeGame.move(uint256,Claim,bool) (src/dispute/FaultDisputeGame.sol#190-268)\n\t - FaultDisputeGame.attack(uint256,Claim) (src/dispute/FaultDisputeGame.sol#271-273)\n\t - FaultDisputeGame.defend(uint256,Claim) (src/dispute/FaultDisputeGame.sol#276-278)\n\t - FaultDisputeGame.resolveClaim(uint256) (src/dispute/FaultDisputeGame.sol#372-422)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "resolveClaim",
    "start": 4428,
    "length": 60,
    "filename_relative": "src/dispute/interfaces/IFaultDisputeGame.sol"
  },
  {
    "id": "99c01b42fc96fd11586bce47c0e6edbb6697d3feda3cfe6ede5b03b79ac5af81",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract FaultDisputeGame (src/dispute/FaultDisputeGame.sol#24-557) has payable functions:\n\t - IFaultDisputeGame.attack(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#51)\n\t - IFaultDisputeGame.defend(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#56)\n\t - IFaultDisputeGame.resolveClaim(uint256) (src/dispute/interfaces/IFaultDisputeGame.sol#83)\n\t - FaultDisputeGame.move(uint256,Claim,bool) (src/dispute/FaultDisputeGame.sol#190-268)\n\t - FaultDisputeGame.attack(uint256,Claim) (src/dispute/FaultDisputeGame.sol#271-273)\n\t - FaultDisputeGame.defend(uint256,Claim) (src/dispute/FaultDisputeGame.sol#276-278)\n\t - FaultDisputeGame.resolveClaim(uint256) (src/dispute/FaultDisputeGame.sol#372-422)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "move",
    "start": 9008,
    "length": 3953,
    "filename_relative": "src/dispute/FaultDisputeGame.sol"
  },
  {
    "id": "99c01b42fc96fd11586bce47c0e6edbb6697d3feda3cfe6ede5b03b79ac5af81",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract FaultDisputeGame (src/dispute/FaultDisputeGame.sol#24-557) has payable functions:\n\t - IFaultDisputeGame.attack(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#51)\n\t - IFaultDisputeGame.defend(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#56)\n\t - IFaultDisputeGame.resolveClaim(uint256) (src/dispute/interfaces/IFaultDisputeGame.sol#83)\n\t - FaultDisputeGame.move(uint256,Claim,bool) (src/dispute/FaultDisputeGame.sol#190-268)\n\t - FaultDisputeGame.attack(uint256,Claim) (src/dispute/FaultDisputeGame.sol#271-273)\n\t - FaultDisputeGame.defend(uint256,Claim) (src/dispute/FaultDisputeGame.sol#276-278)\n\t - FaultDisputeGame.resolveClaim(uint256) (src/dispute/FaultDisputeGame.sol#372-422)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "attack",
    "start": 13005,
    "length": 118,
    "filename_relative": "src/dispute/FaultDisputeGame.sol"
  },
  {
    "id": "99c01b42fc96fd11586bce47c0e6edbb6697d3feda3cfe6ede5b03b79ac5af81",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract FaultDisputeGame (src/dispute/FaultDisputeGame.sol#24-557) has payable functions:\n\t - IFaultDisputeGame.attack(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#51)\n\t - IFaultDisputeGame.defend(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#56)\n\t - IFaultDisputeGame.resolveClaim(uint256) (src/dispute/interfaces/IFaultDisputeGame.sol#83)\n\t - FaultDisputeGame.move(uint256,Claim,bool) (src/dispute/FaultDisputeGame.sol#190-268)\n\t - FaultDisputeGame.attack(uint256,Claim) (src/dispute/FaultDisputeGame.sol#271-273)\n\t - FaultDisputeGame.defend(uint256,Claim) (src/dispute/FaultDisputeGame.sol#276-278)\n\t - FaultDisputeGame.resolveClaim(uint256) (src/dispute/FaultDisputeGame.sol#372-422)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "defend",
    "start": 13167,
    "length": 119,
    "filename_relative": "src/dispute/FaultDisputeGame.sol"
  },
  {
    "id": "99c01b42fc96fd11586bce47c0e6edbb6697d3feda3cfe6ede5b03b79ac5af81",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract FaultDisputeGame (src/dispute/FaultDisputeGame.sol#24-557) has payable functions:\n\t - IFaultDisputeGame.attack(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#51)\n\t - IFaultDisputeGame.defend(uint256,Claim) (src/dispute/interfaces/IFaultDisputeGame.sol#56)\n\t - IFaultDisputeGame.resolveClaim(uint256) (src/dispute/interfaces/IFaultDisputeGame.sol#83)\n\t - FaultDisputeGame.move(uint256,Claim,bool) (src/dispute/FaultDisputeGame.sol#190-268)\n\t - FaultDisputeGame.attack(uint256,Claim) (src/dispute/FaultDisputeGame.sol#271-273)\n\t - FaultDisputeGame.defend(uint256,Claim) (src/dispute/FaultDisputeGame.sol#276-278)\n\t - FaultDisputeGame.resolveClaim(uint256) (src/dispute/FaultDisputeGame.sol#372-422)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "resolveClaim",
    "start": 17110,
    "length": 2033,
    "filename_relative": "src/dispute/FaultDisputeGame.sol"
  },
  {
    "id": "a163cee00f9eadca42657b9e68feeb6933902bdb0d38f8fa1490a82a355b68dc",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract OutputBisectionGame (src/dispute/OutputBisectionGame.sol#24-612) has payable functions:\n\t - IOutputBisectionGame.attack(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#30)\n\t - IOutputBisectionGame.defend(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#35)\n\t - IOutputBisectionGame.resolveClaim(uint256) (src/dispute/interfaces/IOutputBisectionGame.sol#62)\n\t - OutputBisectionGame.move(uint256,Claim,bool) (src/dispute/OutputBisectionGame.sol#200-281)\n\t - OutputBisectionGame.attack(uint256,Claim) (src/dispute/OutputBisectionGame.sol#284-286)\n\t - OutputBisectionGame.defend(uint256,Claim) (src/dispute/OutputBisectionGame.sol#289-291)\n\t - OutputBisectionGame.resolveClaim(uint256) (src/dispute/OutputBisectionGame.sol#361-411)\n\tBut does not have a function to withdraw the ether\n",
    "type": "contract",
    "name": "OutputBisectionGame",
    "start": 1092,
    "length": 28651,
    "filename_relative": "src/dispute/OutputBisectionGame.sol"
  },
  {
    "id": "a163cee00f9eadca42657b9e68feeb6933902bdb0d38f8fa1490a82a355b68dc",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract OutputBisectionGame (src/dispute/OutputBisectionGame.sol#24-612) has payable functions:\n\t - IOutputBisectionGame.attack(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#30)\n\t - IOutputBisectionGame.defend(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#35)\n\t - IOutputBisectionGame.resolveClaim(uint256) (src/dispute/interfaces/IOutputBisectionGame.sol#62)\n\t - OutputBisectionGame.move(uint256,Claim,bool) (src/dispute/OutputBisectionGame.sol#200-281)\n\t - OutputBisectionGame.attack(uint256,Claim) (src/dispute/OutputBisectionGame.sol#284-286)\n\t - OutputBisectionGame.defend(uint256,Claim) (src/dispute/OutputBisectionGame.sol#289-291)\n\t - OutputBisectionGame.resolveClaim(uint256) (src/dispute/OutputBisectionGame.sol#361-411)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "attack",
    "start": 1139,
    "length": 69,
    "filename_relative": "src/dispute/interfaces/IOutputBisectionGame.sol"
  },
  {
    "id": "a163cee00f9eadca42657b9e68feeb6933902bdb0d38f8fa1490a82a355b68dc",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract OutputBisectionGame (src/dispute/OutputBisectionGame.sol#24-612) has payable functions:\n\t - IOutputBisectionGame.attack(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#30)\n\t - IOutputBisectionGame.defend(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#35)\n\t - IOutputBisectionGame.resolveClaim(uint256) (src/dispute/interfaces/IOutputBisectionGame.sol#62)\n\t - OutputBisectionGame.move(uint256,Claim,bool) (src/dispute/OutputBisectionGame.sol#200-281)\n\t - OutputBisectionGame.attack(uint256,Claim) (src/dispute/OutputBisectionGame.sol#284-286)\n\t - OutputBisectionGame.defend(uint256,Claim) (src/dispute/OutputBisectionGame.sol#289-291)\n\t - OutputBisectionGame.resolveClaim(uint256) (src/dispute/OutputBisectionGame.sol#361-411)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "defend",
    "start": 1412,
    "length": 69,
    "filename_relative": "src/dispute/interfaces/IOutputBisectionGame.sol"
  },
  {
    "id": "a163cee00f9eadca42657b9e68feeb6933902bdb0d38f8fa1490a82a355b68dc",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract OutputBisectionGame (src/dispute/OutputBisectionGame.sol#24-612) has payable functions:\n\t - IOutputBisectionGame.attack(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#30)\n\t - IOutputBisectionGame.defend(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#35)\n\t - IOutputBisectionGame.resolveClaim(uint256) (src/dispute/interfaces/IOutputBisectionGame.sol#62)\n\t - OutputBisectionGame.move(uint256,Claim,bool) (src/dispute/OutputBisectionGame.sol#200-281)\n\t - OutputBisectionGame.attack(uint256,Claim) (src/dispute/OutputBisectionGame.sol#284-286)\n\t - OutputBisectionGame.defend(uint256,Claim) (src/dispute/OutputBisectionGame.sol#289-291)\n\t - OutputBisectionGame.resolveClaim(uint256) (src/dispute/OutputBisectionGame.sol#361-411)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "resolveClaim",
    "start": 3429,
    "length": 60,
    "filename_relative": "src/dispute/interfaces/IOutputBisectionGame.sol"
  },
  {
    "id": "a163cee00f9eadca42657b9e68feeb6933902bdb0d38f8fa1490a82a355b68dc",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract OutputBisectionGame (src/dispute/OutputBisectionGame.sol#24-612) has payable functions:\n\t - IOutputBisectionGame.attack(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#30)\n\t - IOutputBisectionGame.defend(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#35)\n\t - IOutputBisectionGame.resolveClaim(uint256) (src/dispute/interfaces/IOutputBisectionGame.sol#62)\n\t - OutputBisectionGame.move(uint256,Claim,bool) (src/dispute/OutputBisectionGame.sol#200-281)\n\t - OutputBisectionGame.attack(uint256,Claim) (src/dispute/OutputBisectionGame.sol#284-286)\n\t - OutputBisectionGame.defend(uint256,Claim) (src/dispute/OutputBisectionGame.sol#289-291)\n\t - OutputBisectionGame.resolveClaim(uint256) (src/dispute/OutputBisectionGame.sol#361-411)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "move",
    "start": 9840,
    "length": 4211,
    "filename_relative": "src/dispute/OutputBisectionGame.sol"
  },
  {
    "id": "a163cee00f9eadca42657b9e68feeb6933902bdb0d38f8fa1490a82a355b68dc",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract OutputBisectionGame (src/dispute/OutputBisectionGame.sol#24-612) has payable functions:\n\t - IOutputBisectionGame.attack(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#30)\n\t - IOutputBisectionGame.defend(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#35)\n\t - IOutputBisectionGame.resolveClaim(uint256) (src/dispute/interfaces/IOutputBisectionGame.sol#62)\n\t - OutputBisectionGame.move(uint256,Claim,bool) (src/dispute/OutputBisectionGame.sol#200-281)\n\t - OutputBisectionGame.attack(uint256,Claim) (src/dispute/OutputBisectionGame.sol#284-286)\n\t - OutputBisectionGame.defend(uint256,Claim) (src/dispute/OutputBisectionGame.sol#289-291)\n\t - OutputBisectionGame.resolveClaim(uint256) (src/dispute/OutputBisectionGame.sol#361-411)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "attack",
    "start": 14098,
    "length": 118,
    "filename_relative": "src/dispute/OutputBisectionGame.sol"
  },
  {
    "id": "a163cee00f9eadca42657b9e68feeb6933902bdb0d38f8fa1490a82a355b68dc",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract OutputBisectionGame (src/dispute/OutputBisectionGame.sol#24-612) has payable functions:\n\t - IOutputBisectionGame.attack(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#30)\n\t - IOutputBisectionGame.defend(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#35)\n\t - IOutputBisectionGame.resolveClaim(uint256) (src/dispute/interfaces/IOutputBisectionGame.sol#62)\n\t - OutputBisectionGame.move(uint256,Claim,bool) (src/dispute/OutputBisectionGame.sol#200-281)\n\t - OutputBisectionGame.attack(uint256,Claim) (src/dispute/OutputBisectionGame.sol#284-286)\n\t - OutputBisectionGame.defend(uint256,Claim) (src/dispute/OutputBisectionGame.sol#289-291)\n\t - OutputBisectionGame.resolveClaim(uint256) (src/dispute/OutputBisectionGame.sol#361-411)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "defend",
    "start": 14263,
    "length": 119,
    "filename_relative": "src/dispute/OutputBisectionGame.sol"
  },
  {
    "id": "a163cee00f9eadca42657b9e68feeb6933902bdb0d38f8fa1490a82a355b68dc",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract OutputBisectionGame (src/dispute/OutputBisectionGame.sol#24-612) has payable functions:\n\t - IOutputBisectionGame.attack(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#30)\n\t - IOutputBisectionGame.defend(uint256,Claim) (src/dispute/interfaces/IOutputBisectionGame.sol#35)\n\t - IOutputBisectionGame.resolveClaim(uint256) (src/dispute/interfaces/IOutputBisectionGame.sol#62)\n\t - OutputBisectionGame.move(uint256,Claim,bool) (src/dispute/OutputBisectionGame.sol#200-281)\n\t - OutputBisectionGame.attack(uint256,Claim) (src/dispute/OutputBisectionGame.sol#284-286)\n\t - OutputBisectionGame.defend(uint256,Claim) (src/dispute/OutputBisectionGame.sol#289-291)\n\t - OutputBisectionGame.resolveClaim(uint256) (src/dispute/OutputBisectionGame.sol#361-411)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "resolveClaim",
    "start": 17921,
    "length": 2043,
    "filename_relative": "src/dispute/OutputBisectionGame.sol"
  },
  {
    "id": "c0920fe4b6b04a2b81f69b85402d465719d06978441052f49a6582415934a1bf",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract L1BlockNumber (src/legacy/L1BlockNumber.sol#16-45) has payable functions:\n\t - L1BlockNumber.receive() (src/legacy/L1BlockNumber.sol#22-28)\n\t - L1BlockNumber.fallback() (src/legacy/L1BlockNumber.sol#32-38)\n\tBut does not have a function to withdraw the ether\n",
    "type": "contract",
    "name": "L1BlockNumber",
    "start": 668,
    "length": 888,
    "filename_relative": "src/legacy/L1BlockNumber.sol"
  },
  {
    "id": "c0920fe4b6b04a2b81f69b85402d465719d06978441052f49a6582415934a1bf",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract L1BlockNumber (src/legacy/L1BlockNumber.sol#16-45) has payable functions:\n\t - L1BlockNumber.receive() (src/legacy/L1BlockNumber.sol#22-28)\n\t - L1BlockNumber.fallback() (src/legacy/L1BlockNumber.sol#32-38)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "receive",
    "start": 863,
    "length": 178,
    "filename_relative": "src/legacy/L1BlockNumber.sol"
  },
  {
    "id": "c0920fe4b6b04a2b81f69b85402d465719d06978441052f49a6582415934a1bf",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract L1BlockNumber (src/legacy/L1BlockNumber.sol#16-45) has payable functions:\n\t - L1BlockNumber.receive() (src/legacy/L1BlockNumber.sol#22-28)\n\t - L1BlockNumber.fallback() (src/legacy/L1BlockNumber.sol#32-38)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "fallback",
    "start": 1145,
    "length": 179,
    "filename_relative": "src/legacy/L1BlockNumber.sol"
  },
  {
    "id": "3e52f3459d6607e6494e893c33e98bfaee52639c20f8e8366a39b97d30efeb9d",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract SchemaResolver (src/EAS/resolver/SchemaResolver.sol#11-165) has payable functions:\n\t - ISchemaResolver.attest(Attestation) (src/EAS/resolver/ISchemaResolver.sol#16)\n\t - ISchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#22-28)\n\t - ISchemaResolver.revoke(Attestation) (src/EAS/resolver/ISchemaResolver.sol#33)\n\t - ISchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#39-45)\n\t - SchemaResolver.receive() (src/EAS/resolver/SchemaResolver.sol#41-45)\n\t - SchemaResolver.attest(Attestation) (src/EAS/resolver/SchemaResolver.sol#48-50)\n\t - SchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#53-92)\n\t - SchemaResolver.revoke(Attestation) (src/EAS/resolver/SchemaResolver.sol#95-97)\n\t - SchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#100-139)\n\tBut does not have a function to withdraw the ether\n",
    "type": "contract",
    "name": "SchemaResolver",
    "start": 350,
    "length": 5868,
    "filename_relative": "src/EAS/resolver/SchemaResolver.sol"
  },
  {
    "id": "3e52f3459d6607e6494e893c33e98bfaee52639c20f8e8366a39b97d30efeb9d",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract SchemaResolver (src/EAS/resolver/SchemaResolver.sol#11-165) has payable functions:\n\t - ISchemaResolver.attest(Attestation) (src/EAS/resolver/ISchemaResolver.sol#16)\n\t - ISchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#22-28)\n\t - ISchemaResolver.revoke(Attestation) (src/EAS/resolver/ISchemaResolver.sol#33)\n\t - ISchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#39-45)\n\t - SchemaResolver.receive() (src/EAS/resolver/SchemaResolver.sol#41-45)\n\t - SchemaResolver.attest(Attestation) (src/EAS/resolver/SchemaResolver.sol#48-50)\n\t - SchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#53-92)\n\t - SchemaResolver.revoke(Attestation) (src/EAS/resolver/SchemaResolver.sol#95-97)\n\t - SchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#100-139)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "attest",
    "start": 565,
    "length": 82,
    "filename_relative": "src/EAS/resolver/ISchemaResolver.sol"
  },
  {
    "id": "3e52f3459d6607e6494e893c33e98bfaee52639c20f8e8366a39b97d30efeb9d",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract SchemaResolver (src/EAS/resolver/SchemaResolver.sol#11-165) has payable functions:\n\t - ISchemaResolver.attest(Attestation) (src/EAS/resolver/ISchemaResolver.sol#16)\n\t - ISchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#22-28)\n\t - ISchemaResolver.revoke(Attestation) (src/EAS/resolver/ISchemaResolver.sol#33)\n\t - ISchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#39-45)\n\t - SchemaResolver.receive() (src/EAS/resolver/SchemaResolver.sol#41-45)\n\t - SchemaResolver.attest(Attestation) (src/EAS/resolver/SchemaResolver.sol#48-50)\n\t - SchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#53-92)\n\t - SchemaResolver.revoke(Attestation) (src/EAS/resolver/SchemaResolver.sol#95-97)\n\t - SchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#100-139)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "multiAttest",
    "start": 926,
    "length": 163,
    "filename_relative": "src/EAS/resolver/ISchemaResolver.sol"
  },
  {
    "id": "3e52f3459d6607e6494e893c33e98bfaee52639c20f8e8366a39b97d30efeb9d",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract SchemaResolver (src/EAS/resolver/SchemaResolver.sol#11-165) has payable functions:\n\t - ISchemaResolver.attest(Attestation) (src/EAS/resolver/ISchemaResolver.sol#16)\n\t - ISchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#22-28)\n\t - ISchemaResolver.revoke(Attestation) (src/EAS/resolver/ISchemaResolver.sol#33)\n\t - ISchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#39-45)\n\t - SchemaResolver.receive() (src/EAS/resolver/SchemaResolver.sol#41-45)\n\t - SchemaResolver.attest(Attestation) (src/EAS/resolver/SchemaResolver.sol#48-50)\n\t - SchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#53-92)\n\t - SchemaResolver.revoke(Attestation) (src/EAS/resolver/SchemaResolver.sol#95-97)\n\t - SchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#100-139)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "revoke",
    "start": 1305,
    "length": 82,
    "filename_relative": "src/EAS/resolver/ISchemaResolver.sol"
  },
  {
    "id": "3e52f3459d6607e6494e893c33e98bfaee52639c20f8e8366a39b97d30efeb9d",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract SchemaResolver (src/EAS/resolver/SchemaResolver.sol#11-165) has payable functions:\n\t - ISchemaResolver.attest(Attestation) (src/EAS/resolver/ISchemaResolver.sol#16)\n\t - ISchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#22-28)\n\t - ISchemaResolver.revoke(Attestation) (src/EAS/resolver/ISchemaResolver.sol#33)\n\t - ISchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#39-45)\n\t - SchemaResolver.receive() (src/EAS/resolver/SchemaResolver.sol#41-45)\n\t - SchemaResolver.attest(Attestation) (src/EAS/resolver/SchemaResolver.sol#48-50)\n\t - SchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#53-92)\n\t - SchemaResolver.revoke(Attestation) (src/EAS/resolver/SchemaResolver.sol#95-97)\n\t - SchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#100-139)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "multiRevoke",
    "start": 1695,
    "length": 163,
    "filename_relative": "src/EAS/resolver/ISchemaResolver.sol"
  },
  {
    "id": "3e52f3459d6607e6494e893c33e98bfaee52639c20f8e8366a39b97d30efeb9d",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract SchemaResolver (src/EAS/resolver/SchemaResolver.sol#11-165) has payable functions:\n\t - ISchemaResolver.attest(Attestation) (src/EAS/resolver/ISchemaResolver.sol#16)\n\t - ISchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#22-28)\n\t - ISchemaResolver.revoke(Attestation) (src/EAS/resolver/ISchemaResolver.sol#33)\n\t - ISchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#39-45)\n\t - SchemaResolver.receive() (src/EAS/resolver/SchemaResolver.sol#41-45)\n\t - SchemaResolver.attest(Attestation) (src/EAS/resolver/SchemaResolver.sol#48-50)\n\t - SchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#53-92)\n\t - SchemaResolver.revoke(Attestation) (src/EAS/resolver/SchemaResolver.sol#95-97)\n\t - SchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#100-139)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "receive",
    "start": 1054,
    "length": 113,
    "filename_relative": "src/EAS/resolver/SchemaResolver.sol"
  },
  {
    "id": "3e52f3459d6607e6494e893c33e98bfaee52639c20f8e8366a39b97d30efeb9d",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract SchemaResolver (src/EAS/resolver/SchemaResolver.sol#11-165) has payable functions:\n\t - ISchemaResolver.attest(Attestation) (src/EAS/resolver/ISchemaResolver.sol#16)\n\t - ISchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#22-28)\n\t - ISchemaResolver.revoke(Attestation) (src/EAS/resolver/ISchemaResolver.sol#33)\n\t - ISchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#39-45)\n\t - SchemaResolver.receive() (src/EAS/resolver/SchemaResolver.sol#41-45)\n\t - SchemaResolver.attest(Attestation) (src/EAS/resolver/SchemaResolver.sol#48-50)\n\t - SchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#53-92)\n\t - SchemaResolver.revoke(Attestation) (src/EAS/resolver/SchemaResolver.sol#95-97)\n\t - SchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#100-139)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "attest",
    "start": 1209,
    "length": 146,
    "filename_relative": "src/EAS/resolver/SchemaResolver.sol"
  },
  {
    "id": "3e52f3459d6607e6494e893c33e98bfaee52639c20f8e8366a39b97d30efeb9d",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract SchemaResolver (src/EAS/resolver/SchemaResolver.sol#11-165) has payable functions:\n\t - ISchemaResolver.attest(Attestation) (src/EAS/resolver/ISchemaResolver.sol#16)\n\t - ISchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#22-28)\n\t - ISchemaResolver.revoke(Attestation) (src/EAS/resolver/ISchemaResolver.sol#33)\n\t - ISchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#39-45)\n\t - SchemaResolver.receive() (src/EAS/resolver/SchemaResolver.sol#41-45)\n\t - SchemaResolver.attest(Attestation) (src/EAS/resolver/SchemaResolver.sol#48-50)\n\t - SchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#53-92)\n\t - SchemaResolver.revoke(Attestation) (src/EAS/resolver/SchemaResolver.sol#95-97)\n\t - SchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#100-139)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "multiAttest",
    "start": 1397,
    "length": 1497,
    "filename_relative": "src/EAS/resolver/SchemaResolver.sol"
  },
  {
    "id": "3e52f3459d6607e6494e893c33e98bfaee52639c20f8e8366a39b97d30efeb9d",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract SchemaResolver (src/EAS/resolver/SchemaResolver.sol#11-165) has payable functions:\n\t - ISchemaResolver.attest(Attestation) (src/EAS/resolver/ISchemaResolver.sol#16)\n\t - ISchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#22-28)\n\t - ISchemaResolver.revoke(Attestation) (src/EAS/resolver/ISchemaResolver.sol#33)\n\t - ISchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#39-45)\n\t - SchemaResolver.receive() (src/EAS/resolver/SchemaResolver.sol#41-45)\n\t - SchemaResolver.attest(Attestation) (src/EAS/resolver/SchemaResolver.sol#48-50)\n\t - SchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#53-92)\n\t - SchemaResolver.revoke(Attestation) (src/EAS/resolver/SchemaResolver.sol#95-97)\n\t - SchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#100-139)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "revoke",
    "start": 2936,
    "length": 146,
    "filename_relative": "src/EAS/resolver/SchemaResolver.sol"
  },
  {
    "id": "3e52f3459d6607e6494e893c33e98bfaee52639c20f8e8366a39b97d30efeb9d",
    "impact": "Medium",
    "confidence": "High",
    "check": "locked-ether",
    "description": "Contract locking ether found:\n\tContract SchemaResolver (src/EAS/resolver/SchemaResolver.sol#11-165) has payable functions:\n\t - ISchemaResolver.attest(Attestation) (src/EAS/resolver/ISchemaResolver.sol#16)\n\t - ISchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#22-28)\n\t - ISchemaResolver.revoke(Attestation) (src/EAS/resolver/ISchemaResolver.sol#33)\n\t - ISchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/ISchemaResolver.sol#39-45)\n\t - SchemaResolver.receive() (src/EAS/resolver/SchemaResolver.sol#41-45)\n\t - SchemaResolver.attest(Attestation) (src/EAS/resolver/SchemaResolver.sol#48-50)\n\t - SchemaResolver.multiAttest(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#53-92)\n\t - SchemaResolver.revoke(Attestation) (src/EAS/resolver/SchemaResolver.sol#95-97)\n\t - SchemaResolver.multiRevoke(Attestation[],uint256[]) (src/EAS/resolver/SchemaResolver.sol#100-139)\n\tBut does not have a function to withdraw the ether\n",
    "type": "function",
    "name": "multiRevoke",
    "start": 3124,
    "length": 1496,
    "filename_relative": "src/EAS/resolver/SchemaResolver.sol"
  },
  {
    "id": "0e1e451177ca06fd343007706a5c0c9d51f9fe188265e5d192703a2a4db433fc",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "reentrancy-no-eth",
    "description": "Reentrancy in FaultDisputeGame.step(uint256,bool,bytes,bytes) (src/dispute/FaultDisputeGame.sol#121-184):\n\tExternal calls:\n\t- validStep = VM.step(_stateData,_proof,0) == Claim.unwrap(postState.claim) (src/dispute/FaultDisputeGame.sol#177)\n\tState variables written after the call(s):\n\t- parent.countered = true (src/dispute/FaultDisputeGame.sol#183)\n\tFaultDisputeGame.claimData (src/dispute/FaultDisputeGame.sol#68) can be used in cross function reentrancies:\n\t- FaultDisputeGame.claimData (src/dispute/FaultDisputeGame.sol#68)\n\t- FaultDisputeGame.claimDataLen() (src/dispute/FaultDisputeGame.sol#532-534)\n\t- FaultDisputeGame.findTraceAncestor(Position,uint256) (src/dispute/FaultDisputeGame.sol#546-556)\n\t- FaultDisputeGame.initialize() (src/dispute/FaultDisputeGame.sol#448-529)\n\t- FaultDisputeGame.move(uint256,Claim,bool) (src/dispute/FaultDisputeGame.sol#190-268)\n\t- FaultDisputeGame.resolve() (src/dispute/FaultDisputeGame.sol#360-369)\n\t- FaultDisputeGame.resolveClaim(uint256) (src/dispute/FaultDisputeGame.sol#372-422)\n\t- FaultDisputeGame.step(uint256,bool,bytes,bytes) (src/dispute/FaultDisputeGame.sol#121-184)\n",
    "type": "function",
    "name": "step",
    "start": 5018,
    "length": 3685,
    "filename_relative": "src/dispute/FaultDisputeGame.sol"
  },
  {
    "id": "0e1e451177ca06fd343007706a5c0c9d51f9fe188265e5d192703a2a4db433fc",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "reentrancy-no-eth",
    "description": "Reentrancy in FaultDisputeGame.step(uint256,bool,bytes,bytes) (src/dispute/FaultDisputeGame.sol#121-184):\n\tExternal calls:\n\t- validStep = VM.step(_stateData,_proof,0) == Claim.unwrap(postState.claim) (src/dispute/FaultDisputeGame.sol#177)\n\tState variables written after the call(s):\n\t- parent.countered = true (src/dispute/FaultDisputeGame.sol#183)\n\tFaultDisputeGame.claimData (src/dispute/FaultDisputeGame.sol#68) can be used in cross function reentrancies:\n\t- FaultDisputeGame.claimData (src/dispute/FaultDisputeGame.sol#68)\n\t- FaultDisputeGame.claimDataLen() (src/dispute/FaultDisputeGame.sol#532-534)\n\t- FaultDisputeGame.findTraceAncestor(Position,uint256) (src/dispute/FaultDisputeGame.sol#546-556)\n\t- FaultDisputeGame.initialize() (src/dispute/FaultDisputeGame.sol#448-529)\n\t- FaultDisputeGame.move(uint256,Claim,bool) (src/dispute/FaultDisputeGame.sol#190-268)\n\t- FaultDisputeGame.resolve() (src/dispute/FaultDisputeGame.sol#360-369)\n\t- FaultDisputeGame.resolveClaim(uint256) (src/dispute/FaultDisputeGame.sol#372-422)\n\t- FaultDisputeGame.step(uint256,bool,bytes,bytes) (src/dispute/FaultDisputeGame.sol#121-184)\n",
    "type": "node",
    "name": "validStep = VM.step(_stateData,_proof,0) == Claim.unwrap(postState.claim)",
    "start": 8264,
    "length": 80,
    "filename_relative": "src/dispute/FaultDisputeGame.sol"
  },
  {
    "id": "0e1e451177ca06fd343007706a5c0c9d51f9fe188265e5d192703a2a4db433fc",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "reentrancy-no-eth",
    "description": "Reentrancy in FaultDisputeGame.step(uint256,bool,bytes,bytes) (src/dispute/FaultDisputeGame.sol#121-184):\n\tExternal calls:\n\t- validStep = VM.step(_stateData,_proof,0) == Claim.unwrap(postState.claim) (src/dispute/FaultDisputeGame.sol#177)\n\tState variables written after the call(s):\n\t- parent.countered = true (src/dispute/FaultDisputeGame.sol#183)\n\tFaultDisputeGame.claimData (src/dispute/FaultDisputeGame.sol#68) can be used in cross function reentrancies:\n\t- FaultDisputeGame.claimData (src/dispute/FaultDisputeGame.sol#68)\n\t- FaultDisputeGame.claimDataLen() (src/dispute/FaultDisputeGame.sol#532-534)\n\t- FaultDisputeGame.findTraceAncestor(Position,uint256) (src/dispute/FaultDisputeGame.sol#546-556)\n\t- FaultDisputeGame.initialize() (src/dispute/FaultDisputeGame.sol#448-529)\n\t- FaultDisputeGame.move(uint256,Claim,bool) (src/dispute/FaultDisputeGame.sol#190-268)\n\t- FaultDisputeGame.resolve() (src/dispute/FaultDisputeGame.sol#360-369)\n\t- FaultDisputeGame.resolveClaim(uint256) (src/dispute/FaultDisputeGame.sol#372-422)\n\t- FaultDisputeGame.step(uint256,bool,bytes,bytes) (src/dispute/FaultDisputeGame.sol#121-184)\n",
    "type": "node",
    "name": "parent.countered = true",
    "start": 8673,
    "length": 23,
    "filename_relative": "src/dispute/FaultDisputeGame.sol"
  },
  {
    "id": "1349b68c3b08ecdf27782bd74d9fecadf1739eef738171cbbba403c77a29f424",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "reentrancy-no-eth",
    "description": "Reentrancy in TransferOnion.peel(TransferOnion.Layer[]) (src/periphery/TransferOnion.sol#44-70):\n\tExternal calls:\n\t- TOKEN.safeTransferFrom(SENDER,layer.recipient,layer.amount) (src/periphery/TransferOnion.sol#61)\n\tState variables written after the call(s):\n\t- shell = tempShell (src/periphery/TransferOnion.sol#69)\n\tTransferOnion.shell (src/periphery/TransferOnion.sol#30) can be used in cross function reentrancies:\n\t- TransferOnion.constructor(ERC20,address,bytes32) (src/periphery/TransferOnion.sol#36-40)\n\t- TransferOnion.shell (src/periphery/TransferOnion.sol#30)\n",
    "type": "function",
    "name": "peel",
    "start": 1616,
    "length": 885,
    "filename_relative": "src/periphery/TransferOnion.sol"
  },
  {
    "id": "1349b68c3b08ecdf27782bd74d9fecadf1739eef738171cbbba403c77a29f424",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "reentrancy-no-eth",
    "description": "Reentrancy in TransferOnion.peel(TransferOnion.Layer[]) (src/periphery/TransferOnion.sol#44-70):\n\tExternal calls:\n\t- TOKEN.safeTransferFrom(SENDER,layer.recipient,layer.amount) (src/periphery/TransferOnion.sol#61)\n\tState variables written after the call(s):\n\t- shell = tempShell (src/periphery/TransferOnion.sol#69)\n\tTransferOnion.shell (src/periphery/TransferOnion.sol#30) can be used in cross function reentrancies:\n\t- TransferOnion.constructor(ERC20,address,bytes32) (src/periphery/TransferOnion.sol#36-40)\n\t- TransferOnion.shell (src/periphery/TransferOnion.sol#30)\n",
    "type": "node",
    "name": "TOKEN.safeTransferFrom(SENDER,layer.recipient,layer.amount)",
    "start": 2282,
    "length": 61,
    "filename_relative": "src/periphery/TransferOnion.sol"
  },
  {
    "id": "1349b68c3b08ecdf27782bd74d9fecadf1739eef738171cbbba403c77a29f424",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "reentrancy-no-eth",
    "description": "Reentrancy in TransferOnion.peel(TransferOnion.Layer[]) (src/periphery/TransferOnion.sol#44-70):\n\tExternal calls:\n\t- TOKEN.safeTransferFrom(SENDER,layer.recipient,layer.amount) (src/periphery/TransferOnion.sol#61)\n\tState variables written after the call(s):\n\t- shell = tempShell (src/periphery/TransferOnion.sol#69)\n\tTransferOnion.shell (src/periphery/TransferOnion.sol#30) can be used in cross function reentrancies:\n\t- TransferOnion.constructor(ERC20,address,bytes32) (src/periphery/TransferOnion.sol#36-40)\n\t- TransferOnion.shell (src/periphery/TransferOnion.sol#30)\n",
    "type": "node",
    "name": "shell = tempShell",
    "start": 2477,
    "length": 17,
    "filename_relative": "src/periphery/TransferOnion.sol"
  },
  {
    "id": "14134bc23d372275d187f91848cac770b21d8451fa7b979380dc2ac94588945b",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "reentrancy-no-eth",
    "description": "Reentrancy in DelayedVetoable._handleCall() (src/L1/DelayedVetoable.sol#133-181):\n\tExternal calls:\n\t- _forwardAndHalt(callHash) (src/L1/DelayedVetoable.sol#150)\n\t\t- (success,returndata) = TARGET.call(msg.data) (src/L1/DelayedVetoable.sol#187)\n\tState variables written after the call(s):\n\t- _queuedAt[callHash] = block.timestamp (src/L1/DelayedVetoable.sol#152)\n\tDelayedVetoable._queuedAt (src/L1/DelayedVetoable.sol#61) can be used in cross function reentrancies:\n\t- DelayedVetoable._handleCall() (src/L1/DelayedVetoable.sol#133-181)\n\t- DelayedVetoable.queuedAt(bytes32) (src/L1/DelayedVetoable.sol#121-123)\n",
    "type": "function",
    "name": "_handleCall",
    "start": 5365,
    "length": 2009,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "14134bc23d372275d187f91848cac770b21d8451fa7b979380dc2ac94588945b",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "reentrancy-no-eth",
    "description": "Reentrancy in DelayedVetoable._handleCall() (src/L1/DelayedVetoable.sol#133-181):\n\tExternal calls:\n\t- _forwardAndHalt(callHash) (src/L1/DelayedVetoable.sol#150)\n\t\t- (success,returndata) = TARGET.call(msg.data) (src/L1/DelayedVetoable.sol#187)\n\tState variables written after the call(s):\n\t- _queuedAt[callHash] = block.timestamp (src/L1/DelayedVetoable.sol#152)\n\tDelayedVetoable._queuedAt (src/L1/DelayedVetoable.sol#61) can be used in cross function reentrancies:\n\t- DelayedVetoable._handleCall() (src/L1/DelayedVetoable.sol#133-181)\n\t- DelayedVetoable.queuedAt(bytes32) (src/L1/DelayedVetoable.sol#121-123)\n",
    "type": "node",
    "name": "_forwardAndHalt(callHash)",
    "start": 6102,
    "length": 25,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "14134bc23d372275d187f91848cac770b21d8451fa7b979380dc2ac94588945b",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "reentrancy-no-eth",
    "description": "Reentrancy in DelayedVetoable._handleCall() (src/L1/DelayedVetoable.sol#133-181):\n\tExternal calls:\n\t- _forwardAndHalt(callHash) (src/L1/DelayedVetoable.sol#150)\n\t\t- (success,returndata) = TARGET.call(msg.data) (src/L1/DelayedVetoable.sol#187)\n\tState variables written after the call(s):\n\t- _queuedAt[callHash] = block.timestamp (src/L1/DelayedVetoable.sol#152)\n\tDelayedVetoable._queuedAt (src/L1/DelayedVetoable.sol#61) can be used in cross function reentrancies:\n\t- DelayedVetoable._handleCall() (src/L1/DelayedVetoable.sol#133-181)\n\t- DelayedVetoable.queuedAt(bytes32) (src/L1/DelayedVetoable.sol#121-123)\n",
    "type": "node",
    "name": "(success,returndata) = TARGET.call(msg.data)",
    "start": 7588,
    "length": 63,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "14134bc23d372275d187f91848cac770b21d8451fa7b979380dc2ac94588945b",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "reentrancy-no-eth",
    "description": "Reentrancy in DelayedVetoable._handleCall() (src/L1/DelayedVetoable.sol#133-181):\n\tExternal calls:\n\t- _forwardAndHalt(callHash) (src/L1/DelayedVetoable.sol#150)\n\t\t- (success,returndata) = TARGET.call(msg.data) (src/L1/DelayedVetoable.sol#187)\n\tState variables written after the call(s):\n\t- _queuedAt[callHash] = block.timestamp (src/L1/DelayedVetoable.sol#152)\n\tDelayedVetoable._queuedAt (src/L1/DelayedVetoable.sol#61) can be used in cross function reentrancies:\n\t- DelayedVetoable._handleCall() (src/L1/DelayedVetoable.sol#133-181)\n\t- DelayedVetoable.queuedAt(bytes32) (src/L1/DelayedVetoable.sol#121-123)\n",
    "type": "node",
    "name": "_queuedAt[callHash] = block.timestamp",
    "start": 6155,
    "length": 37,
    "filename_relative": "src/L1/DelayedVetoable.sol"
  },
  {
    "id": "92534abca79638a52d5d43b56586f3d16df4fdf0139a3598bca266997377fe5f",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "reentrancy-no-eth",
    "description": "Reentrancy in OutputBisectionGame.step(uint256,bool,bytes,bytes) (src/dispute/OutputBisectionGame.sol#127-194):\n\tExternal calls:\n\t- validStep = VM.step(_stateData,_proof,Hash.unwrap(uuid)) == Claim.unwrap(postState.claim) (src/dispute/OutputBisectionGame.sol#187)\n\tState variables written after the call(s):\n\t- parent.countered = true (src/dispute/OutputBisectionGame.sol#193)\n\tOutputBisectionGame.claimData (src/dispute/OutputBisectionGame.sol#74) can be used in cross function reentrancies:\n\t- OutputBisectionGame.claimData (src/dispute/OutputBisectionGame.sol#74)\n\t- OutputBisectionGame.claimDataLen() (src/dispute/OutputBisectionGame.sol#463-465)\n\t- OutputBisectionGame.findStartingAndDisputedOutputs(uint256) (src/dispute/OutputBisectionGame.sol#516-577)\n\t- OutputBisectionGame.findTraceAncestor(Position,uint256,bool) (src/dispute/OutputBisectionGame.sol#489-507)\n\t- OutputBisectionGame.initialize() (src/dispute/OutputBisectionGame.sol#437-460)\n\t- OutputBisectionGame.move(uint256,Claim,bool) (src/dispute/OutputBisectionGame.sol#200-281)\n\t- OutputBisectionGame.resolve() (src/dispute/OutputBisectionGame.sol#346-358)\n\t- OutputBisectionGame.resolveClaim(uint256) (src/dispute/OutputBisectionGame.sol#361-411)\n\t- OutputBisectionGame.step(uint256,bool,bytes,bytes) (src/dispute/OutputBisectionGame.sol#127-194)\n",
    "type": "function",
    "name": "step",
    "start": 5273,
    "length": 4262,
    "filename_relative": "src/dispute/OutputBisectionGame.sol"
  },
  {
    "id": "92534abca79638a52d5d43b56586f3d16df4fdf0139a3598bca266997377fe5f",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "reentrancy-no-eth",
    "description": "Reentrancy in OutputBisectionGame.step(uint256,bool,bytes,bytes) (src/dispute/OutputBisectionGame.sol#127-194):\n\tExternal calls:\n\t- validStep = VM.step(_stateData,_proof,Hash.unwrap(uuid)) == Claim.unwrap(postState.claim) (src/dispute/OutputBisectionGame.sol#187)\n\tState variables written after the call(s):\n\t- parent.countered = true (src/dispute/OutputBisectionGame.sol#193)\n\tOutputBisectionGame.claimData (src/dispute/OutputBisectionGame.sol#74) can be used in cross function reentrancies:\n\t- OutputBisectionGame.claimData (src/dispute/OutputBisectionGame.sol#74)\n\t- OutputBisectionGame.claimDataLen() (src/dispute/OutputBisectionGame.sol#463-465)\n\t- OutputBisectionGame.findStartingAndDisputedOutputs(uint256) (src/dispute/OutputBisectionGame.sol#516-577)\n\t- OutputBisectionGame.findTraceAncestor(Position,uint256,bool) (src/dispute/OutputBisectionGame.sol#489-507)\n\t- OutputBisectionGame.initialize() (src/dispute/OutputBisectionGame.sol#437-460)\n\t- OutputBisectionGame.move(uint256,Claim,bool) (src/dispute/OutputBisectionGame.sol#200-281)\n\t- OutputBisectionGame.resolve() (src/dispute/OutputBisectionGame.sol#346-358)\n\t- OutputBisectionGame.resolveClaim(uint256) (src/dispute/OutputBisectionGame.sol#361-411)\n\t- OutputBisectionGame.step(uint256,bool,bytes,bytes) (src/dispute/OutputBisectionGame.sol#127-194)\n",
    "type": "node",
    "name": "validStep = VM.step(_stateData,_proof,Hash.unwrap(uuid)) == Claim.unwrap(postState.claim)",
    "start": 9080,
    "length": 96,
    "filename_relative": "src/dispute/OutputBisectionGame.sol"
  },
  {
    "id": "92534abca79638a52d5d43b56586f3d16df4fdf0139a3598bca266997377fe5f",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "reentrancy-no-eth",
    "description": "Reentrancy in OutputBisectionGame.step(uint256,bool,bytes,bytes) (src/dispute/OutputBisectionGame.sol#127-194):\n\tExternal calls:\n\t- validStep = VM.step(_stateData,_proof,Hash.unwrap(uuid)) == Claim.unwrap(postState.claim) (src/dispute/OutputBisectionGame.sol#187)\n\tState variables written after the call(s):\n\t- parent.countered = true (src/dispute/OutputBisectionGame.sol#193)\n\tOutputBisectionGame.claimData (src/dispute/OutputBisectionGame.sol#74) can be used in cross function reentrancies:\n\t- OutputBisectionGame.claimData (src/dispute/OutputBisectionGame.sol#74)\n\t- OutputBisectionGame.claimDataLen() (src/dispute/OutputBisectionGame.sol#463-465)\n\t- OutputBisectionGame.findStartingAndDisputedOutputs(uint256) (src/dispute/OutputBisectionGame.sol#516-577)\n\t- OutputBisectionGame.findTraceAncestor(Position,uint256,bool) (src/dispute/OutputBisectionGame.sol#489-507)\n\t- OutputBisectionGame.initialize() (src/dispute/OutputBisectionGame.sol#437-460)\n\t- OutputBisectionGame.move(uint256,Claim,bool) (src/dispute/OutputBisectionGame.sol#200-281)\n\t- OutputBisectionGame.resolve() (src/dispute/OutputBisectionGame.sol#346-358)\n\t- OutputBisectionGame.resolveClaim(uint256) (src/dispute/OutputBisectionGame.sol#361-411)\n\t- OutputBisectionGame.step(uint256,bool,bytes,bytes) (src/dispute/OutputBisectionGame.sol#127-194)\n",
    "type": "node",
    "name": "parent.countered = true",
    "start": 9505,
    "length": 23,
    "filename_relative": "src/dispute/OutputBisectionGame.sol"
  },
  {
    "id": "138bfe0b87067edda58ea1bb24d88b46c26dd0da82a6818486cf28b4cb185d01",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "tx-origin",
    "description": "CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes) (src/universal/CrossDomainMessenger.sol#211-306) uses tx.origin for authorization: tx.origin == Constants.ESTIMATION_ADDRESS (src/universal/CrossDomainMessenger.sol#279)\n",
    "type": "function",
    "name": "relayMessage",
    "start": 10427,
    "length": 4822,
    "filename_relative": "src/universal/CrossDomainMessenger.sol"
  },
  {
    "id": "138bfe0b87067edda58ea1bb24d88b46c26dd0da82a6818486cf28b4cb185d01",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "tx-origin",
    "description": "CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes) (src/universal/CrossDomainMessenger.sol#211-306) uses tx.origin for authorization: tx.origin == Constants.ESTIMATION_ADDRESS (src/universal/CrossDomainMessenger.sol#279)\n",
    "type": "node",
    "name": "tx.origin == Constants.ESTIMATION_ADDRESS",
    "start": 14024,
    "length": 41,
    "filename_relative": "src/universal/CrossDomainMessenger.sol"
  },
  {
    "id": "37ae06d1257a210b94d7ebd3a411a5e657e4fe6e09bdcb5405f76bcf5b2e6496",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "tx-origin",
    "description": "CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes) (src/universal/CrossDomainMessenger.sol#211-306) uses tx.origin for authorization: tx.origin == Constants.ESTIMATION_ADDRESS (src/universal/CrossDomainMessenger.sol#302)\n",
    "type": "function",
    "name": "relayMessage",
    "start": 10427,
    "length": 4822,
    "filename_relative": "src/universal/CrossDomainMessenger.sol"
  },
  {
    "id": "37ae06d1257a210b94d7ebd3a411a5e657e4fe6e09bdcb5405f76bcf5b2e6496",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "tx-origin",
    "description": "CrossDomainMessenger.relayMessage(uint256,address,address,uint256,uint256,bytes) (src/universal/CrossDomainMessenger.sol#211-306) uses tx.origin for authorization: tx.origin == Constants.ESTIMATION_ADDRESS (src/universal/CrossDomainMessenger.sol#302)\n",
    "type": "node",
    "name": "tx.origin == Constants.ESTIMATION_ADDRESS",
    "start": 15102,
    "length": 41,
    "filename_relative": "src/universal/CrossDomainMessenger.sol"
  },
  {
    "id": "abea83e11d409c6cde17efdfe955c3a9f5ab92a0bc6720d631933eb091de0c77",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "tx-origin",
    "description": "OptimismPortal.finalizeWithdrawalTransaction(Types.WithdrawalTransaction) (src/L1/OptimismPortal.sol#272-355) uses tx.origin for authorization: success == false && tx.origin == Constants.ESTIMATION_ADDRESS (src/L1/OptimismPortal.sol#352)\n",
    "type": "function",
    "name": "finalizeWithdrawalTransaction",
    "start": 13146,
    "length": 4841,
    "filename_relative": "src/L1/OptimismPortal.sol"
  },
  {
    "id": "abea83e11d409c6cde17efdfe955c3a9f5ab92a0bc6720d631933eb091de0c77",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "tx-origin",
    "description": "OptimismPortal.finalizeWithdrawalTransaction(Types.WithdrawalTransaction) (src/L1/OptimismPortal.sol#272-355) uses tx.origin for authorization: success == false && tx.origin == Constants.ESTIMATION_ADDRESS (src/L1/OptimismPortal.sol#352)\n",
    "type": "node",
    "name": "success == false && tx.origin == Constants.ESTIMATION_ADDRESS",
    "start": 17850,
    "length": 61,
    "filename_relative": "src/L1/OptimismPortal.sol"
  },
  {
    "id": "0369380fef18a61639eac6a12773df792e9969e7bb20eddde54ccf3a263a0987",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "uninitialized-local",
    "description": "FaultDisputeGame.move(uint256,Claim,bool).grandparentClock (src/dispute/FaultDisputeGame.sol#215) is a local variable never initialized\n",
    "type": "variable",
    "name": "grandparentClock",
    "start": 10602,
    "length": 22,
    "filename_relative": "src/dispute/FaultDisputeGame.sol"
  },
  {
    "id": "b806faf2b63e910b939c5ff4b591b1109887080a010986f2af2c30787dbc2a10",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "uninitialized-local",
    "description": "OutputBisectionGame.findStartingAndDisputedOutputs(uint256).currentDepth (src/dispute/OutputBisectionGame.sol#534) is a local variable never initialized\n",
    "type": "variable",
    "name": "currentDepth",
    "start": 25470,
    "length": 20,
    "filename_relative": "src/dispute/OutputBisectionGame.sol"
  },
  {
    "id": "c27cc53c209fdabd18ab2c8f2cddf2053516bcaaa39122d29702ac143d835a2f",
    "impact": "Medium",
    "confidence": "Medium",
    "check": "uninitialized-local",
    "description": "OutputBisectionGame.move(uint256,Claim,bool).grandparentClock (src/dispute/OutputBisectionGame.sol#229) is a local variable never initialized\n",
    "type": "variable",
    "name": "grandparentClock",
    "start": 11713,
    "length": 22,
    "filename_relative": "src/dispute/OutputBisectionGame.sol"
  },
  {
    "id": "31cd4889732cd7c264fbe798960cae4b02c6d6f07d31596ceba32a2aaf3db8f7",
    "impact": "Medium",
    "confidence": "High",
    "check": "write-after-write",
    "description": "OptimismPortal.l2Sender (src/L1/OptimismPortal.sol#53) is written in both\n\tl2Sender = _tx.sender (src/L1/OptimismPortal.sol#331)\n\tl2Sender = Constants.DEFAULT_L2_SENDER (src/L1/OptimismPortal.sol#343)\n",
    "type": "variable",
    "name": "l2Sender",
    "start": 2603,
    "length": 23,
    "filename_relative": "src/L1/OptimismPortal.sol"
  },
  {
    "id": "31cd4889732cd7c264fbe798960cae4b02c6d6f07d31596ceba32a2aaf3db8f7",
    "impact": "Medium",
    "confidence": "High",
    "check": "write-after-write",
    "description": "OptimismPortal.l2Sender (src/L1/OptimismPortal.sol#53) is written in both\n\tl2Sender = _tx.sender (src/L1/OptimismPortal.sol#331)\n\tl2Sender = Constants.DEFAULT_L2_SENDER (src/L1/OptimismPortal.sol#343)\n",
    "type": "node",
    "name": "l2Sender = _tx.sender",
    "start": 16551,
    "length": 21,
    "filename_relative": "src/L1/OptimismPortal.sol"
  },
  {
    "id": "31cd4889732cd7c264fbe798960cae4b02c6d6f07d31596ceba32a2aaf3db8f7",
    "impact": "Medium",
    "confidence": "High",
    "check": "write-after-write",
    "description": "OptimismPortal.l2Sender (src/L1/OptimismPortal.sol#53) is written in both\n\tl2Sender = _tx.sender (src/L1/OptimismPortal.sol#331)\n\tl2Sender = Constants.DEFAULT_L2_SENDER (src/L1/OptimismPortal.sol#343)\n",
    "type": "node",
    "name": "l2Sender = Constants.DEFAULT_L2_SENDER",
    "start": 17345,
    "length": 38,
    "filename_relative": "src/L1/OptimismPortal.sol"
  },
  {
    "id": "9ad67b006fc175893dd26d35a020a52dd8524709d87cca61212ee0e147eb992b",
    "impact": "Medium",
    "confidence": "High",
    "check": "write-after-write",
    "description": "CrossDomainMessenger.xDomainMsgSender (src/universal/CrossDomainMessenger.sol#129) is written in both\n\txDomainMsgSender = _sender (src/universal/CrossDomainMessenger.sol#286)\n\txDomainMsgSender = Constants.DEFAULT_L2_SENDER (src/universal/CrossDomainMessenger.sol#288)\n",
    "type": "variable",
    "name": "xDomainMsgSender",
    "start": 5784,
    "length": 33,
    "filename_relative": "src/universal/CrossDomainMessenger.sol"
  },
  {
    "id": "9ad67b006fc175893dd26d35a020a52dd8524709d87cca61212ee0e147eb992b",
    "impact": "Medium",
    "confidence": "High",
    "check": "write-after-write",
    "description": "CrossDomainMessenger.xDomainMsgSender (src/universal/CrossDomainMessenger.sol#129) is written in both\n\txDomainMsgSender = _sender (src/universal/CrossDomainMessenger.sol#286)\n\txDomainMsgSender = Constants.DEFAULT_L2_SENDER (src/universal/CrossDomainMessenger.sol#288)\n",
    "type": "node",
    "name": "xDomainMsgSender = _sender",
    "start": 14196,
    "length": 26,
    "filename_relative": "src/universal/CrossDomainMessenger.sol"
  },
  {
    "id": "9ad67b006fc175893dd26d35a020a52dd8524709d87cca61212ee0e147eb992b",
    "impact": "Medium",
    "confidence": "High",
    "check": "write-after-write",
    "description": "CrossDomainMessenger.xDomainMsgSender (src/universal/CrossDomainMessenger.sol#129) is written in both\n\txDomainMsgSender = _sender (src/universal/CrossDomainMessenger.sol#286)\n\txDomainMsgSender = Constants.DEFAULT_L2_SENDER (src/universal/CrossDomainMessenger.sol#288)\n",
    "type": "node",
    "name": "xDomainMsgSender = Constants.DEFAULT_L2_SENDER",
    "start": 14329,
    "length": 46,
    "filename_relative": "src/universal/CrossDomainMessenger.sol"
  }
]
