0f2dae3b-fa8e-4cc8-9793-fb705919c460
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 |
|---|---|---|---|---|
| 30566 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 104255 | artifact.fetch | failed | 1 / 3 | 1 week ago |
| 104256 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 104257 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 104258 | capability.graph | complete | 1 / 3 | 1 week ago |
| 104259 | detector.run | complete | 1 / 3 | 1 week ago |
| 104260 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:818911] OpenAI Codex v0.77.0 (research preview)
[codex:818911] --------
[codex:818911] workdir: /tmp/codex-multi-dw11gekj
[codex:818911] model: gpt-5.2-codex
[codex:818911] provider: openai
[codex:818911] approval: never
[codex:818911] sandbox: read-only
[codex:818911] reasoning effort: xhigh
[codex:818911] reasoning summaries: auto
[codex:818911] session id: 019b6b8e-25d8-7863-a398-4effb09a57f0
[codex:818911] --------
[codex:818911] user
[codex:818911] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:818911] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:818911] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:818911]
[codex:818911] Scope rules:
[codex:818911] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:818911] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:818911]
[codex:818911] Output MUST be valid JSON matching the provided schema.
[codex:818911] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:818911] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:818911]
[codex:818911] Output constraints (IMPORTANT):
[codex:818911] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:818911] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:818911] mcp startup: no servers
[codex:818911]
[codex:818911] thinking
[codex:818911] **Preparing to review instructions and audit file**
[codex:818911] exec
[codex:818911] /bin/bash -lc ls in /tmp/codex-multi-dw11gekj succeeded in 7ms:
[codex:818911] AUDIT_BUNDLE.txt
[codex:818911] codex-output-schema.json
[codex:818911] contracts
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 6ms:
[codex:818911] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:818911]
[codex:818911] ================================================================================
[codex:818911] FILE: contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:818911] ================================================================================
[codex:818911] // SPDX-License-Identifier: MIT
[codex:818911] // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
[codex:818911]
[codex:818911] pragma solidity ^0.8.0;
[codex:818911]
[codex:818911] /**
[codex:818911] * @dev Interface of the ERC20 standard as defined in the EIP.
[codex:818911] */
[codex:818911] interface IERC20 {
[codex:818911] /**
[codex:818911] * @dev Emitted when `value` tokens are moved from one account (`from`) to
[codex:818911] * another (`to`).
[codex:818911] *
[codex:818911] * Note that `value` may be zero.
[codex:818911] */
[codex:818911]
[codex:818911] thinking
[codex:818911] **Preparing to analyze first-party contracts**
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '200,400p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 5ms:
[codex:818911] */
[codex:818911] function safeApprove(
[codex:818911] IERC20 token,
[codex:818911] address spender,
[codex:818911] uint256 value
[codex:818911] ) internal {
[codex:818911] // safeApprove should only be called when setting an initial allowance,
[codex:818911] // or when resetting it to zero. To increase and decrease it, use
[codex:818911] // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
[codex:818911] require(
[codex:818911] (value == 0) || (token.allowance(address(this), spender) == 0),
[codex:818911] "SafeERC20: approve from non-zero to non-zero allowance"
[codex:818911] );
[codex:818911] _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
[codex:818911] }
[codex:818911]
[codex:818911] function safeIncreaseAllowance(
[codex:818911] IERC20 token,
[codex:818911] address spender,
[codex:818911] uint256 value
[codex:818911]
[codex:818911] thinking
[codex:818911] **Continuing to identify sections**
[codex:818911] exec
[codex:818911] /bin/bash -lc 'rg -n "''^FILE: " AUDIT_BUNDLE.txt' in /tmp/codex-multi-dw11gekj succeeded in 6ms:
[codex:818911] 4:FILE: contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol
[codex:818911] 90:FILE: contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol
[codex:818911] 154:FILE: contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol
[codex:818911] 274:FILE: contracts/@openzeppelin/contracts/utils/Address.sol
[codex:818911] 522:FILE: contracts/@openzeppelin/contracts/utils/math/SafeCast.sol
[codex:818911] 1662:FILE: contracts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol
[codex:818911] 1686:FILE: contracts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol
[codex:818911] 1902:FILE: contracts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol
[codex:818911] 1922:FILE: contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol
[codex:818911] 2091:FILE: contracts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol
[codex:818911] 2203:FILE: contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol
[codex:818911] 2426:FILE: contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol
[codex:818911] 2518:FILE: contracts/contracts/Distributor.sol
[codex:818911] 2877:FILE: contracts/contracts/interfaces/ICore.sol
[codex:818911] 2901:FILE: contracts/contracts/utils/Errors.sol
[codex:818911] 2931:FILE: contracts/contracts/utils/UUPSHelper.sol
[codex:818911]
[codex:818911] thinking
[codex:818911] **Planning detailed file reading**
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '2400,3200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 6ms:
[codex:818911] bytes memory returndata,
[codex:818911] string memory errorMessage
[codex:818911] ) internal pure returns (bytes memory) {
[codex:818911] if (success) {
[codex:818911] return returndata;
[codex:818911] } else {
[codex:818911] _revert(returndata, errorMessage);
[codex:818911] }
[codex:818911] }
[codex:818911]
[codex:818911] function _revert(bytes memory returndata, string memory errorMessage) private pure {
[codex:818911] // Look for revert reason and bubble it up if present
[codex:818911] if (returndata.length > 0) {
[codex:818911] // The easiest way to bubble the revert reason is using memory via assembly
[codex:818911] /// @solidity memory-safe-assembly
[codex:818911] assembly {
[codex:818911] let returndata_size := mload(returndata)
[codex:818911] revert(add(32, returndata), returndata_size)
[codex:818911] }
[codex:818911] } else {
[codex:818911]
[codex:818911] thinking
[codex:818911] **Ensuring full file reading**
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '400,800p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 6ms:
[codex:818911] *
[codex:818911] * _Available since v3.1._
[codex:818911] */
[codex:818911] function functionCallWithValue(
[codex:818911] address target,
[codex:818911] bytes memory data,
[codex:818911] uint256 value,
[codex:818911] string memory errorMessage
[codex:818911] ) internal returns (bytes memory) {
[codex:818911] require(address(this).balance >= value, "Address: insufficient balance for call");
[codex:818911] (bool success, bytes memory returndata) = target.call{value: value}(data);
[codex:818911] return verifyCallResultFromTarget(target, success, returndata, errorMessage);
[codex:818911] }
[codex:818911]
[codex:818911] /**
[codex:818911] * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
[codex:818911] * but performing a static call.
[codex:818911] *
[codex:818911] * _Available since v3.3._
[codex:818911] */
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '800,1200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 5ms:
[codex:818911]
[codex:818911] /**
[codex:818911] * @dev Returns the downcasted uint128 from uint256, reverting on
[codex:818911] * overflow (when the input is greater than largest uint128).
[codex:818911] *
[codex:818911] * Counterpart to Solidity's `uint128` operator.
[codex:818911] *
[codex:818911] * Requirements:
[codex:818911] *
[codex:818911] * - input must fit into 128 bits
[codex:818911] *
[codex:818911] * _Available since v2.5._
[codex:818911] */
[codex:818911] function toUint128(uint256 value) internal pure returns (uint128) {
[codex:818911] require(value <= type(uint128).max, "SafeCast: value doesn't fit in 128 bits");
[codex:818911] return uint128(value);
[codex:818911] }
[codex:818911]
[codex:818911] /**
[codex:818911] * @dev Returns the downcasted uint120 from uint256, reverting on
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '1200,1600p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 6ms:
[codex:818911] * Counterpart to Solidity's `int200` operator.
[codex:818911] *
[codex:818911] * Requirements:
[codex:818911] *
[codex:818911] * - input must fit into 200 bits
[codex:818911] *
[codex:818911] * _Available since v4.7._
[codex:818911] */
[codex:818911] function toInt200(int256 value) internal pure returns (int200 downcasted) {
[codex:818911] downcasted = int200(value);
[codex:818911] require(downcasted == value, "SafeCast: value doesn't fit in 200 bits");
[codex:818911] }
[codex:818911]
[codex:818911] /**
[codex:818911] * @dev Returns the downcasted int192 from int256, reverting on
[codex:818911] * overflow (when the input is less than smallest int192 or
[codex:818911] * greater than largest int192).
[codex:818911] *
[codex:818911] * Counterpart to Solidity's `int192` operator.
[codex:818911] *
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '1600,2000p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 5ms:
[codex:818911] * - input must fit into 24 bits
[codex:818911] *
[codex:818911] * _Available since v4.7._
[codex:818911] */
[codex:818911] function toInt24(int256 value) internal pure returns (int24 downcasted) {
[codex:818911] downcasted = int24(value);
[codex:818911] require(downcasted == value, "SafeCast: value doesn't fit in 24 bits");
[codex:818911] }
[codex:818911]
[codex:818911] /**
[codex:818911] * @dev Returns the downcasted int16 from int256, reverting on
[codex:818911] * overflow (when the input is less than smallest int16 or
[codex:818911] * greater than largest int16).
[codex:818911] *
[codex:818911] * Counterpart to Solidity's `int16` operator.
[codex:818911] *
[codex:818911] * Requirements:
[codex:818911] *
[codex:818911] * - input must fit into 16 bits
[codex:818911] *
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '2000,2400p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 6ms:
[codex:818911] *
[codex:818911] * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a
[codex:818911] * constructor.
[codex:818911] *
[codex:818911] * Emits an {Initialized} event.
[codex:818911] */
[codex:818911] modifier initializer() {
[codex:818911] bool isTopLevelCall = !_initializing;
[codex:818911] require(
[codex:818911] (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),
[codex:818911] "Initializable: contract is already initialized"
[codex:818911] );
[codex:818911] _initialized = 1;
[codex:818911] if (isTopLevelCall) {
[codex:818911] _initializing = true;
[codex:818911] }
[codex:818911] _;
[codex:818911] if (isTopLevelCall) {
[codex:818911] _initializing = false;
[codex:818911] emit Initialized(1);
[codex:818911] exec
[codex:818911] /bin/bash -lc "sed -n '2400,2525p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-dw11gekj succeeded in 5ms:
[codex:818911] bytes memory returndata,
[codex:818911] string memory errorMessage
[codex:818911] ) internal pure returns (bytes memory) {
[codex:818911] if (success) {
[codex:818911] return returndata;
[codex:818911] } else {
[codex:818911] _revert(returndata, errorMessage);
[codex:818911] }
[codex:818911] }
[codex:818911]
[codex:818911] function _revert(bytes memory returndata, string memory errorMessage) private pure {
[codex:818911] // Look for revert reason and bubble it up if present
[codex:818911] if (returndata.length > 0) {
[codex:818911] // The easiest way to bubble the revert reason is using memory via assembly
[codex:818911] /// @solidity memory-safe-assembly
[codex:818911] assembly {
[codex:818911] let returndata_size := mload(returndata)
[codex:818911] revert(add(32, returndata), returndata_size)
[codex:818911] }
[codex:818911] } else {
[codex:818911]
[codex:818911]
[codex:818911]
[codex:818911]
[codex:818911] thinking
[codex:818911] **Analyzing contract security and upgrade patterns**
[codex:818911]
[codex:818911] I've carefully reviewed the code focusing on security, especially around authorization using tx.origin in claims, upgradeability risks in the UUPS pattern, and dispute handling. There are subtle access control nuances and potential denial-of-service conditions, but most vulnerabilities appear low risk or typical upgradeable contract concerns. The constructor’s initializer calls seem to lock the implementation, mitigating some common initialization exploits. I'm also noting how dispute and claim functions handle reentrancy and permission checks with their intended trade-offs.
[codex:818911] thinking
[codex:818911] **Examining access control and reentrancy nuances**
[codex:818911]
[codex:818911] I've dug into patterns around operator permissions, Merkle tree assumptions, and external calls, especially how dispute handling can open reentrancy windows due to token transfers before state changes. The use of tx.origin for claim authorization stands out as a potential low-risk access control quirk. There are also a few logic gaps like an unused flag for permissionless claiming and assumptions about non-decreasing token amounts that could cause claim reverts, but most are mitigated or tied to governance choices. Overall, this paints a complex but mostly controlled permission and external call landscape.
[codex:818911] thinking
[codex:818911] **Identifying nuanced access and upgrade risks**
[codex:818911]
[codex:818911] I’m exploring how the use of tx.origin could let malicious contracts bypass operator restrictions to claim tokens for users, creating a low-severity access control concern that doesn’t lead to fund loss but could cause unintended claims or gas costs. I also see possible DoS from dispute deposits if fee-on-transfer tokens are used, which might block dispute resolution. Additionally, there’s an upgradeability risk if the proxy isn’t initialized properly—attackers could take control by initializing with a malicious core, which is a critical deployment consideration. These findings highlight subtle but important areas around permission logic, external token interactions, and upgrade initialization.
[codex:818911] thinking
[codex:818911] **Evaluating final audit concerns and severity**
[codex:818911]
[codex:818911] I’m wrapping up by weighing the key issues: uninitialized proxy risk remains a serious deployment concern with potentially high impact; tx.origin use creates a low-severity access control bypass potential, and dispute token fee mechanics might cause low-severity disruptions. I’ll also gather line numbers from the Distributor contract to back these findings with concrete locations for clarity in the final report.
[codex:818911] exec
[codex:818911] /bin/bash -lc "nl -ba contracts/contracts/Distributor.sol | sed -n '80,200p'" in /tmp/codex-multi-dw11gekj succeeded in 8ms:
[codex:818911] 80 /// @notice `Core` contract handling access control
[codex:818911] 81 ICore public core;
[codex:818911] 82
[codex:818911] 83 /// @notice Address which created the dispute
[codex:818911] 84 /// @dev Used to store if there is an ongoing dispute
[codex:818911] 85 address public disputer;
[codex:818911] 86
[codex:818911] 87 /// @notice When the current tree will become valid
[codex:818911] 88 uint48 public endOfDisputePeriod;
[codex:818911] 89
[codex:818911] 90 /// @notice Time after which a change in a tree becomes effective, in EPOCH_DURATION
[codex:818911] 91 uint48 public disputePeriod;
[codex:818911] 92
[codex:818911] 93 /// @notice Amount to deposit to freeze the roots update
[codex:818911] 94 uint256 public disputeAmount;
[codex:818911] 95
[codex:818911] 96 /// @notice Mapping user -> token -> amount to track claimed amounts
[codex:818911] 97 mapping(address => mapping(address => Claim)) public claimed;
[codex:818911] 98
[codex:818911] 99 /// @notice Trusted EOAs to update the Merkle root
[codex:818911]
[codex:818911] thinking
[codex:818911] **Requesting line numbers for disputeTree and resolve**
[codex:818911] exec
[codex:818911] /bin/bash -lc "nl -ba contracts/contracts/Distributor.sol | sed -n '200,340p'" in /tmp/codex-multi-dw11gekj succeeded in 6ms:
[codex:818911] 200 ++i;
[codex:818911] 201 }
[codex:818911] 202 }
[codex:818911] 203 }
[codex:818911] 204
[codex:818911] 205 /// @notice Returns the MerkleRoot that is currently live for the contract
[codex:818911] 206 function getMerkleRoot() public view returns (bytes32) {
[codex:818911] 207 if (block.timestamp >= endOfDisputePeriod && disputer == address(0)) return tree.merkleRoot;
[codex:818911] 208 else return lastTree.merkleRoot;
[codex:818911] 209 }
[codex:818911] 210
[codex:818911] 211 // ============================ GOVERNANCE FUNCTIONS ===========================
[codex:818911] 212
[codex:818911] 213 /// @notice Adds or removes EOAs which are trusted to update the Merkle root
[codex:818911] 214 function toggleTrusted(address eoa) external onlyGovernor {
[codex:818911] 215 uint256 trustedStatus = 1 - canUpdateMerkleRoot[eoa];
[codex:818911] 216 canUpdateMerkleRoot[eoa] = trustedStatus;
[codex:818911] 217 emit TrustedToggled(eoa, trustedStatus == 1);
[codex:818911] 218 }
[codex:818911] 219
[codex:818911]
[codex:818911] thinking
[codex:818911] **Analyzing UUPSHelper upgrade risks**
[codex:818911] exec
[codex:818911] /bin/bash -lc 'nl -ba contracts/contracts/utils/UUPSHelper.sol' in /tmp/codex-multi-dw11gekj succeeded in 5ms:
[codex:818911] 1 // SPDX-License-Identifier: GPL-3.0
[codex:818911] 2
[codex:818911] 3 /*
[codex:818911] 4 * █
[codex:818911] 5 ***** ▓▓▓
[codex:818911] 6 * ▓▓▓▓▓▓▓
[codex:818911] 7 * ///. ▓▓▓▓▓▓▓▓▓▓▓▓▓
[codex:818911] 8 ***** //////// ▓▓▓▓▓▓▓
[codex:818911] 9 * ///////////// ▓▓▓
[codex:818911] 10 ▓▓ ////////////////// █ ▓▓
[codex:818911] 11 ▓▓ ▓▓ /////////////////////// ▓▓ ▓▓
[codex:818911] 12 ▓▓ ▓▓ //////////////////////////// ▓▓ ▓▓
[codex:818911] 13 ▓▓ ▓▓ /////////▓▓▓///////▓▓▓///////// ▓▓ ▓▓
[codex:818911] 14 ▓▓ ,////////////////////////////////////// ▓▓ ▓▓
[codex:818911] 15 ▓▓ ////////////////////////////////////////// ▓▓
[codex:818911] 16 ▓▓ //////////////////////▓▓▓▓/////////////////////
[codex:818911] 17 ,////////////////////////////////////////////////////
[codex:818911] 18 .//////////////////////////////////////////////////////////
[codex:818911] 19 .//////////////////////////██.,//////////////////////////█
[codex:818911] 20 .//////////////////////████..,./////////////////////██
[codex:818911]
[codex:818911] thinking
[codex:818911] **Preparing audit findings for JSON output**
[codex:818911] codex
[codex:818911] {"no_findings":false,"summary":"Identified one conditional upgradeability takeover risk, a tx.origin-based access-control bypass, and a dispute-token accounting DoS edge case.","findings":[{"severity":"high","category":"upgradeability","title":"Upgradeable proxy can be taken over if not initialized atomically","exploit_scenario":"If a proxy is deployed without calling `initialize` in the same transaction, `core` remains the zero address. Because `_authorizeUpgrade` relies on `onlyGovernorUpgrader(core)` and that modifier explicitly skips checks when `_core` is zero, any external account can call `upgradeTo` on the proxy and point it to a malicious implementation (or first call `initialize` with a malicious `ICore` and then upgrade), gaining full control of funds and state.","recommendation":"Ensure proxies are deployed with an initialization call in the constructor/data field. Additionally, add an explicit `require(address(core) != address(0))` in `_authorizeUpgrade` (and/or other privileged paths) so upgrades cannot happen before initialization.","evidence":"`initialize` is externally callable and only sets `core` (no access control), while `_authorizeUpgrade` uses `onlyGovernorUpgrader(core)` which bypasses checks when `core` is zero.","locations":["contracts/contracts/Distributor.sol:150","contracts/contracts/Distributor.sol:156","contracts/contracts/utils/UUPSHelper.sol:53"]},{"severity":"low","category":"access_control","title":"`tx.origin` allows bypassing operator-only claim policy","exploit_scenario":"A malicious contract can get a user to initiate a transaction and then call `claim` on their behalf. The `tx.origin == user` check passes even though the caller is not a whitelisted operator, bypassing the intended operator gate. This lets third-party contracts trigger claims (and burn the user’s gas) without explicit operator approval.","recommendation":"Remove reliance on `tx.origin`. Require `msg.sender == user` or `operators[user][msg.sender] == 1` only, or add an explicit signature-based authorization flow if third-party claims are desired.","evidence":"Claim authorization uses `tx.origin` as an alternative to operator approval.","locations":["contracts/contracts/Distributor.sol:186"]},{"severity":"low","category":"other","title":"Dispute deposit accounting assumes full transfer, risking permanent dispute lock with fee-on-transfer tokens","exploit_scenario":"If `disputeToken` is fee-on-transfer or rebasing, the contract may receive less than `disputeAmount` in `disputeTree`. `resolveDispute` always attempts to transfer the full `disputeAmount`, which can revert due to insufficient balance, leaving `disputer` set and freezing future `updateTree` calls indefinitely.","recommendation":"Restrict `disputeToken` to non-deflationary ERC20s or track the actual amount received (balance before/after) and refund/ slash that amount instead of the nominal `disputeAmount`.","evidence":"`disputeTree` transfers in `disputeAmount` but `resolveDispute` always transfers out the full nominal amount.","locations":["contracts/contracts/Distributor.sol:241","contracts/contracts/Distributor.sol:254","contracts/contracts/Distributor.sol:258"]}]}
[codex:818911] tokens used
[codex:818911] 62,350
[codex:818911] {"no_findings":false,"summary":"Identified one conditional upgradeability takeover risk, a tx.origin-based access-control bypass, and a dispute-token accounting DoS edge case.","findings":[{"severity":"high","category":"upgradeability","title":"Upgradeable proxy can be taken over if not initialized atomically","exploit_scenario":"If a proxy is deployed without calling `initialize` in the same transaction, `core` remains the zero address. Because `_authorizeUpgrade` relies on `onlyGovernorUpgrader(core)` and that modifier explicitly skips checks when `_core` is zero, any external account can call `upgradeTo` on the proxy and point it to a malicious implementation (or first call `initialize` with a malicious `ICore` and then upgrade), gaining full control of funds and state.","recommendation":"Ensure proxies are deployed with an initialization call in the constructor/data field. Additionally, add an explicit `require(address(core) != address(0))` in `_authorizeUpgrade` (and/or other privileged paths) so upgrades cannot happen before initialization.","evidence":"`initialize` is externally callable and only sets `core` (no access control), while `_authorizeUpgrade` uses `onlyGovernorUpgrader(core)` which bypasses checks when `core` is zero.","locations":["contracts/contracts/Distributor.sol:150","contracts/contracts/Distributor.sol:156","contracts/contracts/utils/UUPSHelper.sol:53"]},{"severity":"low","category":"access_control","title":"`tx.origin` allows bypassing operator-only claim policy","exploit_scenario":"A malicious contract can get a user to initiate a transaction and then call `claim` on their behalf. The `tx.origin == user` check passes even though the caller is not a whitelisted operator, bypassing the intended operator gate. This lets third-party contracts trigger claims (and burn the user’s gas) without explicit operator approval.","recommendation":"Remove reliance on `tx.origin`. Require `msg.sender == user` or `operators[user][msg.sender] == 1` only, or add an explicit signature-based authorization flow if third-party claims are desired.","evidence":"Claim authorization uses `tx.origin` as an alternative to operator approval.","locations":["contracts/contracts/Distributor.sol:186"]},{"severity":"low","category":"other","title":"Dispute deposit accounting assumes full transfer, risking permanent dispute lock with fee-on-transfer tokens","exploit_scenario":"If `disputeToken` is fee-on-transfer or rebasing, the contract may receive less than `disputeAmount` in `disputeTree`. `resolveDispute` always attempts to transfer the full `disputeAmount`, which can revert due to insufficient balance, leaving `disputer` set and freezing future `updateTree` calls indefinitely.","recommendation":"Restrict `disputeToken` to non-deflationary ERC20s or track the actual amount received (balance before/after) and refund/ slash that amount instead of the nominal `disputeAmount`.","evidence":"`disputeTree` transfers in `disputeAmount` but `resolveDispute` always transfers out the full nominal amount.","locations":["contracts/contracts/Distributor.sol:241","contracts/contracts/Distributor.sol:254","contracts/contracts/Distributor.sol:258"]}]}
{
"codex": {
"ran_at": "2025-12-29T19:25:44.908284+00:00",
"returncode": 0
},
"summary": "Identified one conditional upgradeability takeover risk, a tx.origin-based access-control bypass, and a dispute-token accounting DoS edge case.",
"raw_final": {
"summary": "Identified one conditional upgradeability takeover risk, a tx.origin-based access-control bypass, and a dispute-token accounting DoS edge case.",
"findings": [
{
"title": "Upgradeable proxy can be taken over if not initialized atomically",
"category": "upgradeability",
"evidence": "`initialize` is externally callable and only sets `core` (no access control), while `_authorizeUpgrade` uses `onlyGovernorUpgrader(core)` which bypasses checks when `core` is zero.",
"severity": "high",
"locations": [
"contracts/contracts/Distributor.sol:150",
"contracts/contracts/Distributor.sol:156",
"contracts/contracts/utils/UUPSHelper.sol:53"
],
"recommendation": "Ensure proxies are deployed with an initialization call in the constructor/data field. Additionally, add an explicit `require(address(core) != address(0))` in `_authorizeUpgrade` (and/or other privileged paths) so upgrades cannot happen before initialization.",
"exploit_scenario": "If a proxy is deployed without calling `initialize` in the same transaction, `core` remains the zero address. Because `_authorizeUpgrade` relies on `onlyGovernorUpgrader(core)` and that modifier explicitly skips checks when `_core` is zero, any external account can call `upgradeTo` on the proxy and point it to a malicious implementation (or first call `initialize` with a malicious `ICore` and then upgrade), gaining full control of funds and state."
},
{
"title": "`tx.origin` allows bypassing operator-only claim policy",
"category": "access_control",
"evidence": "Claim authorization uses `tx.origin` as an alternative to operator approval.",
"severity": "low",
"locations": [
"contracts/contracts/Distributor.sol:186"
],
"recommendation": "Remove reliance on `tx.origin`. Require `msg.sender == user` or `operators[user][msg.sender] == 1` only, or add an explicit signature-based authorization flow if third-party claims are desired.",
"exploit_scenario": "A malicious contract can get a user to initiate a transaction and then call `claim` on their behalf. The `tx.origin == user` check passes even though the caller is not a whitelisted operator, bypassing the intended operator gate. This lets third-party contracts trigger claims (and burn the user\u2019s gas) without explicit operator approval."
},
{
"title": "Dispute deposit accounting assumes full transfer, risking permanent dispute lock with fee-on-transfer tokens",
"category": "other",
"evidence": "`disputeTree` transfers in `disputeAmount` but `resolveDispute` always transfers out the full nominal amount.",
"severity": "low",
"locations": [
"contracts/contracts/Distributor.sol:241",
"contracts/contracts/Distributor.sol:254",
"contracts/contracts/Distributor.sol:258"
],
"recommendation": "Restrict `disputeToken` to non-deflationary ERC20s or track the actual amount received (balance before/after) and refund/ slash that amount instead of the nominal `disputeAmount`.",
"exploit_scenario": "If `disputeToken` is fee-on-transfer or rebasing, the contract may receive less than `disputeAmount` in `disputeTree`. `resolveDispute` always attempts to transfer the full `disputeAmount`, which can revert due to insufficient balance, leaving `disputer` set and freezing future `updateTree` calls indefinitely."
}
],
"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 0x01c2 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x5cec892a 00000019: GT 0000001a: PUSH2 0x00f7 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xbdac7ca3 00000024: GT 00000025: PUSH2 0x0095 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xd9c98087 0000002f: GT 00000030: PUSH2 0x0064 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xd9c98087 0000003a: EQ 0000003b: PUSH2 0x0626 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xe57480e5 00000045: EQ 00000046: PUSH2 0x0646 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf2f4eb26 00000050: EQ 00000051: PUSH2 0x0673 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xfd54b228 0000005b: EQ 0000005c: PUSH2 0x06a0 0000005f: JUMPI 00000060: PUSH1 0x00 00000062: DUP1 00000063: REVERT 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0xbdac7ca3 0000006b: EQ 0000006c: PUSH2 0x0589 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0xc4d66de8 00000076: EQ 00000077: PUSH2 0x05a9 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xc748d261 00000081: EQ 00000082: PUSH2 0x05c9 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0xcce80e7a 0000008c: EQ 0000008d: PUSH2 0x05f6 00000090: JUMPI 00000091: PUSH1 0x00 00000093: DUP1 00000094: REVERT 00000095: JUMPDEST 00000096: DUP1 00000097: PUSH4 0x71ee95c0 0000009c: GT 0000009d: PUSH2 0x00d1 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0x71ee95c0 000000a7: EQ 000000a8: PUSH2 0x0514 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0x7ee84349 000000b2: EQ 000000b3: PUSH2 0x0534 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0x89e1e82a 000000bd: EQ 000000be: PUSH2 0x0554 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0x95788835 000000c8: EQ 000000c9: PUSH2 0x0574 000000cc: JUMPI 000000cd: PUSH1 0x00 000000cf: DUP1 000000d0: REVERT 000000d1: JUMPDEST 000000d2: DUP1 000000d3: PUSH4 0x5cec892a 000000d8: EQ 000000d9: PUSH2 0x046b 000000dc: JUMPI 000000dd: DUP1 000000de: PUSH4 0x623b9e9d 000000e3: EQ 000000e4: PUSH2 0x04a2 000000e7: JUMPI 000000e8: DUP1 000000e9: PUSH4 0x6ac56103 000000ee: EQ 000000ef: PUSH2 0x04c2 000000f2: JUMPI 000000f3: PUSH1 0x00 000000f5: DUP1 000000f6: REVERT 000000f7: JUMPDEST 000000f8: DUP1 000000f9: PUSH4 0x2a25dd41 000000fe: GT 000000ff: PUSH2 0x0164 00000102: JUMPI 00000103: DUP1 00000104: PUSH4 0x49590657 00000109: GT 0000010a: PUSH2 0x013e 0000010d: JUMPI 0000010e: DUP1 0000010f: PUSH4 0x49590657 00000114: EQ 00000115: PUSH2 0x03da 00000118: JUMPI 00000119: DUP1 0000011a: PUSH4 0x4f1ef286 0000011f: EQ 00000120: PUSH2 0x03ef 00000123: JUMPI 00000124: DUP1 00000125: PUSH4 0x52d1902d 0000012a: EQ 0000012b: PUSH2 0x0402 0000012e: JUMPI 0000012f: DUP1 00000130: PUSH4 0x5bf31d4d 00000135: EQ 00000136: PUSH2 0x0417 00000139: JUMPI 0000013a: PUSH1 0x00 0000013c: DUP1 0000013d: REVERT 0000013e: JUMPDEST 0000013f: DUP1 00000140: PUSH4 0x2a25dd41 00000145: EQ 00000146: PUSH2 0x037a 00000149: JUMPI 0000014a: DUP1 0000014b: PUSH4 0x3659cfe6 00000150: EQ 00000151: PUSH2 0x039a 00000154: JUMPI 00000155: DUP1 00000156: PUSH4 0x4641fdef 0000015b: EQ 0000015c: PUSH2 0x03ba 0000015f: JUMPI 00000160: PUSH1 0x00 00000162: DUP1 00000163: REVERT 00000164: JUMPDEST 00000165: DUP1 00000166: PUSH4 0x1171bda9 0000016b: GT 0000016c: PUSH2 0x01a0 0000016f: JUMPI 00000170: DUP1 00000171: PUSH4 0x1171bda9 00000176: EQ 00000177: PUSH2 0x02d5 0000017a: JUMPI 0000017b: DUP1 0000017c: PUSH4 0x14769142 00000181: EQ 00000182: PUSH2 0x02f5 00000185: JUMPI 00000186: DUP1 00000187: PUSH4 0x2637588e 0000018c: EQ 0000018d: PUSH2 0x0322 00000190: JUMPI 00000191: DUP1 00000192: PUSH4 0x28827838 00000197: EQ 00000198: PUSH2 0x035a 0000019b: JUMPI 0000019c: PUSH1 0x00 0000019e: DUP1 0000019f: REVERT 000001a0: JUMPDEST 000001a1: DUP1 000001a2: PUSH4 0x09454ba3 000001a7: EQ 000001a8: PUSH2 0x01c7 000001ab: JUMPI 000001ac: DUP1 000001ad: PUSH4 0x0c9cbf0e 000001b2: EQ 000001b3: PUSH2 0x01f0 000001b6: JUMPI 000001b7: DUP1 000001b8: PUSH4 0x0d10fca3 000001bd: EQ 000001be: PUSH2 0x02b3 000001c1: JUMPI 000001c2: JUMPDEST 000001c3: PUSH1 0x00 000001c5: DUP1 000001c6: REVERT 000001c7: JUMPDEST 000001c8: CALLVALUE 000001c9: DUP1 000001ca: ISZERO 000001cb: PUSH2 0x01d3 000001ce: JUMPI 000001cf: PUSH1 0x00 000001d1: DUP1 000001d2: REVERT 000001d3: JUMPDEST 000001d4: POP 000001d5: PUSH2 0x01dd 000001d8: PUSH1 0x6c 000001da: SLOAD 000001db: DUP2 000001dc: JUMP 000001dd: JUMPDEST 000001de: PUSH1 0x40 000001e0: MLOAD 000001e1: SWAP1 000001e2: DUP2 000001e3: MSTORE 000001e4: PUSH1 0x20 000001e6: ADD 000001e7: JUMPDEST 000001e8: PUSH1 0x40 000001ea: MLOAD 000001eb: DUP1 000001ec: SWAP2 000001ed: SUB 000001ee: SWAP1 000001ef: RETURN 000001f0: JUMPDEST 000001f1: CALLVALUE 000001f2: DUP1 000001f3: ISZERO 000001f4: PUSH2 0x01fc 000001f7: JUMPI 000001f8: PUSH1 0x00 000001fa: DUP1 000001fb: REVERT 000001fc: JUMPDEST 000001fd: POP 000001fe: PUSH2 0x0274 00000201: PUSH2 0x020b 00000204: CALLDATASIZE 00000205: PUSH1 0x04 00000207: PUSH2 0x306b 0000020a: JUMP 0000020b: JUMPDEST 0000020c: PUSH1 0x6d 0000020e: PUSH1 0x20 00000210: SWAP1 00000211: DUP2 00000212: MSTORE 00000213: PUSH1 0x00 00000215: SWAP3 00000216: DUP4 00000217: MSTORE 00000218: PUSH1 0x40 0000021a: DUP1 0000021b: DUP5 0000021c: KECCAK256 0000021d: SWAP1 0000021e: SWAP2 0000021f: MSTORE 00000220: SWAP1 00000221: DUP3 00000222: MSTORE 00000223: SWAP1 00000224: KECCAK256 00000225: DUP1 00000226: SLOAD 00000227: PUSH1 0x01 00000229: SWAP1 0000022a: SWAP2 0000022b: ADD 0000022c: SLOAD 0000022d: PUSH26 0xffffffffffffffffffffffffffffffffffffffffffffffffffff 00000248: DUP3 00000249: AND 0000024a: SWAP2 0000024b: PUSH27 0x010000000000000000000000000000000000000000000000000000 00000267: SWAP1 00000268: DIV 00000269: PUSH6 0xffffffffffff 00000270: AND 00000271: SWAP1 00000272: DUP4 00000273: JUMP 00000274: JUMPDEST 00000275: PUSH1 0x40 00000277: DUP1 00000278: MLOAD 00000279: PUSH26 0xffffffffffffffffffffffffffffffffffffffffffffffffffff 00000294: SWAP1 00000295: SWAP5 00000296: AND 00000297: DUP5 00000298: MSTORE 00000299: PUSH6 0xffffffffffff 000002a0: SWAP1 000002a1: SWAP3 000002a2: AND 000002a3: PUSH1 0x20 000002a5: DUP5 000002a6: ADD 000002a7: MSTORE 000002a8: SWAP1 000002a9: DUP3 000002aa: ADD 000002ab: MSTORE 000002ac: PUSH1 0x60 000002ae: ADD 000002af: PUSH2 0x01e7 000002b2: JUMP 000002b3: JUMPDEST 000002b4: CALLVALUE 000002b5: DUP1 000002b6: ISZERO 000002b7: PUSH2 0x02bf 000002ba: JUMPI 000002bb: PUSH1 0x00 000002bd: DUP1 000002be: REVERT 000002bf: JUMPDEST 000002c0: POP 000002c1: PUSH2 0x02d3 000002c4: PUSH2 0x02ce 000002c7: CALLDATASIZE 000002c8: PUSH1 0x04 000002ca: PUSH2 0x30a4 000002cd: JUMP 000002ce: JUMPDEST 000002cf: PUSH2 0x06bb 000002d2: JUMP 000002d3: JUMPDEST 000002d4: STOP 000002d5: JUMPDEST 000002d6: CALLVALUE 000002d7: DUP1 000002d8: ISZERO 000002d9: PUSH2 0x02e1 000002dc: JUMPI 000002dd: PUSH1 0x00 000002df: DUP1 000002e0: REVERT 000002e1: JUMPDEST 000002e2: POP 000002e3: PUSH2 0x02d3 000002e6: PUSH2 0x02f0 000002e9: CALLDATASIZE 000002ea: PUSH1 0x04 000002ec: PUSH2 0x30bd 000002ef: JUMP 000002f0: JUMPDEST 000002f1: PUSH2 0x080f 000002f4: JUMP 000002f5: JUMPDEST 000002f6: CALLVALUE 000002f7: DUP1 000002f8: ISZERO 000002f9: PUSH2 0x0301 000002fc: JUMPI 000002fd: PUSH1 0x00 000002ff: DUP1 00000300: REVERT 00000301: JUMPDEST 00000302: POP 00000303: PUSH2 0x01dd 00000306: PUSH2 0x0310 00000309: CALLDATASIZE 0000030a: PUSH1 0x04 0000030c: PUSH2 0x30fe 0000030f: JUMP 00000310: JUMPDEST 00000311: PUSH1 0x6f 00000313: PUSH1 0x20 00000315: MSTORE 00000316: PUSH1 0x00 00000318: SWAP1 00000319: DUP2 0000031a: MSTORE 0000031b: PUSH1 0x40 0000031d: SWAP1 0000031e: KECCAK256 0000031f: SLOAD 00000320: DUP2 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 0x01dd 00000333: PUSH2 0x033d 00000336: CALLDATASIZE 00000337: PUSH1 0x04 00000339: PUSH2 0x306b 0000033c: JUMP 0000033d: JUMPDEST 0000033e: PUSH1 0x70 00000340: PUSH1 0x20 00000342: SWAP1 00000343: DUP2 00000344: MSTORE 00000345: PUSH1 0x00 00000347: SWAP3 00000348: DUP4 00000349: MSTORE 0000034a: PUSH1 0x40 0000034c: DUP1 0000034d: DUP5 0000034e: KECCAK256 0000034f: SWAP1 00000350: SWAP2 00000351: MSTORE 00000352: SWAP1 00000353: DUP3 00000354: MSTORE 00000355: SWAP1 00000356: KECCAK256 00000357: SLOAD 00000358: DUP2 00000359: JUMP 0000035a: JUMPDEST 0000035b: CALLVALUE 0000035c: DUP1 0000035d: ISZERO 0000035e: PUSH2 0x0366 00000361: JUMPI 00000362: PUSH1 0x00 00000364: DUP1 00000365: REVERT 00000366: JUMPDEST 00000367: POP 00000368: PUSH2 0x02d3 0000036b: PUSH2 0x0375 0000036e: CALLDATASIZE 0000036f: PUSH1 0x04 00000371: PUSH2 0x30fe 00000374: JUMP 00000375: JUMPDEST 00000376: PUSH2 0x0964 00000379: JUMP 0000037a: JUMPDEST 0000037b: CALLVALUE 0000037c: DUP1 0000037d: ISZERO 0000037e: PUSH2 0x0386 00000381: JUMPI 00000382: PUSH1 0x00 00000384: DUP1 00000385: REVERT 00000386: JUMPDEST 00000387: POP 00000388: PUSH2 0x02d3 0000038b: PUSH2 0x0395 0000038e: CALLDATASIZE 0000038f: PUSH1 0x04 00000391: PUSH2 0x31de 00000394: JUMP 00000395: JUMPDEST 00000396: PUSH2 0x0b02 00000399: JUMP 0000039a: JUMPDEST 0000039b: CALLVALUE 0000039c: DUP1 0000039d: ISZERO 0000039e: PUSH2 0x03a6 000003a1: JUMPI 000003a2: PUSH1 0x00 000003a4: DUP1 000003a5: REVERT 000003a6: JUMPDEST 000003a7: POP 000003a8: PUSH2 0x02d3 000003ab: PUSH2 0x03b5 000003ae: CALLDATASIZE 000003af: PUSH1 0x04 000003b1: PUSH2 0x30fe 000003b4: JUMP 000003b5: JUMPDEST 000003b6: PUSH2 0x0c33 000003b9: JUMP 000003ba: JUMPDEST 000003bb: CALLVALUE 000003bc: DUP1 000003bd: ISZERO 000003be: PUSH2 0x03c6 000003c1: JUMPI 000003c2: PUSH1 0x00 000003c4: DUP1 000003c5: REVERT 000003c6: JUMPDEST 000003c7: POP 000003c8: PUSH2 0x02d3 000003cb: PUSH2 0x03d5 000003ce: CALLDATASIZE 000003cf: PUSH1 0x04 000003d1: PUSH2 0x3227 000003d4: JUMP 000003d5: JUMPDEST 000003d6: PUSH2 0x0e3d 000003d9: JUMP 000003da: JUMPDEST 000003db: CALLVALUE 000003dc: DUP1 000003dd: ISZERO 000003de: PUSH2 0x03e6 000003e1: JUMPI 000003e2: PUSH1 0x00 000003e4: DUP1 000003e5: REVERT 000003e6: JUMPDEST 000003e7: POP 000003e8: PUSH2 0x01dd 000003eb: PUSH2 0x0f84 000003ee: JUMP 000003ef: JUMPDEST 000003f0: PUSH2 0x02d3 000003f3: PUSH2 0x03fd 000003f6: CALLDATASIZE 000003f7: PUSH1 0x04 000003f9: PUSH2 0x324f 000003fc: JUMP 000003fd: JUMPDEST 000003fe: PUSH2 0x0fe2 00000401: JUMP 00000402: JUMPDEST 00000403: CALLVALUE 00000404: DUP1 00000405: ISZERO 00000406: PUSH2 0x040e 00000409: JUMPI 0000040a: PUSH1 0x00 0000040c: DUP1 0000040d: REVERT 0000040e: JUMPDEST 0000040f: POP 00000410: PUSH2 0x01dd 00000413: PUSH2 0x11d8 00000416: JUMP 00000417: JUMPDEST 00000418: CALLVALUE 00000419: DUP1 0000041a: ISZERO 0000041b: PUSH2 0x0423 0000041e: JUMPI 0000041f: PUSH1 0x00 00000421: DUP1 00000422: REVERT 00000423: JUMPDEST 00000424: POP 00000425: PUSH1 0x6b 00000427: SLOAD 00000428: PUSH2 0x0454 0000042b: SWAP1 0000042c: PUSH27 0x010000000000000000000000000000000000000000000000000000 00000448: SWAP1 00000449: DIV 0000044a: PUSH6 0xffffffffffff 00000451: AND 00000452: DUP2 00000453: JUMP 00000454: JUMPDEST 00000455: PUSH1 0x40 00000457: MLOAD 00000458: PUSH6 0xffffffffffff 0000045f: SWAP1 00000460: SWAP2 00000461: AND 00000462: DUP2 00000463: MSTORE 00000464: PUSH1 0x20 00000466: ADD 00000467: PUSH2 0x01e7 0000046a: JUMP 0000046b: JUMPDEST 0000046c: CALLVALUE 0000046d: DUP1 0000046e: ISZERO 0000046f: PUSH2 0x0477 00000472: JUMPI 00000473: PUSH1 0x00 00000475: DUP1 00000476: REVERT 00000477: JUMPDEST 00000478: POP 00000479: PUSH1 0x6b 0000047b: SLOAD 0000047c: PUSH2 0x0454 0000047f: SWAP1 00000480: PUSH21 0x010000000000000000000000000000000000000000 00000496: SWAP1 00000497: DIV 00000498: PUSH6 0xffffffffffff 0000049f: AND 000004a0: DUP2 000004a1: JUMP 000004a2: JUMPDEST 000004a3: CALLVALUE 000004a4: DUP1 000004a5: ISZERO 000004a6: PUSH2 0x04ae 000004a9: JUMPI 000004aa: PUSH1 0x00 000004ac: DUP1 000004ad: REVERT 000004ae: JUMPDEST 000004af: POP 000004b0: PUSH2 0x02d3 000004b3: PUSH2 0x04bd 000004b6: CALLDATASIZE 000004b7: PUSH1 0x04 000004b9: PUSH2 0x30fe 000004bc: JUMP 000004bd: JUMPDEST 000004be: PUSH2 0x12c4 000004c1: JUMP 000004c2: JUMPDEST 000004c3: CALLVALUE 000004c4: DUP1 000004c5: ISZERO 000004c6: PUSH2 0x04ce 000004c9: JUMPI 000004ca: PUSH1 0x00 000004cc: DUP1 000004cd: REVERT 000004ce: JUMPDEST 000004cf: POP 000004d0: PUSH1 0x6b 000004d2: SLOAD 000004d3: PUSH2 0x04ef 000004d6: SWAP1 000004d7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004ec: AND 000004ed: DUP2 000004ee: JUMP 000004ef: JUMPDEST 000004f0: PUSH1 0x40 000004f2: MLOAD 000004f3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000508: SWAP1 00000509: SWAP2 0000050a: AND 0000050b: DUP2 0000050c: MSTORE 0000050d: PUSH1 0x20 0000050f: ADD 00000510: PUSH2 0x01e7 00000513: JUMP 00000514: JUMPDEST 00000515: CALLVALUE 00000516: DUP1 00000517: ISZERO 00000518: PUSH2 0x0520 0000051b: JUMPI 0000051c: PUSH1 0x00 0000051e: DUP1 0000051f: REVERT 00000520: JUMPDEST 00000521: POP 00000522: PUSH2 0x02d3 00000525: PUSH2 0x052f 00000528: CALLDATASIZE 00000529: PUSH1 0x04 0000052b: PUSH2 0x32ff 0000052e: JUMP 0000052f: JUMPDEST 00000530: PUSH2 0x144b 00000533: JUMP 00000534: JUMPDEST 00000535: CALLVALUE 00000536: DUP1 00000537: ISZERO 00000538: PUSH2 0x0540 0000053b: JUMPI 0000053c: PUSH1 0x00 0000053e: DUP1 0000053f: REVERT 00000540: JUMPDEST 00000541: POP 00000542: PUSH2 0x02d3 00000545: PUSH2 0x054f 00000548: CALLDATASIZE 00000549: PUSH1 0x04 0000054b: PUSH2 0x30fe 0000054e: JUMP 0000054f: JUMPDEST 00000550: PUSH2 0x1894 00000553: JUMP 00000554: JUMPDEST 00000555: CALLVALUE 00000556: DUP1 00000557: ISZERO 00000558: PUSH2 0x0560 0000055b: JUMPI 0000055c: PUSH1 0x00 0000055e: DUP1 0000055f: REVERT 00000560: JUMPDEST 00000561: POP 00000562: PUSH2 0x02d3 00000565: PUSH2 0x056f 00000568: CALLDATASIZE 00000569: PUSH1 0x04 0000056b: PUSH2 0x33d1 0000056e: JUMP 0000056f: JUMPDEST 00000570: PUSH2 0x19f5 00000573: JUMP 00000574: JUMPDEST 00000575: CALLVALUE 00000576: DUP1 00000577: ISZERO 00000578: PUSH2 0x0580 0000057b: JUMPI 0000057c: PUSH1 0x00 0000057e: DUP1 0000057f: REVERT 00000580: JUMPDEST 00000581: POP 00000582: PUSH2 0x02d3 00000585: PUSH2 0x1bff 00000588: JUMP 00000589: JUMPDEST 0000058a: CALLVALUE 0000058b: DUP1 0000058c: ISZERO 0000058d: PUSH2 0x0595 00000590: JUMPI 00000591: PUSH1 0x00 00000593: DUP1 00000594: REVERT 00000595: JUMPDEST 00000596: POP 00000597: PUSH2 0x02d3 0000059a: PUSH2 0x05a4 0000059d: CALLDATASIZE 0000059e: PUSH1 0x04 000005a0: PUSH2 0x306b 000005a3: JUMP 000005a4: JUMPDEST 000005a5: PUSH2 0x1d21 000005a8: JUMP 000005a9: JUMPDEST 000005aa: CALLVALUE 000005ab: DUP1 000005ac: ISZERO 000005ad: PUSH2 0x05b5 000005b0: JUMPI 000005b1: PUSH1 0x00 000005b3: DUP1 000005b4: REVERT 000005b5: JUMPDEST 000005b6: POP 000005b7: PUSH2 0x02d3 000005ba: PUSH2 0x05c4 000005bd: CALLDATASIZE 000005be: PUSH1 0x04 000005c0: PUSH2 0x30fe 000005c3: JUMP 000005c4: JUMPDEST 000005c5: PUSH2 0x1edc 000005c8: JUMP 000005c9: JUMPDEST 000005ca: CALLVALUE 000005cb: DUP1 000005cc: ISZERO 000005cd: PUSH2 0x05d5 000005d0: JUMPI 000005d1: PUSH1 0x00 000005d3: DUP1 000005d4: REVERT 000005d5: JUMPDEST 000005d6: POP 000005d7: PUSH1 0x69 000005d9: SLOAD 000005da: PUSH2 0x04ef 000005dd: SWAP1 000005de: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005f3: AND 000005f4: DUP2 000005f5: JUMP 000005f6: JUMPDEST 000005f7: CALLVALUE 000005f8: DUP1 000005f9: ISZERO 000005fa: PUSH2 0x0602 000005fd: JUMPI 000005fe: PUSH1 0x00 00000600: DUP1 00000601: REVERT 00000602: JUMPDEST 00000603: POP 00000604: PUSH1 0x67 00000606: SLOAD 00000607: PUSH1 0x68 00000609: SLOAD 0000060a: PUSH2 0x0611 0000060d: SWAP2 0000060e: SWAP1 0000060f: DUP3 00000610: JUMP 00000611: JUMPDEST 00000612: PUSH1 0x40 00000614: DUP1 00000615: MLOAD 00000616: SWAP3 00000617: DUP4 00000618: MSTORE 00000619: PUSH1 0x20 0000061b: DUP4 0000061c: ADD 0000061d: SWAP2 0000061e: SWAP1 0000061f: SWAP2 00000620: MSTORE 00000621: ADD 00000622: PUSH2 0x01e7 00000625: JUMP 00000626: JUMPDEST 00000627: CALLVALUE 00000628: DUP1 00000629: ISZERO 0000062a: PUSH2 0x0632 0000062d: JUMPI 0000062e: PUSH1 0x00 00000630: DUP1 00000631: REVERT 00000632: JUMPDEST 00000633: POP 00000634: PUSH2 0x02d3 00000637: PUSH2 0x0641 0000063a: CALLDATASIZE 0000063b: PUSH1 0x04 0000063d: PUSH2 0x33ee 00000640: JUMP 00000641: JUMPDEST 00000642: PUSH2 0x20f3 00000645: JUMP 00000646: JUMPDEST 00000647: CALLVALUE 00000648: DUP1 00000649: ISZERO 0000064a: PUSH2 0x0652 0000064d: JUMPI 0000064e: PUSH1 0x00 00000650: DUP1 00000651: REVERT 00000652: JUMPDEST 00000653: POP 00000654: PUSH2 0x01dd 00000657: PUSH2 0x0661 0000065a: CALLDATASIZE 0000065b: PUSH1 0x04 0000065d: PUSH2 0x30fe 00000660: JUMP 00000661: JUMPDEST 00000662: PUSH1 0x6e 00000664: PUSH1 0x20 00000666: MSTORE 00000667: PUSH1 0x00 00000669: SWAP1 0000066a: DUP2 0000066b: MSTORE 0000066c: PUSH1 0x40 0000066e: SWAP1 0000066f: KECCAK256 00000670: SLOAD 00000671: DUP2 00000672: JUMP 00000673: JUMPDEST 00000674: CALLVALUE 00000675: DUP1 00000676: ISZERO 00000677: PUSH2 0x067f 0000067a: JUMPI 0000067b: PUSH1 0x00 0000067d: DUP1 0000067e: REVERT 0000067f: JUMPDEST 00000680: POP 00000681: PUSH1 0x6a 00000683: SLOAD 00000684: PUSH2 0x04ef 00000687: SWAP1 00000688: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000069d: AND 0000069e: DUP2 0000069f: JUMP 000006a0: JUMPDEST 000006a1: CALLVALUE 000006a2: DUP1 000006a3: ISZERO 000006a4: PUSH2 0x06ac 000006a7: JUMPI 000006a8: PUSH1 0x00 000006aa: DUP1 000006ab: REVERT 000006ac: JUMPDEST 000006ad: POP 000006ae: PUSH1 0x65 000006b0: SLOAD 000006b1: PUSH1 0x66 000006b3: SLOAD 000006b4: PUSH2 0x0611 000006b7: SWAP2 000006b8: SWAP1 000006b9: DUP3 000006ba: JUMP 000006bb: JUMPDEST 000006bc: PUSH1 0x6a 000006be: SLOAD 000006bf: PUSH1 0x40 000006c1: MLOAD 000006c2: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000 000006e3: DUP2 000006e4: MSTORE 000006e5: CALLER 000006e6: PUSH1 0x04 000006e8: DUP3 000006e9: ADD 000006ea: MSTORE 000006eb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000700: SWAP1 00000701: SWAP2 00000702: AND 00000703: SWAP1 00000704: PUSH4 0xe43581b8 00000709: SWAP1 0000070a: PUSH1 0x24 0000070c: ADD 0000070d: PUSH1 0x20 0000070f: PUSH1 0x40 00000711: MLOAD 00000712: DUP1 00000713: DUP4 00000714: SUB 00000715: DUP2 00000716: DUP7 00000717: GAS 00000718: STATICCALL 00000719: ISZERO 0000071a: DUP1 0000071b: ISZERO 0000071c: PUSH2 0x0729 0000071f: JUMPI 00000720: RETURNDATASIZE 00000721: PUSH1 0x00 00000723: DUP1 00000724: RETURNDATACOPY 00000725: RETURNDATASIZE 00000726: PUSH1 0x00 00000728: REVERT 00000729: JUMPDEST 0000072a: POP 0000072b: POP 0000072c: POP 0000072d: POP 0000072e: PUSH1 0x40 00000730: MLOAD 00000731: RETURNDATASIZE 00000732: PUSH1 0x1f 00000734: NOT 00000735: PUSH1 0x1f 00000737: DUP3 00000738: ADD 00000739: AND 0000073a: DUP3 0000073b: ADD 0000073c: DUP1 0000073d: PUSH1 0x40 0000073f: MSTORE 00000740: POP 00000741: DUP2 00000742: ADD 00000743: SWAP1 00000744: PUSH2 0x074d 00000747: SWAP2 00000748: SWAP1 00000749: PUSH2 0x3406 0000074c: JUMP 0000074d: JUMPDEST 0000074e: PUSH2 0x0783 00000751: JUMPI 00000752: PUSH1 0x40 00000754: MLOAD 00000755: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000 00000776: DUP2 00000777: MSTORE 00000778: PUSH1 0x04 0000077a: ADD 0000077b: PUSH1 0x40 0000077d: MLOAD 0000077e: DUP1 0000077f: SWAP2 00000780: SUB 00000781: SWAP1 00000782: REVERT 00000783: JUMPDEST 00000784: PUSH1 0x6b 00000786: SLOAD 00000787: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000079c: AND 0000079d: ISZERO 0000079e: PUSH2 0x07d3 000007a1: JUMPI 000007a2: PUSH1 0x40 000007a4: MLOAD 000007a5: PUSH32 0x0583257400000000000000000000000000000000000000000000000000000000 000007c6: DUP2 000007c7: MSTORE 000007c8: PUSH1 0x04 000007ca: ADD 000007cb: PUSH1 0x40 000007cd: MLOAD 000007ce: DUP1 000007cf: SWAP2 000007d0: SUB 000007d1: SWAP1 000007d2: REVERT 000007d3: JUMPDEST 000007d4: PUSH1 0x6c 000007d6: DUP2 000007d7: SWAP1 000007d8: SSTORE 000007d9: PUSH1 0x40 000007db: MLOAD 000007dc: DUP2 000007dd: DUP2 000007de: MSTORE 000007df: PUSH32 0x39bb629f3d59f5eddf978050e1f5fabeca2b5d02dfc9c25e84f32e7da1069db4 00000800: SWAP1 00000801: PUSH1 0x20 00000803: ADD 00000804: JUMPDEST 00000805: PUSH1 0x40 00000807: MLOAD 00000808: DUP1 00000809: SWAP2 0000080a: SUB 0000080b: SWAP1 0000080c: LOG1 0000080d: POP 0000080e: JUMP 0000080f: JUMPDEST 00000810: PUSH1 0x6a 00000812: SLOAD 00000813: PUSH1 0x40 00000815: MLOAD 00000816: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000 00000837: DUP2 00000838: MSTORE 00000839: CALLER 0000083a: PUSH1 0x04 0000083c: DUP3 0000083d: ADD 0000083e: MSTORE 0000083f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000854: SWAP1 00000855: SWAP2 00000856: AND 00000857: SWAP1 00000858: PUSH4 0xe43581b8 0000085d: SWAP1 0000085e: PUSH1 0x24 00000860: ADD 00000861: PUSH1 0x20 00000863: PUSH1 0x40 00000865: MLOAD 00000866: DUP1 00000867: DUP4 00000868: SUB 00000869: DUP2 0000086a: DUP7 0000086b: GAS 0000086c: STATICCALL 0000086d: ISZERO 0000086e: DUP1 0000086f: ISZERO 00000870: PUSH2 0x087d 00000873: JUMPI 00000874: RETURNDATASIZE 00000875: PUSH1 0x00 00000877: DUP1 00000878: RETURNDATACOPY 00000879: RETURNDATASIZE 0000087a: PUSH1 0x00 0000087c: REVERT 0000087d: JUMPDEST 0000087e: POP 0000087f: POP 00000880: POP 00000881: POP 00000882: PUSH1 0x40 00000884: MLOAD 00000885: RETURNDATASIZE 00000886: PUSH1 0x1f 00000888: NOT 00000889: PUSH1 0x1f 0000088b: DUP3 0000088c: ADD 0000088d: AND 0000088e: DUP3 0000088f: ADD 00000890: DUP1 00000891: PUSH1 0x40 00000893: MSTORE 00000894: POP 00000895: DUP2 00000896: ADD 00000897: SWAP1 00000898: PUSH2 0x08a1 0000089b: SWAP2 0000089c: SWAP1 0000089d: PUSH2 0x3406 000008a0: JUMP 000008a1: JUMPDEST 000008a2: PUSH2 0x08d7 000008a5: JUMPI 000008a6: PUSH1 0x40 000008a8: MLOAD 000008a9: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000 000008ca: DUP2 000008cb: MSTORE 000008cc: PUSH1 0x04 000008ce: ADD 000008cf: PUSH1 0x40 000008d1: MLOAD 000008d2: DUP1 000008d3: SWAP2 000008d4: SUB 000008d5: SWAP1 000008d6: REVERT 000008d7: JUMPDEST 000008d8: PUSH2 0x08f8 000008db: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008f0: DUP5 000008f1: AND 000008f2: DUP4 000008f3: DUP4 000008f4: PUSH2 0x2318 000008f7: JUMP 000008f8: JUMPDEST 000008f9: DUP2 000008fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000090f: AND 00000910: DUP4 00000911: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000926: AND 00000927: PUSH32 0xfff3b3844276f57024e0b42afec1a37f75db36511e43819a4f2a63ab7862b648 00000948: DUP4 00000949: PUSH1 0x40 0000094b: MLOAD 0000094c: PUSH2 0x0957 0000094f: SWAP2 00000950: DUP2 00000951: MSTORE 00000952: PUSH1 0x20 00000954: ADD 00000955: SWAP1 00000956: JUMP 00000957: JUMPDEST 00000958: PUSH1 0x40 0000095a: MLOAD 0000095b: DUP1 0000095c: SWAP2 0000095d: SUB 0000095e: SWAP1 0000095f: LOG3 00000960: POP 00000961: POP 00000962: POP 00000963: JUMP 00000964: JUMPDEST 00000965: DUP1 00000966: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000097b: DUP2 0000097c: AND 0000097d: CALLER 0000097e: EQ 0000097f: DUP1 00000980: ISZERO 00000981: SWAP1 00000982: PUSH2 0x099b 00000985: JUMPI 00000986: POP 00000987: CALLER 00000988: PUSH1 0x00 0000098a: SWAP1 0000098b: DUP2 0000098c: MSTORE 0000098d: PUSH1 0x6e 0000098f: PUSH1 0x20 00000991: MSTORE 00000992: PUSH1 0x40 00000994: SWAP1 00000995: KECCAK256 00000996: SLOAD 00000997: PUSH1 0x01 00000999: EQ 0000099a: ISZERO 0000099b: JUMPDEST 0000099c: DUP1 0000099d: ISZERO 0000099e: PUSH2 0x0a36 000009a1: JUMPI 000009a2: POP 000009a3: PUSH1 0x6a 000009a5: SLOAD 000009a6: PUSH1 0x40 000009a8: MLOAD 000009a9: PUSH32 0x521d4de900000000000000000000000000000000000000000000000000000000 000009ca: DUP2 000009cb: MSTORE 000009cc: CALLER 000009cd: PUSH1 0x04 000009cf: DUP3 000009d0: ADD 000009d1: MSTORE 000009d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009e7: SWAP1 000009e8: SWAP2 000009e9: AND 000009ea: SWAP1 000009eb: PUSH4 0x521d4de9 000009f0: SWAP1 000009f1: PUSH1 0x24 000009f3: ADD 000009f4: PUSH1 0x20 000009f6: PUSH1 0x40 000009f8: MLOAD 000009f9: DUP1 000009fa: DUP4 000009fb: SUB 000009fc: DUP2 000009fd: DUP7 000009fe: GAS 000009ff: STATICCALL 00000a00: ISZERO 00000a01: DUP1 00000a02: ISZERO 00000a03: PUSH2 0x0a10 00000a06: JUMPI 00000a07: RETURNDATASIZE 00000a08: PUSH1 0x00 00000a0a: DUP1 00000a0b: RETURNDATACOPY 00000a0c: RETURNDATASIZE 00000a0d: PUSH1 0x00 00000a0f: REVERT 00000a10: JUMPDEST 00000a11: POP 00000a12: POP 00000a13: POP 00000a14: POP 00000a15: PUSH1 0x40 00000a17: MLOAD 00000a18: RETURNDATASIZE 00000a19: PUSH1 0x1f 00000a1b: NOT 00000a1c: PUSH1 0x1f 00000a1e: DUP3 00000a1f: ADD 00000a20: AND 00000a21: DUP3 00000a22: ADD 00000a23: DUP1 00000a24: PUSH1 0x40 00000a26: MSTORE 00000a27: POP 00000a28: DUP2 00000a29: ADD 00000a2a: SWAP1 00000a2b: PUSH2 0x0a34 00000a2e: SWAP2 00000a2f: SWAP1 00000a30: PUSH2 0x3406 00000a33: JUMP 00000a34: JUMPDEST 00000a35: ISZERO 00000a36: JUMPDEST 00000a37: ISZERO 00000a38: PUSH2 0x0a6d 00000a3b: JUMPI 00000a3c: PUSH1 0x40 00000a3e: MLOAD 00000a3f: PUSH32 0xc22a648e00000000000000000000000000000000000000000000000000000000 00000a60: DUP2 00000a61: MSTORE 00000a62: PUSH1 0x04 00000a64: ADD 00000a65: PUSH1 0x40 00000a67: MLOAD 00000a68: DUP1 00000a69: SWAP2 00000a6a: SUB 00000a6b: SWAP1 00000a6c: REVERT 00000a6d: JUMPDEST 00000a6e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a83: DUP3 00000a84: AND 00000a85: PUSH1 0x00 00000a87: SWAP1 00000a88: DUP2 00000a89: MSTORE 00000a8a: PUSH1 0x6f 00000a8c: PUSH1 0x20 00000a8e: MSTORE 00000a8f: PUSH1 0x40 00000a91: SWAP1 00000a92: KECCAK256 00000a93: SLOAD 00000a94: PUSH2 0x0a9e 00000a97: DUP2 00000a98: PUSH1 0x01 00000a9a: PUSH2 0x3452 00000a9d: JUMP 00000a9e: JUMPDEST 00000a9f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ab4: DUP5 00000ab5: AND 00000ab6: PUSH1 0x00 00000ab8: DUP2 00000ab9: DUP2 00000aba: MSTORE 00000abb: PUSH1 0x6f 00000abd: PUSH1 0x20 00000abf: SWAP1 00000ac0: DUP2 00000ac1: MSTORE 00000ac2: PUSH1 0x40 00000ac4: SWAP2 00000ac5: DUP3 00000ac6: SWAP1 00000ac7: KECCAK256 00000ac8: SWAP4 00000ac9: SWAP1 00000aca: SWAP4 00000acb: SSTORE 00000acc: MLOAD 00000acd: DUP4 00000ace: ISZERO 00000acf: DUP2 00000ad0: MSTORE 00000ad1: SWAP1 00000ad2: SWAP2 00000ad3: PUSH32 0x81d714ca01079a19c106993b49b2764df6bb6abe740164ef7b77ee9c100a024a 00000af4: SWAP2 00000af5: ADD 00000af6: PUSH1 0x40 00000af8: MLOAD 00000af9: DUP1 00000afa: SWAP2 00000afb: SUB 00000afc: SWAP1 00000afd: LOG2 00000afe: POP 00000aff: POP 00000b00: POP 00000b01: JUMP 00000b02: JUMPDEST 00000b03: PUSH1 0x6b 00000b05: SLOAD 00000b06: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b1b: AND 00000b1c: ISZERO 00000b1d: PUSH2 0x0b52 00000b20: JUMPI 00000b21: PUSH1 0x40 00000b23: MLOAD 00000b24: PUSH32 0x0583257400000000000000000000000000000000000000000000000000000000 00000b45: DUP2 00000b46: MSTORE 00000b47: PUSH1 0x04 00000b49: ADD 00000b4a: PUSH1 0x40 00000b4c: MLOAD 00000b4d: DUP1 00000b4e: SWAP2 00000b4f: SUB 00000b50: SWAP1 00000b51: REVERT 00000b52: JUMPDEST 00000b53: PUSH1 0x6b 00000b55: SLOAD 00000b56: PUSH21 0x010000000000000000000000000000000000000000 00000b6c: SWAP1 00000b6d: DIV 00000b6e: PUSH6 0xffffffffffff 00000b75: AND 00000b76: TIMESTAMP 00000b77: LT 00000b78: PUSH2 0x0bad 00000b7b: JUMPI 00000b7c: PUSH1 0x40 00000b7e: MLOAD 00000b7f: PUSH32 0x1a8f039500000000000000000000000000000000000000000000000000000000 00000ba0: DUP2 00000ba1: MSTORE 00000ba2: PUSH1 0x04 00000ba4: ADD 00000ba5: PUSH1 0x40 00000ba7: MLOAD 00000ba8: DUP1 00000ba9: SWAP2 00000baa: SUB 00000bab: SWAP1 00000bac: REVERT 00000bad: JUMPDEST 00000bae: PUSH1 0x6c 00000bb0: SLOAD 00000bb1: PUSH1 0x69 00000bb3: SLOAD 00000bb4: PUSH2 0x0bd9 00000bb7: SWAP2 00000bb8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bcd: SWAP1 00000bce: SWAP2 00000bcf: AND 00000bd0: SWAP1 00000bd1: CALLER 00000bd2: SWAP1 00000bd3: ADDRESS 00000bd4: SWAP1 00000bd5: PUSH2 0x23f1 00000bd8: JUMP 00000bd9: JUMPDEST 00000bda: PUSH1 0x6b 00000bdc: DUP1 00000bdd: SLOAD 00000bde: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00000bff: AND 00000c00: CALLER 00000c01: OR 00000c02: SWAP1 00000c03: SSTORE 00000c04: PUSH1 0x40 00000c06: MLOAD 00000c07: PUSH32 0x5eca00b8ed745eee61451333090bfa56aa1f2a9e696a2aebe5f1f5b6cef6f2ff 00000c28: SWAP1 00000c29: PUSH2 0x0804 00000c2c: SWAP1 00000c2d: DUP4 00000c2e: SWAP1 00000c2f: PUSH2 0x3489 00000c32: JUMP 00000c33: JUMPDEST 00000c34: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c49: PUSH32 0x0000000000000000000000000e6590f64a82cbc838b2a087281689de1a5bc8e0 00000c6a: AND 00000c6b: ADDRESS 00000c6c: SUB 00000c6d: PUSH2 0x0cfd 00000c70: JUMPI 00000c71: PUSH1 0x40 00000c73: MLOAD 00000c74: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000c95: DUP2 00000c96: MSTORE 00000c97: PUSH1 0x20 00000c99: PUSH1 0x04 00000c9b: DUP3 00000c9c: ADD 00000c9d: MSTORE 00000c9e: PUSH1 0x2c 00000ca0: PUSH1 0x24 00000ca2: DUP3 00000ca3: ADD 00000ca4: MSTORE 00000ca5: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820 00000cc6: PUSH1 0x44 00000cc8: DUP3 00000cc9: ADD 00000cca: MSTORE 00000ccb: PUSH32 0x64656c656761746563616c6c0000000000000000000000000000000000000000 00000cec: PUSH1 0x64 00000cee: DUP3 00000cef: ADD 00000cf0: MSTORE 00000cf1: PUSH1 0x84 00000cf3: ADD 00000cf4: JUMPDEST 00000cf5: PUSH1 0x40 00000cf7: MLOAD 00000cf8: DUP1 00000cf9: SWAP2 00000cfa: SUB 00000cfb: SWAP1 00000cfc: REVERT 00000cfd: JUMPDEST 00000cfe: PUSH32 0x0000000000000000000000000e6590f64a82cbc838b2a087281689de1a5bc8e0 00000d1f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d34: AND 00000d35: PUSH2 0x0d72 00000d38: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 00000d59: SLOAD 00000d5a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d6f: AND 00000d70: SWAP1 00000d71: JUMP 00000d72: JUMPDEST 00000d73: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d88: AND 00000d89: EQ 00000d8a: PUSH2 0x0e15 00000d8d: JUMPI 00000d8e: PUSH1 0x40 00000d90: MLOAD 00000d91: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000db2: DUP2 00000db3: MSTORE 00000db4: PUSH1 0x20 00000db6: PUSH1 0x04 00000db8: DUP3 00000db9: ADD 00000dba: MSTORE 00000dbb: PUSH1 0x2c 00000dbd: PUSH1 0x24 00000dbf: DUP3 00000dc0: ADD 00000dc1: MSTORE 00000dc2: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820 00000de3: PUSH1 0x44 00000de5: DUP3 00000de6: ADD 00000de7: MSTORE 00000de8: PUSH32 0x6163746976652070726f78790000000000000000000000000000000000000000 00000e09: PUSH1 0x64 00000e0b: DUP3 00000e0c: ADD 00000e0d: MSTORE 00000e0e: PUSH1 0x84 00000e10: ADD 00000e11: PUSH2 0x0cf4 00000e14: JUMP 00000e15: JUMPDEST 00000e16: PUSH2 0x0e1e 00000e19: DUP2 00000e1a: PUSH2 0x2455 00000e1d: JUMP 00000e1e: JUMPDEST 00000e1f: PUSH1 0x40 00000e21: DUP1 00000e22: MLOAD 00000e23: PUSH1 0x00 00000e25: DUP1 00000e26: DUP3 00000e27: MSTORE 00000e28: PUSH1 0x20 00000e2a: DUP3 00000e2b: ADD 00000e2c: SWAP1 00000e2d: SWAP3 00000e2e: MSTORE 00000e2f: PUSH2 0x0e3a 00000e32: SWAP2 00000e33: DUP4 00000e34: SWAP2 00000e35: SWAP1 00000e36: PUSH2 0x253f 00000e39: JUMP 00000e3a: JUMPDEST 00000e3b: POP 00000e3c: JUMP 00000e3d: JUMPDEST 00000e3e: PUSH1 0x6a 00000e40: SLOAD 00000e41: PUSH1 0x40 00000e43: MLOAD 00000e44: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000 00000e65: DUP2 00000e66: MSTORE 00000e67: CALLER 00000e68: PUSH1 0x04 00000e6a: DUP3 00000e6b: ADD 00000e6c: MSTORE 00000e6d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e82: SWAP1 00000e83: SWAP2 00000e84: AND 00000e85: SWAP1 00000e86: PUSH4 0xe43581b8 00000e8b: SWAP1 00000e8c: PUSH1 0x24 00000e8e: ADD 00000e8f: PUSH1 0x20 00000e91: PUSH1 0x40 00000e93: MLOAD 00000e94: DUP1 00000e95: DUP4 00000e96: SUB 00000e97: DUP2 00000e98: DUP7 00000e99: GAS 00000e9a: STATICCALL 00000e9b: ISZERO 00000e9c: DUP1 00000e9d: ISZERO 00000e9e: PUSH2 0x0eab 00000ea1: JUMPI 00000ea2: RETURNDATASIZE 00000ea3: PUSH1 0x00 00000ea5: DUP1 00000ea6: RETURNDATACOPY 00000ea7: RETURNDATASIZE 00000ea8: PUSH1 0x00 00000eaa: REVERT 00000eab: JUMPDEST 00000eac: POP 00000ead: POP 00000eae: POP 00000eaf: POP 00000eb0: PUSH1 0x40 00000eb2: MLOAD 00000eb3: RETURNDATASIZE 00000eb4: PUSH1 0x1f 00000eb6: NOT 00000eb7: PUSH1 0x1f 00000eb9: DUP3 00000eba: ADD 00000ebb: AND 00000ebc: DUP3 00000ebd: ADD 00000ebe: DUP1 00000ebf: PUSH1 0x40 00000ec1: MSTORE 00000ec2: POP 00000ec3: DUP2 00000ec4: ADD 00000ec5: SWAP1 00000ec6: PUSH2 0x0ecf 00000ec9: SWAP2 00000eca: SWAP1 00000ecb: PUSH2 0x3406 00000ece: JUMP 00000ecf: JUMPDEST 00000ed0: PUSH2 0x0f05 00000ed3: JUMPI 00000ed4: PUSH1 0x40 00000ed6: MLOAD 00000ed7: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000 00000ef8: DUP2 00000ef9: MSTORE 00000efa: PUSH1 0x04 00000efc: ADD 00000efd: PUSH1 0x40 00000eff: MLOAD 00000f00: DUP1 00000f01: SWAP2 00000f02: SUB 00000f03: SWAP1 00000f04: REVERT 00000f05: JUMPDEST 00000f06: PUSH1 0x6b 00000f08: DUP1 00000f09: SLOAD 00000f0a: PUSH26 0xffffffffffffffffffffffffffffffffffffffffffffffffffff 00000f25: AND 00000f26: PUSH27 0x010000000000000000000000000000000000000000000000000000 00000f42: PUSH6 0xffffffffffff 00000f49: DUP5 00000f4a: AND 00000f4b: SWAP1 00000f4c: DUP2 00000f4d: MUL 00000f4e: SWAP2 00000f4f: SWAP1 00000f50: SWAP2 00000f51: OR 00000f52: SWAP1 00000f53: SWAP2 00000f54: SSTORE 00000f55: PUSH1 0x40 00000f57: MLOAD 00000f58: SWAP1 00000f59: DUP2 00000f5a: MSTORE 00000f5b: PUSH32 0xfdf22e84af74bd4ab6b9646f6370a02bc886ed6ac25882db14e4ebf4b8e3bc7e 00000f7c: SWAP1 00000f7d: PUSH1 0x20 00000f7f: ADD 00000f80: PUSH2 0x0804 00000f83: JUMP 00000f84: JUMPDEST 00000f85: PUSH1 0x6b 00000f87: SLOAD 00000f88: PUSH1 0x00 00000f8a: SWAP1 00000f8b: PUSH21 0x010000000000000000000000000000000000000000 00000fa1: SWAP1 00000fa2: DIV 00000fa3: PUSH6 0xffffffffffff 00000faa: AND 00000fab: TIMESTAMP 00000fac: LT 00000fad: DUP1 00000fae: ISZERO 00000faf: SWAP1 00000fb0: PUSH2 0x0fcf 00000fb3: JUMPI 00000fb4: POP 00000fb5: PUSH1 0x6b 00000fb7: SLOAD 00000fb8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000fcd: AND 00000fce: ISZERO 00000fcf: JUMPDEST 00000fd0: ISZERO 00000fd1: PUSH2 0x0fdb 00000fd4: JUMPI 00000fd5: POP 00000fd6: PUSH1 0x65 00000fd8: SLOAD 00000fd9: SWAP1 00000fda: JUMP 00000fdb: JUMPDEST 00000fdc: POP 00000fdd: PUSH1 0x67 00000fdf: SLOAD 00000fe0: SWAP1 00000fe1: JUMP 00000fe2: JUMPDEST 00000fe3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ff8: PUSH32 0x0000000000000000000000000e6590f64a82cbc838b2a087281689de1a5bc8e0 00001019: AND 0000101a: ADDRESS 0000101b: SUB 0000101c: PUSH2 0x10a7 0000101f: JUMPI 00001020: PUSH1 0x40 00001022: MLOAD 00001023: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001044: DUP2 00001045: MSTORE 00001046: PUSH1 0x20 00001048: PUSH1 0x04 0000104a: DUP3 0000104b: ADD 0000104c: MSTORE 0000104d: PUSH1 0x2c 0000104f: PUSH1 0x24 00001051: DUP3 00001052: ADD 00001053: MSTORE 00001054: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820 00001075: PUSH1 0x44 00001077: DUP3 00001078: ADD 00001079: MSTORE 0000107a: PUSH32 0x64656c656761746563616c6c0000000000000000000000000000000000000000 0000109b: PUSH1 0x64 0000109d: DUP3 0000109e: ADD 0000109f: MSTORE 000010a0: PUSH1 0x84 000010a2: ADD 000010a3: PUSH2 0x0cf4 000010a6: JUMP 000010a7: JUMPDEST 000010a8: PUSH32 0x0000000000000000000000000e6590f64a82cbc838b2a087281689de1a5bc8e0 000010c9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000010de: AND 000010df: PUSH2 0x111c 000010e2: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 00001103: SLOAD 00001104: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001119: AND 0000111a: SWAP1 0000111b: JUMP 0000111c: JUMPDEST 0000111d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001132: AND 00001133: EQ 00001134: PUSH2 0x11bf 00001137: JUMPI 00001138: PUSH1 0x40 0000113a: MLOAD 0000113b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000115c: DUP2 0000115d: MSTORE 0000115e: PUSH1 0x20 00001160: PUSH1 0x04 00001162: DUP3 00001163: ADD 00001164: MSTORE 00001165: PUSH1 0x2c 00001167: PUSH1 0x24 00001169: DUP3 0000116a: ADD 0000116b: MSTORE 0000116c: PUSH32 0x46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820 0000118d: PUSH1 0x44 0000118f: DUP3 00001190: ADD 00001191: MSTORE 00001192: PUSH32 0x6163746976652070726f78790000000000000000000000000000000000000000 000011b3: PUSH1 0x64 000011b5: DUP3 000011b6: ADD 000011b7: MSTORE 000011b8: PUSH1 0x84 000011ba: ADD 000011bb: PUSH2 0x0cf4 000011be: JUMP 000011bf: JUMPDEST 000011c0: PUSH2 0x11c8 000011c3: DUP3 000011c4: PUSH2 0x2455 000011c7: JUMP 000011c8: JUMPDEST 000011c9: PUSH2 0x11d4 000011cc: DUP3 000011cd: DUP3 000011ce: PUSH1 0x01 000011d0: PUSH2 0x253f 000011d3: JUMP 000011d4: JUMPDEST 000011d5: POP 000011d6: POP 000011d7: JUMP 000011d8: JUMPDEST 000011d9: PUSH1 0x00 000011db: ADDRESS 000011dc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011f1: PUSH32 0x0000000000000000000000000e6590f64a82cbc838b2a087281689de1a5bc8e0 00001212: AND 00001213: EQ 00001214: PUSH2 0x129f 00001217: JUMPI 00001218: PUSH1 0x40 0000121a: MLOAD 0000121b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000123c: DUP2 0000123d: MSTORE 0000123e: PUSH1 0x20 00001240: PUSH1 0x04 00001242: DUP3 00001243: ADD 00001244: MSTORE 00001245: PUSH1 0x38 00001247: PUSH1 0x24 00001249: DUP3 0000124a: ADD 0000124b: MSTORE 0000124c: PUSH32 0x555550535570677261646561626c653a206d757374206e6f742062652063616c 0000126d: PUSH1 0x44 0000126f: DUP3 00001270: ADD 00001271: MSTORE 00001272: PUSH32 0x6c6564207468726f7567682064656c656761746563616c6c0000000000000000 00001293: PUSH1 0x64 00001295: DUP3 00001296: ADD 00001297: MSTORE 00001298: PUSH1 0x84 0000129a: ADD 0000129b: PUSH2 0x0cf4 0000129e: JUMP 0000129f: JUMPDEST 000012a0: POP 000012a1: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 000012c2: SWAP1 000012c3: JUMP 000012c4: JUMPDEST 000012c5: PUSH1 0x6a 000012c7: SLOAD 000012c8: PUSH1 0x40 000012ca: MLOAD 000012cb: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000 000012ec: DUP2 000012ed: MSTORE 000012ee: CALLER 000012ef: PUSH1 0x04 000012f1: DUP3 000012f2: ADD 000012f3: MSTORE 000012f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001309: SWAP1 0000130a: SWAP2 0000130b: AND 0000130c: SWAP1 0000130d: PUSH4 0xe43581b8 00001312: SWAP1 00001313: PUSH1 0x24 00001315: ADD 00001316: PUSH1 0x20 00001318: PUSH1 0x40 0000131a: MLOAD 0000131b: DUP1 0000131c: DUP4 0000131d: SUB 0000131e: DUP2 0000131f: DUP7 00001320: GAS 00001321: STATICCALL 00001322: ISZERO 00001323: DUP1 00001324: ISZERO 00001325: PUSH2 0x1332 00001328: JUMPI 00001329: RETURNDATASIZE 0000132a: PUSH1 0x00 0000132c: DUP1 0000132d: RETURNDATACOPY 0000132e: RETURNDATASIZE 0000132f: PUSH1 0x00 00001331: REVERT 00001332: JUMPDEST 00001333: POP 00001334: POP 00001335: POP 00001336: POP 00001337: PUSH1 0x40 00001339: MLOAD 0000133a: RETURNDATASIZE 0000133b: PUSH1 0x1f 0000133d: NOT 0000133e: PUSH1 0x1f 00001340: DUP3 00001341: ADD 00001342: AND 00001343: DUP3 00001344: ADD 00001345: DUP1 00001346: PUSH1 0x40 00001348: MSTORE 00001349: POP 0000134a: DUP2 0000134b: ADD 0000134c: SWAP1 0000134d: PUSH2 0x1356 00001350: SWAP2 00001351: SWAP1 00001352: PUSH2 0x3406 00001355: JUMP 00001356: JUMPDEST 00001357: PUSH2 0x138c 0000135a: JUMPI 0000135b: PUSH1 0x40 0000135d: MLOAD 0000135e: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000 0000137f: DUP2 00001380: MSTORE 00001381: PUSH1 0x04 00001383: ADD 00001384: PUSH1 0x40 00001386: MLOAD 00001387: DUP1 00001388: SWAP2 00001389: SUB 0000138a: SWAP1 0000138b: REVERT 0000138c: JUMPDEST 0000138d: PUSH1 0x6b 0000138f: SLOAD 00001390: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013a5: AND 000013a6: ISZERO 000013a7: PUSH2 0x13dc 000013aa: JUMPI 000013ab: PUSH1 0x40 000013ad: MLOAD 000013ae: PUSH32 0x0583257400000000000000000000000000000000000000000000000000000000 000013cf: DUP2 000013d0: MSTORE 000013d1: PUSH1 0x04 000013d3: ADD 000013d4: PUSH1 0x40 000013d6: MLOAD 000013d7: DUP1 000013d8: SWAP2 000013d9: SUB 000013da: SWAP1 000013db: REVERT 000013dc: JUMPDEST 000013dd: PUSH1 0x69 000013df: DUP1 000013e0: SLOAD 000013e1: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00001402: AND 00001403: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001418: DUP4 00001419: AND 0000141a: SWAP1 0000141b: DUP2 0000141c: OR 0000141d: SWAP1 0000141e: SWAP2 0000141f: SSTORE 00001420: PUSH1 0x40 00001422: MLOAD 00001423: PUSH32 0x1db8d6629941dcb63d5e0c927b89c174c714e139a4b9107a49de839d755f5d74 00001444: SWAP1 00001445: PUSH1 0x00 00001447: SWAP1 00001448: LOG2 00001449: POP 0000144a: JUMP 0000144b: JUMPDEST 0000144c: DUP7 0000144d: DUP1 0000144e: ISZERO 0000144f: DUP1 00001450: PUSH2 0x1459 00001453: JUMPI 00001454: POP 00001455: DUP1 00001456: DUP7 00001457: EQ 00001458: ISZERO 00001459: JUMPDEST 0000145a: DUP1 0000145b: PUSH2 0x1464 0000145e: JUMPI 0000145f: POP 00001460: DUP1 00001461: DUP5 00001462: EQ 00001463: ISZERO 00001464: JUMPDEST 00001465: DUP1 00001466: PUSH2 0x146f 00001469: JUMPI 0000146a: POP 0000146b: DUP1 0000146c: DUP3 0000146d: EQ 0000146e: ISZERO 0000146f: JUMPDEST 00001470: ISZERO 00001471: PUSH2 0x14a6 00001474: JUMPI 00001475: PUSH1 0x40 00001477: MLOAD 00001478: PUSH32 0x1df89e8b00000000000000000000000000000000000000000000000000000000 00001499: DUP2 0000149a: MSTORE 0000149b: PUSH1 0x04 0000149d: ADD 0000149e: PUSH1 0x40 000014a0: MLOAD 000014a1: DUP1 000014a2: SWAP2 000014a3: SUB 000014a4: SWAP1 000014a5: REVERT 000014a6: JUMPDEST 000014a7: PUSH1 0x00 000014a9: JUMPDEST 000014aa: DUP2 000014ab: DUP2 000014ac: LT 000014ad: ISZERO 000014ae: PUSH2 0x1888 000014b1: JUMPI 000014b2: PUSH1 0x00 000014b4: DUP11 000014b5: DUP11 000014b6: DUP4 000014b7: DUP2 000014b8: DUP2 000014b9: LT 000014ba: PUSH2 0x14c5 000014bd: JUMPI 000014be: PUSH2 0x14c5 000014c1: PUSH2 0x34da 000014c4: JUMP 000014c5: JUMPDEST 000014c6: SWAP1 000014c7: POP 000014c8: PUSH1 0x20 000014ca: MUL 000014cb: ADD 000014cc: PUSH1 0x20 000014ce: DUP2 000014cf: ADD 000014d0: SWAP1 000014d1: PUSH2 0x14da 000014d4: SWAP2 000014d5: SWAP1 000014d6: PUSH2 0x30fe 000014d9: JUMP 000014da: JUMPDEST 000014db: SWAP1 000014dc: POP 000014dd: PUSH1 0x00 000014df: DUP10 000014e0: DUP10 000014e1: DUP5 000014e2: DUP2 000014e3: DUP2 000014e4: LT 000014e5: PUSH2 0x14f0 000014e8: JUMPI 000014e9: PUSH2 0x14f0 000014ec: PUSH2 0x34da 000014ef: JUMP 000014f0: JUMPDEST 000014f1: SWAP1 000014f2: POP 000014f3: PUSH1 0x20 000014f5: MUL 000014f6: ADD 000014f7: PUSH1 0x20 000014f9: DUP2 000014fa: ADD 000014fb: SWAP1 000014fc: PUSH2 0x1505 000014ff: SWAP2 00001500: SWAP1 00001501: PUSH2 0x30fe 00001504: JUMP 00001505: JUMPDEST 00001506: SWAP1 00001507: POP 00001508: PUSH1 0x00 0000150a: DUP9 0000150b: DUP9 0000150c: DUP6 0000150d: DUP2 0000150e: DUP2 0000150f: LT 00001510: PUSH2 0x151b 00001513: JUMPI 00001514: PUSH2 0x151b 00001517: PUSH2 0x34da 0000151a: JUMP 0000151b: JUMPDEST 0000151c: SWAP1 0000151d: POP 0000151e: PUSH1 0x20 00001520: MUL 00001521: ADD 00001522: CALLDATALOAD 00001523: SWAP1 00001524: POP 00001525: DUP3 00001526: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000153b: AND 0000153c: CALLER 0000153d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001552: AND 00001553: EQ 00001554: ISZERO 00001555: DUP1 00001556: ISZERO 00001557: PUSH2 0x1576 0000155a: JUMPI 0000155b: POP 0000155c: ORIGIN 0000155d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001572: DUP5 00001573: AND 00001574: EQ 00001575: ISZERO 00001576: JUMPDEST 00001577: DUP1 00001578: ISZERO 00001579: PUSH2 0x15b0 0000157c: JUMPI 0000157d: POP 0000157e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001593: DUP4 00001594: AND 00001595: PUSH1 0x00 00001597: SWAP1 00001598: DUP2 00001599: MSTORE 0000159a: PUSH1 0x70 0000159c: PUSH1 0x20 0000159e: SWAP1 0000159f: DUP2 000015a0: MSTORE 000015a1: PUSH1 0x40 000015a3: DUP1 000015a4: DUP4 000015a5: KECCAK256 000015a6: CALLER 000015a7: DUP5 000015a8: MSTORE 000015a9: SWAP1 000015aa: SWAP2 000015ab: MSTORE 000015ac: SWAP1 000015ad: KECCAK256 000015ae: SLOAD 000015af: ISZERO 000015b0: JUMPDEST 000015b1: ISZERO 000015b2: PUSH2 0x15e7 000015b5: JUMPI 000015b6: PUSH1 0x40 000015b8: MLOAD 000015b9: PUSH32 0x584a793800000000000000000000000000000000000000000000000000000000 000015da: DUP2 000015db: MSTORE 000015dc: PUSH1 0x04 000015de: ADD 000015df: PUSH1 0x40 000015e1: MLOAD 000015e2: DUP1 000015e3: SWAP2 000015e4: SUB 000015e5: SWAP1 000015e6: REVERT 000015e7: JUMPDEST 000015e8: PUSH1 0x40 000015ea: DUP1 000015eb: MLOAD 000015ec: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001601: DUP1 00001602: DUP7 00001603: AND 00001604: PUSH1 0x20 00001606: DUP4 00001607: ADD 00001608: MSTORE 00001609: DUP5 0000160a: AND 0000160b: SWAP2 0000160c: DUP2 0000160d: ADD 0000160e: SWAP2 0000160f: SWAP1 00001610: SWAP2 00001611: MSTORE 00001612: PUSH1 0x60 00001614: DUP2 00001615: ADD 00001616: DUP3 00001617: SWAP1 00001618: MSTORE 00001619: PUSH1 0x00 0000161b: SWAP1 0000161c: PUSH1 0x80 0000161e: ADD 0000161f: PUSH1 0x40 00001621: MLOAD 00001622: PUSH1 0x20 00001624: DUP2 00001625: DUP4 00001626: SUB 00001627: SUB 00001628: DUP2 00001629: MSTORE 0000162a: SWAP1 0000162b: PUSH1 0x40 0000162d: MSTORE 0000162e: DUP1 0000162f: MLOAD 00001630: SWAP1 00001631: PUSH1 0x20 00001633: ADD 00001634: KECCAK256 00001635: SWAP1 00001636: POP 00001637: PUSH2 0x1695 0000163a: DUP2 0000163b: DUP10 0000163c: DUP10 0000163d: DUP9 0000163e: DUP2 0000163f: DUP2 00001640: LT 00001641: PUSH2 0x164c 00001644: JUMPI 00001645: PUSH2 0x164c 00001648: PUSH2 0x34da 0000164b: JUMP 0000164c: JUMPDEST 0000164d: SWAP1 0000164e: POP 0000164f: PUSH1 0x20 00001651: MUL 00001652: DUP2 00001653: ADD 00001654: SWAP1 00001655: PUSH2 0x165e 00001658: SWAP2 00001659: SWAP1 0000165a: PUSH2 0x3509 0000165d: JUMP 0000165e: JUMPDEST 0000165f: DUP1 00001660: DUP1 00001661: PUSH1 0x20 00001663: MUL 00001664: PUSH1 0x20 00001666: ADD 00001667: PUSH1 0x40 00001669: MLOAD 0000166a: SWAP1 0000166b: DUP2 0000166c: ADD 0000166d: PUSH1 0x40 0000166f: MSTORE 00001670: DUP1 00001671: SWAP4 00001672: SWAP3 00001673: SWAP2 00001674: SWAP1 00001675: DUP2 00001676: DUP2 00001677: MSTORE 00001678: PUSH1 0x20 0000167a: ADD 0000167b: DUP4 0000167c: DUP4 0000167d: PUSH1 0x20 0000167f: MUL 00001680: DUP1 00001681: DUP3 00001682: DUP5 00001683: CALLDATACOPY 00001684: PUSH1 0x00 00001686: SWAP3 00001687: ADD 00001688: SWAP2 00001689: SWAP1 0000168a: SWAP2 0000168b: MSTORE 0000168c: POP 0000168d: PUSH2 0x273e 00001690: SWAP3 00001691: POP 00001692: POP 00001693: POP 00001694: JUMP 00001695: JUMPDEST 00001696: PUSH2 0x16cb 00001699: JUMPI 0000169a: PUSH1 0x40 0000169c: MLOAD 0000169d: PUSH32 0x09bde33900000000000000000000000000000000000000000000000000000000 000016be: DUP2 000016bf: MSTORE 000016c0: PUSH1 0x04 000016c2: ADD 000016c3: PUSH1 0x40 000016c5: MLOAD 000016c6: DUP1 000016c7: SWAP2 000016c8: SUB 000016c9: SWAP1 000016ca: REVERT 000016cb: JUMPDEST 000016cc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016e1: DUP1 000016e2: DUP6 000016e3: AND 000016e4: PUSH1 0x00 000016e6: SWAP1 000016e7: DUP2 000016e8: MSTORE 000016e9: PUSH1 0x6d 000016eb: PUSH1 0x20 000016ed: SWAP1 000016ee: DUP2 000016ef: MSTORE 000016f0: PUSH1 0x40 000016f2: DUP1 000016f3: DUP4 000016f4: KECCAK256 000016f5: SWAP4 000016f6: DUP8 000016f7: AND 000016f8: DUP4 000016f9: MSTORE 000016fa: SWAP3 000016fb: SWAP1 000016fc: MSTORE 000016fd: SWAP1 000016fe: DUP2 000016ff: KECCAK256 00001700: SLOAD 00001701: PUSH2 0x1726 00001704: SWAP1 00001705: PUSH26 0xffffffffffffffffffffffffffffffffffffffffffffffffffff 00001720: AND 00001721: DUP5 00001722: PUSH2 0x3452 00001725: JUMP 00001726: JUMPDEST 00001727: SWAP1 00001728: POP 00001729: PUSH1 0x40 0000172b: MLOAD 0000172c: DUP1 0000172d: PUSH1 0x60 0000172f: ADD 00001730: PUSH1 0x40 00001732: MSTORE 00001733: DUP1 00001734: PUSH2 0x173c 00001737: DUP6 00001738: PUSH2 0x286a 0000173b: JUMP 0000173c: JUMPDEST 0000173d: PUSH26 0xffffffffffffffffffffffffffffffffffffffffffffffffffff 00001758: AND 00001759: DUP2 0000175a: MSTORE 0000175b: PUSH1 0x20 0000175d: ADD 0000175e: TIMESTAMP 0000175f: PUSH6 0xffffffffffff 00001766: AND 00001767: DUP2 00001768: MSTORE 00001769: PUSH1 0x20 0000176b: ADD 0000176c: PUSH2 0x1773 0000176f: PUSH2 0x0f84 00001772: JUMP 00001773: JUMPDEST 00001774: SWAP1 00001775: MSTORE 00001776: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000178b: DUP1 0000178c: DUP8 0000178d: AND 0000178e: PUSH1 0x00 00001790: SWAP1 00001791: DUP2 00001792: MSTORE 00001793: PUSH1 0x6d 00001795: PUSH1 0x20 00001797: SWAP1 00001798: DUP2 00001799: MSTORE 0000179a: PUSH1 0x40 0000179c: DUP1 0000179d: DUP4 0000179e: KECCAK256 0000179f: SWAP4 000017a0: DUP10 000017a1: AND 000017a2: DUP1 000017a3: DUP5 000017a4: MSTORE 000017a5: SWAP4 000017a6: DUP3 000017a7: MSTORE 000017a8: SWAP2 000017a9: DUP3 000017aa: SWAP1 000017ab: KECCAK256 000017ac: DUP5 000017ad: MLOAD 000017ae: SWAP2 000017af: DUP6 000017b0: ADD 000017b1: MLOAD 000017b2: PUSH6 0xffffffffffff 000017b9: AND 000017ba: PUSH27 0x010000000000000000000000000000000000000000000000000000 000017d6: MUL 000017d7: PUSH26 0xffffffffffffffffffffffffffffffffffffffffffffffffffff 000017f2: SWAP1 000017f3: SWAP3 000017f4: AND 000017f5: SWAP2 000017f6: SWAP1 000017f7: SWAP2 000017f8: OR 000017f9: DUP2 000017fa: SSTORE 000017fb: SWAP3 000017fc: ADD 000017fd: MLOAD 000017fe: PUSH1 0x01 00001800: SWAP1 00001801: SWAP3 00001802: ADD 00001803: SWAP2 00001804: SWAP1 00001805: SWAP2 00001806: SSTORE 00001807: PUSH2 0x1811 0000180a: SWAP1 0000180b: DUP7 0000180c: DUP4 0000180d: PUSH2 0x2318 00001810: JUMP 00001811: JUMPDEST 00001812: DUP4 00001813: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001828: AND 00001829: DUP6 0000182a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000183f: AND 00001840: PUSH32 0xf7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd3992683 00001861: DUP4 00001862: PUSH1 0x40 00001864: MLOAD 00001865: PUSH2 0x1870 00001868: SWAP2 00001869: DUP2 0000186a: MSTORE 0000186b: PUSH1 0x20 0000186d: ADD 0000186e: SWAP1 0000186f: JUMP 00001870: JUMPDEST 00001871: PUSH1 0x40 00001873: MLOAD 00001874: DUP1 00001875: SWAP2 00001876: SUB 00001877: SWAP1 00001878: LOG3 00001879: DUP6 0000187a: PUSH1 0x01 0000187c: ADD 0000187d: SWAP6 0000187e: POP 0000187f: POP 00001880: POP 00001881: POP 00001882: POP 00001883: POP 00001884: PUSH2 0x14a9 00001887: JUMP 00001888: JUMPDEST 00001889: POP 0000188a: POP 0000188b: POP 0000188c: POP 0000188d: POP 0000188e: POP 0000188f: POP 00001890: POP 00001891: POP 00001892: POP 00001893: JUMP 00001894: JUMPDEST 00001895: PUSH1 0x6a 00001897: SLOAD 00001898: PUSH1 0x40 0000189a: MLOAD 0000189b: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000 000018bc: DUP2 000018bd: MSTORE 000018be: CALLER 000018bf: PUSH1 0x04 000018c1: DUP3 000018c2: ADD 000018c3: MSTORE 000018c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018d9: SWAP1 000018da: SWAP2 000018db: AND 000018dc: SWAP1 000018dd: PUSH4 0xe43581b8 000018e2: SWAP1 000018e3: PUSH1 0x24 000018e5: ADD 000018e6: PUSH1 0x20 000018e8: PUSH1 0x40 000018ea: MLOAD 000018eb: DUP1 000018ec: DUP4 000018ed: SUB 000018ee: DUP2 000018ef: DUP7 000018f0: GAS 000018f1: STATICCALL 000018f2: ISZERO 000018f3: DUP1 000018f4: ISZERO 000018f5: PUSH2 0x1902 000018f8: JUMPI 000018f9: RETURNDATASIZE 000018fa: PUSH1 0x00 000018fc: DUP1 000018fd: RETURNDATACOPY 000018fe: RETURNDATASIZE 000018ff: PUSH1 0x00 00001901: REVERT 00001902: JUMPDEST 00001903: POP 00001904: POP 00001905: POP 00001906: POP 00001907: PUSH1 0x40 00001909: MLOAD 0000190a: RETURNDATASIZE 0000190b: PUSH1 0x1f 0000190d: NOT 0000190e: PUSH1 0x1f 00001910: DUP3 00001911: ADD 00001912: AND 00001913: DUP3 00001914: ADD 00001915: DUP1 00001916: PUSH1 0x40 00001918: MSTORE 00001919: POP 0000191a: DUP2 0000191b: ADD 0000191c: SWAP1 0000191d: PUSH2 0x1926 00001920: SWAP2 00001921: SWAP1 00001922: PUSH2 0x3406 00001925: JUMP 00001926: JUMPDEST 00001927: PUSH2 0x195c 0000192a: JUMPI 0000192b: PUSH1 0x40 0000192d: MLOAD 0000192e: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000 0000194f: DUP2 00001950: MSTORE 00001951: PUSH1 0x04 00001953: ADD 00001954: PUSH1 0x40 00001956: MLOAD 00001957: DUP1 00001958: SWAP2 00001959: SUB 0000195a: SWAP1 0000195b: REVERT 0000195c: JUMPDEST 0000195d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001972: DUP2 00001973: AND 00001974: PUSH1 0x00 00001976: SWAP1 00001977: DUP2 00001978: MSTORE 00001979: PUSH1 0x6e 0000197b: PUSH1 0x20 0000197d: MSTORE 0000197e: PUSH1 0x40 00001980: DUP2 00001981: KECCAK256 00001982: SLOAD 00001983: PUSH2 0x198d 00001986: SWAP1 00001987: PUSH1 0x01 00001989: PUSH2 0x3452 0000198c: JUMP 0000198d: JUMPDEST 0000198e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000019a3: DUP4 000019a4: AND 000019a5: PUSH1 0x00 000019a7: DUP2 000019a8: DUP2 000019a9: MSTORE 000019aa: PUSH1 0x6e 000019ac: PUSH1 0x20 000019ae: SWAP1 000019af: DUP2 000019b0: MSTORE 000019b1: PUSH1 0x40 000019b3: SWAP2 000019b4: DUP3 000019b5: SWAP1 000019b6: KECCAK256 000019b7: DUP5 000019b8: SWAP1 000019b9: SSTORE 000019ba: SWAP1 000019bb: MLOAD 000019bc: PUSH1 0x01 000019be: DUP5 000019bf: EQ 000019c0: DUP2 000019c1: MSTORE 000019c2: SWAP3 000019c3: SWAP4 000019c4: POP 000019c5: SWAP1 000019c6: SWAP2 000019c7: PUSH32 0x7628ea5f6112a16b36a8239aa208395a8e8f221688cfb3a5461faffb9700abcd 000019e8: SWAP2 000019e9: ADD 000019ea: PUSH1 0x40 000019ec: MLOAD 000019ed: DUP1 000019ee: SWAP2 000019ef: SUB 000019f0: SWAP1 000019f1: LOG2 000019f2: POP 000019f3: POP 000019f4: JUMP 000019f5: JUMPDEST 000019f6: PUSH1 0x6a 000019f8: SLOAD 000019f9: PUSH1 0x40 000019fb: MLOAD 000019fc: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000 00001a1d: DUP2 00001a1e: MSTORE 00001a1f: CALLER 00001a20: PUSH1 0x04 00001a22: DUP3 00001a23: ADD 00001a24: MSTORE 00001a25: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a3a: SWAP1 00001a3b: SWAP2 00001a3c: AND 00001a3d: SWAP1 00001a3e: PUSH4 0xe43581b8 00001a43: SWAP1 00001a44: PUSH1 0x24 00001a46: ADD 00001a47: PUSH1 0x20 00001a49: PUSH1 0x40 00001a4b: MLOAD 00001a4c: DUP1 00001a4d: DUP4 00001a4e: SUB 00001a4f: DUP2 00001a50: DUP7 00001a51: GAS 00001a52: STATICCALL 00001a53: ISZERO 00001a54: DUP1 00001a55: ISZERO 00001a56: PUSH2 0x1a63 00001a59: JUMPI 00001a5a: RETURNDATASIZE 00001a5b: PUSH1 0x00 00001a5d: DUP1 00001a5e: RETURNDATACOPY 00001a5f: RETURNDATASIZE 00001a60: PUSH1 0x00 00001a62: REVERT 00001a63: JUMPDEST 00001a64: POP 00001a65: POP 00001a66: POP 00001a67: POP 00001a68: PUSH1 0x40 00001a6a: MLOAD 00001a6b: RETURNDATASIZE 00001a6c: PUSH1 0x1f 00001a6e: NOT 00001a6f: PUSH1 0x1f 00001a71: DUP3 00001a72: ADD 00001a73: AND 00001a74: DUP3 00001a75: ADD 00001a76: DUP1 00001a77: PUSH1 0x40 00001a79: MSTORE 00001a7a: POP 00001a7b: DUP2 00001a7c: ADD 00001a7d: SWAP1 00001a7e: PUSH2 0x1a87 00001a81: SWAP2 00001a82: SWAP1 00001a83: PUSH2 0x3406 00001a86: JUMP 00001a87: JUMPDEST 00001a88: PUSH2 0x1abd 00001a8b: JUMPI 00001a8c: PUSH1 0x40 00001a8e: MLOAD 00001a8f: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000 00001ab0: DUP2 00001ab1: MSTORE 00001ab2: PUSH1 0x04 00001ab4: ADD 00001ab5: PUSH1 0x40 00001ab7: MLOAD 00001ab8: DUP1 00001ab9: SWAP2 00001aba: SUB 00001abb: SWAP1 00001abc: REVERT 00001abd: JUMPDEST 00001abe: PUSH1 0x6b 00001ac0: SLOAD 00001ac1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ad6: AND 00001ad7: PUSH2 0x1b0c 00001ada: JUMPI 00001adb: PUSH1 0x40 00001add: MLOAD 00001ade: PUSH32 0x9375474800000000000000000000000000000000000000000000000000000000 00001aff: DUP2 00001b00: MSTORE 00001b01: PUSH1 0x04 00001b03: ADD 00001b04: PUSH1 0x40 00001b06: MLOAD 00001b07: DUP1 00001b08: SWAP2 00001b09: SUB 00001b0a: SWAP1 00001b0b: REVERT 00001b0c: JUMPDEST 00001b0d: DUP1 00001b0e: ISZERO 00001b0f: PUSH2 0x1b4d 00001b12: JUMPI 00001b13: PUSH1 0x6b 00001b15: SLOAD 00001b16: PUSH1 0x6c 00001b18: SLOAD 00001b19: PUSH1 0x69 00001b1b: SLOAD 00001b1c: PUSH2 0x1b40 00001b1f: SWAP3 00001b20: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b35: SWAP2 00001b36: DUP3 00001b37: AND 00001b38: SWAP3 00001b39: SWAP2 00001b3a: AND 00001b3b: SWAP1 00001b3c: PUSH2 0x2318 00001b3f: JUMP 00001b40: JUMPDEST 00001b41: PUSH2 0x1b48 00001b44: PUSH2 0x291a 00001b47: JUMP 00001b48: JUMPDEST 00001b49: PUSH2 0x1ba5 00001b4c: JUMP 00001b4d: JUMPDEST 00001b4e: PUSH1 0x6c 00001b50: SLOAD 00001b51: PUSH1 0x69 00001b53: SLOAD 00001b54: PUSH2 0x1b77 00001b57: SWAP2 00001b58: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b6d: SWAP1 00001b6e: SWAP2 00001b6f: AND 00001b70: SWAP1 00001b71: CALLER 00001b72: SWAP1 00001b73: PUSH2 0x2318 00001b76: JUMP 00001b77: JUMPDEST 00001b78: PUSH2 0x1b80 00001b7b: TIMESTAMP 00001b7c: PUSH2 0x29f0 00001b7f: JUMP 00001b80: JUMPDEST 00001b81: PUSH1 0x6b 00001b83: PUSH1 0x14 00001b85: PUSH2 0x0100 00001b88: EXP 00001b89: DUP2 00001b8a: SLOAD 00001b8b: DUP2 00001b8c: PUSH6 0xffffffffffff 00001b93: MUL 00001b94: NOT 00001b95: AND 00001b96: SWAP1 00001b97: DUP4 00001b98: PUSH6 0xffffffffffff 00001b9f: AND 00001ba0: MUL 00001ba1: OR 00001ba2: SWAP1 00001ba3: SSTORE 00001ba4: POP 00001ba5: JUMPDEST 00001ba6: PUSH1 0x6b 00001ba8: DUP1 00001ba9: SLOAD 00001baa: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00001bcb: AND 00001bcc: SWAP1 00001bcd: SSTORE 00001bce: PUSH1 0x40 00001bd0: MLOAD 00001bd1: DUP2 00001bd2: ISZERO 00001bd3: ISZERO 00001bd4: DUP2 00001bd5: MSTORE 00001bd6: PUSH32 0x8015c5005d9ad5d85ca80d3f894f08e0159277704c54166e5cff108800fa80cd 00001bf7: SWAP1 00001bf8: PUSH1 0x20 00001bfa: ADD 00001bfb: PUSH2 0x0804 00001bfe: JUMP 00001bff: JUMPDEST 00001c00: PUSH1 0x6a 00001c02: SLOAD 00001c03: PUSH1 0x40 00001c05: MLOAD 00001c06: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000 00001c27: DUP2 00001c28: MSTORE 00001c29: CALLER 00001c2a: PUSH1 0x04 00001c2c: DUP3 00001c2d: ADD 00001c2e: MSTORE 00001c2f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c44: SWAP1 00001c45: SWAP2 00001c46: AND 00001c47: SWAP1 00001c48: PUSH4 0xe43581b8 00001c4d: SWAP1 00001c4e: PUSH1 0x24 00001c50: ADD 00001c51: PUSH1 0x20 00001c53: PUSH1 0x40 00001c55: MLOAD 00001c56: DUP1 00001c57: DUP4 00001c58: SUB 00001c59: DUP2 00001c5a: DUP7 00001c5b: GAS 00001c5c: STATICCALL 00001c5d: ISZERO 00001c5e: DUP1 00001c5f: ISZERO 00001c60: PUSH2 0x1c6d 00001c63: JUMPI 00001c64: RETURNDATASIZE 00001c65: PUSH1 0x00 00001c67: DUP1 00001c68: RETURNDATACOPY 00001c69: RETURNDATASIZE 00001c6a: PUSH1 0x00 00001c6c: REVERT 00001c6d: JUMPDEST 00001c6e: POP 00001c6f: POP 00001c70: POP 00001c71: POP 00001c72: PUSH1 0x40 00001c74: MLOAD 00001c75: RETURNDATASIZE 00001c76: PUSH1 0x1f 00001c78: NOT 00001c79: PUSH1 0x1f 00001c7b: DUP3 00001c7c: ADD 00001c7d: AND 00001c7e: DUP3 00001c7f: ADD 00001c80: DUP1 00001c81: PUSH1 0x40 00001c83: MSTORE 00001c84: POP 00001c85: DUP2 00001c86: ADD 00001c87: SWAP1 00001c88: PUSH2 0x1c91 00001c8b: SWAP2 00001c8c: SWAP1 00001c8d: PUSH2 0x3406 00001c90: JUMP 00001c91: JUMPDEST 00001c92: PUSH2 0x1cc7 00001c95: JUMPI 00001c96: PUSH1 0x40 00001c98: MLOAD 00001c99: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000 00001cba: DUP2 00001cbb: MSTORE 00001cbc: PUSH1 0x04 00001cbe: ADD 00001cbf: PUSH1 0x40 00001cc1: MLOAD 00001cc2: DUP1 00001cc3: SWAP2 00001cc4: SUB 00001cc5: SWAP1 00001cc6: REVERT 00001cc7: JUMPDEST 00001cc8: PUSH1 0x6b 00001cca: SLOAD 00001ccb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ce0: AND 00001ce1: ISZERO 00001ce2: PUSH2 0x1d17 00001ce5: JUMPI 00001ce6: PUSH1 0x40 00001ce8: MLOAD 00001ce9: PUSH32 0x0583257400000000000000000000000000000000000000000000000000000000 00001d0a: DUP2 00001d0b: MSTORE 00001d0c: PUSH1 0x04 00001d0e: ADD 00001d0f: PUSH1 0x40 00001d11: MLOAD 00001d12: DUP1 00001d13: SWAP2 00001d14: SUB 00001d15: SWAP1 00001d16: REVERT 00001d17: JUMPDEST 00001d18: PUSH2 0x1d1f 00001d1b: PUSH2 0x291a 00001d1e: JUMP 00001d1f: JUMPDEST 00001d20: JUMP 00001d21: JUMPDEST 00001d22: DUP2 00001d23: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d38: DUP2 00001d39: AND 00001d3a: CALLER 00001d3b: EQ 00001d3c: DUP1 00001d3d: ISZERO 00001d3e: SWAP1 00001d3f: PUSH2 0x1d58 00001d42: JUMPI 00001d43: POP 00001d44: CALLER 00001d45: PUSH1 0x00 00001d47: SWAP1 00001d48: DUP2 00001d49: MSTORE 00001d4a: PUSH1 0x6e 00001d4c: PUSH1 0x20 00001d4e: MSTORE 00001d4f: PUSH1 0x40 00001d51: SWAP1 00001d52: KECCAK256 00001d53: SLOAD 00001d54: PUSH1 0x01 00001d56: EQ 00001d57: ISZERO 00001d58: JUMPDEST 00001d59: DUP1 00001d5a: ISZERO 00001d5b: PUSH2 0x1df3 00001d5e: JUMPI 00001d5f: POP 00001d60: PUSH1 0x6a 00001d62: SLOAD 00001d63: PUSH1 0x40 00001d65: MLOAD 00001d66: PUSH32 0x521d4de900000000000000000000000000000000000000000000000000000000 00001d87: DUP2 00001d88: MSTORE 00001d89: CALLER 00001d8a: PUSH1 0x04 00001d8c: DUP3 00001d8d: ADD 00001d8e: MSTORE 00001d8f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001da4: SWAP1 00001da5: SWAP2 00001da6: AND 00001da7: SWAP1 00001da8: PUSH4 0x521d4de9 00001dad: SWAP1 00001dae: PUSH1 0x24 00001db0: ADD 00001db1: PUSH1 0x20 00001db3: PUSH1 0x40 00001db5: MLOAD 00001db6: DUP1 00001db7: DUP4 00001db8: SUB 00001db9: DUP2 00001dba: DUP7 00001dbb: GAS 00001dbc: STATICCALL 00001dbd: ISZERO 00001dbe: DUP1 00001dbf: ISZERO 00001dc0: PUSH2 0x1dcd 00001dc3: JUMPI 00001dc4: RETURNDATASIZE 00001dc5: PUSH1 0x00 00001dc7: DUP1 00001dc8: RETURNDATACOPY 00001dc9: RETURNDATASIZE 00001dca: PUSH1 0x00 00001dcc: REVERT 00001dcd: JUMPDEST 00001dce: POP 00001dcf: POP 00001dd0: POP 00001dd1: POP 00001dd2: PUSH1 0x40 00001dd4: MLOAD 00001dd5: RETURNDATASIZE 00001dd6: PUSH1 0x1f 00001dd8: NOT 00001dd9: PUSH1 0x1f 00001ddb: DUP3 00001ddc: ADD 00001ddd: AND 00001dde: DUP3 00001ddf: ADD 00001de0: DUP1 00001de1: PUSH1 0x40 00001de3: MSTORE 00001de4: POP 00001de5: DUP2 00001de6: ADD 00001de7: SWAP1 00001de8: PUSH2 0x1df1 00001deb: SWAP2 00001dec: SWAP1 00001ded: PUSH2 0x3406 00001df0: JUMP 00001df1: JUMPDEST 00001df2: ISZERO 00001df3: JUMPDEST 00001df4: ISZERO 00001df5: PUSH2 0x1e2a 00001df8: JUMPI 00001df9: PUSH1 0x40 00001dfb: MLOAD 00001dfc: PUSH32 0xc22a648e00000000000000000000000000000000000000000000000000000000 00001e1d: DUP2 00001e1e: MSTORE 00001e1f: PUSH1 0x04 00001e21: ADD 00001e22: PUSH1 0x40 00001e24: MLOAD 00001e25: DUP1 00001e26: SWAP2 00001e27: SUB 00001e28: SWAP1 00001e29: REVERT 00001e2a: JUMPDEST 00001e2b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e40: DUP1 00001e41: DUP5 00001e42: AND 00001e43: PUSH1 0x00 00001e45: SWAP1 00001e46: DUP2 00001e47: MSTORE 00001e48: PUSH1 0x70 00001e4a: PUSH1 0x20 00001e4c: SWAP1 00001e4d: DUP2 00001e4e: MSTORE 00001e4f: PUSH1 0x40 00001e51: DUP1 00001e52: DUP4 00001e53: KECCAK256 00001e54: SWAP4 00001e55: DUP7 00001e56: AND 00001e57: DUP4 00001e58: MSTORE 00001e59: SWAP3 00001e5a: SWAP1 00001e5b: MSTORE 00001e5c: KECCAK256 00001e5d: SLOAD 00001e5e: PUSH2 0x1e68 00001e61: DUP2 00001e62: PUSH1 0x01 00001e64: PUSH2 0x3452 00001e67: JUMP 00001e68: JUMPDEST 00001e69: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e7e: DUP6 00001e7f: DUP2 00001e80: AND 00001e81: PUSH1 0x00 00001e83: DUP2 00001e84: DUP2 00001e85: MSTORE 00001e86: PUSH1 0x70 00001e88: PUSH1 0x20 00001e8a: SWAP1 00001e8b: DUP2 00001e8c: MSTORE 00001e8d: PUSH1 0x40 00001e8f: DUP1 00001e90: DUP4 00001e91: KECCAK256 00001e92: SWAP5 00001e93: DUP10 00001e94: AND 00001e95: DUP1 00001e96: DUP5 00001e97: MSTORE 00001e98: SWAP5 00001e99: DUP3 00001e9a: MSTORE 00001e9b: SWAP2 00001e9c: DUP3 00001e9d: SWAP1 00001e9e: KECCAK256 00001e9f: SWAP5 00001ea0: SWAP1 00001ea1: SWAP5 00001ea2: SSTORE 00001ea3: MLOAD 00001ea4: DUP5 00001ea5: ISZERO 00001ea6: DUP2 00001ea7: MSTORE 00001ea8: SWAP2 00001ea9: SWAP3 00001eaa: SWAP1 00001eab: SWAP2 00001eac: PUSH32 0x42343f44c66ea1eaffa334760d3da2cb731d2a0b3b3e30423df997faa36cc95c 00001ecd: SWAP2 00001ece: ADD 00001ecf: PUSH1 0x40 00001ed1: MLOAD 00001ed2: DUP1 00001ed3: SWAP2 00001ed4: SUB 00001ed5: SWAP1 00001ed6: LOG3 00001ed7: POP 00001ed8: POP 00001ed9: POP 00001eda: POP 00001edb: JUMP 00001edc: JUMPDEST 00001edd: PUSH1 0x00 00001edf: SLOAD 00001ee0: PUSH2 0x0100 00001ee3: SWAP1 00001ee4: DIV 00001ee5: PUSH1 0xff 00001ee7: AND 00001ee8: ISZERO 00001ee9: DUP1 00001eea: DUP1 00001eeb: ISZERO 00001eec: PUSH2 0x1efc 00001eef: JUMPI 00001ef0: POP 00001ef1: PUSH1 0x00 00001ef3: SLOAD 00001ef4: PUSH1 0x01 00001ef6: PUSH1 0xff 00001ef8: SWAP1 00001ef9: SWAP2 00001efa: AND 00001efb: LT 00001efc: JUMPDEST 00001efd: DUP1 00001efe: PUSH2 0x1f16 00001f01: JUMPI 00001f02: POP 00001f03: ADDRESS 00001f04: EXTCODESIZE 00001f05: ISZERO 00001f06: DUP1 00001f07: ISZERO 00001f08: PUSH2 0x1f16 00001f0b: JUMPI 00001f0c: POP 00001f0d: PUSH1 0x00 00001f0f: SLOAD 00001f10: PUSH1 0xff 00001f12: AND 00001f13: PUSH1 0x01 00001f15: EQ 00001f16: JUMPDEST 00001f17: PUSH2 0x1fa2 00001f1a: JUMPI 00001f1b: PUSH1 0x40 00001f1d: MLOAD 00001f1e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001f3f: DUP2 00001f40: MSTORE 00001f41: PUSH1 0x20 00001f43: PUSH1 0x04 00001f45: DUP3 00001f46: ADD 00001f47: MSTORE 00001f48: PUSH1 0x2e 00001f4a: PUSH1 0x24 00001f4c: DUP3 00001f4d: ADD 00001f4e: MSTORE 00001f4f: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561 00001f70: PUSH1 0x44 00001f72: DUP3 00001f73: ADD 00001f74: MSTORE 00001f75: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000 00001f96: PUSH1 0x64 00001f98: DUP3 00001f99: ADD 00001f9a: MSTORE 00001f9b: PUSH1 0x84 00001f9d: ADD 00001f9e: PUSH2 0x0cf4 00001fa1: JUMP 00001fa2: JUMPDEST 00001fa3: PUSH1 0x00 00001fa5: DUP1 00001fa6: SLOAD 00001fa7: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00001fc8: AND 00001fc9: PUSH1 0x01 00001fcb: OR 00001fcc: SWAP1 00001fcd: SSTORE 00001fce: DUP1 00001fcf: ISZERO 00001fd0: PUSH2 0x2000 00001fd3: JUMPI 00001fd4: PUSH1 0x00 00001fd6: DUP1 00001fd7: SLOAD 00001fd8: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff 00001ff9: AND 00001ffa: PUSH2 0x0100 00001ffd: OR 00001ffe: SWAP1 00001fff: SSTORE 00002000: JUMPDEST 00002001: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002016: DUP3 00002017: AND 00002018: PUSH2 0x204d 0000201b: JUMPI 0000201c: PUSH1 0x40 0000201e: MLOAD 0000201f: PUSH32 0xd92e233d00000000000000000000000000000000000000000000000000000000 00002040: DUP2 00002041: MSTORE 00002042: PUSH1 0x04 00002044: ADD 00002045: PUSH1 0x40 00002047: MLOAD 00002048: DUP1 00002049: SWAP2 0000204a: SUB 0000204b: SWAP1 0000204c: REVERT 0000204d: JUMPDEST 0000204e: PUSH1 0x6a 00002050: DUP1 00002051: SLOAD 00002052: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00002073: AND 00002074: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002089: DUP5 0000208a: AND 0000208b: OR 0000208c: SWAP1 0000208d: SSTORE 0000208e: DUP1 0000208f: ISZERO 00002090: PUSH2 0x11d4 00002093: JUMPI 00002094: PUSH1 0x00 00002096: DUP1 00002097: SLOAD 00002098: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff 000020b9: AND 000020ba: SWAP1 000020bb: SSTORE 000020bc: PUSH1 0x40 000020be: MLOAD 000020bf: PUSH1 0x01 000020c1: DUP2 000020c2: MSTORE 000020c3: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498 000020e4: SWAP1 000020e5: PUSH1 0x20 000020e7: ADD 000020e8: PUSH1 0x40 000020ea: MLOAD 000020eb: DUP1 000020ec: SWAP2 000020ed: SUB 000020ee: SWAP1 000020ef: LOG1 000020f0: POP 000020f1: POP 000020f2: JUMP 000020f3: JUMPDEST 000020f4: PUSH1 0x6b 000020f6: SLOAD 000020f7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000210c: AND 0000210d: ISZERO 0000210e: ISZERO 0000210f: DUP1 00002110: PUSH2 0x21ef 00002113: JUMPI 00002114: POP 00002115: CALLER 00002116: PUSH1 0x00 00002118: SWAP1 00002119: DUP2 0000211a: MSTORE 0000211b: PUSH1 0x6e 0000211d: PUSH1 0x20 0000211f: MSTORE 00002120: PUSH1 0x40 00002122: SWAP1 00002123: KECCAK256 00002124: SLOAD 00002125: PUSH1 0x01 00002127: EQ 00002128: ISZERO 00002129: DUP1 0000212a: PUSH2 0x2154 0000212d: JUMPI 0000212e: POP 0000212f: PUSH1 0x6b 00002131: SLOAD 00002132: PUSH21 0x010000000000000000000000000000000000000000 00002148: SWAP1 00002149: DIV 0000214a: PUSH6 0xffffffffffff 00002151: AND 00002152: TIMESTAMP 00002153: LT 00002154: JUMPDEST 00002155: DUP1 00002156: ISZERO 00002157: PUSH2 0x21ef 0000215a: JUMPI 0000215b: POP 0000215c: PUSH1 0x6a 0000215e: SLOAD 0000215f: PUSH1 0x40 00002161: MLOAD 00002162: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000 00002183: DUP2 00002184: MSTORE 00002185: CALLER 00002186: PUSH1 0x04 00002188: DUP3 00002189: ADD 0000218a: MSTORE 0000218b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000021a0: SWAP1 000021a1: SWAP2 000021a2: AND 000021a3: SWAP1 000021a4: PUSH4 0xe43581b8 000021a9: SWAP1 000021aa: PUSH1 0x24 000021ac: ADD 000021ad: PUSH1 0x20 000021af: PUSH1 0x40 000021b1: MLOAD 000021b2: DUP1 000021b3: DUP4 000021b4: SUB 000021b5: DUP2 000021b6: DUP7 000021b7: GAS 000021b8: STATICCALL 000021b9: ISZERO 000021ba: DUP1 000021bb: ISZERO 000021bc: PUSH2 0x21c9 000021bf: JUMPI 000021c0: RETURNDATASIZE 000021c1: PUSH1 0x00 000021c3: DUP1 000021c4: RETURNDATACOPY 000021c5: RETURNDATASIZE 000021c6: PUSH1 0x00 000021c8: REVERT 000021c9: JUMPDEST 000021ca: POP 000021cb: POP 000021cc: POP 000021cd: POP 000021ce: PUSH1 0x40 000021d0: MLOAD 000021d1: RETURNDATASIZE 000021d2: PUSH1 0x1f 000021d4: NOT 000021d5: PUSH1 0x1f 000021d7: DUP3 000021d8: ADD 000021d9: AND 000021da: DUP3 000021db: ADD 000021dc: DUP1 000021dd: PUSH1 0x40 000021df: MSTORE 000021e0: POP 000021e1: DUP2 000021e2: ADD 000021e3: SWAP1 000021e4: PUSH2 0x21ed 000021e7: SWAP2 000021e8: SWAP1 000021e9: PUSH2 0x3406 000021ec: JUMP 000021ed: JUMPDEST 000021ee: ISZERO 000021ef: JUMPDEST 000021f0: ISZERO 000021f1: PUSH2 0x2226 000021f4: JUMPI 000021f5: PUSH1 0x40 000021f7: MLOAD 000021f8: PUSH32 0xc22a648e00000000000000000000000000000000000000000000000000000000 00002219: DUP2 0000221a: MSTORE 0000221b: PUSH1 0x04 0000221d: ADD 0000221e: PUSH1 0x40 00002220: MLOAD 00002221: DUP1 00002222: SWAP2 00002223: SUB 00002224: SWAP1 00002225: REVERT 00002226: JUMPDEST 00002227: PUSH1 0x40 00002229: DUP1 0000222a: MLOAD 0000222b: DUP1 0000222c: DUP3 0000222d: ADD 0000222e: SWAP1 0000222f: SWAP2 00002230: MSTORE 00002231: PUSH1 0x65 00002233: DUP1 00002234: SLOAD 00002235: DUP1 00002236: DUP4 00002237: MSTORE 00002238: PUSH1 0x66 0000223a: DUP1 0000223b: SLOAD 0000223c: PUSH1 0x20 0000223e: DUP1 0000223f: DUP7 00002240: ADD 00002241: DUP3 00002242: SWAP1 00002243: MSTORE 00002244: DUP7 00002245: CALLDATALOAD 00002246: SWAP1 00002247: SWAP5 00002248: SSTORE 00002249: SWAP3 0000224a: DUP6 0000224b: ADD 0000224c: CALLDATALOAD 0000224d: SWAP1 0000224e: SSTORE 0000224f: PUSH1 0x67 00002251: SSTORE 00002252: PUSH1 0x68 00002254: SSTORE 00002255: PUSH1 0x00 00002257: PUSH2 0x225f 0000225a: TIMESTAMP 0000225b: PUSH2 0x29f0 0000225e: JUMP 0000225f: JUMPDEST 00002260: PUSH1 0x6b 00002262: DUP1 00002263: SLOAD 00002264: PUSH32 0xffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff 00002285: AND 00002286: PUSH21 0x010000000000000000000000000000000000000000 0000229c: PUSH6 0xffffffffffff 000022a3: DUP5 000022a4: AND 000022a5: SWAP1 000022a6: DUP2 000022a7: MUL 000022a8: SWAP2 000022a9: SWAP1 000022aa: SWAP2 000022ab: OR 000022ac: SWAP1 000022ad: SWAP2 000022ae: SSTORE 000022af: PUSH1 0x40 000022b1: DUP1 000022b2: MLOAD 000022b3: DUP7 000022b4: CALLDATALOAD 000022b5: DUP2 000022b6: MSTORE 000022b7: PUSH1 0x20 000022b9: DUP1 000022ba: DUP9 000022bb: ADD 000022bc: CALLDATALOAD 000022bd: SWAP1 000022be: DUP3 000022bf: ADD 000022c0: MSTORE 000022c1: SWAP1 000022c2: DUP2 000022c3: ADD 000022c4: SWAP2 000022c5: SWAP1 000022c6: SWAP2 000022c7: MSTORE 000022c8: SWAP1 000022c9: SWAP2 000022ca: POP 000022cb: PUSH32 0x23aa2e4f757a7bd974085d3e11439a843b137b30905e3ffd51b2097c34aef62e 000022ec: SWAP1 000022ed: PUSH1 0x60 000022ef: ADD 000022f0: PUSH1 0x40 000022f2: MLOAD 000022f3: DUP1 000022f4: SWAP2 000022f5: SUB 000022f6: SWAP1 000022f7: LOG1 000022f8: POP 000022f9: POP 000022fa: POP 000022fb: JUMP 000022fc: JUMPDEST 000022fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002312: AND 00002313: EXTCODESIZE 00002314: ISZERO 00002315: ISZERO 00002316: SWAP1 00002317: JUMP 00002318: JUMPDEST 00002319: PUSH1 0x40 0000231b: MLOAD 0000231c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002331: DUP4 00002332: AND 00002333: PUSH1 0x24 00002335: DUP3 00002336: ADD 00002337: MSTORE 00002338: PUSH1 0x44 0000233a: DUP2 0000233b: ADD 0000233c: DUP3 0000233d: SWAP1 0000233e: MSTORE 0000233f: PUSH2 0x23ec 00002342: SWAP1 00002343: DUP5 00002344: SWAP1 00002345: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 00002366: SWAP1 00002367: PUSH1 0x64 00002369: ADD 0000236a: JUMPDEST 0000236b: PUSH1 0x40 0000236d: DUP1 0000236e: MLOAD 0000236f: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00002390: DUP2 00002391: DUP5 00002392: SUB 00002393: ADD 00002394: DUP2 00002395: MSTORE 00002396: SWAP2 00002397: SWAP1 00002398: MSTORE 00002399: PUSH1 0x20 0000239b: DUP2 0000239c: ADD 0000239d: DUP1 0000239e: MLOAD 0000239f: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000023bc: AND 000023bd: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 000023de: SWAP1 000023df: SWAP4 000023e0: AND 000023e1: SWAP3 000023e2: SWAP1 000023e3: SWAP3 000023e4: OR 000023e5: SWAP1 000023e6: SWAP2 000023e7: MSTORE 000023e8: PUSH2 0x2a55 000023eb: JUMP 000023ec: JUMPDEST 000023ed: POP 000023ee: POP 000023ef: POP 000023f0: JUMP 000023f1: JUMPDEST 000023f2: PUSH1 0x40 000023f4: MLOAD 000023f5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000240a: DUP1 0000240b: DUP6 0000240c: AND 0000240d: PUSH1 0x24 0000240f: DUP4 00002410: ADD 00002411: MSTORE 00002412: DUP4 00002413: AND 00002414: PUSH1 0x44 00002416: DUP3 00002417: ADD 00002418: MSTORE 00002419: PUSH1 0x64 0000241b: DUP2 0000241c: ADD 0000241d: DUP3 0000241e: SWAP1 0000241f: MSTORE 00002420: PUSH2 0x244f 00002423: SWAP1 00002424: DUP6 00002425: SWAP1 00002426: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000 00002447: SWAP1 00002448: PUSH1 0x84 0000244a: ADD 0000244b: PUSH2 0x236a 0000244e: JUMP 0000244f: JUMPDEST 00002450: POP 00002451: POP 00002452: POP 00002453: POP 00002454: JUMP 00002455: JUMPDEST 00002456: PUSH1 0x6a 00002458: SLOAD 00002459: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000246e: AND 0000246f: DUP1 00002470: ISZERO 00002471: DUP1 00002472: ISZERO 00002473: SWAP1 00002474: PUSH2 0x2508 00002477: JUMPI 00002478: POP 00002479: PUSH1 0x40 0000247b: MLOAD 0000247c: PUSH32 0xe43581b800000000000000000000000000000000000000000000000000000000 0000249d: DUP2 0000249e: MSTORE 0000249f: CALLER 000024a0: PUSH1 0x04 000024a2: DUP3 000024a3: ADD 000024a4: MSTORE 000024a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000024ba: DUP3 000024bb: AND 000024bc: SWAP1 000024bd: PUSH4 0xe43581b8 000024c2: SWAP1 000024c3: PUSH1 0x24 000024c5: ADD 000024c6: PUSH1 0x20 000024c8: PUSH1 0x40 000024ca: MLOAD 000024cb: DUP1 000024cc: DUP4 000024cd: SUB 000024ce: DUP2 000024cf: DUP7 000024d0: GAS 000024d1: STATICCALL 000024d2: ISZERO 000024d3: DUP1 000024d4: ISZERO 000024d5: PUSH2 0x24e2 000024d8: JUMPI 000024d9: RETURNDATASIZE 000024da: PUSH1 0x00 000024dc: DUP1 000024dd: RETURNDATACOPY 000024de: RETURNDATASIZE 000024df: PUSH1 0x00 000024e1: REVERT 000024e2: JUMPDEST 000024e3: POP 000024e4: POP 000024e5: POP 000024e6: POP 000024e7: PUSH1 0x40 000024e9: MLOAD 000024ea: RETURNDATASIZE 000024eb: PUSH1 0x1f 000024ed: NOT 000024ee: PUSH1 0x1f 000024f0: DUP3 000024f1: ADD 000024f2: AND 000024f3: DUP3 000024f4: ADD 000024f5: DUP1 000024f6: PUSH1 0x40 000024f8: MSTORE 000024f9: POP 000024fa: DUP2 000024fb: ADD 000024fc: SWAP1 000024fd: PUSH2 0x2506 00002500: SWAP2 00002501: SWAP1 00002502: PUSH2 0x3406 00002505: JUMP 00002506: JUMPDEST 00002507: ISZERO 00002508: JUMPDEST 00002509: ISZERO 0000250a: PUSH2 0x11d4 0000250d: JUMPI 0000250e: PUSH1 0x40 00002510: MLOAD 00002511: PUSH32 0xee3675d400000000000000000000000000000000000000000000000000000000 00002532: DUP2 00002533: MSTORE 00002534: PUSH1 0x04 00002536: ADD 00002537: PUSH1 0x40 00002539: MLOAD 0000253a: DUP1 0000253b: SWAP2 0000253c: SUB 0000253d: SWAP1 0000253e: REVERT 0000253f: JUMPDEST 00002540: PUSH32 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143 00002561: SLOAD 00002562: PUSH1 0xff 00002564: AND 00002565: ISZERO 00002566: PUSH2 0x2572 00002569: JUMPI 0000256a: PUSH2 0x23ec 0000256d: DUP4 0000256e: PUSH2 0x2b61 00002571: JUMP 00002572: JUMPDEST 00002573: DUP3 00002574: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002589: AND 0000258a: PUSH4 0x52d1902d 0000258f: PUSH1 0x40 00002591: MLOAD 00002592: DUP2 00002593: PUSH4 0xffffffff 00002598: AND 00002599: PUSH1 0xe0 0000259b: SHL 0000259c: DUP2 0000259d: MSTORE 0000259e: PUSH1 0x04 000025a0: ADD 000025a1: PUSH1 0x20 000025a3: PUSH1 0x40 000025a5: MLOAD 000025a6: DUP1 000025a7: DUP4 000025a8: SUB 000025a9: DUP2 000025aa: DUP7 000025ab: GAS 000025ac: STATICCALL 000025ad: SWAP3 000025ae: POP 000025af: POP 000025b0: POP 000025b1: DUP1 000025b2: ISZERO 000025b3: PUSH2 0x25f7 000025b6: JUMPI 000025b7: POP 000025b8: PUSH1 0x40 000025ba: DUP1 000025bb: MLOAD 000025bc: PUSH1 0x1f 000025be: RETURNDATASIZE 000025bf: SWAP1 000025c0: DUP2 000025c1: ADD 000025c2: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 000025e3: AND 000025e4: DUP3 000025e5: ADD 000025e6: SWAP1 000025e7: SWAP3 000025e8: MSTORE 000025e9: PUSH2 0x25f4 000025ec: SWAP2 000025ed: DUP2 000025ee: ADD 000025ef: SWAP1 000025f0: PUSH2 0x3571 000025f3: JUMP 000025f4: JUMPDEST 000025f5: PUSH1 0x01 000025f7: JUMPDEST 000025f8: PUSH2 0x2683 000025fb: JUMPI 000025fc: PUSH1 0x40 000025fe: MLOAD 000025ff: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002620: DUP2 00002621: MSTORE 00002622: PUSH1 0x20 00002624: PUSH1 0x04 00002626: DUP3 00002627: ADD 00002628: MSTORE 00002629: PUSH1 0x2e 0000262b: PUSH1 0x24 0000262d: DUP3 0000262e: ADD 0000262f: MSTORE 00002630: PUSH32 0x45524331393637557067726164653a206e657720696d706c656d656e74617469 00002651: PUSH1 0x44 00002653: DUP3 00002654: ADD 00002655: MSTORE 00002656: PUSH32 0x6f6e206973206e6f742055555053000000000000000000000000000000000000 00002677: PUSH1 0x64 00002679: DUP3 0000267a: ADD 0000267b: MSTORE 0000267c: PUSH1 0x84 0000267e: ADD 0000267f: PUSH2 0x0cf4 00002682: JUMP 00002683: JUMPDEST 00002684: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 000026a5: DUP2 000026a6: EQ 000026a7: PUSH2 0x2732 000026aa: JUMPI 000026ab: PUSH1 0x40 000026ad: MLOAD 000026ae: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000026cf: DUP2 000026d0: MSTORE 000026d1: PUSH1 0x20 000026d3: PUSH1 0x04 000026d5: DUP3 000026d6: ADD 000026d7: MSTORE 000026d8: PUSH1 0x29 000026da: PUSH1 0x24 000026dc: DUP3 000026dd: ADD 000026de: MSTORE 000026df: PUSH32 0x45524331393637557067726164653a20756e737570706f727465642070726f78 00002700: PUSH1 0x44 00002702: DUP3 00002703: ADD 00002704: MSTORE 00002705: PUSH32 0x6961626c65555549440000000000000000000000000000000000000000000000 00002726: PUSH1 0x64 00002728: DUP3 00002729: ADD 0000272a: MSTORE 0000272b: PUSH1 0x84 0000272d: ADD 0000272e: PUSH2 0x0cf4 00002731: JUMP 00002732: JUMPDEST 00002733: POP 00002734: PUSH2 0x23ec 00002737: DUP4 00002738: DUP4 00002739: DUP4 0000273a: PUSH2 0x2c6b 0000273d: JUMP 0000273e: JUMPDEST 0000273f: DUP1 00002740: MLOAD 00002741: PUSH1 0x00 00002743: SWAP1 00002744: DUP4 00002745: SWAP1 00002746: DUP3 00002747: JUMPDEST 00002748: DUP2 00002749: DUP2 0000274a: LT 0000274b: ISZERO 0000274c: PUSH2 0x2818 0000274f: JUMPI 00002750: DUP5 00002751: DUP2 00002752: DUP2 00002753: MLOAD 00002754: DUP2 00002755: LT 00002756: PUSH2 0x2761 00002759: JUMPI 0000275a: PUSH2 0x2761 0000275d: PUSH2 0x34da 00002760: JUMP 00002761: JUMPDEST 00002762: PUSH1 0x20 00002764: MUL 00002765: PUSH1 0x20 00002767: ADD 00002768: ADD 00002769: MLOAD 0000276a: DUP4 0000276b: LT 0000276c: ISZERO 0000276d: PUSH2 0x27c2 00002770: JUMPI 00002771: DUP3 00002772: DUP6 00002773: DUP3 00002774: DUP2 00002775: MLOAD 00002776: DUP2 00002777: LT 00002778: PUSH2 0x2783 0000277b: JUMPI 0000277c: PUSH2 0x2783 0000277f: PUSH2 0x34da 00002782: JUMP 00002783: JUMPDEST 00002784: PUSH1 0x20 00002786: MUL 00002787: PUSH1 0x20 00002789: ADD 0000278a: ADD 0000278b: MLOAD 0000278c: PUSH1 0x40 0000278e: MLOAD 0000278f: PUSH1 0x20 00002791: ADD 00002792: PUSH2 0x27a5 00002795: SWAP3 00002796: SWAP2 00002797: SWAP1 00002798: SWAP2 00002799: DUP3 0000279a: MSTORE 0000279b: PUSH1 0x20 0000279d: DUP3 0000279e: ADD 0000279f: MSTORE 000027a0: PUSH1 0x40 000027a2: ADD 000027a3: SWAP1 000027a4: JUMP 000027a5: JUMPDEST 000027a6: PUSH1 0x40 000027a8: MLOAD 000027a9: PUSH1 0x20 000027ab: DUP2 000027ac: DUP4 000027ad: SUB 000027ae: SUB 000027af: DUP2 000027b0: MSTORE 000027b1: SWAP1 000027b2: PUSH1 0x40 000027b4: MSTORE 000027b5: DUP1 000027b6: MLOAD 000027b7: SWAP1 000027b8: PUSH1 0x20 000027ba: ADD 000027bb: KECCAK256 000027bc: SWAP3 000027bd: POP 000027be: PUSH2 0x2810 000027c1: JUMP 000027c2: JUMPDEST 000027c3: DUP5 000027c4: DUP2 000027c5: DUP2 000027c6: MLOAD 000027c7: DUP2 000027c8: LT 000027c9: PUSH2 0x27d4 000027cc: JUMPI 000027cd: PUSH2 0x27d4 000027d0: PUSH2 0x34da 000027d3: JUMP 000027d4: JUMPDEST 000027d5: PUSH1 0x20 000027d7: MUL 000027d8: PUSH1 0x20 000027da: ADD 000027db: ADD 000027dc: MLOAD 000027dd: DUP4 000027de: PUSH1 0x40 000027e0: MLOAD 000027e1: PUSH1 0x20 000027e3: ADD 000027e4: PUSH2 0x27f7 000027e7: SWAP3 000027e8: SWAP2 000027e9: SWAP1 000027ea: SWAP2 000027eb: DUP3 000027ec: MSTORE 000027ed: PUSH1 0x20 000027ef: DUP3 000027f0: ADD 000027f1: MSTORE 000027f2: PUSH1 0x40 000027f4: ADD 000027f5: SWAP1 000027f6: JUMP 000027f7: JUMPDEST 000027f8: PUSH1 0x40 000027fa: MLOAD 000027fb: PUSH1 0x20 000027fd: DUP2 000027fe: DUP4 000027ff: SUB 00002800: SUB 00002801: DUP2 00002802: MSTORE 00002803: SWAP1 00002804: PUSH1 0x40 00002806: MSTORE 00002807: DUP1 00002808: MLOAD 00002809: SWAP1 0000280a: PUSH1 0x20 0000280c: ADD 0000280d: KECCAK256 0000280e: SWAP3 0000280f: POP 00002810: JUMPDEST 00002811: PUSH1 0x01 00002813: ADD 00002814: PUSH2 0x2747 00002817: JUMP 00002818: JUMPDEST 00002819: POP 0000281a: PUSH1 0x00 0000281c: PUSH2 0x2823 0000281f: PUSH2 0x0f84 00002822: JUMP 00002823: JUMPDEST 00002824: SWAP1 00002825: POP 00002826: DUP1 00002827: PUSH2 0x285c 0000282a: JUMPI 0000282b: PUSH1 0x40 0000282d: MLOAD 0000282e: PUSH32 0x094ad65800000000000000000000000000000000000000000000000000000000 0000284f: DUP2 00002850: MSTORE 00002851: PUSH1 0x04 00002853: ADD 00002854: PUSH1 0x40 00002856: MLOAD 00002857: DUP1 00002858: SWAP2 00002859: SUB 0000285a: SWAP1 0000285b: REVERT 0000285c: JUMPDEST 0000285d: SWAP2 0000285e: SWAP1 0000285f: SWAP2 00002860: EQ 00002861: SWAP2 00002862: POP 00002863: POP 00002864: JUMPDEST 00002865: SWAP3 00002866: SWAP2 00002867: POP 00002868: POP 00002869: JUMP 0000286a: JUMPDEST 0000286b: PUSH1 0x00 0000286d: PUSH26 0xffffffffffffffffffffffffffffffffffffffffffffffffffff 00002888: DUP3 00002889: GT 0000288a: ISZERO 0000288b: PUSH2 0x2916 0000288e: JUMPI 0000288f: PUSH1 0x40 00002891: MLOAD 00002892: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000028b3: DUP2 000028b4: MSTORE 000028b5: PUSH1 0x20 000028b7: PUSH1 0x04 000028b9: DUP3 000028ba: ADD 000028bb: MSTORE 000028bc: PUSH1 0x27 000028be: PUSH1 0x24 000028c0: DUP3 000028c1: ADD 000028c2: MSTORE 000028c3: PUSH32 0x53616665436173743a2076616c756520646f65736e27742066697420696e2032 000028e4: PUSH1 0x44 000028e6: DUP3 000028e7: ADD 000028e8: MSTORE 000028e9: PUSH32 0x3038206269747300000000000000000000000000000000000000000000000000 0000290a: PUSH1 0x64 0000290c: DUP3 0000290d: ADD 0000290e: MSTORE 0000290f: PUSH1 0x84 00002911: ADD 00002912: PUSH2 0x0cf4 00002915: JUMP 00002916: JUMPDEST 00002917: POP 00002918: SWAP1 00002919: JUMP 0000291a: JUMPDEST 0000291b: PUSH1 0x40 0000291d: DUP1 0000291e: MLOAD 0000291f: DUP1 00002920: DUP3 00002921: ADD 00002922: DUP3 00002923: MSTORE 00002924: PUSH1 0x67 00002926: SLOAD 00002927: DUP1 00002928: DUP3 00002929: MSTORE 0000292a: PUSH1 0x68 0000292c: SLOAD 0000292d: PUSH1 0x20 0000292f: DUP4 00002930: ADD 00002931: DUP2 00002932: SWAP1 00002933: MSTORE 00002934: PUSH1 0x6b 00002936: DUP1 00002937: SLOAD 00002938: PUSH32 0xffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff 00002959: AND 0000295a: SWAP1 0000295b: SSTORE 0000295c: PUSH1 0x65 0000295e: SWAP2 0000295f: SWAP1 00002960: SWAP2 00002961: SSTORE 00002962: PUSH1 0x66 00002964: SSTORE 00002965: SWAP1 00002966: MLOAD 00002967: PUSH32 0x44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee6 00002988: SWAP1 00002989: PUSH1 0x00 0000298b: SWAP1 0000298c: LOG1 0000298d: DUP1 0000298e: MLOAD 0000298f: PUSH1 0x20 00002991: DUP3 00002992: ADD 00002993: MLOAD 00002994: PUSH32 0x23aa2e4f757a7bd974085d3e11439a843b137b30905e3ffd51b2097c34aef62e 000029b5: SWAP2 000029b6: SWAP1 000029b7: PUSH2 0x0e10 000029ba: PUSH2 0x29c3 000029bd: DUP2 000029be: TIMESTAMP 000029bf: PUSH2 0x358a 000029c2: JUMP 000029c3: JUMPDEST 000029c4: PUSH2 0x29cd 000029c7: SWAP2 000029c8: SWAP1 000029c9: PUSH2 0x35d6 000029cc: JUMP 000029cd: JUMPDEST 000029ce: PUSH1 0x40 000029d0: DUP1 000029d1: MLOAD 000029d2: SWAP4 000029d3: DUP5 000029d4: MSTORE 000029d5: PUSH1 0x20 000029d7: DUP5 000029d8: ADD 000029d9: SWAP3 000029da: SWAP1 000029db: SWAP3 000029dc: MSTORE 000029dd: PUSH6 0xffffffffffff 000029e4: AND 000029e5: SWAP1 000029e6: DUP3 000029e7: ADD 000029e8: MSTORE 000029e9: PUSH1 0x60 000029eb: ADD 000029ec: PUSH2 0x0804 000029ef: JUMP 000029f0: JUMPDEST 000029f1: PUSH1 0x6b 000029f3: SLOAD 000029f4: PUSH1 0x00 000029f6: SWAP1 000029f7: PUSH2 0x0e10 000029fa: SWAP1 000029fb: PUSH27 0x010000000000000000000000000000000000000000000000000000 00002a17: SWAP1 00002a18: DIV 00002a19: PUSH6 0xffffffffffff 00002a20: AND 00002a21: DUP2 00002a22: PUSH2 0x2a2c 00002a25: PUSH1 0x01 00002a27: DUP7 00002a28: PUSH2 0x3600 00002a2b: JUMP 00002a2c: JUMPDEST 00002a2d: PUSH2 0x2a36 00002a30: SWAP2 00002a31: SWAP1 00002a32: PUSH2 0x358a 00002a35: JUMP 00002a36: JUMPDEST 00002a37: PUSH2 0x2a41 00002a3a: SWAP1 00002a3b: PUSH1 0x01 00002a3d: PUSH2 0x3626 00002a40: JUMP 00002a41: JUMPDEST 00002a42: PUSH2 0x2a4b 00002a45: SWAP2 00002a46: SWAP1 00002a47: PUSH2 0x3626 00002a4a: JUMP 00002a4b: JUMPDEST 00002a4c: PUSH2 0x2864 00002a4f: SWAP2 00002a50: SWAP1 00002a51: PUSH2 0x35d6 00002a54: JUMP 00002a55: JUMPDEST 00002a56: PUSH1 0x00 00002a58: PUSH2 0x2ab7 00002a5b: DUP3 00002a5c: PUSH1 0x40 00002a5e: MLOAD 00002a5f: DUP1 00002a60: PUSH1 0x40 00002a62: ADD 00002a63: PUSH1 0x40 00002a65: MSTORE 00002a66: DUP1 00002a67: PUSH1 0x20 00002a69: DUP2 00002a6a: MSTORE 00002a6b: PUSH1 0x20 00002a6d: ADD 00002a6e: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 00002a8f: DUP2 00002a90: MSTORE 00002a91: POP 00002a92: DUP6 00002a93: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002aa8: AND 00002aa9: PUSH2 0x2c90 00002aac: SWAP1 00002aad: SWAP3 00002aae: SWAP2 00002aaf: SWAP1 00002ab0: PUSH4 0xffffffff 00002ab5: AND 00002ab6: JUMP 00002ab7: JUMPDEST 00002ab8: DUP1 00002ab9: MLOAD 00002aba: SWAP1 00002abb: SWAP2 00002abc: POP 00002abd: ISZERO 00002abe: PUSH2 0x23ec 00002ac1: JUMPI 00002ac2: DUP1 00002ac3: DUP1 00002ac4: PUSH1 0x20 00002ac6: ADD 00002ac7: SWAP1 00002ac8: MLOAD 00002ac9: DUP2 00002aca: ADD 00002acb: SWAP1 00002acc: PUSH2 0x2ad5 00002acf: SWAP2 00002ad0: SWAP1 00002ad1: PUSH2 0x3406 00002ad4: JUMP 00002ad5: JUMPDEST 00002ad6: PUSH2 0x23ec 00002ad9: JUMPI 00002ada: PUSH1 0x40 00002adc: MLOAD 00002add: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002afe: DUP2 00002aff: MSTORE 00002b00: PUSH1 0x20 00002b02: PUSH1 0x04 00002b04: DUP3 00002b05: ADD 00002b06: MSTORE 00002b07: PUSH1 0x2a 00002b09: PUSH1 0x24 00002b0b: DUP3 00002b0c: ADD 00002b0d: MSTORE 00002b0e: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e 00002b2f: PUSH1 0x44 00002b31: DUP3 00002b32: ADD 00002b33: MSTORE 00002b34: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000 00002b55: PUSH1 0x64 00002b57: DUP3 00002b58: ADD 00002b59: MSTORE 00002b5a: PUSH1 0x84 00002b5c: ADD 00002b5d: PUSH2 0x0cf4 00002b60: JUMP 00002b61: JUMPDEST 00002b62: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002b77: DUP2 00002b78: AND 00002b79: EXTCODESIZE 00002b7a: PUSH2 0x2c05 00002b7d: JUMPI 00002b7e: PUSH1 0x40 00002b80: MLOAD 00002b81: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002ba2: DUP2 00002ba3: MSTORE 00002ba4: PUSH1 0x20 00002ba6: PUSH1 0x04 00002ba8: DUP3 00002ba9: ADD 00002baa: MSTORE 00002bab: PUSH1 0x2d 00002bad: PUSH1 0x24 00002baf: DUP3 00002bb0: ADD 00002bb1: MSTORE 00002bb2: PUSH32 0x455243313936373a206e657720696d706c656d656e746174696f6e206973206e 00002bd3: PUSH1 0x44 00002bd5: DUP3 00002bd6: ADD 00002bd7: MSTORE 00002bd8: PUSH32 0x6f74206120636f6e747261637400000000000000000000000000000000000000 00002bf9: PUSH1 0x64 00002bfb: DUP3 00002bfc: ADD 00002bfd: MSTORE 00002bfe: PUSH1 0x84 00002c00: ADD 00002c01: PUSH2 0x0cf4 00002c04: JUMP 00002c05: JUMPDEST 00002c06: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 00002c27: DUP1 00002c28: SLOAD 00002c29: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00002c4a: AND 00002c4b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002c60: SWAP3 00002c61: SWAP1 00002c62: SWAP3 00002c63: AND 00002c64: SWAP2 00002c65: SWAP1 00002c66: SWAP2 00002c67: OR 00002c68: SWAP1 00002c69: SSTORE 00002c6a: JUMP 00002c6b: JUMPDEST 00002c6c: PUSH2 0x2c74 00002c6f: DUP4 00002c70: PUSH2 0x2ca9 00002c73: JUMP 00002c74: JUMPDEST 00002c75: PUSH1 0x00 00002c77: DUP3 00002c78: MLOAD 00002c79: GT 00002c7a: DUP1 00002c7b: PUSH2 0x2c81 00002c7e: JUMPI 00002c7f: POP 00002c80: DUP1 00002c81: JUMPDEST 00002c82: ISZERO 00002c83: PUSH2 0x23ec 00002c86: JUMPI 00002c87: PUSH2 0x244f 00002c8a: DUP4 00002c8b: DUP4 00002c8c: PUSH2 0x2cf6 00002c8f: JUMP 00002c90: JUMPDEST 00002c91: PUSH1 0x60 00002c93: PUSH2 0x2c9f 00002c96: DUP5 00002c97: DUP5 00002c98: PUSH1 0x00 00002c9a: DUP6 00002c9b: PUSH2 0x2e35 00002c9e: JUMP 00002c9f: JUMPDEST 00002ca0: SWAP1 00002ca1: POP 00002ca2: JUMPDEST 00002ca3: SWAP4 00002ca4: SWAP3 00002ca5: POP 00002ca6: POP 00002ca7: POP 00002ca8: JUMP 00002ca9: JUMPDEST 00002caa: PUSH2 0x2cb2 00002cad: DUP2 00002cae: PUSH2 0x2b61 00002cb1: JUMP 00002cb2: JUMPDEST 00002cb3: PUSH1 0x40 00002cb5: MLOAD 00002cb6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002ccb: DUP3 00002ccc: AND 00002ccd: SWAP1 00002cce: PUSH32 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b 00002cef: SWAP1 00002cf0: PUSH1 0x00 00002cf2: SWAP1 00002cf3: LOG2 00002cf4: POP 00002cf5: JUMP 00002cf6: JUMPDEST 00002cf7: PUSH1 0x60 00002cf9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002d0e: DUP4 00002d0f: AND 00002d10: EXTCODESIZE 00002d11: PUSH2 0x2d9c 00002d14: JUMPI 00002d15: PUSH1 0x40 00002d17: MLOAD 00002d18: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002d39: DUP2 00002d3a: MSTORE 00002d3b: PUSH1 0x20 00002d3d: PUSH1 0x04 00002d3f: DUP3 00002d40: ADD 00002d41: MSTORE 00002d42: PUSH1 0x26 00002d44: PUSH1 0x24 00002d46: DUP3 00002d47: ADD 00002d48: MSTORE 00002d49: PUSH32 0x416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f 00002d6a: PUSH1 0x44 00002d6c: DUP3 00002d6d: ADD 00002d6e: MSTORE 00002d6f: PUSH32 0x6e74726163740000000000000000000000000000000000000000000000000000 00002d90: PUSH1 0x64 00002d92: DUP3 00002d93: ADD 00002d94: MSTORE 00002d95: PUSH1 0x84 00002d97: ADD 00002d98: PUSH2 0x0cf4 00002d9b: JUMP 00002d9c: JUMPDEST 00002d9d: PUSH1 0x00 00002d9f: DUP1 00002da0: DUP5 00002da1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002db6: AND 00002db7: DUP5 00002db8: PUSH1 0x40 00002dba: MLOAD 00002dbb: PUSH2 0x2dc4 00002dbe: SWAP2 00002dbf: SWAP1 00002dc0: PUSH2 0x3645 00002dc3: JUMP 00002dc4: JUMPDEST 00002dc5: PUSH1 0x00 00002dc7: PUSH1 0x40 00002dc9: MLOAD 00002dca: DUP1 00002dcb: DUP4 00002dcc: SUB 00002dcd: DUP2 00002dce: DUP6 00002dcf: GAS 00002dd0: DELEGATECALL 00002dd1: SWAP2 00002dd2: POP 00002dd3: POP 00002dd4: RETURNDATASIZE 00002dd5: DUP1 00002dd6: PUSH1 0x00 00002dd8: DUP2 00002dd9: EQ 00002dda: PUSH2 0x2dff 00002ddd: JUMPI 00002dde: PUSH1 0x40 00002de0: MLOAD 00002de1: SWAP2 00002de2: POP 00002de3: PUSH1 0x1f 00002de5: NOT 00002de6: PUSH1 0x3f 00002de8: RETURNDATASIZE 00002de9: ADD 00002dea: AND 00002deb: DUP3 00002dec: ADD 00002ded: PUSH1 0x40 00002def: MSTORE 00002df0: RETURNDATASIZE 00002df1: DUP3 00002df2: MSTORE 00002df3: RETURNDATASIZE 00002df4: PUSH1 0x00 00002df6: PUSH1 0x20 00002df8: DUP5 00002df9: ADD 00002dfa: RETURNDATACOPY 00002dfb: PUSH2 0x2e04 00002dfe: JUMP 00002dff: JUMPDEST 00002e00: PUSH1 0x60 00002e02: SWAP2 00002e03: POP 00002e04: JUMPDEST 00002e05: POP 00002e06: SWAP2 00002e07: POP 00002e08: SWAP2 00002e09: POP 00002e0a: PUSH2 0x2e2c 00002e0d: DUP3 00002e0e: DUP3 00002e0f: PUSH1 0x40 00002e11: MLOAD 00002e12: DUP1 00002e13: PUSH1 0x60 00002e15: ADD 00002e16: PUSH1 0x40 00002e18: MSTORE 00002e19: DUP1 00002e1a: PUSH1 0x27 00002e1c: DUP2 00002e1d: MSTORE 00002e1e: PUSH1 0x20 00002e20: ADD 00002e21: PUSH2 0x3662 00002e24: PUSH1 0x27 00002e26: SWAP2 00002e27: CODECOPY 00002e28: PUSH2 0x2f50 00002e2b: JUMP 00002e2c: JUMPDEST 00002e2d: SWAP6 00002e2e: SWAP5 00002e2f: POP 00002e30: POP 00002e31: POP 00002e32: POP 00002e33: POP 00002e34: JUMP 00002e35: JUMPDEST 00002e36: PUSH1 0x60 00002e38: DUP3 00002e39: SELFBALANCE 00002e3a: LT 00002e3b: ISZERO 00002e3c: PUSH2 0x2ec7 00002e3f: JUMPI 00002e40: PUSH1 0x40 00002e42: MLOAD 00002e43: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002e64: DUP2 00002e65: MSTORE 00002e66: PUSH1 0x20 00002e68: PUSH1 0x04 00002e6a: DUP3 00002e6b: ADD 00002e6c: MSTORE 00002e6d: PUSH1 0x26 00002e6f: PUSH1 0x24 00002e71: DUP3 00002e72: ADD 00002e73: MSTORE 00002e74: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f 00002e95: PUSH1 0x44 00002e97: DUP3 00002e98: ADD 00002e99: MSTORE 00002e9a: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000 00002ebb: PUSH1 0x64 00002ebd: DUP3 00002ebe: ADD 00002ebf: MSTORE 00002ec0: PUSH1 0x84 00002ec2: ADD 00002ec3: PUSH2 0x0cf4 00002ec6: JUMP 00002ec7: JUMPDEST 00002ec8: PUSH1 0x00 00002eca: DUP1 00002ecb: DUP7 00002ecc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002ee1: AND 00002ee2: DUP6 00002ee3: DUP8 00002ee4: PUSH1 0x40 00002ee6: MLOAD 00002ee7: PUSH2 0x2ef0 00002eea: SWAP2 00002eeb: SWAP1 00002eec: PUSH2 0x3645 00002eef: JUMP 00002ef0: JUMPDEST 00002ef1: PUSH1 0x00 00002ef3: PUSH1 0x40 00002ef5: MLOAD 00002ef6: DUP1 00002ef7: DUP4 00002ef8: SUB 00002ef9: DUP2 00002efa: DUP6 00002efb: DUP8 00002efc: GAS 00002efd: CALL 00002efe: SWAP3 00002eff: POP 00002f00: POP 00002f01: POP 00002f02: RETURNDATASIZE 00002f03: DUP1 00002f04: PUSH1 0x00 00002f06: DUP2 00002f07: EQ 00002f08: PUSH2 0x2f2d 00002f0b: JUMPI 00002f0c: PUSH1 0x40 00002f0e: MLOAD 00002f0f: SWAP2 00002f10: POP 00002f11: PUSH1 0x1f 00002f13: NOT 00002f14: PUSH1 0x3f 00002f16: RETURNDATASIZE 00002f17: ADD 00002f18: AND 00002f19: DUP3 00002f1a: ADD 00002f1b: PUSH1 0x40 00002f1d: MSTORE 00002f1e: RETURNDATASIZE 00002f1f: DUP3 00002f20: MSTORE 00002f21: RETURNDATASIZE 00002f22: PUSH1 0x00 00002f24: PUSH1 0x20 00002f26: DUP5 00002f27: ADD 00002f28: RETURNDATACOPY 00002f29: PUSH2 0x2f32 00002f2c: JUMP 00002f2d: JUMPDEST 00002f2e: PUSH1 0x60 00002f30: SWAP2 00002f31: POP 00002f32: JUMPDEST 00002f33: POP 00002f34: SWAP2 00002f35: POP 00002f36: SWAP2 00002f37: POP 00002f38: PUSH2 0x2f43 00002f3b: DUP8 00002f3c: DUP4 00002f3d: DUP4 00002f3e: DUP8 00002f3f: PUSH2 0x2f69 00002f42: JUMP 00002f43: JUMPDEST 00002f44: SWAP3 00002f45: POP 00002f46: POP 00002f47: POP 00002f48: JUMPDEST 00002f49: SWAP5 00002f4a: SWAP4 00002f4b: POP 00002f4c: POP 00002f4d: POP 00002f4e: POP 00002f4f: JUMP 00002f50: JUMPDEST 00002f51: PUSH1 0x60 00002f53: DUP4 00002f54: ISZERO 00002f55: PUSH2 0x2f5f 00002f58: JUMPI 00002f59: POP 00002f5a: DUP2 00002f5b: PUSH2 0x2ca2 00002f5e: JUMP 00002f5f: JUMPDEST 00002f60: PUSH2 0x2ca2 00002f63: DUP4 00002f64: DUP4 00002f65: PUSH2 0x3005 00002f68: JUMP 00002f69: JUMPDEST 00002f6a: PUSH1 0x60 00002f6c: DUP4 00002f6d: ISZERO 00002f6e: PUSH2 0x2fff 00002f71: JUMPI 00002f72: DUP3 00002f73: MLOAD 00002f74: PUSH1 0x00 00002f76: SUB 00002f77: PUSH2 0x2ff8 00002f7a: JUMPI 00002f7b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002f90: DUP6 00002f91: AND 00002f92: EXTCODESIZE 00002f93: PUSH2 0x2ff8 00002f96: JUMPI 00002f97: PUSH1 0x40 00002f99: MLOAD 00002f9a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002fbb: DUP2 00002fbc: MSTORE 00002fbd: PUSH1 0x20 00002fbf: PUSH1 0x04 00002fc1: DUP3 00002fc2: ADD 00002fc3: MSTORE 00002fc4: PUSH1 0x1d 00002fc6: PUSH1 0x24 00002fc8: DUP3 00002fc9: ADD 00002fca: MSTORE 00002fcb: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 00002fec: PUSH1 0x44 00002fee: DUP3 00002fef: ADD 00002ff0: MSTORE 00002ff1: PUSH1 0x64 00002ff3: ADD 00002ff4: PUSH2 0x0cf4 00002ff7: JUMP 00002ff8: JUMPDEST 00002ff9: POP 00002ffa: DUP2 00002ffb: PUSH2 0x2f48 00002ffe: JUMP 00002fff: JUMPDEST 00003000: PUSH2 0x2f48 00003003: DUP4 00003004: DUP4 00003005: JUMPDEST 00003006: DUP2 00003007: MLOAD 00003008: ISZERO 00003009: PUSH2 0x3015 0000300c: JUMPI 0000300d: DUP2 0000300e: MLOAD 0000300f: DUP1 00003010: DUP4 00003011: PUSH1 0x20 00003013: ADD 00003014: REVERT 00003015: JUMPDEST 00003016: DUP1 00003017: PUSH1 0x40 00003019: MLOAD 0000301a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000303b: DUP2 0000303c: MSTORE 0000303d: PUSH1 0x04 0000303f: ADD 00003040: PUSH2 0x0cf4 00003043: SWAP2 00003044: SWAP1 00003045: PUSH2 0x3489 00003048: JUMP 00003049: JUMPDEST 0000304a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000305f: DUP2 00003060: AND 00003061: DUP2 00003062: EQ 00003063: PUSH2 0x0e3a 00003066: JUMPI 00003067: PUSH1 0x00 00003069: DUP1 0000306a: REVERT 0000306b: JUMPDEST 0000306c: PUSH1 0x00 0000306e: DUP1 0000306f: PUSH1 0x40 00003071: DUP4 00003072: DUP6 00003073: SUB 00003074: SLT 00003075: ISZERO 00003076: PUSH2 0x307e 00003079: JUMPI 0000307a: PUSH1 0x00 0000307c: DUP1 0000307d: REVERT 0000307e: JUMPDEST 0000307f: DUP3 00003080: CALLDATALOAD 00003081: PUSH2 0x3089 00003084: DUP2 00003085: PUSH2 0x3049 00003088: JUMP 00003089: JUMPDEST 0000308a: SWAP2 0000308b: POP 0000308c: PUSH1 0x20 0000308e: DUP4 0000308f: ADD 00003090: CALLDATALOAD 00003091: PUSH2 0x3099 00003094: DUP2 00003095: PUSH2 0x3049 00003098: JUMP 00003099: JUMPDEST 0000309a: DUP1 0000309b: SWAP2 0000309c: POP 0000309d: POP 0000309e: SWAP3 0000309f: POP 000030a0: SWAP3 000030a1: SWAP1 000030a2: POP 000030a3: JUMP 000030a4: JUMPDEST 000030a5: PUSH1 0x00 000030a7: PUSH1 0x20 000030a9: DUP3 000030aa: DUP5 000030ab: SUB 000030ac: SLT 000030ad: ISZERO 000030ae: PUSH2 0x30b6 000030b1: JUMPI 000030b2: PUSH1 0x00 000030b4: DUP1 000030b5: REVERT 000030b6: JUMPDEST 000030b7: POP 000030b8: CALLDATALOAD 000030b9: SWAP2 000030ba: SWAP1 000030bb: POP 000030bc: JUMP 000030bd: JUMPDEST 000030be: PUSH1 0x00 000030c0: DUP1 000030c1: PUSH1 0x00 000030c3: PUSH1 0x60 000030c5: DUP5 000030c6: DUP7 000030c7: SUB 000030c8: SLT 000030c9: ISZERO 000030ca: PUSH2 0x30d2 000030cd: JUMPI 000030ce: PUSH1 0x00 000030d0: DUP1 000030d1: REVERT 000030d2: JUMPDEST 000030d3: DUP4 000030d4: CALLDATALOAD 000030d5: PUSH2 0x30dd 000030d8: DUP2 000030d9: PUSH2 0x3049 000030dc: JUMP 000030dd: JUMPDEST 000030de: SWAP3 000030df: POP 000030e0: PUSH1 0x20 000030e2: DUP5 000030e3: ADD 000030e4: CALLDATALOAD 000030e5: PUSH2 0x30ed 000030e8: DUP2 000030e9: PUSH2 0x3049 000030ec: JUMP 000030ed: JUMPDEST 000030ee: SWAP3 000030ef: SWAP6 000030f0: SWAP3 000030f1: SWAP5 000030f2: POP 000030f3: POP 000030f4: POP 000030f5: PUSH1 0x40 000030f7: SWAP2 000030f8: SWAP1 000030f9: SWAP2 000030fa: ADD 000030fb: CALLDATALOAD 000030fc: SWAP1 000030fd: JUMP 000030fe: JUMPDEST 000030ff: PUSH1 0x00 00003101: PUSH1 0x20 00003103: DUP3 00003104: DUP5 00003105: SUB 00003106: SLT 00003107: ISZERO 00003108: PUSH2 0x3110 0000310b: JUMPI 0000310c: PUSH1 0x00 0000310e: DUP1 0000310f: REVERT 00003110: JUMPDEST 00003111: DUP2 00003112: CALLDATALOAD 00003113: PUSH2 0x2ca2 00003116: DUP2 00003117: PUSH2 0x3049 0000311a: JUMP 0000311b: JUMPDEST 0000311c: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 0000313d: PUSH1 0x00 0000313f: MSTORE 00003140: PUSH1 0x41 00003142: PUSH1 0x04 00003144: MSTORE 00003145: PUSH1 0x24 00003147: PUSH1 0x00 00003149: REVERT 0000314a: JUMPDEST 0000314b: PUSH1 0x00 0000314d: PUSH8 0xffffffffffffffff 00003156: DUP1 00003157: DUP5 00003158: GT 00003159: ISZERO 0000315a: PUSH2 0x3165 0000315d: JUMPI 0000315e: PUSH2 0x3165 00003161: PUSH2 0x311b 00003164: JUMP 00003165: JUMPDEST 00003166: PUSH1 0x40 00003168: MLOAD 00003169: PUSH1 0x1f 0000316b: DUP6 0000316c: ADD 0000316d: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 0000318e: SWAP1 0000318f: DUP2 00003190: AND 00003191: PUSH1 0x3f 00003193: ADD 00003194: AND 00003195: DUP2 00003196: ADD 00003197: SWAP1 00003198: DUP3 00003199: DUP3 0000319a: GT 0000319b: DUP2 0000319c: DUP4 0000319d: LT 0000319e: OR 0000319f: ISZERO 000031a0: PUSH2 0x31ab 000031a3: JUMPI 000031a4: PUSH2 0x31ab 000031a7: PUSH2 0x311b 000031aa: JUMP 000031ab: JUMPDEST 000031ac: DUP2 000031ad: PUSH1 0x40 000031af: MSTORE 000031b0: DUP1 000031b1: SWAP4 000031b2: POP 000031b3: DUP6 000031b4: DUP2 000031b5: MSTORE 000031b6: DUP7 000031b7: DUP7 000031b8: DUP7 000031b9: ADD 000031ba: GT 000031bb: ISZERO 000031bc: PUSH2 0x31c4 000031bf: JUMPI 000031c0: PUSH1 0x00 000031c2: DUP1 000031c3: REVERT 000031c4: JUMPDEST 000031c5: DUP6 000031c6: DUP6 000031c7: PUSH1 0x20 000031c9: DUP4 000031ca: ADD 000031cb: CALLDATACOPY 000031cc: PUSH1 0x00 000031ce: PUSH1 0x20 000031d0: DUP8 000031d1: DUP4 000031d2: ADD 000031d3: ADD 000031d4: MSTORE 000031d5: POP 000031d6: POP 000031d7: POP 000031d8: SWAP4 000031d9: SWAP3 000031da: POP 000031db: POP 000031dc: POP 000031dd: JUMP 000031de: JUMPDEST 000031df: PUSH1 0x00 000031e1: PUSH1 0x20 000031e3: DUP3 000031e4: DUP5 000031e5: SUB 000031e6: SLT 000031e7: ISZERO 000031e8: PUSH2 0x31f0 000031eb: JUMPI 000031ec: PUSH1 0x00 000031ee: DUP1 000031ef: REVERT 000031f0: JUMPDEST 000031f1: DUP2 000031f2: CALLDATALOAD 000031f3: PUSH8 0xffffffffffffffff 000031fc: DUP2 000031fd: GT 000031fe: ISZERO 000031ff: PUSH2 0x3207 00003202: JUMPI 00003203: PUSH1 0x00 00003205: DUP1 00003206: REVERT 00003207: JUMPDEST 00003208: DUP3 00003209: ADD 0000320a: PUSH1 0x1f 0000320c: DUP2 0000320d: ADD 0000320e: DUP5 0000320f: SGT 00003210: PUSH2 0x3218 00003213: JUMPI 00003214: PUSH1 0x00 00003216: DUP1 00003217: REVERT 00003218: JUMPDEST 00003219: PUSH2 0x2f48 0000321c: DUP5 0000321d: DUP3 0000321e: CALLDATALOAD 0000321f: PUSH1 0x20 00003221: DUP5 00003222: ADD 00003223: PUSH2 0x314a 00003226: JUMP 00003227: JUMPDEST 00003228: PUSH1 0x00 0000322a: PUSH1 0x20 0000322c: DUP3 0000322d: DUP5 0000322e: SUB 0000322f: SLT 00003230: ISZERO 00003231: PUSH2 0x3239 00003234: JUMPI 00003235: PUSH1 0x00 00003237: DUP1 00003238: REVERT 00003239: JUMPDEST 0000323a: DUP2 0000323b: CALLDATALOAD 0000323c: PUSH6 0xffffffffffff 00003243: DUP2 00003244: AND 00003245: DUP2 00003246: EQ 00003247: PUSH2 0x2ca2 0000324a: JUMPI 0000324b: PUSH1 0x00 0000324d: DUP1 0000324e: REVERT 0000324f: JUMPDEST 00003250: PUSH1 0x00 00003252: DUP1 00003253: PUSH1 0x40 00003255: DUP4 00003256: DUP6 00003257: SUB 00003258: SLT 00003259: ISZERO 0000325a: PUSH2 0x3262 0000325d: JUMPI 0000325e: PUSH1 0x00 00003260: DUP1 00003261: REVERT 00003262: JUMPDEST 00003263: DUP3 00003264: CALLDATALOAD 00003265: PUSH2 0x326d 00003268: DUP2 00003269: PUSH2 0x3049 0000326c: JUMP 0000326d: JUMPDEST 0000326e: SWAP2 0000326f: POP 00003270: PUSH1 0x20 00003272: DUP4 00003273: ADD 00003274: CALLDATALOAD 00003275: PUSH8 0xffffffffffffffff 0000327e: DUP2 0000327f: GT 00003280: ISZERO 00003281: PUSH2 0x3289 00003284: JUMPI 00003285: PUSH1 0x00 00003287: DUP1 00003288: REVERT 00003289: JUMPDEST 0000328a: DUP4 0000328b: ADD 0000328c: PUSH1 0x1f 0000328e: DUP2 0000328f: ADD 00003290: DUP6 00003291: SGT 00003292: PUSH2 0x329a 00003295: JUMPI 00003296: PUSH1 0x00 00003298: DUP1 00003299: REVERT 0000329a: JUMPDEST 0000329b: PUSH2 0x32a9 0000329e: DUP6 0000329f: DUP3 000032a0: CALLDATALOAD 000032a1: PUSH1 0x20 000032a3: DUP5 000032a4: ADD 000032a5: PUSH2 0x314a 000032a8: JUMP 000032a9: JUMPDEST 000032aa: SWAP2 000032ab: POP 000032ac: POP 000032ad: SWAP3 000032ae: POP 000032af: SWAP3 000032b0: SWAP1 000032b1: POP 000032b2: JUMP 000032b3: JUMPDEST 000032b4: PUSH1 0x00 000032b6: DUP1 000032b7: DUP4 000032b8: PUSH1 0x1f 000032ba: DUP5 000032bb: ADD 000032bc: SLT 000032bd: PUSH2 0x32c5 000032c0: JUMPI 000032c1: PUSH1 0x00 000032c3: DUP1 000032c4: REVERT 000032c5: JUMPDEST 000032c6: POP 000032c7: DUP2 000032c8: CALLDATALOAD 000032c9: PUSH8 0xffffffffffffffff 000032d2: DUP2 000032d3: GT 000032d4: ISZERO 000032d5: PUSH2 0x32dd 000032d8: JUMPI 000032d9: PUSH1 0x00 000032db: DUP1 000032dc: REVERT 000032dd: JUMPDEST 000032de: PUSH1 0x20 000032e0: DUP4 000032e1: ADD 000032e2: SWAP2 000032e3: POP 000032e4: DUP4 000032e5: PUSH1 0x20 000032e7: DUP3 000032e8: PUSH1 0x05 000032ea: SHL 000032eb: DUP6 000032ec: ADD 000032ed: ADD 000032ee: GT 000032ef: ISZERO 000032f0: PUSH2 0x32f8 000032f3: JUMPI 000032f4: PUSH1 0x00 000032f6: DUP1 000032f7: REVERT 000032f8: JUMPDEST 000032f9: SWAP3 000032fa: POP 000032fb: SWAP3 000032fc: SWAP1 000032fd: POP 000032fe: JUMP 000032ff: JUMPDEST 00003300: PUSH1 0x00 00003302: DUP1 00003303: PUSH1 0x00 00003305: DUP1 00003306: PUSH1 0x00 00003308: DUP1 00003309: PUSH1 0x00 0000330b: DUP1 0000330c: PUSH1 0x80 0000330e: DUP10 0000330f: DUP12 00003310: SUB 00003311: SLT 00003312: ISZERO 00003313: PUSH2 0x331b 00003316: JUMPI 00003317: PUSH1 0x00 00003319: DUP1 0000331a: REVERT 0000331b: JUMPDEST 0000331c: DUP9 0000331d: CALLDATALOAD 0000331e: PUSH8 0xffffffffffffffff 00003327: DUP1 00003328: DUP3 00003329: GT 0000332a: ISZERO 0000332b: PUSH2 0x3333 0000332e: JUMPI 0000332f: PUSH1 0x00 00003331: DUP1 00003332: REVERT 00003333: JUMPDEST 00003334: PUSH2 0x333f 00003337: DUP13 00003338: DUP4 00003339: DUP14 0000333a: ADD 0000333b: PUSH2 0x32b3 0000333e: JUMP 0000333f: JUMPDEST 00003340: SWAP1 00003341: SWAP11 00003342: POP 00003343: SWAP9 00003344: POP 00003345: PUSH1 0x20 00003347: DUP12 00003348: ADD 00003349: CALLDATALOAD 0000334a: SWAP2 0000334b: POP 0000334c: DUP1 0000334d: DUP3 0000334e: GT 0000334f: ISZERO 00003350: PUSH2 0x3358 00003353: JUMPI 00003354: PUSH1 0x00 00003356: DUP1 00003357: REVERT 00003358: JUMPDEST 00003359: PUSH2 0x3364 0000335c: DUP13 0000335d: DUP4 0000335e: DUP14 0000335f: ADD 00003360: PUSH2 0x32b3 00003363: JUMP 00003364: JUMPDEST 00003365: SWAP1 00003366: SWAP9 00003367: POP 00003368: SWAP7 00003369: POP 0000336a: PUSH1 0x40 0000336c: DUP12 0000336d: ADD 0000336e: CALLDATALOAD 0000336f: SWAP2 00003370: POP 00003371: DUP1 00003372: DUP3 00003373: GT 00003374: ISZERO 00003375: PUSH2 0x337d 00003378: JUMPI 00003379: PUSH1 0x00 0000337b: DUP1 0000337c: REVERT 0000337d: JUMPDEST 0000337e: PUSH2 0x3389 00003381: DUP13 00003382: DUP4 00003383: DUP14 00003384: ADD 00003385: PUSH2 0x32b3 00003388: JUMP 00003389: JUMPDEST 0000338a: SWAP1 0000338b: SWAP7 0000338c: POP 0000338d: SWAP5 0000338e: POP 0000338f: PUSH1 0x60 00003391: DUP12 00003392: ADD 00003393: CALLDATALOAD 00003394: SWAP2 00003395: POP 00003396: DUP1 00003397: DUP3 00003398: GT 00003399: ISZERO 0000339a: PUSH2 0x33a2 0000339d: JUMPI 0000339e: PUSH1 0x00 000033a0: DUP1 000033a1: REVERT 000033a2: JUMPDEST 000033a3: POP 000033a4: PUSH2 0x33af 000033a7: DUP12 000033a8: DUP3 000033a9: DUP13 000033aa: ADD 000033ab: PUSH2 0x32b3 000033ae: JUMP 000033af: JUMPDEST 000033b0: SWAP10 000033b1: SWAP13 000033b2: SWAP9 000033b3: SWAP12 000033b4: POP 000033b5: SWAP7 000033b6: SWAP10 000033b7: POP 000033b8: SWAP5 000033b9: SWAP8 000033ba: SWAP4 000033bb: SWAP7 000033bc: SWAP3 000033bd: SWAP6 000033be: SWAP5 000033bf: POP 000033c0: POP 000033c1: POP 000033c2: JUMP 000033c3: JUMPDEST 000033c4: DUP1 000033c5: ISZERO 000033c6: ISZERO 000033c7: DUP2 000033c8: EQ 000033c9: PUSH2 0x0e3a 000033cc: JUMPI 000033cd: PUSH1 0x00 000033cf: DUP1 000033d0: REVERT 000033d1: JUMPDEST 000033d2: PUSH1 0x00 000033d4: PUSH1 0x20 000033d6: DUP3 000033d7: DUP5 000033d8: SUB 000033d9: SLT 000033da: ISZERO 000033db: PUSH2 0x33e3 000033de: JUMPI 000033df: PUSH1 0x00 000033e1: DUP1 000033e2: REVERT 000033e3: JUMPDEST 000033e4: DUP2 000033e5: CALLDATALOAD 000033e6: PUSH2 0x2ca2 000033e9: DUP2 000033ea: PUSH2 0x33c3 000033ed: JUMP 000033ee: JUMPDEST 000033ef: PUSH1 0x00 000033f1: PUSH1 0x40 000033f3: DUP3 000033f4: DUP5 000033f5: SUB 000033f6: SLT 000033f7: ISZERO 000033f8: PUSH2 0x3400 000033fb: JUMPI 000033fc: PUSH1 0x00 000033fe: DUP1 000033ff: REVERT 00003400: JUMPDEST 00003401: POP 00003402: SWAP2 00003403: SWAP1 00003404: POP 00003405: JUMP 00003406: JUMPDEST 00003407: PUSH1 0x00 00003409: PUSH1 0x20 0000340b: DUP3 0000340c: DUP5 0000340d: SUB 0000340e: SLT 0000340f: ISZERO 00003410: PUSH2 0x3418 00003413: JUMPI 00003414: PUSH1 0x00 00003416: DUP1 00003417: REVERT 00003418: JUMPDEST 00003419: DUP2 0000341a: MLOAD 0000341b: PUSH2 0x2ca2 0000341e: DUP2 0000341f: PUSH2 0x33c3 00003422: JUMP 00003423: JUMPDEST 00003424: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00003445: PUSH1 0x00 00003447: MSTORE 00003448: PUSH1 0x11 0000344a: PUSH1 0x04 0000344c: MSTORE 0000344d: PUSH1 0x24 0000344f: PUSH1 0x00 00003451: REVERT 00003452: JUMPDEST 00003453: DUP2 00003454: DUP2 00003455: SUB 00003456: DUP2 00003457: DUP2 00003458: GT 00003459: ISZERO 0000345a: PUSH2 0x2864 0000345d: JUMPI 0000345e: PUSH2 0x2864 00003461: PUSH2 0x3423 00003464: JUMP 00003465: JUMPDEST 00003466: PUSH1 0x00 00003468: JUMPDEST 00003469: DUP4 0000346a: DUP2 0000346b: LT 0000346c: ISZERO 0000346d: PUSH2 0x3480 00003470: JUMPI 00003471: DUP2 00003472: DUP2 00003473: ADD 00003474: MLOAD 00003475: DUP4 00003476: DUP3 00003477: ADD 00003478: MSTORE 00003479: PUSH1 0x20 0000347b: ADD 0000347c: PUSH2 0x3468 0000347f: JUMP 00003480: JUMPDEST 00003481: POP 00003482: POP 00003483: PUSH1 0x00 00003485: SWAP2 00003486: ADD 00003487: MSTORE 00003488: JUMP 00003489: JUMPDEST 0000348a: PUSH1 0x20 0000348c: DUP2 0000348d: MSTORE 0000348e: PUSH1 0x00 00003490: DUP3 00003491: MLOAD 00003492: DUP1 00003493: PUSH1 0x20 00003495: DUP5 00003496: ADD 00003497: MSTORE 00003498: PUSH2 0x34a8 0000349b: DUP2 0000349c: PUSH1 0x40 0000349e: DUP6 0000349f: ADD 000034a0: PUSH1 0x20 000034a2: DUP8 000034a3: ADD 000034a4: PUSH2 0x3465 000034a7: JUMP 000034a8: JUMPDEST 000034a9: PUSH1 0x1f 000034ab: ADD 000034ac: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 000034cd: AND 000034ce: SWAP2 000034cf: SWAP1 000034d0: SWAP2 000034d1: ADD 000034d2: PUSH1 0x40 000034d4: ADD 000034d5: SWAP3 000034d6: SWAP2 000034d7: POP 000034d8: POP 000034d9: JUMP 000034da: JUMPDEST 000034db: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000034fc: PUSH1 0x00 000034fe: MSTORE 000034ff: PUSH1 0x32 00003501: PUSH1 0x04 00003503: MSTORE 00003504: PUSH1 0x24 00003506: PUSH1 0x00 00003508: REVERT 00003509: JUMPDEST 0000350a: PUSH1 0x00 0000350c: DUP1 0000350d: DUP4 0000350e: CALLDATALOAD 0000350f: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1 00003530: DUP5 00003531: CALLDATASIZE 00003532: SUB 00003533: ADD 00003534: DUP2 00003535: SLT 00003536: PUSH2 0x353e 00003539: JUMPI 0000353a: PUSH1 0x00 0000353c: DUP1 0000353d: REVERT 0000353e: JUMPDEST 0000353f: DUP4 00003540: ADD 00003541: DUP1 00003542: CALLDATALOAD 00003543: SWAP2 00003544: POP 00003545: PUSH8 0xffffffffffffffff 0000354e: DUP3 0000354f: GT 00003550: ISZERO 00003551: PUSH2 0x3559 00003554: JUMPI 00003555: PUSH1 0x00 00003557: DUP1 00003558: REVERT 00003559: JUMPDEST 0000355a: PUSH1 0x20 0000355c: ADD 0000355d: SWAP2 0000355e: POP 0000355f: PUSH1 0x05 00003561: DUP2 00003562: SWAP1 00003563: SHL 00003564: CALLDATASIZE 00003565: SUB 00003566: DUP3 00003567: SGT 00003568: ISZERO 00003569: PUSH2 0x32f8 0000356c: JUMPI 0000356d: PUSH1 0x00 0000356f: DUP1 00003570: REVERT 00003571: JUMPDEST 00003572: PUSH1 0x00 00003574: PUSH1 0x20 00003576: DUP3 00003577: DUP5 00003578: SUB 00003579: SLT 0000357a: ISZERO 0000357b: PUSH2 0x3583 0000357e: JUMPI 0000357f: PUSH1 0x00 00003581: DUP1 00003582: REVERT 00003583: JUMPDEST 00003584: POP 00003585: MLOAD 00003586: SWAP2 00003587: SWAP1 00003588: POP 00003589: JUMP 0000358a: JUMPDEST 0000358b: PUSH1 0x00 0000358d: PUSH6 0xffffffffffff 00003594: DUP1 00003595: DUP5 00003596: AND 00003597: DUP1 00003598: PUSH2 0x35ca 0000359b: JUMPI 0000359c: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000035bd: PUSH1 0x00 000035bf: MSTORE 000035c0: PUSH1 0x12 000035c2: PUSH1 0x04 000035c4: MSTORE 000035c5: PUSH1 0x24 000035c7: PUSH1 0x00 000035c9: REVERT 000035ca: JUMPDEST 000035cb: SWAP3 000035cc: AND 000035cd: SWAP2 000035ce: SWAP1 000035cf: SWAP2 000035d0: DIV 000035d1: SWAP3 000035d2: SWAP2 000035d3: POP 000035d4: POP 000035d5: JUMP 000035d6: JUMPDEST 000035d7: PUSH6 0xffffffffffff 000035de: DUP2 000035df: DUP2 000035e0: AND 000035e1: DUP4 000035e2: DUP3 000035e3: AND 000035e4: MUL 000035e5: DUP1 000035e6: DUP3 000035e7: AND 000035e8: SWAP2 000035e9: SWAP1 000035ea: DUP3 000035eb: DUP2 000035ec: EQ 000035ed: PUSH2 0x35f8 000035f0: JUMPI 000035f1: PUSH2 0x35f8 000035f4: PUSH2 0x3423 000035f7: JUMP 000035f8: JUMPDEST 000035f9: POP 000035fa: POP 000035fb: SWAP3 000035fc: SWAP2 000035fd: POP 000035fe: POP 000035ff: JUMP 00003600: JUMPDEST 00003601: PUSH6 0xffffffffffff 00003608: DUP3 00003609: DUP2 0000360a: AND 0000360b: DUP3 0000360c: DUP3 0000360d: AND 0000360e: SUB 0000360f: SWAP1 00003610: DUP1 00003611: DUP3 00003612: GT 00003613: ISZERO 00003614: PUSH2 0x361f 00003617: JUMPI 00003618: PUSH2 0x361f 0000361b: PUSH2 0x3423 0000361e: JUMP 0000361f: JUMPDEST 00003620: POP 00003621: SWAP3 00003622: SWAP2 00003623: POP 00003624: POP 00003625: JUMP 00003626: JUMPDEST 00003627: PUSH6 0xffffffffffff 0000362e: DUP2 0000362f: DUP2 00003630: AND 00003631: DUP4 00003632: DUP3 00003633: AND 00003634: ADD 00003635: SWAP1 00003636: DUP1 00003637: DUP3 00003638: GT 00003639: ISZERO 0000363a: PUSH2 0x361f 0000363d: JUMPI 0000363e: PUSH2 0x361f 00003641: PUSH2 0x3423 00003644: JUMP 00003645: JUMPDEST 00003646: PUSH1 0x00 00003648: DUP3 00003649: MLOAD 0000364a: PUSH2 0x3657 0000364d: DUP2 0000364e: DUP5 0000364f: PUSH1 0x20 00003651: DUP8 00003652: ADD 00003653: PUSH2 0x3465 00003656: JUMP 00003657: JUMPDEST 00003658: SWAP2 00003659: SWAP1 0000365a: SWAP2 0000365b: ADD 0000365c: SWAP3 0000365d: SWAP2 0000365e: POP 0000365f: POP 00003660: JUMP 00003661: INVALID 00003662: COINBASE 00003663: PUSH5 0x6472657373 00003669: GASPRICE 0000366a: KECCAK256 0000366b: PUSH13 0x6f772d6c6576656c2064656c65 00003679: PUSH8 0x6174652063616c6c 00003682: KECCAK256 00003683: PUSH7 0x61696c6564a264 0000368b: PUSH10 0x706673582212202f9bf6 00003696: UNKNOWN(0xD3) 00003697: INVALID 00003698: UNKNOWN(0x22) 00003699: UNKNOWN(0x22) 0000369a: PUSH27 0x1eb63193d383ee8a2a7028c6e7138310b58b6d8d202688df64736f 000036b6: PUSH13
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | upgradeability | codex | Upgradeable proxy can be taken over if not initialized atomically | 85 | no | — |
viewevidence_json{
"evidence": "`initialize` is externally callable and only sets `core` (no access control), while `_authorizeUpgrade` uses `onlyGovernorUpgrader(core)` which bypasses checks when `core` is zero.",
"locations": [
"contracts/contracts/Distributor.sol:150",
"contracts/contracts/Distributor.sol:156",
"contracts/contracts/utils/UUPSHelper.sol:53"
],
"recommendation": "Ensure proxies are deployed with an initialization call in the constructor/data field. Additionally, add an explicit `require(address(core) != address(0))` in `_authorizeUpgrade` (and/or other privileged paths) so upgrades cannot happen before initialization.",
"exploit_scenario": "If a proxy is deployed without calling `initialize` in the same transaction, `core` remains the zero address. Because `_authorizeUpgrade` relies on `onlyGovernorUpgrader(core)` and that modifier explicitly skips checks when `_core` is zero, any external account can call `upgradeTo` on the proxy and point it to a malicious implementation (or first call `initialize` with a malicious `ICore` and then upgrade), gaining full control of funds and state."
}
|
| high | upgradeability | detector | Untrusted DELEGATECALL target reachable | 55 | no | no |
viewtrace_id: 0x54e3265e4eea013244fc769a0f2c53910fc364c0629b5888d26e691b431c4407
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "unknown",
"attempts": 192,
"trace_id": "0x54e3265e4eea013244fc769a0f2c53910fc364c0629b5888d26e691b431c4407",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xd9c98087",
"selector": "0xd9c98087",
"calldata_variants": [
"0xd9c98087",
"0xd9c980870000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe57480e5",
"selector": "0xe57480e5",
"calldata_variants": [
"0xe57480e5",
"0xe57480e50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2f4eb26",
"selector": "0xf2f4eb26",
"calldata_variants": [
"0xf2f4eb26",
"0xf2f4eb260000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfd54b228",
"selector": "0xfd54b228",
"calldata_variants": [
"0xfd54b228",
"0xfd54b2280000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbdac7ca3",
"selector": "0xbdac7ca3",
"calldata_variants": [
"0xbdac7ca3",
"0xbdac7ca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d66de8",
"selector": "0xc4d66de8",
"calldata_variants": [
"0xc4d66de8",
"0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc748d261",
"selector": "0xc748d261",
"calldata_variants": [
"0xc748d261",
"0xc748d2610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcce80e7a",
"selector": "0xcce80e7a",
"calldata_variants": [
"0xcce80e7a",
"0xcce80e7a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 11728,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 5436,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 5468,
"type": "tx_origin_used"
}
],
"delegatecall_count": 1,
"untrusted_delegatecall_count": 1
}
|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xd9c98087",
"selector": "0xd9c98087",
"calldata_variants": [
"0xd9c98087",
"0xd9c980870000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe57480e5",
"selector": "0xe57480e5",
"calldata_variants": [
"0xe57480e5",
"0xe57480e50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2f4eb26",
"selector": "0xf2f4eb26",
"calldata_variants": [
"0xf2f4eb26",
"0xf2f4eb260000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfd54b228",
"selector": "0xfd54b228",
"calldata_variants": [
"0xfd54b228",
"0xfd54b2280000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbdac7ca3",
"selector": "0xbdac7ca3",
"calldata_variants": [
"0xbdac7ca3",
"0xbdac7ca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d66de8",
"selector": "0xc4d66de8",
"calldata_variants": [
"0xc4d66de8",
"0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc748d261",
"selector": "0xc748d261",
"calldata_variants": [
"0xc748d261",
"0xc748d2610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcce80e7a",
"selector": "0xcce80e7a",
"calldata_variants": [
"0xcce80e7a",
"0xcce80e7a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 5436,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 5468,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x05d7cbab47b7925b8b0f42c805c0d51789b414d93c60d13126091ce3406615a8
call_targets:
0x0e6590f64a82cbc838b2a087281689de1a5bc8e0
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x05d7cbab47b7925b8b0f42c805c0d51789b414d93c60d13126091ce3406615a8",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x0e6590f64a82cbc838b2a087281689de1a5bc8e0"
],
"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": "0xd9c98087",
"selector": "0xd9c98087",
"calldata_variants": [
"0xd9c98087",
"0xd9c980870000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe57480e5",
"selector": "0xe57480e5",
"calldata_variants": [
"0xe57480e5",
"0xe57480e50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2f4eb26",
"selector": "0xf2f4eb26",
"calldata_variants": [
"0xf2f4eb26",
"0xf2f4eb260000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfd54b228",
"selector": "0xfd54b228",
"calldata_variants": [
"0xfd54b228",
"0xfd54b2280000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbdac7ca3",
"selector": "0xbdac7ca3",
"calldata_variants": [
"0xbdac7ca3",
"0xbdac7ca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d66de8",
"selector": "0xc4d66de8",
"calldata_variants": [
"0xc4d66de8",
"0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc748d261",
"selector": "0xc748d261",
"calldata_variants": [
"0xc748d261",
"0xc748d2610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcce80e7a",
"selector": "0xcce80e7a",
"calldata_variants": [
"0xcce80e7a",
"0xcce80e7a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 12029,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 1,
"guards_detected": [
{
"pc": 5436,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 5468,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 1
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 1
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x05d7cbab47b7925b8b0f42c805c0d51789b414d93c60d13126091ce3406615a8
call_targets:
0x0e6590f64a82cbc838b2a087281689de1a5bc8e0
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x05d7cbab47b7925b8b0f42c805c0d51789b414d93c60d13126091ce3406615a8",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x0e6590f64a82cbc838b2a087281689de1a5bc8e0"
],
"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": "0xd9c98087",
"selector": "0xd9c98087",
"calldata_variants": [
"0xd9c98087",
"0xd9c980870000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe57480e5",
"selector": "0xe57480e5",
"calldata_variants": [
"0xe57480e5",
"0xe57480e50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2f4eb26",
"selector": "0xf2f4eb26",
"calldata_variants": [
"0xf2f4eb26",
"0xf2f4eb260000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfd54b228",
"selector": "0xfd54b228",
"calldata_variants": [
"0xfd54b228",
"0xfd54b2280000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xbdac7ca3",
"selector": "0xbdac7ca3",
"calldata_variants": [
"0xbdac7ca3",
"0xbdac7ca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc4d66de8",
"selector": "0xc4d66de8",
"calldata_variants": [
"0xc4d66de8",
"0xc4d66de80000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc748d261",
"selector": "0xc748d261",
"calldata_variants": [
"0xc748d261",
"0xc748d2610000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcce80e7a",
"selector": "0xcce80e7a",
"calldata_variants": [
"0xcce80e7a",
"0xcce80e7a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 12029,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 1,
"guards_detected": [
{
"pc": 5436,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 5468,
"type": "tx_origin_used"
}
]
}
|
| low | other | codex | Dispute deposit accounting assumes full transfer, risking permanent dispute lock with fee-on-transfer tokens | 65 | no | — |
viewevidence_json{
"evidence": "`disputeTree` transfers in `disputeAmount` but `resolveDispute` always transfers out the full nominal amount.",
"locations": [
"contracts/contracts/Distributor.sol:241",
"contracts/contracts/Distributor.sol:254",
"contracts/contracts/Distributor.sol:258"
],
"recommendation": "Restrict `disputeToken` to non-deflationary ERC20s or track the actual amount received (balance before/after) and refund/ slash that amount instead of the nominal `disputeAmount`.",
"exploit_scenario": "If `disputeToken` is fee-on-transfer or rebasing, the contract may receive less than `disputeAmount` in `disputeTree`. `resolveDispute` always attempts to transfer the full `disputeAmount`, which can revert due to insufficient balance, leaving `disputer` set and freezing future `updateTree` calls indefinitely."
}
|
| low | access_control | codex | `tx.origin` allows bypassing operator-only claim policy | 65 | no | — |
viewevidence_json{
"evidence": "Claim authorization uses `tx.origin` as an alternative to operator approval.",
"locations": [
"contracts/contracts/Distributor.sol:186"
],
"recommendation": "Remove reliance on `tx.origin`. Require `msg.sender == user` or `operators[user][msg.sender] == 1` only, or add an explicit signature-based authorization flow if third-party claims are desired.",
"exploit_scenario": "A malicious contract can get a user to initiate a transaction and then call `claim` on their behalf. The `tx.origin == user` check passes even though the caller is not a whitelisted operator, bypassing the intended operator gate. This lets third-party contracts trigger claims (and burn the user\u2019s gas) without explicit operator approval."
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 5
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 13
}
|