019bab3b-fcd0-7290-bd8b-dd7b4bf015df
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 38923 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 38924 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 38925 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 38926 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 38927 | capability.graph | complete | 1 / 3 | 3 months ago |
| 38928 | detector.run | complete | 1 / 3 | 3 months ago |
| 38929 | validation.fork | complete | 1 / 3 | 3 months ago |
| 39228 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 39229 | tool.slither | complete | 1 / 2 | 3 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-ulvmjlm4)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-ulvmjlm4)
TimelockControllerUpgradeable._execute(address,uint256,bytes) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#348-355) sends eth to arbitrary user
Dangerous calls:
- (success,None) = target.call{value: value}(data) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#353)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations
Reentrancy in TimelockControllerUpgradeable.executeBatch(address[],uint256[],bytes[],bytes32,bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#322-343):
External calls:
- _execute(target,value,payload) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#339)
- (success,None) = target.call{value: value}(data) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#353)
State variables written after the call(s):
- _afterCall(id) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#342)
- _timestamps[id] = _DONE_TIMESTAMP (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#370)
TimelockControllerUpgradeable._timestamps (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#34) can be used in cross function reentrancies:
- TimelockControllerUpgradeable._afterCall(bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#368-371)
- TimelockControllerUpgradeable._schedule(bytes32,uint256) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#266-270)
- TimelockControllerUpgradeable.cancel(bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#279-284)
- TimelockControllerUpgradeable.getTimestamp(bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#173-175)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities
TimelockControllerUpgradeable.isOperationDone(bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#165-167) uses a dangerous strict equality:
- getTimestamp(id) == _DONE_TIMESTAMP (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#166)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities
TimelockControllerUpgradeable._execute(address,uint256,bytes) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#348-355) has external calls inside a loop: (success,None) = target.call{value: value}(data) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#353)
Calls stack containing the loop:
TimelockControllerUpgradeable.executeBatch(address[],uint256[],bytes[],bytes32,bytes32)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop
Reentrancy in TimelockControllerUpgradeable.execute(address,uint256,bytes,bytes32,bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#298-311):
External calls:
- _execute(target,value,payload) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#308)
- (success,None) = target.call{value: value}(data) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#353)
Event emitted after the call(s):
- CallExecuted(id,0,target,value,payload) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#309)
Reentrancy in TimelockControllerUpgradeable.executeBatch(address[],uint256[],bytes[],bytes32,bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#322-343):
External calls:
- _execute(target,value,payload) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#339)
- (success,None) = target.call{value: value}(data) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#353)
Event emitted after the call(s):
- CallExecuted(id,i,target,value,payload) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#340)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
TimelockControllerUpgradeable.isOperation(bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#143-145) uses timestamp for comparisons
Dangerous comparisons:
- getTimestamp(id) > 0 (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#144)
TimelockControllerUpgradeable.isOperationPending(bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#150-152) uses timestamp for comparisons
Dangerous comparisons:
- getTimestamp(id) > _DONE_TIMESTAMP (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#151)
TimelockControllerUpgradeable.isOperationReady(bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#157-160) uses timestamp for comparisons
Dangerous comparisons:
- timestamp > _DONE_TIMESTAMP && timestamp <= block.timestamp (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#159)
TimelockControllerUpgradeable.isOperationDone(bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#165-167) uses timestamp for comparisons
Dangerous comparisons:
- getTimestamp(id) == _DONE_TIMESTAMP (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#166)
TimelockControllerUpgradeable._beforeCall(bytes32,bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#360-363) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(predecessor == bytes32(0) || isOperationDone(predecessor),TimelockController: missing dependency) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#362)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
AddressUpgradeable.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#174-194) uses assembly
- INLINE ASM (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#186-189)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
4 different versions of Solidity are used:
- Version constraint ^0.8.0 is used by:
-^0.8.0 (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#4)
-^0.8.0 (@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol#4)
-^0.8.0 (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#4)
-^0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol#4)
-^0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol#4)
-^0.8.0 (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#4)
-^0.8.0 (@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol#4)
-^0.8.0 (@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol#4)
-^0.8.0 (@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol#4)
- Version constraint ^0.8.2 is used by:
-^0.8.2 (@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#4)
- Version constraint ^0.8.1 is used by:
-^0.8.1 (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#4)
- Version constraint 0.8.16 is used by:
-0.8.16 (contracts/governance/TimelockControllerUpgradeable.sol#2)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used
AccessControlUpgradeable.__AccessControl_init() (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#51-52) is never used and should be removed
AccessControlUpgradeable.__AccessControl_init_unchained() (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#54-55) is never used and should be removed
ContextUpgradeable.__Context_init() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#18-19) is never used and should be removed
ContextUpgradeable.__Context_init_unchained() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is never used and should be removed
ContextUpgradeable._msgData() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#27-29) is never used and should be removed
ERC165Upgradeable.__ERC165_init() (@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol#24-25) is never used and should be removed
ERC165Upgradeable.__ERC165_init_unchained() (@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol#27-28) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
Version constraint ^0.8.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess
- AbiReencodingHeadOverflowWithStaticArrayCleanup
- DirtyBytesArrayToStorage
- DataLocationChangeInInternalOverride
- NestedCalldataArrayAbiReencodingSizeValidation
- SignedImmutables
- ABIDecodeTwoDimensionalArrayMemory
- KeccakCaching.
It is used by:
- ^0.8.0 (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#4)
- ^0.8.0 (@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol#4)
- ^0.8.0 (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#4)
- ^0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol#4)
- ^0.8.0 (@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol#4)
- ^0.8.0 (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#4)
- ^0.8.0 (@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol#4)
- ^0.8.0 (@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol#4)
- ^0.8.0 (@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol#4)
Version constraint ^0.8.2 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess
- AbiReencodingHeadOverflowWithStaticArrayCleanup
- DirtyBytesArrayToStorage
- DataLocationChangeInInternalOverride
- NestedCalldataArrayAbiReencodingSizeValidation
- SignedImmutables
- ABIDecodeTwoDimensionalArrayMemory
- KeccakCaching.
It is used by:
- ^0.8.2 (@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#4)
Version constraint ^0.8.1 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess
- AbiReencodingHeadOverflowWithStaticArrayCleanup
- DirtyBytesArrayToStorage
- DataLocationChangeInInternalOverride
- NestedCalldataArrayAbiReencodingSizeValidation
- SignedImmutables
- ABIDecodeTwoDimensionalArrayMemory
- KeccakCaching.
It is used by:
- ^0.8.1 (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#4)
Version constraint 0.8.16 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- VerbatimInvalidDeduplication
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess
- StorageWriteRemovalBeforeConditionalTermination.
It is used by:
- 0.8.16 (contracts/governance/TimelockControllerUpgradeable.sol#2)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity
Low level call in TimelockControllerUpgradeable._execute(address,uint256,bytes) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#348-355):
- (success,None) = target.call{value: value}(data) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#353)
Low level call in AddressUpgradeable.sendValue(address,uint256) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#60-65):
- (success,None) = recipient.call{value: amount}() (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#63)
Low level call in AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#128-139):
- (success,returndata) = target.call{value: value}(data) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#137)
Low level call in AddressUpgradeable.functionStaticCall(address,bytes,string) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#157-166):
- (success,returndata) = target.staticcall(data) (@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#164)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
Function AccessControlUpgradeable.__AccessControl_init() (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#51-52) is not in mixedCase
Function AccessControlUpgradeable.__AccessControl_init_unchained() (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#54-55) is not in mixedCase
Variable AccessControlUpgradeable.__gap (@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol#259) is not in mixedCase
Function TimelockControllerUpgradeable.__TimelockController_init(uint256,address[],address[]) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#77-83) is not in mixedCase
Function TimelockControllerUpgradeable.__TimelockController_init_unchained(uint256,address[],address[]) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#85-112) is not in mixedCase
Variable TimelockControllerUpgradeable.__gap (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#432) is not in mixedCase
Function ContextUpgradeable.__Context_init() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#18-19) is not in mixedCase
Function ContextUpgradeable.__Context_init_unchained() (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#21-22) is not in mixedCase
Variable ContextUpgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#36) is not in mixedCase
Function ERC165Upgradeable.__ERC165_init() (@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol#24-25) is not in mixedCase
Function ERC165Upgradeable.__ERC165_init_unchained() (@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol#27-28) is not in mixedCase
Variable ERC165Upgradeable.__gap (@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol#41) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
. analyzed (12 contracts with 100 detectors), 40 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.8.16",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.8.16",
"install_stderr": null,
"install_stdout": "Installing solc '0.8.16'...\nVersion '0.8.16' installed."
},
"solc_args": "--base-path /tmp/slither-ulvmjlm4 --include-path /tmp/slither-ulvmjlm4/lib --include-path /tmp/slither-ulvmjlm4/lib/openzeppelin-contracts --allow-paths /tmp/slither-ulvmjlm4,/tmp/slither-ulvmjlm4/lib,/tmp/slither-ulvmjlm4/lib/openzeppelin-contracts,/tmp/slither-ulvmjlm4/src",
"remappings": [
"openzeppelin-contracts/=lib/openzeppelin-contracts/"
],
"source_files": [
"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol",
"@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol",
"@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol",
"@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol",
"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol",
"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol",
"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol",
"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol",
"contracts/governance/TimelockControllerUpgradeable.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 40,
"workspace_hash": "758aeeaf285a5a1139acfc29ffc0d32b919894af4eea7c960c7ac5707f93692d",
"duration_seconds": 1.2498693466186523,
"solc_version_requested": "0.8.16"
}
{"no_findings":false,"summary":"Public initializer allows anyone to set timelock roles if the proxy is left uninitialized.","findings":[{"severity":"high","category":"upgradeability","title":"Unprotected initializer allows timelock takeover if proxy not initialized","exploit_scenario":"If the proxy is deployed without calling initialize in the same transaction, any external account can call initialize and set themselves as proposer/executor, gaining control over timelock scheduling and execution.","recommendation":"Ensure initialization is performed atomically during proxy deployment (pass initializer data to the proxy constructor) and never leave the proxy uninitialized; consider deployment tooling checks to prevent this.","evidence":"initialize is public and only guarded by initializer, allowing first caller to set roles.","locations":["contracts/governance/TimelockControllerUpgradeable.sol:11"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-sjzwb584
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bac10-e848-7913-ba83-ef6901619115
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Reading AUDIT_BUNDLE file**
exec
/bin/bash -lc 'cat /tmp/codex-sjzwb584/AUDIT_BUNDLE.txt' in /tmp/codex-sjzwb584 succeeded in 10ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/governance/TimelockControllerUpgradeable.sol
================================================================================
// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;
import "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol";
contract MyTimelockControllerUpgradeable is TimelockControllerUpgradeable {
/// @custom:oz-upgrades-unsafe-allow constructor
constructor() {
_disableInitializers();
}
function initialize(uint256 minDelay, address[] memory proposers, address[] memory executors)
initializer public
{
__TimelockController_init(minDelay, proposers, executors);
thinking
**Evaluating upgradeable contract initializer risks**
exec
/bin/bash -lc 'nl -ba /tmp/codex-sjzwb584/contracts/governance/TimelockControllerUpgradeable.sol' in /tmp/codex-sjzwb584 succeeded in 8ms:
1 // SPDX-License-Identifier: MIT
2 pragma solidity 0.8.16;
3
4 import "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol";
5
6 contract MyTimelockControllerUpgradeable is TimelockControllerUpgradeable {
7 /// @custom:oz-upgrades-unsafe-allow constructor
8 constructor() {
9 _disableInitializers();
10 }
11 function initialize(uint256 minDelay, address[] memory proposers, address[] memory executors)
12 initializer public
13 {
14 __TimelockController_init(minDelay, proposers, executors);
15 }
16 }
thinking
**Preparing JSON schema for vulnerability report**
codex
{"no_findings":false,"summary":"Public initializer allows anyone to set timelock roles if the proxy is left uninitialized.","findings":[{"severity":"high","category":"upgradeability","title":"Unprotected initializer allows timelock takeover if proxy not initialized","exploit_scenario":"If the proxy is deployed without calling initialize in the same transaction, any external account can call initialize and set themselves as proposer/executor, gaining control over timelock scheduling and execution.","recommendation":"Ensure initialization is performed atomically during proxy deployment (pass initializer data to the proxy constructor) and never leave the proxy uninitialized; consider deployment tooling checks to prevent this.","evidence":"initialize is public and only guarded by initializer, allowing first caller to set roles.","locations":["contracts/governance/TimelockControllerUpgradeable.sol:11"]}]}
tokens used
5,869
{
"codex": {
"ran_at": "2026-01-11T07:59:26.391153+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 12,
"import_count": 14,
"first_party_contracts_count": 1
},
"summary": "Public initializer allows anyone to set timelock roles if the proxy is left uninitialized.",
"raw_final": {
"summary": "Public initializer allows anyone to set timelock roles if the proxy is left uninitialized.",
"findings": [
{
"title": "Unprotected initializer allows timelock takeover if proxy not initialized",
"category": "upgradeability",
"evidence": "initialize is public and only guarded by initializer, allowing first caller to set roles.",
"severity": "high",
"locations": [
"contracts/governance/TimelockControllerUpgradeable.sol:11"
],
"recommendation": "Ensure initialization is performed atomically during proxy deployment (pass initializer data to the proxy constructor) and never leave the proxy uninitialized; consider deployment tooling checks to prevent this.",
"exploit_scenario": "If the proxy is deployed without calling initialize in the same transaction, any external account can call initialize and set themselves as proposer/executor, gaining control over timelock scheduling and execution."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x01c6 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x7fbc79c6 00000019: GT 0000001a: PUSH2 0x00f7 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xb1c5f427 00000024: GT 00000025: PUSH2 0x0095 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xd547741f 0000002f: GT 00000030: PUSH2 0x0064 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xd547741f 0000003a: EQ 0000003b: PUSH2 0x0564 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xe38335e5 00000045: EQ 00000046: PUSH2 0x0584 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf23a6e61 00000050: EQ 00000051: PUSH2 0x0597 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf27a0c92 0000005b: EQ 0000005c: PUSH2 0x05c3 0000005f: JUMPI 00000060: PUSH1 0x00 00000062: DUP1 00000063: REVERT 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0xb1c5f427 0000006b: EQ 0000006c: PUSH2 0x04cb 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0xbc197c81 00000076: EQ 00000077: PUSH2 0x04eb 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xc4d252f5 00000081: EQ 00000082: PUSH2 0x0517 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0xd45c4435 0000008c: EQ 0000008d: PUSH2 0x0537 00000090: JUMPI 00000091: PUSH1 0x00 00000093: DUP1 00000094: REVERT 00000095: JUMPDEST 00000096: DUP1 00000097: PUSH4 0x8f61f4f5 0000009c: GT 0000009d: PUSH2 0x00d1 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0x8f61f4f5 000000a7: EQ 000000a8: PUSH2 0x0452 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0x91d14854 000000b2: EQ 000000b3: PUSH2 0x0474 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0xa217fddf 000000bd: EQ 000000be: PUSH2 0x0494 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0xb08e51c0 000000c8: EQ 000000c9: PUSH2 0x04a9 000000cc: JUMPI 000000cd: PUSH1 0x00 000000cf: DUP1 000000d0: REVERT 000000d1: JUMPDEST 000000d2: DUP1 000000d3: PUSH4 0x7fbc79c6 000000d8: EQ 000000d9: PUSH2 0x03f2 000000dc: JUMPI 000000dd: DUP1 000000de: PUSH4 0x8065657f 000000e3: EQ 000000e4: PUSH2 0x0412 000000e7: JUMPI 000000e8: DUP1 000000e9: PUSH4 0x8f2a0bb0 000000ee: EQ 000000ef: PUSH2 0x0432 000000f2: JUMPI 000000f3: PUSH1 0x00 000000f5: DUP1 000000f6: REVERT 000000f7: JUMPDEST 000000f8: DUP1 000000f9: PUSH4 0x248a9ca3 000000fe: GT 000000ff: PUSH2 0x0164 00000102: JUMPI 00000103: DUP1 00000104: PUSH4 0x31d50750 00000109: GT 0000010a: PUSH2 0x013e 0000010d: JUMPI 0000010e: DUP1 0000010f: PUSH4 0x31d50750 00000114: EQ 00000115: PUSH2 0x0372 00000118: JUMPI 00000119: DUP1 0000011a: PUSH4 0x36568abe 0000011f: EQ 00000120: PUSH2 0x0392 00000123: JUMPI 00000124: DUP1 00000125: PUSH4 0x584b153e 0000012a: EQ 0000012b: PUSH2 0x03b2 0000012e: JUMPI 0000012f: DUP1 00000130: PUSH4 0x64d62353 00000135: EQ 00000136: PUSH2 0x03d2 00000139: JUMPI 0000013a: PUSH1 0x00 0000013c: DUP1 0000013d: REVERT 0000013e: JUMPDEST 0000013f: DUP1 00000140: PUSH4 0x248a9ca3 00000145: EQ 00000146: PUSH2 0x02f2 00000149: JUMPI 0000014a: DUP1 0000014b: PUSH4 0x2ab0f529 00000150: EQ 00000151: PUSH2 0x0322 00000154: JUMPI 00000155: DUP1 00000156: PUSH4 0x2f2ff15d 0000015b: EQ 0000015c: PUSH2 0x0352 0000015f: JUMPI 00000160: PUSH1 0x00 00000162: DUP1 00000163: REVERT 00000164: JUMPDEST 00000165: DUP1 00000166: PUSH4 0x0d3cf6fc 0000016b: GT 0000016c: PUSH2 0x01a0 0000016f: JUMPI 00000170: DUP1 00000171: PUSH4 0x0d3cf6fc 00000176: EQ 00000177: PUSH2 0x0259 0000017a: JUMPI 0000017b: DUP1 0000017c: PUSH4 0x134008d3 00000181: EQ 00000182: PUSH2 0x027b 00000185: JUMPI 00000186: DUP1 00000187: PUSH4 0x13bc9f20 0000018c: EQ 0000018d: PUSH2 0x028e 00000190: JUMPI 00000191: DUP1 00000192: PUSH4 0x150b7a02 00000197: EQ 00000198: PUSH2 0x02ae 0000019b: JUMPI 0000019c: PUSH1 0x00 0000019e: DUP1 0000019f: REVERT 000001a0: JUMPDEST 000001a1: DUP1 000001a2: PUSH4 0x01d5062a 000001a7: EQ 000001a8: PUSH2 0x01d2 000001ab: JUMPI 000001ac: DUP1 000001ad: PUSH4 0x01ffc9a7 000001b2: EQ 000001b3: PUSH2 0x01f4 000001b6: JUMPI 000001b7: DUP1 000001b8: PUSH4 0x07bd0265 000001bd: EQ 000001be: PUSH2 0x0229 000001c1: JUMPI 000001c2: PUSH1 0x00 000001c4: DUP1 000001c5: REVERT 000001c6: JUMPDEST 000001c7: CALLDATASIZE 000001c8: PUSH2 0x01cd 000001cb: JUMPI 000001cc: STOP 000001cd: JUMPDEST 000001ce: PUSH1 0x00 000001d0: DUP1 000001d1: REVERT 000001d2: JUMPDEST 000001d3: CALLVALUE 000001d4: DUP1 000001d5: ISZERO 000001d6: PUSH2 0x01de 000001d9: JUMPI 000001da: PUSH1 0x00 000001dc: DUP1 000001dd: REVERT 000001de: JUMPDEST 000001df: POP 000001e0: PUSH2 0x01f2 000001e3: PUSH2 0x01ed 000001e6: CALLDATASIZE 000001e7: PUSH1 0x04 000001e9: PUSH2 0x16bd 000001ec: JUMP 000001ed: JUMPDEST 000001ee: PUSH2 0x05d8 000001f1: JUMP 000001f2: JUMPDEST 000001f3: STOP 000001f4: JUMPDEST 000001f5: CALLVALUE 000001f6: DUP1 000001f7: ISZERO 000001f8: PUSH2 0x0200 000001fb: JUMPI 000001fc: PUSH1 0x00 000001fe: DUP1 000001ff: REVERT 00000200: JUMPDEST 00000201: POP 00000202: PUSH2 0x0214 00000205: PUSH2 0x020f 00000208: CALLDATASIZE 00000209: PUSH1 0x04 0000020b: PUSH2 0x1731 0000020e: JUMP 0000020f: JUMPDEST 00000210: PUSH2 0x065b 00000213: JUMP 00000214: JUMPDEST 00000215: PUSH1 0x40 00000217: MLOAD 00000218: SWAP1 00000219: ISZERO 0000021a: ISZERO 0000021b: DUP2 0000021c: MSTORE 0000021d: PUSH1 0x20 0000021f: ADD 00000220: JUMPDEST 00000221: PUSH1 0x40 00000223: MLOAD 00000224: DUP1 00000225: SWAP2 00000226: SUB 00000227: SWAP1 00000228: RETURN 00000229: JUMPDEST 0000022a: CALLVALUE 0000022b: DUP1 0000022c: ISZERO 0000022d: PUSH2 0x0235 00000230: JUMPI 00000231: PUSH1 0x00 00000233: DUP1 00000234: REVERT 00000235: JUMPDEST 00000236: POP 00000237: PUSH2 0x024b 0000023a: PUSH1 0x00 0000023c: DUP1 0000023d: MLOAD 0000023e: PUSH1 0x20 00000240: PUSH2 0x21db 00000243: DUP4 00000244: CODECOPY 00000245: DUP2 00000246: MLOAD 00000247: SWAP2 00000248: MSTORE 00000249: DUP2 0000024a: JUMP 0000024b: JUMPDEST 0000024c: PUSH1 0x40 0000024e: MLOAD 0000024f: SWAP1 00000250: DUP2 00000251: MSTORE 00000252: PUSH1 0x20 00000254: ADD 00000255: PUSH2 0x0220 00000258: JUMP 00000259: JUMPDEST 0000025a: CALLVALUE 0000025b: DUP1 0000025c: ISZERO 0000025d: PUSH2 0x0265 00000260: JUMPI 00000261: PUSH1 0x00 00000263: DUP1 00000264: REVERT 00000265: JUMPDEST 00000266: POP 00000267: PUSH2 0x024b 0000026a: PUSH1 0x00 0000026c: DUP1 0000026d: MLOAD 0000026e: PUSH1 0x20 00000270: PUSH2 0x219b 00000273: DUP4 00000274: CODECOPY 00000275: DUP2 00000276: MLOAD 00000277: SWAP2 00000278: MSTORE 00000279: DUP2 0000027a: JUMP 0000027b: JUMPDEST 0000027c: PUSH2 0x01f2 0000027f: PUSH2 0x0289 00000282: CALLDATASIZE 00000283: PUSH1 0x04 00000285: PUSH2 0x175b 00000288: JUMP 00000289: JUMPDEST 0000028a: PUSH2 0x0686 0000028d: JUMP 0000028e: JUMPDEST 0000028f: CALLVALUE 00000290: DUP1 00000291: ISZERO 00000292: PUSH2 0x029a 00000295: JUMPI 00000296: PUSH1 0x00 00000298: DUP1 00000299: REVERT 0000029a: JUMPDEST 0000029b: POP 0000029c: PUSH2 0x0214 0000029f: PUSH2 0x02a9 000002a2: CALLDATASIZE 000002a3: PUSH1 0x04 000002a5: PUSH2 0x17c6 000002a8: JUMP 000002a9: JUMPDEST 000002aa: PUSH2 0x0729 000002ad: JUMP 000002ae: JUMPDEST 000002af: CALLVALUE 000002b0: DUP1 000002b1: ISZERO 000002b2: PUSH2 0x02ba 000002b5: JUMPI 000002b6: PUSH1 0x00 000002b8: DUP1 000002b9: REVERT 000002ba: JUMPDEST 000002bb: POP 000002bc: PUSH2 0x02d9 000002bf: PUSH2 0x02c9 000002c2: CALLDATASIZE 000002c3: PUSH1 0x04 000002c5: PUSH2 0x1894 000002c8: JUMP 000002c9: JUMPDEST 000002ca: PUSH4 0x0a85bd01 000002cf: PUSH1 0xe1 000002d1: SHL 000002d2: SWAP5 000002d3: SWAP4 000002d4: POP 000002d5: POP 000002d6: POP 000002d7: POP 000002d8: JUMP 000002d9: JUMPDEST 000002da: PUSH1 0x40 000002dc: MLOAD 000002dd: PUSH1 0x01 000002df: PUSH1 0x01 000002e1: PUSH1 0xe0 000002e3: SHL 000002e4: SUB 000002e5: NOT 000002e6: SWAP1 000002e7: SWAP2 000002e8: AND 000002e9: DUP2 000002ea: MSTORE 000002eb: PUSH1 0x20 000002ed: ADD 000002ee: PUSH2 0x0220 000002f1: JUMP 000002f2: JUMPDEST 000002f3: CALLVALUE 000002f4: DUP1 000002f5: ISZERO 000002f6: PUSH2 0x02fe 000002f9: JUMPI 000002fa: PUSH1 0x00 000002fc: DUP1 000002fd: REVERT 000002fe: JUMPDEST 000002ff: POP 00000300: PUSH2 0x024b 00000303: PUSH2 0x030d 00000306: CALLDATASIZE 00000307: PUSH1 0x04 00000309: PUSH2 0x17c6 0000030c: JUMP 0000030d: JUMPDEST 0000030e: PUSH1 0x00 00000310: SWAP1 00000311: DUP2 00000312: MSTORE 00000313: PUSH1 0x65 00000315: PUSH1 0x20 00000317: MSTORE 00000318: PUSH1 0x40 0000031a: SWAP1 0000031b: KECCAK256 0000031c: PUSH1 0x01 0000031e: ADD 0000031f: SLOAD 00000320: SWAP1 00000321: JUMP 00000322: JUMPDEST 00000323: CALLVALUE 00000324: DUP1 00000325: ISZERO 00000326: PUSH2 0x032e 00000329: JUMPI 0000032a: PUSH1 0x00 0000032c: DUP1 0000032d: REVERT 0000032e: JUMPDEST 0000032f: POP 00000330: PUSH2 0x0214 00000333: PUSH2 0x033d 00000336: CALLDATASIZE 00000337: PUSH1 0x04 00000339: PUSH2 0x17c6 0000033c: JUMP 0000033d: JUMPDEST 0000033e: PUSH1 0x00 00000340: SWAP1 00000341: DUP2 00000342: MSTORE 00000343: PUSH1 0x97 00000345: PUSH1 0x20 00000347: MSTORE 00000348: PUSH1 0x40 0000034a: SWAP1 0000034b: KECCAK256 0000034c: SLOAD 0000034d: PUSH1 0x01 0000034f: EQ 00000350: SWAP1 00000351: JUMP 00000352: JUMPDEST 00000353: CALLVALUE 00000354: DUP1 00000355: ISZERO 00000356: PUSH2 0x035e 00000359: JUMPI 0000035a: PUSH1 0x00 0000035c: DUP1 0000035d: REVERT 0000035e: JUMPDEST 0000035f: POP 00000360: PUSH2 0x01f2 00000363: PUSH2 0x036d 00000366: CALLDATASIZE 00000367: PUSH1 0x04 00000369: PUSH2 0x18fb 0000036c: JUMP 0000036d: JUMPDEST 0000036e: PUSH2 0x074f 00000371: JUMP 00000372: JUMPDEST 00000373: CALLVALUE 00000374: DUP1 00000375: ISZERO 00000376: PUSH2 0x037e 00000379: JUMPI 0000037a: PUSH1 0x00 0000037c: DUP1 0000037d: REVERT 0000037e: JUMPDEST 0000037f: POP 00000380: PUSH2 0x0214 00000383: PUSH2 0x038d 00000386: CALLDATASIZE 00000387: PUSH1 0x04 00000389: PUSH2 0x17c6 0000038c: JUMP 0000038d: JUMPDEST 0000038e: PUSH2 0x0779 00000391: JUMP 00000392: JUMPDEST 00000393: CALLVALUE 00000394: DUP1 00000395: ISZERO 00000396: PUSH2 0x039e 00000399: JUMPI 0000039a: PUSH1 0x00 0000039c: DUP1 0000039d: REVERT 0000039e: JUMPDEST 0000039f: POP 000003a0: PUSH2 0x01f2 000003a3: PUSH2 0x03ad 000003a6: CALLDATASIZE 000003a7: PUSH1 0x04 000003a9: PUSH2 0x18fb 000003ac: JUMP 000003ad: JUMPDEST 000003ae: PUSH2 0x0792 000003b1: JUMP 000003b2: JUMPDEST 000003b3: CALLVALUE 000003b4: DUP1 000003b5: ISZERO 000003b6: PUSH2 0x03be 000003b9: JUMPI 000003ba: PUSH1 0x00 000003bc: DUP1 000003bd: REVERT 000003be: JUMPDEST 000003bf: POP 000003c0: PUSH2 0x0214 000003c3: PUSH2 0x03cd 000003c6: CALLDATASIZE 000003c7: PUSH1 0x04 000003c9: PUSH2 0x17c6 000003cc: JUMP 000003cd: JUMPDEST 000003ce: PUSH2 0x0815 000003d1: JUMP 000003d2: JUMPDEST 000003d3: CALLVALUE 000003d4: DUP1 000003d5: ISZERO 000003d6: PUSH2 0x03de 000003d9: JUMPI 000003da: PUSH1 0x00 000003dc: DUP1 000003dd: REVERT 000003de: JUMPDEST 000003df: POP 000003e0: PUSH2 0x01f2 000003e3: PUSH2 0x03ed 000003e6: CALLDATASIZE 000003e7: PUSH1 0x04 000003e9: PUSH2 0x17c6 000003ec: JUMP 000003ed: JUMPDEST 000003ee: PUSH2 0x082c 000003f1: JUMP 000003f2: JUMPDEST 000003f3: CALLVALUE 000003f4: DUP1 000003f5: ISZERO 000003f6: PUSH2 0x03fe 000003f9: JUMPI 000003fa: PUSH1 0x00 000003fc: DUP1 000003fd: REVERT 000003fe: JUMPDEST 000003ff: POP 00000400: PUSH2 0x01f2 00000403: PUSH2 0x040d 00000406: CALLDATASIZE 00000407: PUSH1 0x04 00000409: PUSH2 0x19bc 0000040c: JUMP 0000040d: JUMPDEST 0000040e: PUSH2 0x08d0 00000411: JUMP 00000412: JUMPDEST 00000413: CALLVALUE 00000414: DUP1 00000415: ISZERO 00000416: PUSH2 0x041e 00000419: JUMPI 0000041a: PUSH1 0x00 0000041c: DUP1 0000041d: REVERT 0000041e: JUMPDEST 0000041f: POP 00000420: PUSH2 0x024b 00000423: PUSH2 0x042d 00000426: CALLDATASIZE 00000427: PUSH1 0x04 00000429: PUSH2 0x175b 0000042c: JUMP 0000042d: JUMPDEST 0000042e: PUSH2 0x09e7 00000431: JUMP 00000432: JUMPDEST 00000433: CALLVALUE 00000434: DUP1 00000435: ISZERO 00000436: PUSH2 0x043e 00000439: JUMPI 0000043a: PUSH1 0x00 0000043c: DUP1 0000043d: REVERT 0000043e: JUMPDEST 0000043f: POP 00000440: PUSH2 0x01f2 00000443: PUSH2 0x044d 00000446: CALLDATASIZE 00000447: PUSH1 0x04 00000449: PUSH2 0x1a6c 0000044c: JUMP 0000044d: JUMPDEST 0000044e: PUSH2 0x0a26 00000451: JUMP 00000452: JUMPDEST 00000453: CALLVALUE 00000454: DUP1 00000455: ISZERO 00000456: PUSH2 0x045e 00000459: JUMPI 0000045a: PUSH1 0x00 0000045c: DUP1 0000045d: REVERT 0000045e: JUMPDEST 0000045f: POP 00000460: PUSH2 0x024b 00000463: PUSH1 0x00 00000465: DUP1 00000466: MLOAD 00000467: PUSH1 0x20 00000469: PUSH2 0x21bb 0000046c: DUP4 0000046d: CODECOPY 0000046e: DUP2 0000046f: MLOAD 00000470: SWAP2 00000471: MSTORE 00000472: DUP2 00000473: JUMP 00000474: JUMPDEST 00000475: CALLVALUE 00000476: DUP1 00000477: ISZERO 00000478: PUSH2 0x0480 0000047b: JUMPI 0000047c: PUSH1 0x00 0000047e: DUP1 0000047f: REVERT 00000480: JUMPDEST 00000481: POP 00000482: PUSH2 0x0214 00000485: PUSH2 0x048f 00000488: CALLDATASIZE 00000489: PUSH1 0x04 0000048b: PUSH2 0x18fb 0000048e: JUMP 0000048f: JUMPDEST 00000490: PUSH2 0x0b66 00000493: JUMP 00000494: JUMPDEST 00000495: CALLVALUE 00000496: DUP1 00000497: ISZERO 00000498: PUSH2 0x04a0 0000049b: JUMPI 0000049c: PUSH1 0x00 0000049e: DUP1 0000049f: REVERT 000004a0: JUMPDEST 000004a1: POP 000004a2: PUSH2 0x024b 000004a5: PUSH1 0x00 000004a7: DUP2 000004a8: JUMP 000004a9: JUMPDEST 000004aa: CALLVALUE 000004ab: DUP1 000004ac: ISZERO 000004ad: PUSH2 0x04b5 000004b0: JUMPI 000004b1: PUSH1 0x00 000004b3: DUP1 000004b4: REVERT 000004b5: JUMPDEST 000004b6: POP 000004b7: PUSH2 0x024b 000004ba: PUSH1 0x00 000004bc: DUP1 000004bd: MLOAD 000004be: PUSH1 0x20 000004c0: PUSH2 0x21fb 000004c3: DUP4 000004c4: CODECOPY 000004c5: DUP2 000004c6: MLOAD 000004c7: SWAP2 000004c8: MSTORE 000004c9: DUP2 000004ca: JUMP 000004cb: JUMPDEST 000004cc: CALLVALUE 000004cd: DUP1 000004ce: ISZERO 000004cf: PUSH2 0x04d7 000004d2: JUMPI 000004d3: PUSH1 0x00 000004d5: DUP1 000004d6: REVERT 000004d7: JUMPDEST 000004d8: POP 000004d9: PUSH2 0x024b 000004dc: PUSH2 0x04e6 000004df: CALLDATASIZE 000004e0: PUSH1 0x04 000004e2: PUSH2 0x1b1d 000004e5: JUMP 000004e6: JUMPDEST 000004e7: PUSH2 0x0b91 000004ea: JUMP 000004eb: JUMPDEST 000004ec: CALLVALUE 000004ed: DUP1 000004ee: ISZERO 000004ef: PUSH2 0x04f7 000004f2: JUMPI 000004f3: PUSH1 0x00 000004f5: DUP1 000004f6: REVERT 000004f7: JUMPDEST 000004f8: POP 000004f9: PUSH2 0x02d9 000004fc: PUSH2 0x0506 000004ff: CALLDATASIZE 00000500: PUSH1 0x04 00000502: PUSH2 0x1c20 00000505: JUMP 00000506: JUMPDEST 00000507: PUSH4 0xbc197c81 0000050c: PUSH1 0xe0 0000050e: SHL 0000050f: SWAP6 00000510: SWAP5 00000511: POP 00000512: POP 00000513: POP 00000514: POP 00000515: POP 00000516: JUMP 00000517: JUMPDEST 00000518: CALLVALUE 00000519: DUP1 0000051a: ISZERO 0000051b: PUSH2 0x0523 0000051e: JUMPI 0000051f: PUSH1 0x00 00000521: DUP1 00000522: REVERT 00000523: JUMPDEST 00000524: POP 00000525: PUSH2 0x01f2 00000528: PUSH2 0x0532 0000052b: CALLDATASIZE 0000052c: PUSH1 0x04 0000052e: PUSH2 0x17c6 00000531: JUMP 00000532: JUMPDEST 00000533: PUSH2 0x0bd6 00000536: JUMP 00000537: JUMPDEST 00000538: CALLVALUE 00000539: DUP1 0000053a: ISZERO 0000053b: PUSH2 0x0543 0000053e: JUMPI 0000053f: PUSH1 0x00 00000541: DUP1 00000542: REVERT 00000543: JUMPDEST 00000544: POP 00000545: PUSH2 0x024b 00000548: PUSH2 0x0552 0000054b: CALLDATASIZE 0000054c: PUSH1 0x04 0000054e: PUSH2 0x17c6 00000551: JUMP 00000552: JUMPDEST 00000553: PUSH1 0x00 00000555: SWAP1 00000556: DUP2 00000557: MSTORE 00000558: PUSH1 0x97 0000055a: PUSH1 0x20 0000055c: MSTORE 0000055d: PUSH1 0x40 0000055f: SWAP1 00000560: KECCAK256 00000561: SLOAD 00000562: SWAP1 00000563: JUMP 00000564: JUMPDEST 00000565: CALLVALUE 00000566: DUP1 00000567: ISZERO 00000568: PUSH2 0x0570 0000056b: JUMPI 0000056c: PUSH1 0x00 0000056e: DUP1 0000056f: REVERT 00000570: JUMPDEST 00000571: POP 00000572: PUSH2 0x01f2 00000575: PUSH2 0x057f 00000578: CALLDATASIZE 00000579: PUSH1 0x04 0000057b: PUSH2 0x18fb 0000057e: JUMP 0000057f: JUMPDEST 00000580: PUSH2 0x0c99 00000583: JUMP 00000584: JUMPDEST 00000585: PUSH2 0x01f2 00000588: PUSH2 0x0592 0000058b: CALLDATASIZE 0000058c: PUSH1 0x04 0000058e: PUSH2 0x1b1d 00000591: JUMP 00000592: JUMPDEST 00000593: PUSH2 0x0cbe 00000596: JUMP 00000597: JUMPDEST 00000598: CALLVALUE 00000599: DUP1 0000059a: ISZERO 0000059b: PUSH2 0x05a3 0000059e: JUMPI 0000059f: PUSH1 0x00 000005a1: DUP1 000005a2: REVERT 000005a3: JUMPDEST 000005a4: POP 000005a5: PUSH2 0x02d9 000005a8: PUSH2 0x05b2 000005ab: CALLDATASIZE 000005ac: PUSH1 0x04 000005ae: PUSH2 0x1cc9 000005b1: JUMP 000005b2: JUMPDEST 000005b3: PUSH4 0xf23a6e61 000005b8: PUSH1 0xe0 000005ba: SHL 000005bb: SWAP6 000005bc: SWAP5 000005bd: POP 000005be: POP 000005bf: POP 000005c0: POP 000005c1: POP 000005c2: JUMP 000005c3: JUMPDEST 000005c4: CALLVALUE 000005c5: DUP1 000005c6: ISZERO 000005c7: PUSH2 0x05cf 000005ca: JUMPI 000005cb: PUSH1 0x00 000005cd: DUP1 000005ce: REVERT 000005cf: JUMPDEST 000005d0: POP 000005d1: PUSH1 0x98 000005d3: SLOAD 000005d4: PUSH2 0x024b 000005d7: JUMP 000005d8: JUMPDEST 000005d9: PUSH1 0x00 000005db: DUP1 000005dc: MLOAD 000005dd: PUSH1 0x20 000005df: PUSH2 0x21bb 000005e2: DUP4 000005e3: CODECOPY 000005e4: DUP2 000005e5: MLOAD 000005e6: SWAP2 000005e7: MSTORE 000005e8: PUSH2 0x05f0 000005eb: DUP2 000005ec: PUSH2 0x0e36 000005ef: JUMP 000005f0: JUMPDEST 000005f1: PUSH1 0x00 000005f3: PUSH2 0x0600 000005f6: DUP10 000005f7: DUP10 000005f8: DUP10 000005f9: DUP10 000005fa: DUP10 000005fb: DUP10 000005fc: PUSH2 0x09e7 000005ff: JUMP 00000600: JUMPDEST 00000601: SWAP1 00000602: POP 00000603: PUSH2 0x060c 00000606: DUP2 00000607: DUP5 00000608: PUSH2 0x0e43 0000060b: JUMP 0000060c: JUMPDEST 0000060d: PUSH1 0x00 0000060f: DUP2 00000610: PUSH32 0x4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca 00000631: DUP12 00000632: DUP12 00000633: DUP12 00000634: DUP12 00000635: DUP12 00000636: DUP11 00000637: PUSH1 0x40 00000639: MLOAD 0000063a: PUSH2 0x0648 0000063d: SWAP7 0000063e: SWAP6 0000063f: SWAP5 00000640: SWAP4 00000641: SWAP3 00000642: SWAP2 00000643: SWAP1 00000644: PUSH2 0x1d56 00000647: JUMP 00000648: JUMPDEST 00000649: PUSH1 0x40 0000064b: MLOAD 0000064c: DUP1 0000064d: SWAP2 0000064e: SUB 0000064f: SWAP1 00000650: LOG3 00000651: POP 00000652: POP 00000653: POP 00000654: POP 00000655: POP 00000656: POP 00000657: POP 00000658: POP 00000659: POP 0000065a: JUMP 0000065b: JUMPDEST 0000065c: PUSH1 0x00 0000065e: PUSH1 0x01 00000660: PUSH1 0x01 00000662: PUSH1 0xe0 00000664: SHL 00000665: SUB 00000666: NOT 00000667: DUP3 00000668: AND 00000669: PUSH4 0x02711897 0000066e: PUSH1 0xe5 00000670: SHL 00000671: EQ 00000672: DUP1 00000673: PUSH2 0x0680 00000676: JUMPI 00000677: POP 00000678: PUSH2 0x0680 0000067b: DUP3 0000067c: PUSH2 0x0f32 0000067f: JUMP 00000680: JUMPDEST 00000681: SWAP3 00000682: SWAP2 00000683: POP 00000684: POP 00000685: JUMP 00000686: JUMPDEST 00000687: PUSH1 0x00 00000689: DUP1 0000068a: MLOAD 0000068b: PUSH1 0x20 0000068d: PUSH2 0x21db 00000690: DUP4 00000691: CODECOPY 00000692: DUP2 00000693: MLOAD 00000694: SWAP2 00000695: MSTORE 00000696: PUSH2 0x06a0 00000699: DUP2 0000069a: PUSH1 0x00 0000069c: PUSH2 0x0b66 0000069f: JUMP 000006a0: JUMPDEST 000006a1: PUSH2 0x06ae 000006a4: JUMPI 000006a5: PUSH2 0x06ae 000006a8: DUP2 000006a9: CALLER 000006aa: PUSH2 0x0f67 000006ad: JUMP 000006ae: JUMPDEST 000006af: PUSH1 0x00 000006b1: PUSH2 0x06be 000006b4: DUP9 000006b5: DUP9 000006b6: DUP9 000006b7: DUP9 000006b8: DUP9 000006b9: DUP9 000006ba: PUSH2 0x09e7 000006bd: JUMP 000006be: JUMPDEST 000006bf: SWAP1 000006c0: POP 000006c1: PUSH2 0x06ca 000006c4: DUP2 000006c5: DUP6 000006c6: PUSH2 0x0fcb 000006c9: JUMP 000006ca: JUMPDEST 000006cb: PUSH2 0x06d6 000006ce: DUP9 000006cf: DUP9 000006d0: DUP9 000006d1: DUP9 000006d2: PUSH2 0x1066 000006d5: JUMP 000006d6: JUMPDEST 000006d7: PUSH1 0x00 000006d9: DUP2 000006da: PUSH32 0xc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58 000006fb: DUP11 000006fc: DUP11 000006fd: DUP11 000006fe: DUP11 000006ff: PUSH1 0x40 00000701: MLOAD 00000702: PUSH2 0x070e 00000705: SWAP5 00000706: SWAP4 00000707: SWAP3 00000708: SWAP2 00000709: SWAP1 0000070a: PUSH2 0x1d93 0000070d: JUMP 0000070e: JUMPDEST 0000070f: PUSH1 0x40 00000711: MLOAD 00000712: DUP1 00000713: SWAP2 00000714: SUB 00000715: SWAP1 00000716: LOG3 00000717: PUSH2 0x071f 0000071a: DUP2 0000071b: PUSH2 0x1139 0000071e: JUMP 0000071f: JUMPDEST 00000720: POP 00000721: POP 00000722: POP 00000723: POP 00000724: POP 00000725: POP 00000726: POP 00000727: POP 00000728: JUMP 00000729: JUMPDEST 0000072a: PUSH1 0x00 0000072c: DUP2 0000072d: DUP2 0000072e: MSTORE 0000072f: PUSH1 0x97 00000731: PUSH1 0x20 00000733: MSTORE 00000734: PUSH1 0x40 00000736: DUP2 00000737: KECCAK256 00000738: SLOAD 00000739: PUSH1 0x01 0000073b: DUP2 0000073c: GT 0000073d: DUP1 0000073e: ISZERO 0000073f: PUSH2 0x0748 00000742: JUMPI 00000743: POP 00000744: TIMESTAMP 00000745: DUP2 00000746: GT 00000747: ISZERO 00000748: JUMPDEST 00000749: SWAP4 0000074a: SWAP3 0000074b: POP 0000074c: POP 0000074d: POP 0000074e: JUMP 0000074f: JUMPDEST 00000750: PUSH1 0x00 00000752: DUP3 00000753: DUP2 00000754: MSTORE 00000755: PUSH1 0x65 00000757: PUSH1 0x20 00000759: MSTORE 0000075a: PUSH1 0x40 0000075c: SWAP1 0000075d: KECCAK256 0000075e: PUSH1 0x01 00000760: ADD 00000761: SLOAD 00000762: PUSH2 0x076a 00000765: DUP2 00000766: PUSH2 0x0e36 00000769: JUMP 0000076a: JUMPDEST 0000076b: PUSH2 0x0774 0000076e: DUP4 0000076f: DUP4 00000770: PUSH2 0x1172 00000773: JUMP 00000774: JUMPDEST 00000775: POP 00000776: POP 00000777: POP 00000778: JUMP 00000779: JUMPDEST 0000077a: PUSH1 0x00 0000077c: DUP2 0000077d: DUP2 0000077e: MSTORE 0000077f: PUSH1 0x97 00000781: PUSH1 0x20 00000783: MSTORE 00000784: PUSH1 0x40 00000786: DUP2 00000787: KECCAK256 00000788: SLOAD 00000789: DUP2 0000078a: SWAP1 0000078b: JUMPDEST 0000078c: GT 0000078d: SWAP3 0000078e: SWAP2 0000078f: POP 00000790: POP 00000791: JUMP 00000792: JUMPDEST 00000793: PUSH1 0x01 00000795: PUSH1 0x01 00000797: PUSH1 0xa0 00000799: SHL 0000079a: SUB 0000079b: DUP2 0000079c: AND 0000079d: CALLER 0000079e: EQ 0000079f: PUSH2 0x0807 000007a2: JUMPI 000007a3: PUSH1 0x40 000007a5: MLOAD 000007a6: PUSH3 0x461bcd 000007aa: PUSH1 0xe5 000007ac: SHL 000007ad: DUP2 000007ae: MSTORE 000007af: PUSH1 0x20 000007b1: PUSH1 0x04 000007b3: DUP3 000007b4: ADD 000007b5: MSTORE 000007b6: PUSH1 0x2f 000007b8: PUSH1 0x24 000007ba: DUP3 000007bb: ADD 000007bc: MSTORE 000007bd: PUSH32 0x416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365 000007de: PUSH1 0x44 000007e0: DUP3 000007e1: ADD 000007e2: MSTORE 000007e3: PUSH15 0x103937b632b9903337b91039b2b633 000007f3: PUSH1 0x89 000007f5: SHL 000007f6: PUSH1 0x64 000007f8: DUP3 000007f9: ADD 000007fa: MSTORE 000007fb: PUSH1 0x84 000007fd: ADD 000007fe: JUMPDEST 000007ff: PUSH1 0x40 00000801: MLOAD 00000802: DUP1 00000803: SWAP2 00000804: SUB 00000805: SWAP1 00000806: REVERT 00000807: JUMPDEST 00000808: PUSH2 0x0811 0000080b: DUP3 0000080c: DUP3 0000080d: PUSH2 0x11f8 00000810: JUMP 00000811: JUMPDEST 00000812: POP 00000813: POP 00000814: JUMP 00000815: JUMPDEST 00000816: PUSH1 0x00 00000818: DUP2 00000819: DUP2 0000081a: MSTORE 0000081b: PUSH1 0x97 0000081d: PUSH1 0x20 0000081f: MSTORE 00000820: PUSH1 0x40 00000822: DUP2 00000823: KECCAK256 00000824: SLOAD 00000825: PUSH1 0x01 00000827: SWAP1 00000828: PUSH2 0x078b 0000082b: JUMP 0000082c: JUMPDEST 0000082d: CALLER 0000082e: ADDRESS 0000082f: EQ 00000830: PUSH2 0x088f 00000833: JUMPI 00000834: PUSH1 0x40 00000836: MLOAD 00000837: PUSH3 0x461bcd 0000083b: PUSH1 0xe5 0000083d: SHL 0000083e: DUP2 0000083f: MSTORE 00000840: PUSH1 0x20 00000842: PUSH1 0x04 00000844: DUP3 00000845: ADD 00000846: MSTORE 00000847: PUSH1 0x2b 00000849: PUSH1 0x24 0000084b: DUP3 0000084c: ADD 0000084d: MSTORE 0000084e: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d75737420 0000086f: PUSH1 0x44 00000871: DUP3 00000872: ADD 00000873: MSTORE 00000874: PUSH11 0x62652074696d656c6f636b 00000880: PUSH1 0xa8 00000882: SHL 00000883: PUSH1 0x64 00000885: DUP3 00000886: ADD 00000887: MSTORE 00000888: PUSH1 0x84 0000088a: ADD 0000088b: PUSH2 0x07fe 0000088e: JUMP 0000088f: JUMPDEST 00000890: PUSH1 0x98 00000892: SLOAD 00000893: PUSH1 0x40 00000895: DUP1 00000896: MLOAD 00000897: SWAP2 00000898: DUP3 00000899: MSTORE 0000089a: PUSH1 0x20 0000089c: DUP3 0000089d: ADD 0000089e: DUP4 0000089f: SWAP1 000008a0: MSTORE 000008a1: PUSH32 0x11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5 000008c2: SWAP2 000008c3: ADD 000008c4: PUSH1 0x40 000008c6: MLOAD 000008c7: DUP1 000008c8: SWAP2 000008c9: SUB 000008ca: SWAP1 000008cb: LOG1 000008cc: PUSH1 0x98 000008ce: SSTORE 000008cf: JUMP 000008d0: JUMPDEST 000008d1: PUSH1 0x00 000008d3: SLOAD 000008d4: PUSH2 0x0100 000008d7: SWAP1 000008d8: DIV 000008d9: PUSH1 0xff 000008db: AND 000008dc: ISZERO 000008dd: DUP1 000008de: DUP1 000008df: ISZERO 000008e0: PUSH2 0x08f0 000008e3: JUMPI 000008e4: POP 000008e5: PUSH1 0x00 000008e7: SLOAD 000008e8: PUSH1 0x01 000008ea: PUSH1 0xff 000008ec: SWAP1 000008ed: SWAP2 000008ee: AND 000008ef: LT 000008f0: JUMPDEST 000008f1: DUP1 000008f2: PUSH2 0x090a 000008f5: JUMPI 000008f6: POP 000008f7: ADDRESS 000008f8: EXTCODESIZE 000008f9: ISZERO 000008fa: DUP1 000008fb: ISZERO 000008fc: PUSH2 0x090a 000008ff: JUMPI 00000900: POP 00000901: PUSH1 0x00 00000903: SLOAD 00000904: PUSH1 0xff 00000906: AND 00000907: PUSH1 0x01 00000909: EQ 0000090a: JUMPDEST 0000090b: PUSH2 0x096d 0000090e: JUMPI 0000090f: PUSH1 0x40 00000911: MLOAD 00000912: PUSH3 0x461bcd 00000916: PUSH1 0xe5 00000918: SHL 00000919: DUP2 0000091a: MSTORE 0000091b: PUSH1 0x20 0000091d: PUSH1 0x04 0000091f: DUP3 00000920: ADD 00000921: MSTORE 00000922: PUSH1 0x2e 00000924: PUSH1 0x24 00000926: DUP3 00000927: ADD 00000928: MSTORE 00000929: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561 0000094a: PUSH1 0x44 0000094c: DUP3 0000094d: ADD 0000094e: MSTORE 0000094f: PUSH14 0x191e481a5b9a5d1a585b1a5e9959 0000095e: PUSH1 0x92 00000960: SHL 00000961: PUSH1 0x64 00000963: DUP3 00000964: ADD 00000965: MSTORE 00000966: PUSH1 0x84 00000968: ADD 00000969: PUSH2 0x07fe 0000096c: JUMP 0000096d: JUMPDEST 0000096e: PUSH1 0x00 00000970: DUP1 00000971: SLOAD 00000972: PUSH1 0xff 00000974: NOT 00000975: AND 00000976: PUSH1 0x01 00000978: OR 00000979: SWAP1 0000097a: SSTORE 0000097b: DUP1 0000097c: ISZERO 0000097d: PUSH2 0x0990 00000980: JUMPI 00000981: PUSH1 0x00 00000983: DUP1 00000984: SLOAD 00000985: PUSH2 0xff00 00000988: NOT 00000989: AND 0000098a: PUSH2 0x0100 0000098d: OR 0000098e: SWAP1 0000098f: SSTORE 00000990: JUMPDEST 00000991: PUSH2 0x099b 00000994: DUP5 00000995: DUP5 00000996: DUP5 00000997: PUSH2 0x125f 0000099a: JUMP 0000099b: JUMPDEST 0000099c: DUP1 0000099d: ISZERO 0000099e: PUSH2 0x09e1 000009a1: JUMPI 000009a2: PUSH1 0x00 000009a4: DUP1 000009a5: SLOAD 000009a6: PUSH2 0xff00 000009a9: NOT 000009aa: AND 000009ab: SWAP1 000009ac: SSTORE 000009ad: PUSH1 0x40 000009af: MLOAD 000009b0: PUSH1 0x01 000009b2: DUP2 000009b3: MSTORE 000009b4: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498 000009d5: SWAP1 000009d6: PUSH1 0x20 000009d8: ADD 000009d9: PUSH1 0x40 000009db: MLOAD 000009dc: DUP1 000009dd: SWAP2 000009de: SUB 000009df: SWAP1 000009e0: LOG1 000009e1: JUMPDEST 000009e2: POP 000009e3: POP 000009e4: POP 000009e5: POP 000009e6: JUMP 000009e7: JUMPDEST 000009e8: PUSH1 0x00 000009ea: DUP7 000009eb: DUP7 000009ec: DUP7 000009ed: DUP7 000009ee: DUP7 000009ef: DUP7 000009f0: PUSH1 0x40 000009f2: MLOAD 000009f3: PUSH1 0x20 000009f5: ADD 000009f6: PUSH2 0x0a04 000009f9: SWAP7 000009fa: SWAP6 000009fb: SWAP5 000009fc: SWAP4 000009fd: SWAP3 000009fe: SWAP2 000009ff: SWAP1 00000a00: PUSH2 0x1d56 00000a03: JUMP 00000a04: JUMPDEST 00000a05: PUSH1 0x40 00000a07: MLOAD 00000a08: PUSH1 0x20 00000a0a: DUP2 00000a0b: DUP4 00000a0c: SUB 00000a0d: SUB 00000a0e: DUP2 00000a0f: MSTORE 00000a10: SWAP1 00000a11: PUSH1 0x40 00000a13: MSTORE 00000a14: DUP1 00000a15: MLOAD 00000a16: SWAP1 00000a17: PUSH1 0x20 00000a19: ADD 00000a1a: KECCAK256 00000a1b: SWAP1 00000a1c: POP 00000a1d: SWAP7 00000a1e: SWAP6 00000a1f: POP 00000a20: POP 00000a21: POP 00000a22: POP 00000a23: POP 00000a24: POP 00000a25: JUMP 00000a26: JUMPDEST 00000a27: PUSH1 0x00 00000a29: DUP1 00000a2a: MLOAD 00000a2b: PUSH1 0x20 00000a2d: PUSH2 0x21bb 00000a30: DUP4 00000a31: CODECOPY 00000a32: DUP2 00000a33: MLOAD 00000a34: SWAP2 00000a35: MSTORE 00000a36: PUSH2 0x0a3e 00000a39: DUP2 00000a3a: PUSH2 0x0e36 00000a3d: JUMP 00000a3e: JUMPDEST 00000a3f: DUP9 00000a40: DUP8 00000a41: EQ 00000a42: PUSH2 0x0a5d 00000a45: JUMPI 00000a46: PUSH1 0x40 00000a48: MLOAD 00000a49: PUSH3 0x461bcd 00000a4d: PUSH1 0xe5 00000a4f: SHL 00000a50: DUP2 00000a51: MSTORE 00000a52: PUSH1 0x04 00000a54: ADD 00000a55: PUSH2 0x07fe 00000a58: SWAP1 00000a59: PUSH2 0x1dc5 00000a5c: JUMP 00000a5d: JUMPDEST 00000a5e: DUP9 00000a5f: DUP6 00000a60: EQ 00000a61: PUSH2 0x0a7c 00000a64: JUMPI 00000a65: PUSH1 0x40 00000a67: MLOAD 00000a68: PUSH3 0x461bcd 00000a6c: PUSH1 0xe5 00000a6e: SHL 00000a6f: DUP2 00000a70: MSTORE 00000a71: PUSH1 0x04 00000a73: ADD 00000a74: PUSH2 0x07fe 00000a77: SWAP1 00000a78: PUSH2 0x1dc5 00000a7b: JUMP 00000a7c: JUMPDEST 00000a7d: PUSH1 0x00 00000a7f: PUSH2 0x0a8e 00000a82: DUP12 00000a83: DUP12 00000a84: DUP12 00000a85: DUP12 00000a86: DUP12 00000a87: DUP12 00000a88: DUP12 00000a89: DUP12 00000a8a: PUSH2 0x0b91 00000a8d: JUMP 00000a8e: JUMPDEST 00000a8f: SWAP1 00000a90: POP 00000a91: PUSH2 0x0a9a 00000a94: DUP2 00000a95: DUP5 00000a96: PUSH2 0x0e43 00000a99: JUMP 00000a9a: JUMPDEST 00000a9b: PUSH1 0x00 00000a9d: JUMPDEST 00000a9e: DUP11 00000a9f: DUP2 00000aa0: LT 00000aa1: ISZERO 00000aa2: PUSH2 0x0b58 00000aa5: JUMPI 00000aa6: DUP1 00000aa7: DUP3 00000aa8: PUSH32 0x4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca 00000ac9: DUP15 00000aca: DUP15 00000acb: DUP6 00000acc: DUP2 00000acd: DUP2 00000ace: LT 00000acf: PUSH2 0x0ada 00000ad2: JUMPI 00000ad3: PUSH2 0x0ada 00000ad6: PUSH2 0x1e08 00000ad9: JUMP 00000ada: JUMPDEST 00000adb: SWAP1 00000adc: POP 00000add: PUSH1 0x20 00000adf: MUL 00000ae0: ADD 00000ae1: PUSH1 0x20 00000ae3: DUP2 00000ae4: ADD 00000ae5: SWAP1 00000ae6: PUSH2 0x0aef 00000ae9: SWAP2 00000aea: SWAP1 00000aeb: PUSH2 0x1e1e 00000aee: JUMP 00000aef: JUMPDEST 00000af0: DUP14 00000af1: DUP14 00000af2: DUP7 00000af3: DUP2 00000af4: DUP2 00000af5: LT 00000af6: PUSH2 0x0b01 00000af9: JUMPI 00000afa: PUSH2 0x0b01 00000afd: PUSH2 0x1e08 00000b00: JUMP 00000b01: JUMPDEST 00000b02: SWAP1 00000b03: POP 00000b04: PUSH1 0x20 00000b06: MUL 00000b07: ADD 00000b08: CALLDATALOAD 00000b09: DUP13 00000b0a: DUP13 00000b0b: DUP8 00000b0c: DUP2 00000b0d: DUP2 00000b0e: LT 00000b0f: PUSH2 0x0b1a 00000b12: JUMPI 00000b13: PUSH2 0x0b1a 00000b16: PUSH2 0x1e08 00000b19: JUMP 00000b1a: JUMPDEST 00000b1b: SWAP1 00000b1c: POP 00000b1d: PUSH1 0x20 00000b1f: MUL 00000b20: DUP2 00000b21: ADD 00000b22: SWAP1 00000b23: PUSH2 0x0b2c 00000b26: SWAP2 00000b27: SWAP1 00000b28: PUSH2 0x1e39 00000b2b: JUMP 00000b2c: JUMPDEST 00000b2d: DUP13 00000b2e: DUP12 00000b2f: PUSH1 0x40 00000b31: MLOAD 00000b32: PUSH2 0x0b40 00000b35: SWAP7 00000b36: SWAP6 00000b37: SWAP5 00000b38: SWAP4 00000b39: SWAP3 00000b3a: SWAP2 00000b3b: SWAP1 00000b3c: PUSH2 0x1d56 00000b3f: JUMP 00000b40: JUMPDEST 00000b41: PUSH1 0x40 00000b43: MLOAD 00000b44: DUP1 00000b45: SWAP2 00000b46: SUB 00000b47: SWAP1 00000b48: LOG3 00000b49: PUSH2 0x0b51 00000b4c: DUP2 00000b4d: PUSH2 0x1e95 00000b50: JUMP 00000b51: JUMPDEST 00000b52: SWAP1 00000b53: POP 00000b54: PUSH2 0x0a9d 00000b57: JUMP 00000b58: JUMPDEST 00000b59: POP 00000b5a: POP 00000b5b: POP 00000b5c: POP 00000b5d: POP 00000b5e: POP 00000b5f: POP 00000b60: POP 00000b61: POP 00000b62: POP 00000b63: POP 00000b64: POP 00000b65: JUMP 00000b66: JUMPDEST 00000b67: PUSH1 0x00 00000b69: SWAP2 00000b6a: DUP3 00000b6b: MSTORE 00000b6c: PUSH1 0x65 00000b6e: PUSH1 0x20 00000b70: SWAP1 00000b71: DUP2 00000b72: MSTORE 00000b73: PUSH1 0x40 00000b75: DUP1 00000b76: DUP5 00000b77: KECCAK256 00000b78: PUSH1 0x01 00000b7a: PUSH1 0x01 00000b7c: PUSH1 0xa0 00000b7e: SHL 00000b7f: SUB 00000b80: SWAP4 00000b81: SWAP1 00000b82: SWAP4 00000b83: AND 00000b84: DUP5 00000b85: MSTORE 00000b86: SWAP2 00000b87: SWAP1 00000b88: MSTORE 00000b89: SWAP1 00000b8a: KECCAK256 00000b8b: SLOAD 00000b8c: PUSH1 0xff 00000b8e: AND 00000b8f: SWAP1 00000b90: JUMP 00000b91: JUMPDEST 00000b92: PUSH1 0x00 00000b94: DUP9 00000b95: DUP9 00000b96: DUP9 00000b97: DUP9 00000b98: DUP9 00000b99: DUP9 00000b9a: DUP9 00000b9b: DUP9 00000b9c: PUSH1 0x40 00000b9e: MLOAD 00000b9f: PUSH1 0x20 00000ba1: ADD 00000ba2: PUSH2 0x0bb2 00000ba5: SWAP9 00000ba6: SWAP8 00000ba7: SWAP7 00000ba8: SWAP6 00000ba9: SWAP5 00000baa: SWAP4 00000bab: SWAP3 00000bac: SWAP2 00000bad: SWAP1 00000bae: PUSH2 0x1f3f 00000bb1: JUMP 00000bb2: JUMPDEST 00000bb3: PUSH1 0x40 00000bb5: MLOAD 00000bb6: PUSH1 0x20 00000bb8: DUP2 00000bb9: DUP4 00000bba: SUB 00000bbb: SUB 00000bbc: DUP2 00000bbd: MSTORE 00000bbe: SWAP1 00000bbf: PUSH1 0x40 00000bc1: MSTORE 00000bc2: DUP1 00000bc3: MLOAD 00000bc4: SWAP1 00000bc5: PUSH1 0x20 00000bc7: ADD 00000bc8: KECCAK256 00000bc9: SWAP1 00000bca: POP 00000bcb: SWAP9 00000bcc: SWAP8 00000bcd: POP 00000bce: POP 00000bcf: POP 00000bd0: POP 00000bd1: POP 00000bd2: POP 00000bd3: POP 00000bd4: POP 00000bd5: JUMP 00000bd6: JUMPDEST 00000bd7: PUSH1 0x00 00000bd9: DUP1 00000bda: MLOAD 00000bdb: PUSH1 0x20 00000bdd: PUSH2 0x21fb 00000be0: DUP4 00000be1: CODECOPY 00000be2: DUP2 00000be3: MLOAD 00000be4: SWAP2 00000be5: MSTORE 00000be6: PUSH2 0x0bee 00000be9: DUP2 00000bea: PUSH2 0x0e36 00000bed: JUMP 00000bee: JUMPDEST 00000bef: PUSH2 0x0bf7 00000bf2: DUP3 00000bf3: PUSH2 0x0815 00000bf6: JUMP 00000bf7: JUMPDEST 00000bf8: PUSH2 0x0c5d 00000bfb: JUMPI 00000bfc: PUSH1 0x40 00000bfe: MLOAD 00000bff: PUSH3 0x461bcd 00000c03: PUSH1 0xe5 00000c05: SHL 00000c06: DUP2 00000c07: MSTORE 00000c08: PUSH1 0x20 00000c0a: PUSH1 0x04 00000c0c: DUP3 00000c0d: ADD 00000c0e: MSTORE 00000c0f: PUSH1 0x31 00000c11: PUSH1 0x24 00000c13: DUP3 00000c14: ADD 00000c15: MSTORE 00000c16: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206361 00000c37: PUSH1 0x44 00000c39: DUP3 00000c3a: ADD 00000c3b: MSTORE 00000c3c: PUSH17 0x1b9b9bdd0818994818d85b98d95b1b1959 00000c4e: PUSH1 0x7a 00000c50: SHL 00000c51: PUSH1 0x64 00000c53: DUP3 00000c54: ADD 00000c55: MSTORE 00000c56: PUSH1 0x84 00000c58: ADD 00000c59: PUSH2 0x07fe 00000c5c: JUMP 00000c5d: JUMPDEST 00000c5e: PUSH1 0x00 00000c60: DUP3 00000c61: DUP2 00000c62: MSTORE 00000c63: PUSH1 0x97 00000c65: PUSH1 0x20 00000c67: MSTORE 00000c68: PUSH1 0x40 00000c6a: DUP1 00000c6b: DUP3 00000c6c: KECCAK256 00000c6d: DUP3 00000c6e: SWAP1 00000c6f: SSTORE 00000c70: MLOAD 00000c71: DUP4 00000c72: SWAP2 00000c73: PUSH32 0xbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb70 00000c94: SWAP2 00000c95: LOG2 00000c96: POP 00000c97: POP 00000c98: JUMP 00000c99: JUMPDEST 00000c9a: PUSH1 0x00 00000c9c: DUP3 00000c9d: DUP2 00000c9e: MSTORE 00000c9f: PUSH1 0x65 00000ca1: PUSH1 0x20 00000ca3: MSTORE 00000ca4: PUSH1 0x40 00000ca6: SWAP1 00000ca7: KECCAK256 00000ca8: PUSH1 0x01 00000caa: ADD 00000cab: SLOAD 00000cac: PUSH2 0x0cb4 00000caf: DUP2 00000cb0: PUSH2 0x0e36 00000cb3: JUMP 00000cb4: JUMPDEST 00000cb5: PUSH2 0x0774 00000cb8: DUP4 00000cb9: DUP4 00000cba: PUSH2 0x11f8 00000cbd: JUMP 00000cbe: JUMPDEST 00000cbf: PUSH1 0x00 00000cc1: DUP1 00000cc2: MLOAD 00000cc3: PUSH1 0x20 00000cc5: PUSH2 0x21db 00000cc8: DUP4 00000cc9: CODECOPY 00000cca: DUP2 00000ccb: MLOAD 00000ccc: SWAP2 00000ccd: MSTORE 00000cce: PUSH2 0x0cd8 00000cd1: DUP2 00000cd2: PUSH1 0x00 00000cd4: PUSH2 0x0b66 00000cd7: JUMP 00000cd8: JUMPDEST 00000cd9: PUSH2 0x0ce6 00000cdc: JUMPI 00000cdd: PUSH2 0x0ce6 00000ce0: DUP2 00000ce1: CALLER 00000ce2: PUSH2 0x0f67 00000ce5: JUMP 00000ce6: JUMPDEST 00000ce7: DUP8 00000ce8: DUP7 00000ce9: EQ 00000cea: PUSH2 0x0d05 00000ced: JUMPI 00000cee: PUSH1 0x40 00000cf0: MLOAD 00000cf1: PUSH3 0x461bcd 00000cf5: PUSH1 0xe5 00000cf7: SHL 00000cf8: DUP2 00000cf9: MSTORE 00000cfa: PUSH1 0x04 00000cfc: ADD 00000cfd: PUSH2 0x07fe 00000d00: SWAP1 00000d01: PUSH2 0x1dc5 00000d04: JUMP 00000d05: JUMPDEST 00000d06: DUP8 00000d07: DUP5 00000d08: EQ 00000d09: PUSH2 0x0d24 00000d0c: JUMPI 00000d0d: PUSH1 0x40 00000d0f: MLOAD 00000d10: PUSH3 0x461bcd 00000d14: PUSH1 0xe5 00000d16: SHL 00000d17: DUP2 00000d18: MSTORE 00000d19: PUSH1 0x04 00000d1b: ADD 00000d1c: PUSH2 0x07fe 00000d1f: SWAP1 00000d20: PUSH2 0x1dc5 00000d23: JUMP 00000d24: JUMPDEST 00000d25: PUSH1 0x00 00000d27: PUSH2 0x0d36 00000d2a: DUP11 00000d2b: DUP11 00000d2c: DUP11 00000d2d: DUP11 00000d2e: DUP11 00000d2f: DUP11 00000d30: DUP11 00000d31: DUP11 00000d32: PUSH2 0x0b91 00000d35: JUMP 00000d36: JUMPDEST 00000d37: SWAP1 00000d38: POP 00000d39: PUSH2 0x0d42 00000d3c: DUP2 00000d3d: DUP6 00000d3e: PUSH2 0x0fcb 00000d41: JUMP 00000d42: JUMPDEST 00000d43: PUSH1 0x00 00000d45: JUMPDEST 00000d46: DUP10 00000d47: DUP2 00000d48: LT 00000d49: ISZERO 00000d4a: PUSH2 0x0e20 00000d4d: JUMPI 00000d4e: PUSH1 0x00 00000d50: DUP12 00000d51: DUP12 00000d52: DUP4 00000d53: DUP2 00000d54: DUP2 00000d55: LT 00000d56: PUSH2 0x0d61 00000d59: JUMPI 00000d5a: PUSH2 0x0d61 00000d5d: PUSH2 0x1e08 00000d60: JUMP 00000d61: JUMPDEST 00000d62: SWAP1 00000d63: POP 00000d64: PUSH1 0x20 00000d66: MUL 00000d67: ADD 00000d68: PUSH1 0x20 00000d6a: DUP2 00000d6b: ADD 00000d6c: SWAP1 00000d6d: PUSH2 0x0d76 00000d70: SWAP2 00000d71: SWAP1 00000d72: PUSH2 0x1e1e 00000d75: JUMP 00000d76: JUMPDEST 00000d77: SWAP1 00000d78: POP 00000d79: PUSH1 0x00 00000d7b: DUP11 00000d7c: DUP11 00000d7d: DUP5 00000d7e: DUP2 00000d7f: DUP2 00000d80: LT 00000d81: PUSH2 0x0d8c 00000d84: JUMPI 00000d85: PUSH2 0x0d8c 00000d88: PUSH2 0x1e08 00000d8b: JUMP 00000d8c: JUMPDEST 00000d8d: SWAP1 00000d8e: POP 00000d8f: PUSH1 0x20 00000d91: MUL 00000d92: ADD 00000d93: CALLDATALOAD 00000d94: SWAP1 00000d95: POP 00000d96: CALLDATASIZE 00000d97: PUSH1 0x00 00000d99: DUP11 00000d9a: DUP11 00000d9b: DUP7 00000d9c: DUP2 00000d9d: DUP2 00000d9e: LT 00000d9f: PUSH2 0x0daa 00000da2: JUMPI 00000da3: PUSH2 0x0daa 00000da6: PUSH2 0x1e08 00000da9: JUMP 00000daa: JUMPDEST 00000dab: SWAP1 00000dac: POP 00000dad: PUSH1 0x20 00000daf: MUL 00000db0: DUP2 00000db1: ADD 00000db2: SWAP1 00000db3: PUSH2 0x0dbc 00000db6: SWAP2 00000db7: SWAP1 00000db8: PUSH2 0x1e39 00000dbb: JUMP 00000dbc: JUMPDEST 00000dbd: SWAP2 00000dbe: POP 00000dbf: SWAP2 00000dc0: POP 00000dc1: PUSH2 0x0dcc 00000dc4: DUP5 00000dc5: DUP5 00000dc6: DUP5 00000dc7: DUP5 00000dc8: PUSH2 0x1066 00000dcb: JUMP 00000dcc: JUMPDEST 00000dcd: DUP5 00000dce: DUP7 00000dcf: PUSH32 0xc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58 00000df0: DUP7 00000df1: DUP7 00000df2: DUP7 00000df3: DUP7 00000df4: PUSH1 0x40 00000df6: MLOAD 00000df7: PUSH2 0x0e03 00000dfa: SWAP5 00000dfb: SWAP4 00000dfc: SWAP3 00000dfd: SWAP2 00000dfe: SWAP1 00000dff: PUSH2 0x1d93 00000e02: JUMP 00000e03: JUMPDEST 00000e04: PUSH1 0x40 00000e06: MLOAD 00000e07: DUP1 00000e08: SWAP2 00000e09: SUB 00000e0a: SWAP1 00000e0b: LOG3 00000e0c: POP 00000e0d: POP 00000e0e: POP 00000e0f: POP 00000e10: DUP1 00000e11: PUSH2 0x0e19 00000e14: SWAP1 00000e15: PUSH2 0x1e95 00000e18: JUMP 00000e19: JUMPDEST 00000e1a: SWAP1 00000e1b: POP 00000e1c: PUSH2 0x0d45 00000e1f: JUMP 00000e20: JUMPDEST 00000e21: POP 00000e22: PUSH2 0x0e2a 00000e25: DUP2 00000e26: PUSH2 0x1139 00000e29: JUMP 00000e2a: JUMPDEST 00000e2b: POP 00000e2c: POP 00000e2d: POP 00000e2e: POP 00000e2f: POP 00000e30: POP 00000e31: POP 00000e32: POP 00000e33: POP 00000e34: POP 00000e35: JUMP 00000e36: JUMPDEST 00000e37: PUSH2 0x0e40 00000e3a: DUP2 00000e3b: CALLER 00000e3c: PUSH2 0x0f67 00000e3f: JUMP 00000e40: JUMPDEST 00000e41: POP 00000e42: JUMP 00000e43: JUMPDEST 00000e44: PUSH2 0x0e4c 00000e47: DUP3 00000e48: PUSH2 0x0779 00000e4b: JUMP 00000e4c: JUMPDEST 00000e4d: ISZERO 00000e4e: PUSH2 0x0eb1 00000e51: JUMPI 00000e52: PUSH1 0x40 00000e54: MLOAD 00000e55: PUSH3 0x461bcd 00000e59: PUSH1 0xe5 00000e5b: SHL 00000e5c: DUP2 00000e5d: MSTORE 00000e5e: PUSH1 0x20 00000e60: PUSH1 0x04 00000e62: DUP3 00000e63: ADD 00000e64: MSTORE 00000e65: PUSH1 0x2f 00000e67: PUSH1 0x24 00000e69: DUP3 00000e6a: ADD 00000e6b: MSTORE 00000e6c: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c 00000e8d: PUSH1 0x44 00000e8f: DUP3 00000e90: ADD 00000e91: MSTORE 00000e92: PUSH15 0x1c9958591e481cd8da19591d5b1959 00000ea2: PUSH1 0x8a 00000ea4: SHL 00000ea5: PUSH1 0x64 00000ea7: DUP3 00000ea8: ADD 00000ea9: MSTORE 00000eaa: PUSH1 0x84 00000eac: ADD 00000ead: PUSH2 0x07fe 00000eb0: JUMP 00000eb1: JUMPDEST 00000eb2: PUSH1 0x98 00000eb4: SLOAD 00000eb5: DUP2 00000eb6: LT 00000eb7: ISZERO 00000eb8: PUSH2 0x0f12 00000ebb: JUMPI 00000ebc: PUSH1 0x40 00000ebe: MLOAD 00000ebf: PUSH3 0x461bcd 00000ec3: PUSH1 0xe5 00000ec5: SHL 00000ec6: DUP2 00000ec7: MSTORE 00000ec8: PUSH1 0x20 00000eca: PUSH1 0x04 00000ecc: DUP3 00000ecd: ADD 00000ece: MSTORE 00000ecf: PUSH1 0x26 00000ed1: PUSH1 0x24 00000ed3: DUP3 00000ed4: ADD 00000ed5: MSTORE 00000ed6: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e74 00000ef7: PUSH1 0x44 00000ef9: DUP3 00000efa: ADD 00000efb: MSTORE 00000efc: PUSH6 0x2064656c6179 00000f03: PUSH1 0xd0 00000f05: SHL 00000f06: PUSH1 0x64 00000f08: DUP3 00000f09: ADD 00000f0a: MSTORE 00000f0b: PUSH1 0x84 00000f0d: ADD 00000f0e: PUSH2 0x07fe 00000f11: JUMP 00000f12: JUMPDEST 00000f13: PUSH2 0x0f1c 00000f16: DUP2 00000f17: TIMESTAMP 00000f18: PUSH2 0x1fe0 00000f1b: JUMP 00000f1c: JUMPDEST 00000f1d: PUSH1 0x00 00000f1f: SWAP3 00000f20: DUP4 00000f21: MSTORE 00000f22: PUSH1 0x97 00000f24: PUSH1 0x20 00000f26: MSTORE 00000f27: PUSH1 0x40 00000f29: SWAP1 00000f2a: SWAP3 00000f2b: KECCAK256 00000f2c: SWAP2 00000f2d: SWAP1 00000f2e: SWAP2 00000f2f: SSTORE 00000f30: POP 00000f31: JUMP 00000f32: JUMPDEST 00000f33: PUSH1 0x00 00000f35: PUSH1 0x01 00000f37: PUSH1 0x01 00000f39: PUSH1 0xe0 00000f3b: SHL 00000f3c: SUB 00000f3d: NOT 00000f3e: DUP3 00000f3f: AND 00000f40: PUSH4 0x7965db0b 00000f45: PUSH1 0xe0 00000f47: SHL 00000f48: EQ 00000f49: DUP1 00000f4a: PUSH2 0x0680 00000f4d: JUMPI 00000f4e: POP 00000f4f: PUSH4 0x01ffc9a7 00000f54: PUSH1 0xe0 00000f56: SHL 00000f57: PUSH1 0x01 00000f59: PUSH1 0x01 00000f5b: PUSH1 0xe0 00000f5d: SHL 00000f5e: SUB 00000f5f: NOT 00000f60: DUP4 00000f61: AND 00000f62: EQ 00000f63: PUSH2 0x0680 00000f66: JUMP 00000f67: JUMPDEST 00000f68: PUSH2 0x0f71 00000f6b: DUP3 00000f6c: DUP3 00000f6d: PUSH2 0x0b66 00000f70: JUMP 00000f71: JUMPDEST 00000f72: PUSH2 0x0811 00000f75: JUMPI 00000f76: PUSH2 0x0f89 00000f79: DUP2 00000f7a: PUSH1 0x01 00000f7c: PUSH1 0x01 00000f7e: PUSH1 0xa0 00000f80: SHL 00000f81: SUB 00000f82: AND 00000f83: PUSH1 0x14 00000f85: PUSH2 0x1291 00000f88: JUMP 00000f89: JUMPDEST 00000f8a: PUSH2 0x0f94 00000f8d: DUP4 00000f8e: PUSH1 0x20 00000f90: PUSH2 0x1291 00000f93: JUMP 00000f94: JUMPDEST 00000f95: PUSH1 0x40 00000f97: MLOAD 00000f98: PUSH1 0x20 00000f9a: ADD 00000f9b: PUSH2 0x0fa5 00000f9e: SWAP3 00000f9f: SWAP2 00000fa0: SWAP1 00000fa1: PUSH2 0x2017 00000fa4: JUMP 00000fa5: JUMPDEST 00000fa6: PUSH1 0x40 00000fa8: DUP1 00000fa9: MLOAD 00000faa: PUSH1 0x1f 00000fac: NOT 00000fad: DUP2 00000fae: DUP5 00000faf: SUB 00000fb0: ADD 00000fb1: DUP2 00000fb2: MSTORE 00000fb3: SWAP1 00000fb4: DUP3 00000fb5: SWAP1 00000fb6: MSTORE 00000fb7: PUSH3 0x461bcd 00000fbb: PUSH1 0xe5 00000fbd: SHL 00000fbe: DUP3 00000fbf: MSTORE 00000fc0: PUSH2 0x07fe 00000fc3: SWAP2 00000fc4: PUSH1 0x04 00000fc6: ADD 00000fc7: PUSH2 0x208c 00000fca: JUMP 00000fcb: JUMPDEST 00000fcc: PUSH2 0x0fd4 00000fcf: DUP3 00000fd0: PUSH2 0x0729 00000fd3: JUMP 00000fd4: JUMPDEST 00000fd5: PUSH2 0x0ff0 00000fd8: JUMPI 00000fd9: PUSH1 0x40 00000fdb: MLOAD 00000fdc: PUSH3 0x461bcd 00000fe0: PUSH1 0xe5 00000fe2: SHL 00000fe3: DUP2 00000fe4: MSTORE 00000fe5: PUSH1 0x04 00000fe7: ADD 00000fe8: PUSH2 0x07fe 00000feb: SWAP1 00000fec: PUSH2 0x20bf 00000fef: JUMP 00000ff0: JUMPDEST 00000ff1: DUP1 00000ff2: ISZERO 00000ff3: DUP1 00000ff4: PUSH2 0x100b 00000ff7: JUMPI 00000ff8: POP 00000ff9: PUSH1 0x00 00000ffb: DUP2 00000ffc: DUP2 00000ffd: MSTORE 00000ffe: PUSH1 0x97 00001000: PUSH1 0x20 00001002: MSTORE 00001003: PUSH1 0x40 00001005: SWAP1 00001006: KECCAK256 00001007: SLOAD 00001008: PUSH1 0x01 0000100a: EQ 0000100b: JUMPDEST 0000100c: PUSH2 0x0811 0000100f: JUMPI 00001010: PUSH1 0x40 00001012: MLOAD 00001013: PUSH3 0x461bcd 00001017: PUSH1 0xe5 00001019: SHL 0000101a: DUP2 0000101b: MSTORE 0000101c: PUSH1 0x20 0000101e: PUSH1 0x04 00001020: DUP3 00001021: ADD 00001022: MSTORE 00001023: PUSH1 0x26 00001025: PUSH1 0x24 00001027: DUP3 00001028: ADD 00001029: MSTORE 0000102a: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a206d697373696e672064657065 0000104b: PUSH1 0x44 0000104d: DUP3 0000104e: ADD 0000104f: MSTORE 00001050: PUSH6 0x6e64656e6379 00001057: PUSH1 0xd0 00001059: SHL 0000105a: PUSH1 0x64 0000105c: DUP3 0000105d: ADD 0000105e: MSTORE 0000105f: PUSH1 0x84 00001061: ADD 00001062: PUSH2 0x07fe 00001065: JUMP 00001066: JUMPDEST 00001067: PUSH1 0x00 00001069: DUP5 0000106a: PUSH1 0x01 0000106c: PUSH1 0x01 0000106e: PUSH1 0xa0 00001070: SHL 00001071: SUB 00001072: AND 00001073: DUP5 00001074: DUP5 00001075: DUP5 00001076: PUSH1 0x40 00001078: MLOAD 00001079: PUSH2 0x1083 0000107c: SWAP3 0000107d: SWAP2 0000107e: SWAP1 0000107f: PUSH2 0x2109 00001082: JUMP 00001083: JUMPDEST 00001084: PUSH1 0x00 00001086: PUSH1 0x40 00001088: MLOAD 00001089: DUP1 0000108a: DUP4 0000108b: SUB 0000108c: DUP2 0000108d: DUP6 0000108e: DUP8 0000108f: GAS 00001090: CALL 00001091: SWAP3 00001092: POP 00001093: POP 00001094: POP 00001095: RETURNDATASIZE 00001096: DUP1 00001097: PUSH1 0x00 00001099: DUP2 0000109a: EQ 0000109b: PUSH2 0x10c0 0000109e: JUMPI 0000109f: PUSH1 0x40 000010a1: MLOAD 000010a2: SWAP2 000010a3: POP 000010a4: PUSH1 0x1f 000010a6: NOT 000010a7: PUSH1 0x3f 000010a9: RETURNDATASIZE 000010aa: ADD 000010ab: AND 000010ac: DUP3 000010ad: ADD 000010ae: PUSH1 0x40 000010b0: MSTORE 000010b1: RETURNDATASIZE 000010b2: DUP3 000010b3: MSTORE 000010b4: RETURNDATASIZE 000010b5: PUSH1 0x00 000010b7: PUSH1 0x20 000010b9: DUP5 000010ba: ADD 000010bb: RETURNDATACOPY 000010bc: PUSH2 0x10c5 000010bf: JUMP 000010c0: JUMPDEST 000010c1: PUSH1 0x60 000010c3: SWAP2 000010c4: POP 000010c5: JUMPDEST 000010c6: POP 000010c7: POP 000010c8: SWAP1 000010c9: POP 000010ca: DUP1 000010cb: PUSH2 0x1132 000010ce: JUMPI 000010cf: PUSH1 0x40 000010d1: MLOAD 000010d2: PUSH3 0x461bcd 000010d6: PUSH1 0xe5 000010d8: SHL 000010d9: DUP2 000010da: MSTORE 000010db: PUSH1 0x20 000010dd: PUSH1 0x04 000010df: DUP3 000010e0: ADD 000010e1: MSTORE 000010e2: PUSH1 0x33 000010e4: PUSH1 0x24 000010e6: DUP3 000010e7: ADD 000010e8: MSTORE 000010e9: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e672074 0000110a: PUSH1 0x44 0000110c: DUP3 0000110d: ADD 0000110e: MSTORE 0000110f: PUSH19 0x1c985b9cd858dd1a5bdb881c995d995c9d1959 00001123: PUSH1 0x6a 00001125: SHL 00001126: PUSH1 0x64 00001128: DUP3 00001129: ADD 0000112a: MSTORE 0000112b: PUSH1 0x84 0000112d: ADD 0000112e: PUSH2 0x07fe 00001131: JUMP 00001132: JUMPDEST 00001133: POP 00001134: POP 00001135: POP 00001136: POP 00001137: POP 00001138: JUMP 00001139: JUMPDEST 0000113a: PUSH2 0x1142 0000113d: DUP2 0000113e: PUSH2 0x0729 00001141: JUMP 00001142: JUMPDEST 00001143: PUSH2 0x115e 00001146: JUMPI 00001147: PUSH1 0x40 00001149: MLOAD 0000114a: PUSH3 0x461bcd 0000114e: PUSH1 0xe5 00001150: SHL 00001151: DUP2 00001152: MSTORE 00001153: PUSH1 0x04 00001155: ADD 00001156: PUSH2 0x07fe 00001159: SWAP1 0000115a: PUSH2 0x20bf 0000115d: JUMP 0000115e: JUMPDEST 0000115f: PUSH1 0x00 00001161: SWAP1 00001162: DUP2 00001163: MSTORE 00001164: PUSH1 0x97 00001166: PUSH1 0x20 00001168: MSTORE 00001169: PUSH1 0x40 0000116b: SWAP1 0000116c: KECCAK256 0000116d: PUSH1 0x01 0000116f: SWAP1 00001170: SSTORE 00001171: JUMP 00001172: JUMPDEST 00001173: PUSH2 0x117c 00001176: DUP3 00001177: DUP3 00001178: PUSH2 0x0b66 0000117b: JUMP 0000117c: JUMPDEST 0000117d: PUSH2 0x0811 00001180: JUMPI 00001181: PUSH1 0x00 00001183: DUP3 00001184: DUP2 00001185: MSTORE 00001186: PUSH1 0x65 00001188: PUSH1 0x20 0000118a: SWAP1 0000118b: DUP2 0000118c: MSTORE 0000118d: PUSH1 0x40 0000118f: DUP1 00001190: DUP4 00001191: KECCAK256 00001192: PUSH1 0x01 00001194: PUSH1 0x01 00001196: PUSH1 0xa0 00001198: SHL 00001199: SUB 0000119a: DUP6 0000119b: AND 0000119c: DUP5 0000119d: MSTORE 0000119e: SWAP1 0000119f: SWAP2 000011a0: MSTORE 000011a1: SWAP1 000011a2: KECCAK256 000011a3: DUP1 000011a4: SLOAD 000011a5: PUSH1 0xff 000011a7: NOT 000011a8: AND 000011a9: PUSH1 0x01 000011ab: OR 000011ac: SWAP1 000011ad: SSTORE 000011ae: PUSH2 0x11b4 000011b1: CALLER 000011b2: SWAP1 000011b3: JUMP 000011b4: JUMPDEST 000011b5: PUSH1 0x01 000011b7: PUSH1 0x01 000011b9: PUSH1 0xa0 000011bb: SHL 000011bc: SUB 000011bd: AND 000011be: DUP2 000011bf: PUSH1 0x01 000011c1: PUSH1 0x01 000011c3: PUSH1 0xa0 000011c5: SHL 000011c6: SUB 000011c7: AND 000011c8: DUP4 000011c9: PUSH32 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d 000011ea: PUSH1 0x40 000011ec: MLOAD 000011ed: PUSH1 0x40 000011ef: MLOAD 000011f0: DUP1 000011f1: SWAP2 000011f2: SUB 000011f3: SWAP1 000011f4: LOG4 000011f5: POP 000011f6: POP 000011f7: JUMP 000011f8: JUMPDEST 000011f9: PUSH2 0x1202 000011fc: DUP3 000011fd: DUP3 000011fe: PUSH2 0x0b66 00001201: JUMP 00001202: JUMPDEST 00001203: ISZERO 00001204: PUSH2 0x0811 00001207: JUMPI 00001208: PUSH1 0x00 0000120a: DUP3 0000120b: DUP2 0000120c: MSTORE 0000120d: PUSH1 0x65 0000120f: PUSH1 0x20 00001211: SWAP1 00001212: DUP2 00001213: MSTORE 00001214: PUSH1 0x40 00001216: DUP1 00001217: DUP4 00001218: KECCAK256 00001219: PUSH1 0x01 0000121b: PUSH1 0x01 0000121d: PUSH1 0xa0 0000121f: SHL 00001220: SUB 00001221: DUP6 00001222: AND 00001223: DUP1 00001224: DUP6 00001225: MSTORE 00001226: SWAP3 00001227: MSTORE 00001228: DUP1 00001229: DUP4 0000122a: KECCAK256 0000122b: DUP1 0000122c: SLOAD 0000122d: PUSH1 0xff 0000122f: NOT 00001230: AND 00001231: SWAP1 00001232: SSTORE 00001233: MLOAD 00001234: CALLER 00001235: SWAP3 00001236: DUP6 00001237: SWAP2 00001238: PUSH32 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b 00001259: SWAP2 0000125a: SWAP1 0000125b: LOG4 0000125c: POP 0000125d: POP 0000125e: JUMP 0000125f: JUMPDEST 00001260: PUSH1 0x00 00001262: SLOAD 00001263: PUSH2 0x0100 00001266: SWAP1 00001267: DIV 00001268: PUSH1 0xff 0000126a: AND 0000126b: PUSH2 0x1286 0000126e: JUMPI 0000126f: PUSH1 0x40 00001271: MLOAD 00001272: PUSH3 0x461bcd 00001276: PUSH1 0xe5 00001278: SHL 00001279: DUP2 0000127a: MSTORE 0000127b: PUSH1 0x04 0000127d: ADD 0000127e: PUSH2 0x07fe 00001281: SWAP1 00001282: PUSH2 0x2119 00001285: JUMP 00001286: JUMPDEST 00001287: PUSH2 0x0774 0000128a: DUP4 0000128b: DUP4 0000128c: DUP4 0000128d: PUSH2 0x142c 00001290: JUMP 00001291: JUMPDEST 00001292: PUSH1 0x60 00001294: PUSH1 0x00 00001296: PUSH2 0x12a0 00001299: DUP4 0000129a: PUSH1 0x02 0000129c: PUSH2 0x2164 0000129f: JUMP 000012a0: JUMPDEST 000012a1: PUSH2 0x12ab 000012a4: SWAP1 000012a5: PUSH1 0x02 000012a7: PUSH2 0x1fe0 000012aa: JUMP 000012ab: JUMPDEST 000012ac: PUSH1 0x01 000012ae: PUSH1 0x01 000012b0: PUSH1 0x40 000012b2: SHL 000012b3: SUB 000012b4: DUP2 000012b5: GT 000012b6: ISZERO 000012b7: PUSH2 0x12c2 000012ba: JUMPI 000012bb: PUSH2 0x12c2 000012be: PUSH2 0x17df 000012c1: JUMP 000012c2: JUMPDEST 000012c3: PUSH1 0x40 000012c5: MLOAD 000012c6: SWAP1 000012c7: DUP1 000012c8: DUP3 000012c9: MSTORE 000012ca: DUP1 000012cb: PUSH1 0x1f 000012cd: ADD 000012ce: PUSH1 0x1f 000012d0: NOT 000012d1: AND 000012d2: PUSH1 0x20 000012d4: ADD 000012d5: DUP3 000012d6: ADD 000012d7: PUSH1 0x40 000012d9: MSTORE 000012da: DUP1 000012db: ISZERO 000012dc: PUSH2 0x12ec 000012df: JUMPI 000012e0: PUSH1 0x20 000012e2: DUP3 000012e3: ADD 000012e4: DUP2 000012e5: DUP1 000012e6: CALLDATASIZE 000012e7: DUP4 000012e8: CALLDATACOPY 000012e9: ADD 000012ea: SWAP1 000012eb: POP 000012ec: JUMPDEST 000012ed: POP 000012ee: SWAP1 000012ef: POP 000012f0: PUSH1 0x03 000012f2: PUSH1 0xfc 000012f4: SHL 000012f5: DUP2 000012f6: PUSH1 0x00 000012f8: DUP2 000012f9: MLOAD 000012fa: DUP2 000012fb: LT 000012fc: PUSH2 0x1307 000012ff: JUMPI 00001300: PUSH2 0x1307 00001303: PUSH2 0x1e08 00001306: JUMP 00001307: JUMPDEST 00001308: PUSH1 0x20 0000130a: ADD 0000130b: ADD 0000130c: SWAP1 0000130d: PUSH1 0x01 0000130f: PUSH1 0x01 00001311: PUSH1 0xf8 00001313: SHL 00001314: SUB 00001315: NOT 00001316: AND 00001317: SWAP1 00001318: DUP2 00001319: PUSH1 0x00 0000131b: BYTE 0000131c: SWAP1 0000131d: MSTORE8 0000131e: POP 0000131f: PUSH1 0x0f 00001321: PUSH1 0xfb 00001323: SHL 00001324: DUP2 00001325: PUSH1 0x01 00001327: DUP2 00001328: MLOAD 00001329: DUP2 0000132a: LT 0000132b: PUSH2 0x1336 0000132e: JUMPI 0000132f: PUSH2 0x1336 00001332: PUSH2 0x1e08 00001335: JUMP 00001336: JUMPDEST 00001337: PUSH1 0x20 00001339: ADD 0000133a: ADD 0000133b: SWAP1 0000133c: PUSH1 0x01 0000133e: PUSH1 0x01 00001340: PUSH1 0xf8 00001342: SHL 00001343: SUB 00001344: NOT 00001345: AND 00001346: SWAP1 00001347: DUP2 00001348: PUSH1 0x00 0000134a: BYTE 0000134b: SWAP1 0000134c: MSTORE8 0000134d: POP 0000134e: PUSH1 0x00 00001350: PUSH2 0x135a 00001353: DUP5 00001354: PUSH1 0x02 00001356: PUSH2 0x2164 00001359: JUMP 0000135a: JUMPDEST 0000135b: PUSH2 0x1365 0000135e: SWAP1 0000135f: PUSH1 0x01 00001361: PUSH2 0x1fe0 00001364: JUMP 00001365: JUMPDEST 00001366: SWAP1 00001367: POP 00001368: JUMPDEST 00001369: PUSH1 0x01 0000136b: DUP2 0000136c: GT 0000136d: ISZERO 0000136e: PUSH2 0x13dd 00001371: JUMPI 00001372: PUSH16 0x181899199a1a9b1b9c1cb0b131b232b3 00001383: PUSH1 0x81 00001385: SHL 00001386: DUP6 00001387: PUSH1 0x0f 00001389: AND 0000138a: PUSH1 0x10 0000138c: DUP2 0000138d: LT 0000138e: PUSH2 0x1399 00001391: JUMPI 00001392: PUSH2 0x1399 00001395: PUSH2 0x1e08 00001398: JUMP 00001399: JUMPDEST 0000139a: BYTE 0000139b: PUSH1 0xf8 0000139d: SHL 0000139e: DUP3 0000139f: DUP3 000013a0: DUP2 000013a1: MLOAD 000013a2: DUP2 000013a3: LT 000013a4: PUSH2 0x13af 000013a7: JUMPI 000013a8: PUSH2 0x13af 000013ab: PUSH2 0x1e08 000013ae: JUMP 000013af: JUMPDEST 000013b0: PUSH1 0x20 000013b2: ADD 000013b3: ADD 000013b4: SWAP1 000013b5: PUSH1 0x01 000013b7: PUSH1 0x01 000013b9: PUSH1 0xf8 000013bb: SHL 000013bc: SUB 000013bd: NOT 000013be: AND 000013bf: SWAP1 000013c0: DUP2 000013c1: PUSH1 0x00 000013c3: BYTE 000013c4: SWAP1 000013c5: MSTORE8 000013c6: POP 000013c7: PUSH1 0x04 000013c9: SWAP5 000013ca: SWAP1 000013cb: SWAP5 000013cc: SHR 000013cd: SWAP4 000013ce: PUSH2 0x13d6 000013d1: DUP2 000013d2: PUSH2 0x2183 000013d5: JUMP 000013d6: JUMPDEST 000013d7: SWAP1 000013d8: POP 000013d9: PUSH2 0x1368 000013dc: JUMP 000013dd: JUMPDEST 000013de: POP 000013df: DUP4 000013e0: ISZERO 000013e1: PUSH2 0x0748 000013e4: JUMPI 000013e5: PUSH1 0x40 000013e7: MLOAD 000013e8: PUSH3 0x461bcd 000013ec: PUSH1 0xe5 000013ee: SHL 000013ef: DUP2 000013f0: MSTORE 000013f1: PUSH1 0x20 000013f3: PUSH1 0x04 000013f5: DUP3 000013f6: ADD 000013f7: DUP2 000013f8: SWAP1 000013f9: MSTORE 000013fa: PUSH1 0x24 000013fc: DUP3 000013fd: ADD 000013fe: MSTORE 000013ff: PUSH32 0x537472696e67733a20686578206c656e67746820696e73756666696369656e74 00001420: PUSH1 0x44 00001422: DUP3 00001423: ADD 00001424: MSTORE 00001425: PUSH1 0x64 00001427: ADD 00001428: PUSH2 0x07fe 0000142b: JUMP 0000142c: JUMPDEST 0000142d: PUSH1 0x00 0000142f: SLOAD 00001430: PUSH2 0x0100 00001433: SWAP1 00001434: DIV 00001435: PUSH1 0xff 00001437: AND 00001438: PUSH2 0x1453 0000143b: JUMPI 0000143c: PUSH1 0x40 0000143e: MLOAD 0000143f: PUSH3 0x461bcd 00001443: PUSH1 0xe5 00001445: SHL 00001446: DUP2 00001447: MSTORE 00001448: PUSH1 0x04 0000144a: ADD 0000144b: PUSH2 0x07fe 0000144e: SWAP1 0000144f: PUSH2 0x2119 00001452: JUMP 00001453: JUMPDEST 00001454: PUSH2 0x146b 00001457: PUSH1 0x00 00001459: DUP1 0000145a: MLOAD 0000145b: PUSH1 0x20 0000145d: PUSH2 0x219b 00001460: DUP4 00001461: CODECOPY 00001462: DUP2 00001463: MLOAD 00001464: SWAP2 00001465: MSTORE 00001466: DUP1 00001467: PUSH2 0x1604 0000146a: JUMP 0000146b: JUMPDEST 0000146c: PUSH2 0x1491 0000146f: PUSH1 0x00 00001471: DUP1 00001472: MLOAD 00001473: PUSH1 0x20 00001475: PUSH2 0x21bb 00001478: DUP4 00001479: CODECOPY 0000147a: DUP2 0000147b: MLOAD 0000147c: SWAP2 0000147d: MSTORE 0000147e: PUSH1 0x00 00001480: DUP1 00001481: MLOAD 00001482: PUSH1 0x20 00001484: PUSH2 0x219b 00001487: DUP4 00001488: CODECOPY 00001489: DUP2 0000148a: MLOAD 0000148b: SWAP2 0000148c: MSTORE 0000148d: PUSH2 0x1604 00001490: JUMP 00001491: JUMPDEST 00001492: PUSH2 0x14b7 00001495: PUSH1 0x00 00001497: DUP1 00001498: MLOAD 00001499: PUSH1 0x20 0000149b: PUSH2 0x21db 0000149e: DUP4 0000149f: CODECOPY 000014a0: DUP2 000014a1: MLOAD 000014a2: SWAP2 000014a3: MSTORE 000014a4: PUSH1 0x00 000014a6: DUP1 000014a7: MLOAD 000014a8: PUSH1 0x20 000014aa: PUSH2 0x219b 000014ad: DUP4 000014ae: CODECOPY 000014af: DUP2 000014b0: MLOAD 000014b1: SWAP2 000014b2: MSTORE 000014b3: PUSH2 0x1604 000014b6: JUMP 000014b7: JUMPDEST 000014b8: PUSH2 0x14dd 000014bb: PUSH1 0x00 000014bd: DUP1 000014be: MLOAD 000014bf: PUSH1 0x20 000014c1: PUSH2 0x21fb 000014c4: DUP4 000014c5: CODECOPY 000014c6: DUP2 000014c7: MLOAD 000014c8: SWAP2 000014c9: MSTORE 000014ca: PUSH1 0x00 000014cc: DUP1 000014cd: MLOAD 000014ce: PUSH1 0x20 000014d0: PUSH2 0x219b 000014d3: DUP4 000014d4: CODECOPY 000014d5: DUP2 000014d6: MLOAD 000014d7: SWAP2 000014d8: MSTORE 000014d9: PUSH2 0x1604 000014dc: JUMP 000014dd: JUMPDEST 000014de: PUSH2 0x14f5 000014e1: PUSH1 0x00 000014e3: DUP1 000014e4: MLOAD 000014e5: PUSH1 0x20 000014e7: PUSH2 0x219b 000014ea: DUP4 000014eb: CODECOPY 000014ec: DUP2 000014ed: MLOAD 000014ee: SWAP2 000014ef: MSTORE 000014f0: CALLER 000014f1: PUSH2 0x164f 000014f4: JUMP 000014f5: JUMPDEST 000014f6: PUSH2 0x150d 000014f9: PUSH1 0x00 000014fb: DUP1 000014fc: MLOAD 000014fd: PUSH1 0x20 000014ff: PUSH2 0x219b 00001502: DUP4 00001503: CODECOPY 00001504: DUP2 00001505: MLOAD 00001506: SWAP2 00001507: MSTORE 00001508: ADDRESS 00001509: PUSH2 0x164f 0000150c: JUMP 0000150d: JUMPDEST 0000150e: PUSH1 0x00 00001510: JUMPDEST 00001511: DUP3 00001512: MLOAD 00001513: DUP2 00001514: LT 00001515: ISZERO 00001516: PUSH2 0x157e 00001519: JUMPI 0000151a: PUSH2 0x154a 0000151d: PUSH1 0x00 0000151f: DUP1 00001520: MLOAD 00001521: PUSH1 0x20 00001523: PUSH2 0x21bb 00001526: DUP4 00001527: CODECOPY 00001528: DUP2 00001529: MLOAD 0000152a: SWAP2 0000152b: MSTORE 0000152c: DUP5 0000152d: DUP4 0000152e: DUP2 0000152f: MLOAD 00001530: DUP2 00001531: LT 00001532: PUSH2 0x153d 00001535: JUMPI 00001536: PUSH2 0x153d 00001539: PUSH2 0x1e08 0000153c: JUMP 0000153d: JUMPDEST 0000153e: PUSH1 0x20 00001540: MUL 00001541: PUSH1 0x20 00001543: ADD 00001544: ADD 00001545: MLOAD 00001546: PUSH2 0x164f 00001549: JUMP 0000154a: JUMPDEST 0000154b: PUSH2 0x156e 0000154e: PUSH1 0x00 00001550: DUP1 00001551: MLOAD 00001552: PUSH1 0x20 00001554: PUSH2 0x21fb 00001557: DUP4 00001558: CODECOPY 00001559: DUP2 0000155a: MLOAD 0000155b: SWAP2 0000155c: MSTORE 0000155d: DUP5 0000155e: DUP4 0000155f: DUP2 00001560: MLOAD 00001561: DUP2 00001562: LT 00001563: PUSH2 0x153d 00001566: JUMPI 00001567: PUSH2 0x153d 0000156a: PUSH2 0x1e08 0000156d: JUMP 0000156e: JUMPDEST 0000156f: PUSH2 0x1577 00001572: DUP2 00001573: PUSH2 0x1e95 00001576: JUMP 00001577: JUMPDEST 00001578: SWAP1 00001579: POP 0000157a: PUSH2 0x1510 0000157d: JUMP 0000157e: JUMPDEST 0000157f: POP 00001580: PUSH1 0x00 00001582: JUMPDEST 00001583: DUP2 00001584: MLOAD 00001585: DUP2 00001586: LT 00001587: ISZERO 00001588: PUSH2 0x15bf 0000158b: JUMPI 0000158c: PUSH2 0x15af 0000158f: PUSH1 0x00 00001591: DUP1 00001592: MLOAD 00001593: PUSH1 0x20 00001595: PUSH2 0x21db 00001598: DUP4 00001599: CODECOPY 0000159a: DUP2 0000159b: MLOAD 0000159c: SWAP2 0000159d: MSTORE 0000159e: DUP4 0000159f: DUP4 000015a0: DUP2 000015a1: MLOAD 000015a2: DUP2 000015a3: LT 000015a4: PUSH2 0x153d 000015a7: JUMPI 000015a8: PUSH2 0x153d 000015ab: PUSH2 0x1e08 000015ae: JUMP 000015af: JUMPDEST 000015b0: PUSH2 0x15b8 000015b3: DUP2 000015b4: PUSH2 0x1e95 000015b7: JUMP 000015b8: JUMPDEST 000015b9: SWAP1 000015ba: POP 000015bb: PUSH2 0x1582 000015be: JUMP 000015bf: JUMPDEST 000015c0: POP 000015c1: PUSH1 0x98 000015c3: DUP4 000015c4: SWAP1 000015c5: SSTORE 000015c6: PUSH1 0x40 000015c8: DUP1 000015c9: MLOAD 000015ca: PUSH1 0x00 000015cc: DUP2 000015cd: MSTORE 000015ce: PUSH1 0x20 000015d0: DUP2 000015d1: ADD 000015d2: DUP6 000015d3: SWAP1 000015d4: MSTORE 000015d5: PUSH32 0x11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5 000015f6: SWAP2 000015f7: ADD 000015f8: PUSH1 0x40 000015fa: MLOAD 000015fb: DUP1 000015fc: SWAP2 000015fd: SUB 000015fe: SWAP1 000015ff: LOG1 00001600: POP 00001601: POP 00001602: POP 00001603: JUMP 00001604: JUMPDEST 00001605: PUSH1 0x00 00001607: DUP3 00001608: DUP2 00001609: MSTORE 0000160a: PUSH1 0x65 0000160c: PUSH1 0x20 0000160e: MSTORE 0000160f: PUSH1 0x40 00001611: DUP1 00001612: DUP3 00001613: KECCAK256 00001614: PUSH1 0x01 00001616: ADD 00001617: DUP1 00001618: SLOAD 00001619: SWAP1 0000161a: DUP5 0000161b: SWAP1 0000161c: SSTORE 0000161d: SWAP1 0000161e: MLOAD 0000161f: SWAP1 00001620: SWAP2 00001621: DUP4 00001622: SWAP2 00001623: DUP4 00001624: SWAP2 00001625: DUP7 00001626: SWAP2 00001627: PUSH32 0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff 00001648: SWAP2 00001649: SWAP1 0000164a: LOG4 0000164b: POP 0000164c: POP 0000164d: POP 0000164e: JUMP 0000164f: JUMPDEST 00001650: PUSH2 0x0811 00001653: DUP3 00001654: DUP3 00001655: PUSH2 0x1172 00001658: JUMP 00001659: JUMPDEST 0000165a: DUP1 0000165b: CALLDATALOAD 0000165c: PUSH1 0x01 0000165e: PUSH1 0x01 00001660: PUSH1 0xa0 00001662: SHL 00001663: SUB 00001664: DUP2 00001665: AND 00001666: DUP2 00001667: EQ 00001668: PUSH2 0x1670 0000166b: JUMPI 0000166c: PUSH1 0x00 0000166e: DUP1 0000166f: REVERT 00001670: JUMPDEST 00001671: SWAP2 00001672: SWAP1 00001673: POP 00001674: JUMP 00001675: JUMPDEST 00001676: PUSH1 0x00 00001678: DUP1 00001679: DUP4 0000167a: PUSH1 0x1f 0000167c: DUP5 0000167d: ADD 0000167e: SLT 0000167f: PUSH2 0x1687 00001682: JUMPI 00001683: PUSH1 0x00 00001685: DUP1 00001686: REVERT 00001687: JUMPDEST 00001688: POP 00001689: DUP2 0000168a: CALLDATALOAD 0000168b: PUSH1 0x01 0000168d: PUSH1 0x01 0000168f: PUSH1 0x40 00001691: SHL 00001692: SUB 00001693: DUP2 00001694: GT 00001695: ISZERO 00001696: PUSH2 0x169e 00001699: JUMPI 0000169a: PUSH1 0x00 0000169c: DUP1 0000169d: REVERT 0000169e: JUMPDEST 0000169f: PUSH1 0x20 000016a1: DUP4 000016a2: ADD 000016a3: SWAP2 000016a4: POP 000016a5: DUP4 000016a6: PUSH1 0x20 000016a8: DUP3 000016a9: DUP6 000016aa: ADD 000016ab: ADD 000016ac: GT 000016ad: ISZERO 000016ae: PUSH2 0x16b6 000016b1: JUMPI 000016b2: PUSH1 0x00 000016b4: DUP1 000016b5: REVERT 000016b6: JUMPDEST 000016b7: SWAP3 000016b8: POP 000016b9: SWAP3 000016ba: SWAP1 000016bb: POP 000016bc: JUMP 000016bd: JUMPDEST 000016be: PUSH1 0x00 000016c0: DUP1 000016c1: PUSH1 0x00 000016c3: DUP1 000016c4: PUSH1 0x00 000016c6: DUP1 000016c7: PUSH1 0x00 000016c9: PUSH1 0xc0 000016cb: DUP9 000016cc: DUP11 000016cd: SUB 000016ce: SLT 000016cf: ISZERO 000016d0: PUSH2 0x16d8 000016d3: JUMPI 000016d4: PUSH1 0x00 000016d6: DUP1 000016d7: REVERT 000016d8: JUMPDEST 000016d9: PUSH2 0x16e1 000016dc: DUP9 000016dd: PUSH2 0x1659 000016e0: JUMP 000016e1: JUMPDEST 000016e2: SWAP7 000016e3: POP 000016e4: PUSH1 0x20 000016e6: DUP9 000016e7: ADD 000016e8: CALLDATALOAD 000016e9: SWAP6 000016ea: POP 000016eb: PUSH1 0x40 000016ed: DUP9 000016ee: ADD 000016ef: CALLDATALOAD 000016f0: PUSH1 0x01 000016f2: PUSH1 0x01 000016f4: PUSH1 0x40 000016f6: SHL 000016f7: SUB 000016f8: DUP2 000016f9: GT 000016fa: ISZERO 000016fb: PUSH2 0x1703 000016fe: JUMPI 000016ff: PUSH1 0x00 00001701: DUP1 00001702: REVERT 00001703: JUMPDEST 00001704: PUSH2 0x170f 00001707: DUP11 00001708: DUP3 00001709: DUP12 0000170a: ADD 0000170b: PUSH2 0x1675 0000170e: JUMP 0000170f: JUMPDEST 00001710: SWAP9 00001711: SWAP12 00001712: SWAP8 00001713: SWAP11 00001714: POP 00001715: SWAP9 00001716: PUSH1 0x60 00001718: DUP2 00001719: ADD 0000171a: CALLDATALOAD 0000171b: SWAP8 0000171c: PUSH1 0x80 0000171e: DUP3 0000171f: ADD 00001720: CALLDATALOAD 00001721: SWAP8 00001722: POP 00001723: PUSH1 0xa0 00001725: SWAP1 00001726: SWAP2 00001727: ADD 00001728: CALLDATALOAD 00001729: SWAP6 0000172a: POP 0000172b: SWAP4 0000172c: POP 0000172d: POP 0000172e: POP 0000172f: POP 00001730: JUMP 00001731: JUMPDEST 00001732: PUSH1 0x00 00001734: PUSH1 0x20 00001736: DUP3 00001737: DUP5 00001738: SUB 00001739: SLT 0000173a: ISZERO 0000173b: PUSH2 0x1743 0000173e: JUMPI 0000173f: PUSH1 0x00 00001741: DUP1 00001742: REVERT 00001743: JUMPDEST 00001744: DUP2 00001745: CALLDATALOAD 00001746: PUSH1 0x01 00001748: PUSH1 0x01 0000174a: PUSH1 0xe0 0000174c: SHL 0000174d: SUB 0000174e: NOT 0000174f: DUP2 00001750: AND 00001751: DUP2 00001752: EQ 00001753: PUSH2 0x0748 00001756: JUMPI 00001757: PUSH1 0x00 00001759: DUP1 0000175a: REVERT 0000175b: JUMPDEST 0000175c: PUSH1 0x00 0000175e: DUP1 0000175f: PUSH1 0x00 00001761: DUP1 00001762: PUSH1 0x00 00001764: DUP1 00001765: PUSH1 0xa0 00001767: DUP8 00001768: DUP10 00001769: SUB 0000176a: SLT 0000176b: ISZERO 0000176c: PUSH2 0x1774 0000176f: JUMPI 00001770: PUSH1 0x00 00001772: DUP1 00001773: REVERT 00001774: JUMPDEST 00001775: PUSH2 0x177d 00001778: DUP8 00001779: PUSH2 0x1659 0000177c: JUMP 0000177d: JUMPDEST 0000177e: SWAP6 0000177f: POP 00001780: PUSH1 0x20 00001782: DUP8 00001783: ADD 00001784: CALLDATALOAD 00001785: SWAP5 00001786: POP 00001787: PUSH1 0x40 00001789: DUP8 0000178a: ADD 0000178b: CALLDATALOAD 0000178c: PUSH1 0x01 0000178e: PUSH1 0x01 00001790: PUSH1 0x40 00001792: SHL 00001793: SUB 00001794: DUP2 00001795: GT 00001796: ISZERO 00001797: PUSH2 0x179f 0000179a: JUMPI 0000179b: PUSH1 0x00 0000179d: DUP1 0000179e: REVERT 0000179f: JUMPDEST 000017a0: PUSH2 0x17ab 000017a3: DUP10 000017a4: DUP3 000017a5: DUP11 000017a6: ADD 000017a7: PUSH2 0x1675 000017aa: JUMP 000017ab: JUMPDEST 000017ac: SWAP8 000017ad: SWAP11 000017ae: SWAP7 000017af: SWAP10 000017b0: POP 000017b1: SWAP8 000017b2: PUSH1 0x60 000017b4: DUP2 000017b5: ADD 000017b6: CALLDATALOAD 000017b7: SWAP7 000017b8: PUSH1 0x80 000017ba: SWAP1 000017bb: SWAP2 000017bc: ADD 000017bd: CALLDATALOAD 000017be: SWAP6 000017bf: POP 000017c0: SWAP4 000017c1: POP 000017c2: POP 000017c3: POP 000017c4: POP 000017c5: JUMP 000017c6: JUMPDEST 000017c7: PUSH1 0x00 000017c9: PUSH1 0x20 000017cb: DUP3 000017cc: DUP5 000017cd: SUB 000017ce: SLT 000017cf: ISZERO 000017d0: PUSH2 0x17d8 000017d3: JUMPI 000017d4: PUSH1 0x00 000017d6: DUP1 000017d7: REVERT 000017d8: JUMPDEST 000017d9: POP 000017da: CALLDATALOAD 000017db: SWAP2 000017dc: SWAP1 000017dd: POP 000017de: JUMP 000017df: JUMPDEST 000017e0: PUSH4 0x4e487b71 000017e5: PUSH1 0xe0 000017e7: SHL 000017e8: PUSH1 0x00 000017ea: MSTORE 000017eb: PUSH1 0x41 000017ed: PUSH1 0x04 000017ef: MSTORE 000017f0: PUSH1 0x24 000017f2: PUSH1 0x00 000017f4: REVERT 000017f5: JUMPDEST 000017f6: PUSH1 0x40 000017f8: MLOAD 000017f9: PUSH1 0x1f 000017fb: DUP3 000017fc: ADD 000017fd: PUSH1 0x1f 000017ff: NOT 00001800: AND 00001801: DUP2 00001802: ADD 00001803: PUSH1 0x01 00001805: PUSH1 0x01 00001807: PUSH1 0x40 00001809: SHL 0000180a: SUB 0000180b: DUP2 0000180c: GT 0000180d: DUP3 0000180e: DUP3 0000180f: LT 00001810: OR 00001811: ISZERO 00001812: PUSH2 0x181d 00001815: JUMPI 00001816: PUSH2 0x181d 00001819: PUSH2 0x17df 0000181c: JUMP 0000181d: JUMPDEST 0000181e: PUSH1 0x40 00001820: MSTORE 00001821: SWAP2 00001822: SWAP1 00001823: POP 00001824: JUMP 00001825: JUMPDEST 00001826: PUSH1 0x00 00001828: DUP3 00001829: PUSH1 0x1f 0000182b: DUP4 0000182c: ADD 0000182d: SLT 0000182e: PUSH2 0x1836 00001831: JUMPI 00001832: PUSH1 0x00 00001834: DUP1 00001835: REVERT 00001836: JUMPDEST 00001837: DUP2 00001838: CALLDATALOAD 00001839: PUSH1 0x01 0000183b: PUSH1 0x01 0000183d: PUSH1 0x40 0000183f: SHL 00001840: SUB 00001841: DUP2 00001842: GT 00001843: ISZERO 00001844: PUSH2 0x184f 00001847: JUMPI 00001848: PUSH2 0x184f 0000184b: PUSH2 0x17df 0000184e: JUMP 0000184f: JUMPDEST 00001850: PUSH2 0x1862 00001853: PUSH1 0x1f 00001855: DUP3 00001856: ADD 00001857: PUSH1 0x1f 00001859: NOT 0000185a: AND 0000185b: PUSH1 0x20 0000185d: ADD 0000185e: PUSH2 0x17f5 00001861: JUMP 00001862: JUMPDEST 00001863: DUP2 00001864: DUP2 00001865: MSTORE 00001866: DUP5 00001867: PUSH1 0x20 00001869: DUP4 0000186a: DUP7 0000186b: ADD 0000186c: ADD 0000186d: GT 0000186e: ISZERO 0000186f: PUSH2 0x1877 00001872: JUMPI 00001873: PUSH1 0x00 00001875: DUP1 00001876: REVERT 00001877: JUMPDEST 00001878: DUP2 00001879: PUSH1 0x20 0000187b: DUP6 0000187c: ADD 0000187d: PUSH1 0x20 0000187f: DUP4 00001880: ADD 00001881: CALLDATACOPY 00001882: PUSH1 0x00 00001884: SWAP2 00001885: DUP2 00001886: ADD 00001887: PUSH1 0x20 00001889: ADD 0000188a: SWAP2 0000188b: SWAP1 0000188c: SWAP2 0000188d: MSTORE 0000188e: SWAP4 0000188f: SWAP3 00001890: POP 00001891: POP 00001892: POP 00001893: JUMP 00001894: JUMPDEST 00001895: PUSH1 0x00 00001897: DUP1 00001898: PUSH1 0x00 0000189a: DUP1 0000189b: PUSH1 0x80 0000189d: DUP6 0000189e: DUP8 0000189f: SUB 000018a0: SLT 000018a1: ISZERO 000018a2: PUSH2 0x18aa 000018a5: JUMPI 000018a6: PUSH1 0x00 000018a8: DUP1 000018a9: REVERT 000018aa: JUMPDEST 000018ab: PUSH2 0x18b3 000018ae: DUP6 000018af: PUSH2 0x1659 000018b2: JUMP 000018b3: JUMPDEST 000018b4: SWAP4 000018b5: POP 000018b6: PUSH2 0x18c1 000018b9: PUSH1 0x20 000018bb: DUP7 000018bc: ADD 000018bd: PUSH2 0x1659 000018c0: JUMP 000018c1: JUMPDEST 000018c2: SWAP3 000018c3: POP 000018c4: PUSH1 0x40 000018c6: DUP6 000018c7: ADD 000018c8: CALLDATALOAD 000018c9: SWAP2 000018ca: POP 000018cb: PUSH1 0x60 000018cd: DUP6 000018ce: ADD 000018cf: CALLDATALOAD 000018d0: PUSH1 0x01 000018d2: PUSH1 0x01 000018d4: PUSH1 0x40 000018d6: SHL 000018d7: SUB 000018d8: DUP2 000018d9: GT 000018da: ISZERO 000018db: PUSH2 0x18e3 000018de: JUMPI 000018df: PUSH1 0x00 000018e1: DUP1 000018e2: REVERT 000018e3: JUMPDEST 000018e4: PUSH2 0x18ef 000018e7: DUP8 000018e8: DUP3 000018e9: DUP9 000018ea: ADD 000018eb: PUSH2 0x1825 000018ee: JUMP 000018ef: JUMPDEST 000018f0: SWAP2 000018f1: POP 000018f2: POP 000018f3: SWAP3 000018f4: SWAP6 000018f5: SWAP2 000018f6: SWAP5 000018f7: POP 000018f8: SWAP3 000018f9: POP 000018fa: JUMP 000018fb: JUMPDEST 000018fc: PUSH1 0x00 000018fe: DUP1 000018ff: PUSH1 0x40 00001901: DUP4 00001902: DUP6 00001903: SUB 00001904: SLT 00001905: ISZERO 00001906: PUSH2 0x190e 00001909: JUMPI 0000190a: PUSH1 0x00 0000190c: DUP1 0000190d: REVERT 0000190e: JUMPDEST 0000190f: DUP3 00001910: CALLDATALOAD 00001911: SWAP2 00001912: POP 00001913: PUSH2 0x191e 00001916: PUSH1 0x20 00001918: DUP5 00001919: ADD 0000191a: PUSH2 0x1659 0000191d: JUMP 0000191e: JUMPDEST 0000191f: SWAP1 00001920: POP 00001921: SWAP3 00001922: POP 00001923: SWAP3 00001924: SWAP1 00001925: POP 00001926: JUMP 00001927: JUMPDEST 00001928: PUSH1 0x00 0000192a: PUSH1 0x01 0000192c: PUSH1 0x01 0000192e: PUSH1 0x40 00001930: SHL 00001931: SUB 00001932: DUP3 00001933: GT 00001934: ISZERO 00001935: PUSH2 0x1940 00001938: JUMPI 00001939: PUSH2 0x1940 0000193c: PUSH2 0x17df 0000193f: JUMP 00001940: JUMPDEST 00001941: POP 00001942: PUSH1 0x05 00001944: SHL 00001945: PUSH1 0x20 00001947: ADD 00001948: SWAP1 00001949: JUMP 0000194a: JUMPDEST 0000194b: PUSH1 0x00 0000194d: DUP3 0000194e: PUSH1 0x1f 00001950: DUP4 00001951: ADD 00001952: SLT 00001953: PUSH2 0x195b 00001956: JUMPI 00001957: PUSH1 0x00 00001959: DUP1 0000195a: REVERT 0000195b: JUMPDEST 0000195c: DUP2 0000195d: CALLDATALOAD 0000195e: PUSH1 0x20 00001960: PUSH2 0x1970 00001963: PUSH2 0x196b 00001966: DUP4 00001967: PUSH2 0x1927 0000196a: JUMP 0000196b: JUMPDEST 0000196c: PUSH2 0x17f5 0000196f: JUMP 00001970: JUMPDEST 00001971: DUP3 00001972: DUP2 00001973: MSTORE 00001974: PUSH1 0x05 00001976: SWAP3 00001977: SWAP1 00001978: SWAP3 00001979: SHL 0000197a: DUP5 0000197b: ADD 0000197c: DUP2 0000197d: ADD 0000197e: SWAP2 0000197f: DUP2 00001980: DUP2 00001981: ADD 00001982: SWAP1 00001983: DUP7 00001984: DUP5 00001985: GT 00001986: ISZERO 00001987: PUSH2 0x198f 0000198a: JUMPI 0000198b: PUSH1 0x00 0000198d: DUP1 0000198e: REVERT 0000198f: JUMPDEST 00001990: DUP3 00001991: DUP7 00001992: ADD 00001993: JUMPDEST 00001994: DUP5 00001995: DUP2 00001996: LT 00001997: ISZERO 00001998: PUSH2 0x19b1 0000199b: JUMPI 0000199c: PUSH2 0x19a4 0000199f: DUP2 000019a0: PUSH2 0x1659 000019a3: JUMP 000019a4: JUMPDEST 000019a5: DUP4 000019a6: MSTORE 000019a7: SWAP2 000019a8: DUP4 000019a9: ADD 000019aa: SWAP2 000019ab: DUP4 000019ac: ADD 000019ad: PUSH2 0x1993 000019b0: JUMP 000019b1: JUMPDEST 000019b2: POP 000019b3: SWAP7 000019b4: SWAP6 000019b5: POP 000019b6: POP 000019b7: POP 000019b8: POP 000019b9: POP 000019ba: POP 000019bb: JUMP 000019bc: JUMPDEST 000019bd: PUSH1 0x00 000019bf: DUP1 000019c0: PUSH1 0x00 000019c2: PUSH1 0x60 000019c4: DUP5 000019c5: DUP7 000019c6: SUB 000019c7: SLT 000019c8: ISZERO 000019c9: PUSH2 0x19d1 000019cc: JUMPI 000019cd: PUSH1 0x00 000019cf: DUP1 000019d0: REVERT 000019d1: JUMPDEST 000019d2: DUP4 000019d3: CALLDATALOAD 000019d4: SWAP3 000019d5: POP 000019d6: PUSH1 0x20 000019d8: DUP5 000019d9: ADD 000019da: CALLDATALOAD 000019db: PUSH1 0x01 000019dd: PUSH1 0x01 000019df: PUSH1 0x40 000019e1: SHL 000019e2: SUB 000019e3: DUP1 000019e4: DUP3 000019e5: GT 000019e6: ISZERO 000019e7: PUSH2 0x19ef 000019ea: JUMPI 000019eb: PUSH1 0x00 000019ed: DUP1 000019ee: REVERT 000019ef: JUMPDEST 000019f0: PUSH2 0x19fb 000019f3: DUP8 000019f4: DUP4 000019f5: DUP9 000019f6: ADD 000019f7: PUSH2 0x194a 000019fa: JUMP 000019fb: JUMPDEST 000019fc: SWAP4 000019fd: POP 000019fe: PUSH1 0x40 00001a00: DUP7 00001a01: ADD 00001a02: CALLDATALOAD 00001a03: SWAP2 00001a04: POP 00001a05: DUP1 00001a06: DUP3 00001a07: GT 00001a08: ISZERO 00001a09: PUSH2 0x1a11 00001a0c: JUMPI 00001a0d: PUSH1 0x00 00001a0f: DUP1 00001a10: REVERT 00001a11: JUMPDEST 00001a12: POP 00001a13: PUSH2 0x1a1e 00001a16: DUP7 00001a17: DUP3 00001a18: DUP8 00001a19: ADD 00001a1a: PUSH2 0x194a 00001a1d: JUMP 00001a1e: JUMPDEST 00001a1f: SWAP2 00001a20: POP 00001a21: POP 00001a22: SWAP3 00001a23: POP 00001a24: SWAP3 00001a25: POP 00001a26: SWAP3 00001a27: JUMP 00001a28: JUMPDEST 00001a29: PUSH1 0x00 00001a2b: DUP1 00001a2c: DUP4 00001a2d: PUSH1 0x1f 00001a2f: DUP5 00001a30: ADD 00001a31: SLT 00001a32: PUSH2 0x1a3a 00001a35: JUMPI 00001a36: PUSH1 0x00 00001a38: DUP1 00001a39: REVERT 00001a3a: JUMPDEST 00001a3b: POP 00001a3c: DUP2 00001a3d: CALLDATALOAD 00001a3e: PUSH1 0x01 00001a40: PUSH1 0x01 00001a42: PUSH1 0x40 00001a44: SHL 00001a45: SUB 00001a46: DUP2 00001a47: GT 00001a48: ISZERO 00001a49: PUSH2 0x1a51 00001a4c: JUMPI 00001a4d: PUSH1 0x00 00001a4f: DUP1 00001a50: REVERT 00001a51: JUMPDEST 00001a52: PUSH1 0x20 00001a54: DUP4 00001a55: ADD 00001a56: SWAP2 00001a57: POP 00001a58: DUP4 00001a59: PUSH1 0x20 00001a5b: DUP3 00001a5c: PUSH1 0x05 00001a5e: SHL 00001a5f: DUP6 00001a60: ADD 00001a61: ADD 00001a62: GT 00001a63: ISZERO 00001a64: PUSH2 0x16b6 00001a67: JUMPI 00001a68: PUSH1 0x00 00001a6a: DUP1 00001a6b: REVERT 00001a6c: JUMPDEST 00001a6d: PUSH1 0x00 00001a6f: DUP1 00001a70: PUSH1 0x00 00001a72: DUP1 00001a73: PUSH1 0x00 00001a75: DUP1 00001a76: PUSH1 0x00 00001a78: DUP1 00001a79: PUSH1 0x00 00001a7b: PUSH1 0xc0 00001a7d: DUP11 00001a7e: DUP13 00001a7f: SUB 00001a80: SLT 00001a81: ISZERO 00001a82: PUSH2 0x1a8a 00001a85: JUMPI 00001a86: PUSH1 0x00 00001a88: DUP1 00001a89: REVERT 00001a8a: JUMPDEST 00001a8b: DUP10 00001a8c: CALLDATALOAD 00001a8d: PUSH1 0x01 00001a8f: PUSH1 0x01 00001a91: PUSH1 0x40 00001a93: SHL 00001a94: SUB 00001a95: DUP1 00001a96: DUP3 00001a97: GT 00001a98: ISZERO 00001a99: PUSH2 0x1aa1 00001a9c: JUMPI 00001a9d: PUSH1 0x00 00001a9f: DUP1 00001aa0: REVERT 00001aa1: JUMPDEST 00001aa2: PUSH2 0x1aad 00001aa5: DUP14 00001aa6: DUP4 00001aa7: DUP15 00001aa8: ADD 00001aa9: PUSH2 0x1a28 00001aac: JUMP 00001aad: JUMPDEST 00001aae: SWAP1 00001aaf: SWAP12 00001ab0: POP 00001ab1: SWAP10 00001ab2: POP 00001ab3: PUSH1 0x20 00001ab5: DUP13 00001ab6: ADD 00001ab7: CALLDATALOAD 00001ab8: SWAP2 00001ab9: POP 00001aba: DUP1 00001abb: DUP3 00001abc: GT 00001abd: ISZERO 00001abe: PUSH2 0x1ac6 00001ac1: JUMPI 00001ac2: PUSH1 0x00 00001ac4: DUP1 00001ac5: REVERT 00001ac6: JUMPDEST 00001ac7: PUSH2 0x1ad2 00001aca: DUP14 00001acb: DUP4 00001acc: DUP15 00001acd: ADD 00001ace: PUSH2 0x1a28 00001ad1: JUMP 00001ad2: JUMPDEST 00001ad3: SWAP1 00001ad4: SWAP10 00001ad5: POP 00001ad6: SWAP8 00001ad7: POP 00001ad8: PUSH1 0x40 00001ada: DUP13 00001adb: ADD 00001adc: CALLDATALOAD 00001add: SWAP2 00001ade: POP 00001adf: DUP1 00001ae0: DUP3 00001ae1: GT 00001ae2: ISZERO 00001ae3: PUSH2 0x1aeb 00001ae6: JUMPI 00001ae7: PUSH1 0x00 00001ae9: DUP1 00001aea: REVERT 00001aeb: JUMPDEST 00001aec: POP 00001aed: PUSH2 0x1af8 00001af0: DUP13 00001af1: DUP3 00001af2: DUP14 00001af3: ADD 00001af4: PUSH2 0x1a28 00001af7: JUMP 00001af8: JUMPDEST 00001af9: SWAP11 00001afa: SWAP14 00001afb: SWAP10 00001afc: SWAP13 00001afd: POP 00001afe: SWAP8 00001aff: SWAP11 00001b00: SWAP7 00001b01: SWAP10 00001b02: SWAP8 00001b03: SWAP9 00001b04: PUSH1 0x60 00001b06: DUP9 00001b07: ADD 00001b08: CALLDATALOAD 00001b09: SWAP8 00001b0a: PUSH1 0x80 00001b0c: DUP2 00001b0d: ADD 00001b0e: CALLDATALOAD 00001b0f: SWAP8 00001b10: POP 00001b11: PUSH1 0xa0 00001b13: ADD 00001b14: CALLDATALOAD 00001b15: SWAP6 00001b16: POP 00001b17: SWAP4 00001b18: POP 00001b19: POP 00001b1a: POP 00001b1b: POP 00001b1c: JUMP 00001b1d: JUMPDEST 00001b1e: PUSH1 0x00 00001b20: DUP1 00001b21: PUSH1 0x00 00001b23: DUP1 00001b24: PUSH1 0x00 00001b26: DUP1 00001b27: PUSH1 0x00 00001b29: DUP1 00001b2a: PUSH1 0xa0 00001b2c: DUP10 00001b2d: DUP12 00001b2e: SUB 00001b2f: SLT 00001b30: ISZERO 00001b31: PUSH2 0x1b39 00001b34: JUMPI 00001b35: PUSH1 0x00 00001b37: DUP1 00001b38: REVERT 00001b39: JUMPDEST 00001b3a: DUP9 00001b3b: CALLDATALOAD 00001b3c: PUSH1 0x01 00001b3e: PUSH1 0x01 00001b40: PUSH1 0x40 00001b42: SHL 00001b43: SUB 00001b44: DUP1 00001b45: DUP3 00001b46: GT 00001b47: ISZERO 00001b48: PUSH2 0x1b50 00001b4b: JUMPI 00001b4c: PUSH1 0x00 00001b4e: DUP1 00001b4f: REVERT 00001b50: JUMPDEST 00001b51: PUSH2 0x1b5c 00001b54: DUP13 00001b55: DUP4 00001b56: DUP14 00001b57: ADD 00001b58: PUSH2 0x1a28 00001b5b: JUMP 00001b5c: JUMPDEST 00001b5d: SWAP1 00001b5e: SWAP11 00001b5f: POP 00001b60: SWAP9 00001b61: POP 00001b62: PUSH1 0x20 00001b64: DUP12 00001b65: ADD 00001b66: CALLDATALOAD 00001b67: SWAP2 00001b68: POP 00001b69: DUP1 00001b6a: DUP3 00001b6b: GT 00001b6c: ISZERO 00001b6d: PUSH2 0x1b75 00001b70: JUMPI 00001b71: PUSH1 0x00 00001b73: DUP1 00001b74: REVERT 00001b75: JUMPDEST 00001b76: PUSH2 0x1b81 00001b79: DUP13 00001b7a: DUP4 00001b7b: DUP14 00001b7c: ADD 00001b7d: PUSH2 0x1a28 00001b80: JUMP 00001b81: JUMPDEST 00001b82: SWAP1 00001b83: SWAP9 00001b84: POP 00001b85: SWAP7 00001b86: POP 00001b87: PUSH1 0x40 00001b89: DUP12 00001b8a: ADD 00001b8b: CALLDATALOAD 00001b8c: SWAP2 00001b8d: POP 00001b8e: DUP1 00001b8f: DUP3 00001b90: GT 00001b91: ISZERO 00001b92: PUSH2 0x1b9a 00001b95: JUMPI 00001b96: PUSH1 0x00 00001b98: DUP1 00001b99: REVERT 00001b9a: JUMPDEST 00001b9b: POP 00001b9c: PUSH2 0x1ba7 00001b9f: DUP12 00001ba0: DUP3 00001ba1: DUP13 00001ba2: ADD 00001ba3: PUSH2 0x1a28 00001ba6: JUMP 00001ba7: JUMPDEST 00001ba8: SWAP10 00001ba9: SWAP13 00001baa: SWAP9 00001bab: SWAP12 00001bac: POP 00001bad: SWAP7 00001bae: SWAP10 00001baf: SWAP6 00001bb0: SWAP9 00001bb1: SWAP7 00001bb2: SWAP8 00001bb3: PUSH1 0x60 00001bb5: DUP8 00001bb6: ADD 00001bb7: CALLDATALOAD 00001bb8: SWAP7 00001bb9: PUSH1 0x80 00001bbb: ADD 00001bbc: CALLDATALOAD 00001bbd: SWAP6 00001bbe: POP 00001bbf: SWAP4 00001bc0: POP 00001bc1: POP 00001bc2: POP 00001bc3: POP 00001bc4: JUMP 00001bc5: JUMPDEST 00001bc6: PUSH1 0x00 00001bc8: DUP3 00001bc9: PUSH1 0x1f 00001bcb: DUP4 00001bcc: ADD 00001bcd: SLT 00001bce: PUSH2 0x1bd6 00001bd1: JUMPI 00001bd2: PUSH1 0x00 00001bd4: DUP1 00001bd5: REVERT 00001bd6: JUMPDEST 00001bd7: DUP2 00001bd8: CALLDATALOAD 00001bd9: PUSH1 0x20 00001bdb: PUSH2 0x1be6 00001bde: PUSH2 0x196b 00001be1: DUP4 00001be2: PUSH2 0x1927 00001be5: JUMP 00001be6: JUMPDEST 00001be7: DUP3 00001be8: DUP2 00001be9: MSTORE 00001bea: PUSH1 0x05 00001bec: SWAP3 00001bed: SWAP1 00001bee: SWAP3 00001bef: SHL 00001bf0: DUP5 00001bf1: ADD 00001bf2: DUP2 00001bf3: ADD 00001bf4: SWAP2 00001bf5: DUP2 00001bf6: DUP2 00001bf7: ADD 00001bf8: SWAP1 00001bf9: DUP7 00001bfa: DUP5 00001bfb: GT 00001bfc: ISZERO 00001bfd: PUSH2 0x1c05 00001c00: JUMPI 00001c01: PUSH1 0x00 00001c03: DUP1 00001c04: REVERT 00001c05: JUMPDEST 00001c06: DUP3 00001c07: DUP7 00001c08: ADD 00001c09: JUMPDEST 00001c0a: DUP5 00001c0b: DUP2 00001c0c: LT 00001c0d: ISZERO 00001c0e: PUSH2 0x19b1 00001c11: JUMPI 00001c12: DUP1 00001c13: CALLDATALOAD 00001c14: DUP4 00001c15: MSTORE 00001c16: SWAP2 00001c17: DUP4 00001c18: ADD 00001c19: SWAP2 00001c1a: DUP4 00001c1b: ADD 00001c1c: PUSH2 0x1c09 00001c1f: JUMP 00001c20: JUMPDEST 00001c21: PUSH1 0x00 00001c23: DUP1 00001c24: PUSH1 0x00 00001c26: DUP1 00001c27: PUSH1 0x00 00001c29: PUSH1 0xa0 00001c2b: DUP7 00001c2c: DUP9 00001c2d: SUB 00001c2e: SLT 00001c2f: ISZERO 00001c30: PUSH2 0x1c38 00001c33: JUMPI 00001c34: PUSH1 0x00 00001c36: DUP1 00001c37: REVERT 00001c38: JUMPDEST 00001c39: PUSH2 0x1c41 00001c3c: DUP7 00001c3d: PUSH2 0x1659 00001c40: JUMP 00001c41: JUMPDEST 00001c42: SWAP5 00001c43: POP 00001c44: PUSH2 0x1c4f 00001c47: PUSH1 0x20 00001c49: DUP8 00001c4a: ADD 00001c4b: PUSH2 0x1659 00001c4e: JUMP 00001c4f: JUMPDEST 00001c50: SWAP4 00001c51: POP 00001c52: PUSH1 0x40 00001c54: DUP7 00001c55: ADD 00001c56: CALLDATALOAD 00001c57: PUSH1 0x01 00001c59: PUSH1 0x01 00001c5b: PUSH1 0x40 00001c5d: SHL 00001c5e: SUB 00001c5f: DUP1 00001c60: DUP3 00001c61: GT 00001c62: ISZERO 00001c63: PUSH2 0x1c6b 00001c66: JUMPI 00001c67: PUSH1 0x00 00001c69: DUP1 00001c6a: REVERT 00001c6b: JUMPDEST 00001c6c: PUSH2 0x1c77 00001c6f: DUP10 00001c70: DUP4 00001c71: DUP11 00001c72: ADD 00001c73: PUSH2 0x1bc5 00001c76: JUMP 00001c77: JUMPDEST 00001c78: SWAP5 00001c79: POP 00001c7a: PUSH1 0x60 00001c7c: DUP9 00001c7d: ADD 00001c7e: CALLDATALOAD 00001c7f: SWAP2 00001c80: POP 00001c81: DUP1 00001c82: DUP3 00001c83: GT 00001c84: ISZERO 00001c85: PUSH2 0x1c8d 00001c88: JUMPI 00001c89: PUSH1 0x00 00001c8b: DUP1 00001c8c: REVERT 00001c8d: JUMPDEST 00001c8e: PUSH2 0x1c99 00001c91: DUP10 00001c92: DUP4 00001c93: DUP11 00001c94: ADD 00001c95: PUSH2 0x1bc5 00001c98: JUMP 00001c99: JUMPDEST 00001c9a: SWAP4 00001c9b: POP 00001c9c: PUSH1 0x80 00001c9e: DUP9 00001c9f: ADD 00001ca0: CALLDATALOAD 00001ca1: SWAP2 00001ca2: POP 00001ca3: DUP1 00001ca4: DUP3 00001ca5: GT 00001ca6: ISZERO 00001ca7: PUSH2 0x1caf 00001caa: JUMPI 00001cab: PUSH1 0x00 00001cad: DUP1 00001cae: REVERT 00001caf: JUMPDEST 00001cb0: POP 00001cb1: PUSH2 0x1cbc 00001cb4: DUP9 00001cb5: DUP3 00001cb6: DUP10 00001cb7: ADD 00001cb8: PUSH2 0x1825 00001cbb: JUMP 00001cbc: JUMPDEST 00001cbd: SWAP2 00001cbe: POP 00001cbf: POP 00001cc0: SWAP3 00001cc1: SWAP6 00001cc2: POP 00001cc3: SWAP3 00001cc4: SWAP6 00001cc5: SWAP1 00001cc6: SWAP4 00001cc7: POP 00001cc8: JUMP 00001cc9: JUMPDEST 00001cca: PUSH1 0x00 00001ccc: DUP1 00001ccd: PUSH1 0x00 00001ccf: DUP1 00001cd0: PUSH1 0x00 00001cd2: PUSH1 0xa0 00001cd4: DUP7 00001cd5: DUP9 00001cd6: SUB 00001cd7: SLT 00001cd8: ISZERO 00001cd9: PUSH2 0x1ce1 00001cdc: JUMPI 00001cdd: PUSH1 0x00 00001cdf: DUP1 00001ce0: REVERT 00001ce1: JUMPDEST 00001ce2: PUSH2 0x1cea 00001ce5: DUP7 00001ce6: PUSH2 0x1659 00001ce9: JUMP 00001cea: JUMPDEST 00001ceb: SWAP5 00001cec: POP 00001ced: PUSH2 0x1cf8 00001cf0: PUSH1 0x20 00001cf2: DUP8 00001cf3: ADD 00001cf4: PUSH2 0x1659 00001cf7: JUMP 00001cf8: JUMPDEST 00001cf9: SWAP4 00001cfa: POP 00001cfb: PUSH1 0x40 00001cfd: DUP7 00001cfe: ADD 00001cff: CALLDATALOAD 00001d00: SWAP3 00001d01: POP 00001d02: PUSH1 0x60 00001d04: DUP7 00001d05: ADD 00001d06: CALLDATALOAD 00001d07: SWAP2 00001d08: POP 00001d09: PUSH1 0x80 00001d0b: DUP7 00001d0c: ADD 00001d0d: CALLDATALOAD 00001d0e: PUSH1 0x01 00001d10: PUSH1 0x01 00001d12: PUSH1 0x40 00001d14: SHL 00001d15: SUB 00001d16: DUP2 00001d17: GT 00001d18: ISZERO 00001d19: PUSH2 0x1d21 00001d1c: JUMPI 00001d1d: PUSH1 0x00 00001d1f: DUP1 00001d20: REVERT 00001d21: JUMPDEST 00001d22: PUSH2 0x1cbc 00001d25: DUP9 00001d26: DUP3 00001d27: DUP10 00001d28: ADD 00001d29: PUSH2 0x1825 00001d2c: JUMP 00001d2d: JUMPDEST 00001d2e: DUP2 00001d2f: DUP4 00001d30: MSTORE 00001d31: DUP2 00001d32: DUP2 00001d33: PUSH1 0x20 00001d35: DUP6 00001d36: ADD 00001d37: CALLDATACOPY 00001d38: POP 00001d39: PUSH1 0x00 00001d3b: DUP3 00001d3c: DUP3 00001d3d: ADD 00001d3e: PUSH1 0x20 00001d40: SWAP1 00001d41: DUP2 00001d42: ADD 00001d43: SWAP2 00001d44: SWAP1 00001d45: SWAP2 00001d46: MSTORE 00001d47: PUSH1 0x1f 00001d49: SWAP1 00001d4a: SWAP2 00001d4b: ADD 00001d4c: PUSH1 0x1f 00001d4e: NOT 00001d4f: AND 00001d50: SWAP1 00001d51: SWAP2 00001d52: ADD 00001d53: ADD 00001d54: SWAP1 00001d55: JUMP 00001d56: JUMPDEST 00001d57: PUSH1 0x01 00001d59: DUP1 00001d5a: PUSH1 0xa0 00001d5c: SHL 00001d5d: SUB 00001d5e: DUP8 00001d5f: AND 00001d60: DUP2 00001d61: MSTORE 00001d62: DUP6 00001d63: PUSH1 0x20 00001d65: DUP3 00001d66: ADD 00001d67: MSTORE 00001d68: PUSH1 0xa0 00001d6a: PUSH1 0x40 00001d6c: DUP3 00001d6d: ADD 00001d6e: MSTORE 00001d6f: PUSH1 0x00 00001d71: PUSH2 0x1d7e 00001d74: PUSH1 0xa0 00001d76: DUP4 00001d77: ADD 00001d78: DUP7 00001d79: DUP9 00001d7a: PUSH2 0x1d2d 00001d7d: JUMP 00001d7e: JUMPDEST 00001d7f: PUSH1 0x60 00001d81: DUP4 00001d82: ADD 00001d83: SWAP5 00001d84: SWAP1 00001d85: SWAP5 00001d86: MSTORE 00001d87: POP 00001d88: PUSH1 0x80 00001d8a: ADD 00001d8b: MSTORE 00001d8c: SWAP5 00001d8d: SWAP4 00001d8e: POP 00001d8f: POP 00001d90: POP 00001d91: POP 00001d92: JUMP 00001d93: JUMPDEST 00001d94: PUSH1 0x01 00001d96: DUP1 00001d97: PUSH1 0xa0 00001d99: SHL 00001d9a: SUB 00001d9b: DUP6 00001d9c: AND 00001d9d: DUP2 00001d9e: MSTORE 00001d9f: DUP4 00001da0: PUSH1 0x20 00001da2: DUP3 00001da3: ADD 00001da4: MSTORE 00001da5: PUSH1 0x60 00001da7: PUSH1 0x40 00001da9: DUP3 00001daa: ADD 00001dab: MSTORE 00001dac: PUSH1 0x00 00001dae: PUSH2 0x1dbb 00001db1: PUSH1 0x60 00001db3: DUP4 00001db4: ADD 00001db5: DUP5 00001db6: DUP7 00001db7: PUSH2 0x1d2d 00001dba: JUMP 00001dbb: JUMPDEST 00001dbc: SWAP7 00001dbd: SWAP6 00001dbe: POP 00001dbf: POP 00001dc0: POP 00001dc1: POP 00001dc2: POP 00001dc3: POP 00001dc4: JUMP 00001dc5: JUMPDEST 00001dc6: PUSH1 0x20 00001dc8: DUP1 00001dc9: DUP3 00001dca: MSTORE 00001dcb: PUSH1 0x23 00001dcd: SWAP1 00001dce: DUP3 00001dcf: ADD 00001dd0: MSTORE 00001dd1: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d61 00001df2: PUSH1 0x40 00001df4: DUP3 00001df5: ADD 00001df6: MSTORE 00001df7: PUSH3 0x0e8c6d 00001dfb: PUSH1 0xeb 00001dfd: SHL 00001dfe: PUSH1 0x60 00001e00: DUP3 00001e01: ADD 00001e02: MSTORE 00001e03: PUSH1 0x80 00001e05: ADD 00001e06: SWAP1 00001e07: JUMP 00001e08: JUMPDEST 00001e09: PUSH4 0x4e487b71 00001e0e: PUSH1 0xe0 00001e10: SHL 00001e11: PUSH1 0x00 00001e13: MSTORE 00001e14: PUSH1 0x32 00001e16: PUSH1 0x04 00001e18: MSTORE 00001e19: PUSH1 0x24 00001e1b: PUSH1 0x00 00001e1d: REVERT 00001e1e: JUMPDEST 00001e1f: PUSH1 0x00 00001e21: PUSH1 0x20 00001e23: DUP3 00001e24: DUP5 00001e25: SUB 00001e26: SLT 00001e27: ISZERO 00001e28: PUSH2 0x1e30 00001e2b: JUMPI 00001e2c: PUSH1 0x00 00001e2e: DUP1 00001e2f: REVERT 00001e30: JUMPDEST 00001e31: PUSH2 0x0748 00001e34: DUP3 00001e35: PUSH2 0x1659 00001e38: JUMP 00001e39: JUMPDEST 00001e3a: PUSH1 0x00 00001e3c: DUP1 00001e3d: DUP4 00001e3e: CALLDATALOAD 00001e3f: PUSH1 0x1e 00001e41: NOT 00001e42: DUP5 00001e43: CALLDATASIZE 00001e44: SUB 00001e45: ADD 00001e46: DUP2 00001e47: SLT 00001e48: PUSH2 0x1e50 00001e4b: JUMPI 00001e4c: PUSH1 0x00 00001e4e: DUP1 00001e4f: REVERT 00001e50: JUMPDEST 00001e51: DUP4 00001e52: ADD 00001e53: DUP1 00001e54: CALLDATALOAD 00001e55: SWAP2 00001e56: POP 00001e57: PUSH1 0x01 00001e59: PUSH1 0x01 00001e5b: PUSH1 0x40 00001e5d: SHL 00001e5e: SUB 00001e5f: DUP3 00001e60: GT 00001e61: ISZERO 00001e62: PUSH2 0x1e6a 00001e65: JUMPI 00001e66: PUSH1 0x00 00001e68: DUP1 00001e69: REVERT 00001e6a: JUMPDEST 00001e6b: PUSH1 0x20 00001e6d: ADD 00001e6e: SWAP2 00001e6f: POP 00001e70: CALLDATASIZE 00001e71: DUP2 00001e72: SWAP1 00001e73: SUB 00001e74: DUP3 00001e75: SGT 00001e76: ISZERO 00001e77: PUSH2 0x16b6 00001e7a: JUMPI 00001e7b: PUSH1 0x00 00001e7d: DUP1 00001e7e: REVERT 00001e7f: JUMPDEST 00001e80: PUSH4 0x4e487b71 00001e85: PUSH1 0xe0 00001e87: SHL 00001e88: PUSH1 0x00 00001e8a: MSTORE 00001e8b: PUSH1 0x11 00001e8d: PUSH1 0x04 00001e8f: MSTORE 00001e90: PUSH1 0x24 00001e92: PUSH1 0x00 00001e94: REVERT 00001e95: JUMPDEST 00001e96: PUSH1 0x00 00001e98: PUSH1 0x01 00001e9a: DUP3 00001e9b: ADD 00001e9c: PUSH2 0x1ea7 00001e9f: JUMPI 00001ea0: PUSH2 0x1ea7 00001ea3: PUSH2 0x1e7f 00001ea6: JUMP 00001ea7: JUMPDEST 00001ea8: POP 00001ea9: PUSH1 0x01 00001eab: ADD 00001eac: SWAP1 00001ead: JUMP 00001eae: JUMPDEST 00001eaf: DUP2 00001eb0: DUP4 00001eb1: MSTORE 00001eb2: PUSH1 0x00 00001eb4: PUSH1 0x20 00001eb6: DUP1 00001eb7: DUP6 00001eb8: ADD 00001eb9: DUP1 00001eba: DUP2 00001ebb: SWAP7 00001ebc: POP 00001ebd: DUP6 00001ebe: PUSH1 0x05 00001ec0: SHL 00001ec1: DUP2 00001ec2: ADD 00001ec3: SWAP2 00001ec4: POP 00001ec5: DUP5 00001ec6: PUSH1 0x00 00001ec8: JUMPDEST 00001ec9: DUP8 00001eca: DUP2 00001ecb: LT 00001ecc: ISZERO 00001ecd: PUSH2 0x1f32 00001ed0: JUMPI 00001ed1: DUP3 00001ed2: DUP5 00001ed3: SUB 00001ed4: DUP10 00001ed5: MSTORE 00001ed6: DUP2 00001ed7: CALLDATALOAD 00001ed8: PUSH1 0x1e 00001eda: NOT 00001edb: DUP9 00001edc: CALLDATASIZE 00001edd: SUB 00001ede: ADD 00001edf: DUP2 00001ee0: SLT 00001ee1: PUSH2 0x1ee9 00001ee4: JUMPI 00001ee5: PUSH1 0x00 00001ee7: DUP1 00001ee8: REVERT 00001ee9: JUMPDEST 00001eea: DUP8 00001eeb: ADD 00001eec: DUP6 00001eed: DUP2 00001eee: ADD 00001eef: SWAP1 00001ef0: CALLDATALOAD 00001ef1: PUSH1 0x01 00001ef3: PUSH1 0x01 00001ef5: PUSH1 0x40 00001ef7: SHL 00001ef8: SUB 00001ef9: DUP2 00001efa: GT 00001efb: ISZERO 00001efc: PUSH2 0x1f04 00001eff: JUMPI 00001f00: PUSH1 0x00 00001f02: DUP1 00001f03: REVERT 00001f04: JUMPDEST 00001f05: DUP1 00001f06: CALLDATASIZE 00001f07: SUB 00001f08: DUP3 00001f09: SGT 00001f0a: ISZERO 00001f0b: PUSH2 0x1f13 00001f0e: JUMPI 00001f0f: PUSH1 0x00 00001f11: DUP1 00001f12: REVERT 00001f13: JUMPDEST 00001f14: PUSH2 0x1f1e 00001f17: DUP7 00001f18: DUP3 00001f19: DUP5 00001f1a: PUSH2 0x1d2d 00001f1d: JUMP 00001f1e: JUMPDEST 00001f1f: SWAP11 00001f20: DUP8 00001f21: ADD 00001f22: SWAP11 00001f23: SWAP6 00001f24: POP 00001f25: POP 00001f26: POP 00001f27: SWAP1 00001f28: DUP5 00001f29: ADD 00001f2a: SWAP1 00001f2b: PUSH1 0x01 00001f2d: ADD 00001f2e: PUSH2 0x1ec8 00001f31: JUMP 00001f32: JUMPDEST 00001f33: POP 00001f34: SWAP2 00001f35: SWAP8 00001f36: SWAP7 00001f37: POP 00001f38: POP 00001f39: POP 00001f3a: POP 00001f3b: POP 00001f3c: POP 00001f3d: POP 00001f3e: JUMP 00001f3f: JUMPDEST 00001f40: PUSH1 0xa0 00001f42: DUP1 00001f43: DUP3 00001f44: MSTORE 00001f45: DUP2 00001f46: ADD 00001f47: DUP9 00001f48: SWAP1 00001f49: MSTORE 00001f4a: PUSH1 0x00 00001f4c: DUP10 00001f4d: PUSH1 0xc0 00001f4f: DUP4 00001f50: ADD 00001f51: DUP3 00001f52: JUMPDEST 00001f53: DUP12 00001f54: DUP2 00001f55: LT 00001f56: ISZERO 00001f57: PUSH2 0x1f80 00001f5a: JUMPI 00001f5b: PUSH1 0x01 00001f5d: PUSH1 0x01 00001f5f: PUSH1 0xa0 00001f61: SHL 00001f62: SUB 00001f63: PUSH2 0x1f6b 00001f66: DUP5 00001f67: PUSH2 0x1659 00001f6a: JUMP 00001f6b: JUMPDEST 00001f6c: AND 00001f6d: DUP3 00001f6e: MSTORE 00001f6f: PUSH1 0x20 00001f71: SWAP3 00001f72: DUP4 00001f73: ADD 00001f74: SWAP3 00001f75: SWAP1 00001f76: SWAP2 00001f77: ADD 00001f78: SWAP1 00001f79: PUSH1 0x01 00001f7b: ADD 00001f7c: PUSH2 0x1f52 00001f7f: JUMP 00001f80: JUMPDEST 00001f81: POP 00001f82: DUP4 00001f83: DUP2 00001f84: SUB 00001f85: PUSH1 0x20 00001f87: DUP6 00001f88: ADD 00001f89: MSTORE 00001f8a: DUP9 00001f8b: DUP2 00001f8c: MSTORE 00001f8d: PUSH1 0x01 00001f8f: PUSH1 0x01 00001f91: PUSH1 0xfb 00001f93: SHL 00001f94: SUB 00001f95: DUP10 00001f96: GT 00001f97: ISZERO 00001f98: PUSH2 0x1fa0 00001f9b: JUMPI 00001f9c: PUSH1 0x00 00001f9e: DUP1 00001f9f: REVERT 00001fa0: JUMPDEST 00001fa1: DUP9 00001fa2: PUSH1 0x05 00001fa4: SHL 00001fa5: SWAP2 00001fa6: POP 00001fa7: DUP2 00001fa8: DUP11 00001fa9: PUSH1 0x20 00001fab: DUP4 00001fac: ADD 00001fad: CALLDATACOPY 00001fae: ADD 00001faf: DUP3 00001fb0: DUP2 00001fb1: SUB 00001fb2: PUSH1 0x20 00001fb4: SWAP1 00001fb5: DUP2 00001fb6: ADD 00001fb7: PUSH1 0x40 00001fb9: DUP6 00001fba: ADD 00001fbb: MSTORE 00001fbc: PUSH2 0x1fc8 00001fbf: SWAP1 00001fc0: DUP3 00001fc1: ADD 00001fc2: DUP8 00001fc3: DUP10 00001fc4: PUSH2 0x1eae 00001fc7: JUMP 00001fc8: JUMPDEST 00001fc9: PUSH1 0x60 00001fcb: DUP5 00001fcc: ADD 00001fcd: SWAP6 00001fce: SWAP1 00001fcf: SWAP6 00001fd0: MSTORE 00001fd1: POP 00001fd2: POP 00001fd3: PUSH1 0x80 00001fd5: ADD 00001fd6: MSTORE 00001fd7: SWAP7 00001fd8: SWAP6 00001fd9: POP 00001fda: POP 00001fdb: POP 00001fdc: POP 00001fdd: POP 00001fde: POP 00001fdf: JUMP 00001fe0: JUMPDEST 00001fe1: DUP1 00001fe2: DUP3 00001fe3: ADD 00001fe4: DUP1 00001fe5: DUP3 00001fe6: GT 00001fe7: ISZERO 00001fe8: PUSH2 0x0680 00001feb: JUMPI 00001fec: PUSH2 0x0680 00001fef: PUSH2 0x1e7f 00001ff2: JUMP 00001ff3: JUMPDEST 00001ff4: PUSH1 0x00 00001ff6: JUMPDEST 00001ff7: DUP4 00001ff8: DUP2 00001ff9: LT 00001ffa: ISZERO 00001ffb: PUSH2 0x200e 00001ffe: JUMPI 00001fff: DUP2 00002000: DUP2 00002001: ADD 00002002: MLOAD 00002003: DUP4 00002004: DUP3 00002005: ADD 00002006: MSTORE 00002007: PUSH1 0x20 00002009: ADD 0000200a: PUSH2 0x1ff6 0000200d: JUMP 0000200e: JUMPDEST 0000200f: POP 00002010: POP 00002011: PUSH1 0x00 00002013: SWAP2 00002014: ADD 00002015: MSTORE 00002016: JUMP 00002017: JUMPDEST 00002018: PUSH32 0x416363657373436f6e74726f6c3a206163636f756e7420000000000000000000 00002039: DUP2 0000203a: MSTORE 0000203b: PUSH1 0x00 0000203d: DUP4 0000203e: MLOAD 0000203f: PUSH2 0x204f 00002042: DUP2 00002043: PUSH1 0x17 00002045: DUP6 00002046: ADD 00002047: PUSH1 0x20 00002049: DUP9 0000204a: ADD 0000204b: PUSH2 0x1ff3 0000204e: JUMP 0000204f: JUMPDEST 00002050: PUSH17 0x01034b99036b4b9b9b4b733903937b6329 00002062: PUSH1 0x7d 00002064: SHL 00002065: PUSH1 0x17 00002067: SWAP2 00002068: DUP5 00002069: ADD 0000206a: SWAP2 0000206b: DUP3 0000206c: ADD 0000206d: MSTORE 0000206e: DUP4 0000206f: MLOAD 00002070: PUSH2 0x2080 00002073: DUP2 00002074: PUSH1 0x28 00002076: DUP5 00002077: ADD 00002078: PUSH1 0x20 0000207a: DUP9 0000207b: ADD 0000207c: PUSH2 0x1ff3 0000207f: JUMP 00002080: JUMPDEST 00002081: ADD 00002082: PUSH1 0x28 00002084: ADD 00002085: SWAP5 00002086: SWAP4 00002087: POP 00002088: POP 00002089: POP 0000208a: POP 0000208b: JUMP 0000208c: JUMPDEST 0000208d: PUSH1 0x20 0000208f: DUP2 00002090: MSTORE 00002091: PUSH1 0x00 00002093: DUP3 00002094: MLOAD 00002095: DUP1 00002096: PUSH1 0x20 00002098: DUP5 00002099: ADD 0000209a: MSTORE 0000209b: PUSH2 0x20ab 0000209e: DUP2 0000209f: PUSH1 0x40 000020a1: DUP6 000020a2: ADD 000020a3: PUSH1 0x20 000020a5: DUP8 000020a6: ADD 000020a7: PUSH2 0x1ff3 000020aa: JUMP 000020ab: JUMPDEST 000020ac: PUSH1 0x1f 000020ae: ADD 000020af: PUSH1 0x1f 000020b1: NOT 000020b2: AND 000020b3: SWAP2 000020b4: SWAP1 000020b5: SWAP2 000020b6: ADD 000020b7: PUSH1 0x40 000020b9: ADD 000020ba: SWAP3 000020bb: SWAP2 000020bc: POP 000020bd: POP 000020be: JUMP 000020bf: JUMPDEST 000020c0: PUSH1 0x20 000020c2: DUP1 000020c3: DUP3 000020c4: MSTORE 000020c5: PUSH1 0x2a 000020c7: SWAP1 000020c8: DUP3 000020c9: ADD 000020ca: MSTORE 000020cb: PUSH32 0x54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973 000020ec: PUSH1 0x40 000020ee: DUP3 000020ef: ADD 000020f0: MSTORE 000020f1: PUSH10 0x206e6f74207265616479 000020fc: PUSH1 0xb0 000020fe: SHL 000020ff: PUSH1 0x60 00002101: DUP3 00002102: ADD 00002103: MSTORE 00002104: PUSH1 0x80 00002106: ADD 00002107: SWAP1 00002108: JUMP 00002109: JUMPDEST 0000210a: DUP2 0000210b: DUP4 0000210c: DUP3 0000210d: CALLDATACOPY 0000210e: PUSH1 0x00 00002110: SWAP2 00002111: ADD 00002112: SWAP1 00002113: DUP2 00002114: MSTORE 00002115: SWAP2 00002116: SWAP1 00002117: POP 00002118: JUMP 00002119: JUMPDEST 0000211a: PUSH1 0x20 0000211c: DUP1 0000211d: DUP3 0000211e: MSTORE 0000211f: PUSH1 0x2b 00002121: SWAP1 00002122: DUP3 00002123: ADD 00002124: MSTORE 00002125: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069 00002146: PUSH1 0x40 00002148: DUP3 00002149: ADD 0000214a: MSTORE 0000214b: PUSH11 0x6e697469616c697a696e67 00002157: PUSH1 0xa8 00002159: SHL 0000215a: PUSH1 0x60 0000215c: DUP3 0000215d: ADD 0000215e: MSTORE 0000215f: PUSH1 0x80 00002161: ADD 00002162: SWAP1 00002163: JUMP 00002164: JUMPDEST 00002165: PUSH1 0x00 00002167: DUP2 00002168: PUSH1 0x00 0000216a: NOT 0000216b: DIV 0000216c: DUP4 0000216d: GT 0000216e: DUP3 0000216f: ISZERO 00002170: ISZERO 00002171: AND 00002172: ISZERO 00002173: PUSH2 0x217e 00002176: JUMPI 00002177: PUSH2 0x217e 0000217a: PUSH2 0x1e7f 0000217d: JUMP 0000217e: JUMPDEST 0000217f: POP 00002180: MUL 00002181: SWAP1 00002182: JUMP 00002183: JUMPDEST 00002184: PUSH1 0x00 00002186: DUP2 00002187: PUSH2 0x2192 0000218a: JUMPI 0000218b: PUSH2 0x2192 0000218e: PUSH2 0x1e7f 00002191: JUMP 00002192: JUMPDEST 00002193: POP 00002194: PUSH1 0x00 00002196: NOT 00002197: ADD 00002198: SWAP1 00002199: JUMP 0000219a: INVALID 0000219b: PUSH0 0000219c: PC 0000219d: UNKNOWN(0xE3) 0000219e: LOG2 0000219f: BALANCE 000021a0: PUSH4 0x49923ce3 000021a5: PUSH25 0x0f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5ae 000021bf: UNKNOWN(0xB3) 000021c0: PUSH17 0x2cfd50b6b62bc4532604938f21248a27a1 000021d2: UNKNOWN(0xD5) 000021d3: UNKNOWN(0xCA) 000021d4: PUSH20 0x6082b6819cc1d8aa0f3194971a2a116679f7c209 000021e9: UNKNOWN(0x0F) 000021ea: PUSH10 0x39c8d4e01a2a8d7e41d5 000021f5: MCOPY 000021f6: MSTORE8 000021f7: MLOAD 000021f8: CHAINID 000021f9: SWAP15 000021fa: PUSH4 0xfd643c72 000021ff: PUSH18 0x0c63c0180259aba6b2d05451e3591a24e58b 00002212: PUSH3 0x239378 00002216: ADDMOD 00002217: JUMPI 00002218: UNKNOWN(0x26) 00002219: UNKNOWN(0xF7) 0000221a: DUP4 0000221b: LOG2 0000221c: PUSH5 0x6970667358 00002222: UNKNOWN(0x22) 00002223: SLT 00002224: KECCAK256 00002225: UNKNOWN(0xCC) 00002226: NOT 00002227: PUSH2 0x73df 0000222a: UNKNOWN(0x0D) 0000222b: UNKNOWN(0xC5) 0000222c: DUP11 0000222d: CALLDATACOPY 0000222e: UNKNOWN(0x26) 0000222f: UNKNOWN(0xD3) 00002230: UNKNOWN(0x4D) 00002231: PUSH21 0xcae3080def5398925a18fcd705d5a6adb959d66473 00002247: PUSH16
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0xea2961ab5a77196b486fc520f69bb6f44b080f701040cac1f1f46075005ee405
call_targets:
0x8d1fa828e0b99f2cd9bec6c51ff11e97b502db8a
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xea2961ab5a77196b486fc520f69bb6f44b080f701040cac1f1f46075005ee405",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x8d1fa828e0b99f2cd9bec6c51ff11e97b502db8a"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xd547741f",
"selector": "0xd547741f",
"calldata_variants": [
"0xd547741f",
"0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe38335e5",
"selector": "0xe38335e5",
"calldata_variants": [
"0xe38335e5",
"0xe38335e50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf23a6e61",
"selector": "0xf23a6e61",
"calldata_variants": [
"0xf23a6e61",
"0xf23a6e610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf27a0c92",
"selector": "0xf27a0c92",
"calldata_variants": [
"0xf27a0c92",
"0xf27a0c920000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb1c5f427",
"selector": "0xb1c5f427",
"calldata_variants": [
"0xb1c5f427",
"0xb1c5f4270000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbc197c81",
"selector": "0xbc197c81",
"calldata_variants": [
"0xbc197c81",
"0xbc197c810000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d252f5",
"selector": "0xc4d252f5",
"calldata_variants": [
"0xc4d252f5",
"0xc4d252f50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd45c4435",
"selector": "0xd45c4435",
"calldata_variants": [
"0xd45c4435",
"0xd45c44350000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4240,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [],
"untrusted_call_count": 1
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0xea2961ab5a77196b486fc520f69bb6f44b080f701040cac1f1f46075005ee405
call_targets:
0x8d1fa828e0b99f2cd9bec6c51ff11e97b502db8a
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xea2961ab5a77196b486fc520f69bb6f44b080f701040cac1f1f46075005ee405",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x8d1fa828e0b99f2cd9bec6c51ff11e97b502db8a"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xd547741f",
"selector": "0xd547741f",
"calldata_variants": [
"0xd547741f",
"0xd547741f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe38335e5",
"selector": "0xe38335e5",
"calldata_variants": [
"0xe38335e5",
"0xe38335e50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf23a6e61",
"selector": "0xf23a6e61",
"calldata_variants": [
"0xf23a6e61",
"0xf23a6e610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf27a0c92",
"selector": "0xf27a0c92",
"calldata_variants": [
"0xf27a0c92",
"0xf27a0c920000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb1c5f427",
"selector": "0xb1c5f427",
"calldata_variants": [
"0xb1c5f427",
"0xb1c5f4270000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbc197c81",
"selector": "0xbc197c81",
"calldata_variants": [
"0xbc197c81",
"0xbc197c810000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d252f5",
"selector": "0xc4d252f5",
"calldata_variants": [
"0xc4d252f5",
"0xc4d252f50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd45c4435",
"selector": "0xd45c4435",
"calldata_variants": [
"0xd45c4435",
"0xd45c44350000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 4240,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": []
}
|
| high | upgradeability | codex | Unprotected initializer allows timelock takeover if proxy not initialized | 85 | no | — |
viewevidence_json{
"evidence": "initialize is public and only guarded by initializer, allowing first caller to set roles.",
"locations": [
"contracts/governance/TimelockControllerUpgradeable.sol:11"
],
"recommendation": "Ensure initialization is performed atomically during proxy deployment (pass initializer data to the proxy constructor) and never leave the proxy uninitialized; consider deployment tooling checks to prevent this.",
"exploit_scenario": "If the proxy is deployed without calling initialize in the same transaction, any external account can call initialize and set themselves as proposer/executor, gaining control over timelock scheduling and execution."
}
|
| high | upgradeability | slither | TimelockControllerUpgradeable._execute(address,uint256,bytes) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#348-355) sends eth to arbitrary user | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "arbitrary-send-eth",
"elements": [
{
"name": "_execute",
"type": "function",
"source_mapping": {
"lines": [
348,
349,
350,
351,
352,
353,
354,
355
],
"start": 12174,
"length": 265,
"ending_column": 6,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockControllerUpgradeable",
"type": "contract",
"source_mapping": {
"lines": [
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433
],
"start": 1117,
"length": 13758,
"ending_column": 2,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
}
},
"signature": "_execute(address,uint256,bytes)"
}
},
{
"name": "(success,None) = target.call{value: value}(data)",
"type": "node",
"source_mapping": {
"lines": [
353
],
"start": 12301,
"length": 50,
"ending_column": 59,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
},
"type_specific_fields": {
"parent": {
"name": "_execute",
"type": "function",
"source_mapping": {
"lines": [
348,
349,
350,
351,
352,
353,
354,
355
],
"start": 12174,
"length": 265,
"ending_column": 6,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockControllerUpgradeable",
"type": "contract",
"source_mapping": {
"lines": [
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433
],
"start": 1117,
"length": 13758,
"ending_column": 2,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
}
},
"signature": "_execute(address,uint256,bytes)"
}
}
}
}
],
"locations": [
{
"file": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"name": "_execute",
"type": "function",
"lines": [
348,
349,
350,
351,
352,
353,
354,
355
]
},
{
"file": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"name": "(success,None) = target.call{value: value}(data)",
"type": "node",
"lines": [
353
]
}
],
"description": "TimelockControllerUpgradeable._execute(address,uint256,bytes) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#348-355) sends eth to arbitrary user\n\tDangerous calls:\n\t- (success,None) = target.call{value: value}(data) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#353)"
}
|
| high | reentrancy | slither | Reentrancy in TimelockControllerUpgradeable.executeBatch(address[],uint256[],bytes[],bytes32,bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeab... | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "reentrancy-eth",
"elements": [
{
"name": "executeBatch",
"type": "function",
"source_mapping": {
"lines": [
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343
],
"start": 11228,
"length": 883,
"ending_column": 6,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockControllerUpgradeable",
"type": "contract",
"source_mapping": {
"lines": [
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433
],
"start": 1117,
"length": 13758,
"ending_column": 2,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
}
},
"signature": "executeBatch(address[],uint256[],bytes[],bytes32,bytes32)"
}
},
{
"name": "_execute(target,value,payload)",
"type": "node",
"source_mapping": {
"lines": [
339
],
"start": 11976,
"length": 32,
"ending_column": 45,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 13,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "executeBatch",
"type": "function",
"source_mapping": {
"lines": [
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343
],
"start": 11228,
"length": 883,
"ending_column": 6,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockControllerUpgradeable",
"type": "contract",
"source_mapping": {
"lines": [
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433
],
"start": 1117,
"length": 13758,
"ending_column": 2,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
}
},
"signature": "executeBatch(address[],uint256[],bytes[],bytes32,bytes32)"
}
}
}
},
{
"name": "(success,None) = target.call{value: value}(data)",
"type": "node",
"source_mapping": {
"lines": [
353
],
"start": 12301,
"length": 50,
"ending_column": 59,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
},
"additional_fields": {
"underlying_type": "external_calls_sending_eth"
},
"type_specific_fields": {
"parent": {
"name": "_execute",
"type": "function",
"source_mapping": {
"lines": [
348,
349,
350,
351,
352,
353,
354,
355
],
"start": 12174,
"length": 265,
"ending_column": 6,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockControllerUpgradeable",
"type": "contract",
"source_mapping": {
"lines": [
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433
],
"start": 1117,
"length": 13758,
"ending_column": 2,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
}
},
"signature": "_execute(address,uint256,bytes)"
}
}
}
},
{
"name": "_afterCall(id)",
"type": "node",
"source_mapping": {
"lines": [
342
],
"start": 12090,
"length": 14,
"ending_column": 23,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
},
"additional_fields": {
"variable_name": "_timestamps",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "executeBatch",
"type": "function",
"source_mapping": {
"lines": [
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343
],
"start": 11228,
"length": 883,
"ending_column": 6,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockControllerUpgradeable",
"type": "contract",
"source_mapping": {
"lines": [
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433
],
"start": 1117,
"length": 13758,
"ending_column": 2,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
}
},
"signature": "executeBatch(address[],uint256[],bytes[],bytes32,bytes32)"
}
}
}
},
{
"name": "_timestamps[id] = _DONE_TIMESTAMP",
"type": "node",
"source_mapping": {
"lines": [
370
],
"start": 13016,
"length": 33,
"ending_column": 42,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
},
"additional_fields": {
"variable_name": "_timestamps",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "_afterCall",
"type": "function",
"source_mapping": {
"lines": [
368,
369,
370,
371
],
"start": 12881,
"length": 175,
"ending_column": 6,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
},
"type_specific_fields": {
"parent": {
"name": "TimelockControllerUpgradeable",
"type": "contract",
"source_mapping": {
"lines": [
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
419,
420,
421,
422,
423,
424,
425,
426,
427,
428,
429,
430,
431,
432,
433
],
"start": 1117,
"length": 13758,
"ending_column": 2,
"is_dependency": false,
"filename_short": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-ulvmjlm4/@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"filename_relative": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol"
}
},
"signature": "_afterCall(bytes32)"
}
}
}
}
],
"locations": [
{
"file": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"name": "executeBatch",
"type": "function",
"lines": [
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343
]
},
{
"file": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"name": "_execute(target,value,payload)",
"type": "node",
"lines": [
339
]
},
{
"file": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"name": "(success,None) = target.call{value: value}(data)",
"type": "node",
"lines": [
353
]
},
{
"file": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"name": "_afterCall(id)",
"type": "node",
"lines": [
342
]
},
{
"file": "@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol",
"name": "_timestamps[id] = _DONE_TIMESTAMP",
"type": "node",
"lines": [
370
]
}
],
"description": "Reentrancy in TimelockControllerUpgradeable.executeBatch(address[],uint256[],bytes[],bytes32,bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#322-343):\n\tExternal calls:\n\t- _execute(target,value,payload) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#339)\n\t\t- (success,None) = target.call{value: value}(data) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#353)\n\tState variables written after the call(s):\n\t- _afterCall(id) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#342)\n\t\t- _timestamps[id] = _DONE_TIMESTAMP (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#370)\n\tTimelockControllerUpgradeable._timestamps (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#34) can be used in cross function reentrancies:\n\t- TimelockControllerUpgradeable._afterCall(bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#368-371)\n\t- TimelockControllerUpgradeable._schedule(bytes32,uint256) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#266-270)\n\t- TimelockControllerUpgradeable.cancel(bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#279-284)\n\t- TimelockControllerUpgradeable.getTimestamp(bytes32) (@openzeppelin/contracts-upgradeable/governance/TimelockControllerUpgradeable.sol#173-175)"
}
|