967eefc5-5d64-4367-893f-8979c65295be
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 |
|---|---|---|---|---|
| 30884 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 94315 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 94316 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 94317 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 94318 | capability.graph | complete | 1 / 3 | 1 week ago |
| 94319 | detector.run | complete | 1 / 3 | 1 week ago |
| 94320 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:1297625] OpenAI Codex v0.77.0 (research preview)
[codex:1297625] --------
[codex:1297625] workdir: /tmp/codex-multi-npogdspu
[codex:1297625] model: gpt-5.2-codex
[codex:1297625] provider: openai
[codex:1297625] approval: never
[codex:1297625] sandbox: read-only
[codex:1297625] reasoning effort: xhigh
[codex:1297625] reasoning summaries: auto
[codex:1297625] session id: 019b759b-bfe4-7153-8ce0-a4ce924dbe31
[codex:1297625] --------
[codex:1297625] user
[codex:1297625] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:1297625]
[codex:1297625] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:1297625]
[codex:1297625] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1297625] - Gas inefficiency, code quality, naming, or best practices
[codex:1297625] - Theoretical vulnerabilities without a clear extraction path
[codex:1297625] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:1297625] - Front-running unless it enables theft beyond MEV
[codex:1297625] - DoS, griefing, or issues that don't result in attacker profit
[codex:1297625] - Missing events, view function issues, or informational findings
[codex:1297625]
[codex:1297625] HIGH-VALUE PATTERNS TO HUNT:
[codex:1297625] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:1297625] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:1297625] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:1297625] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:1297625] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:1297625] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:1297625] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:1297625] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:1297625] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:1297625]
[codex:1297625] For each finding, you MUST provide:
[codex:1297625] 1. Exact file and line numbers of vulnerable code
[codex:1297625] 2. Step-by-step exploit transaction sequence
[codex:1297625] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:1297625]
[codex:1297625] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:1297625]
[codex:1297625] Output MUST be valid JSON matching the provided schema.
[codex:1297625] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1297625] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1297625] mcp startup: no servers
[codex:1297625]
[codex:1297625] thinking
[codex:1297625] **Preparing to read instructions**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc ls in /tmp/codex-multi-npogdspu succeeded in 6ms:
[codex:1297625] AUDIT_BUNDLE.txt
[codex:1297625] codex-output-schema.json
[codex:1297625] contracts
[codex:1297625] exec
[codex:1297625] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-npogdspu succeeded in 5ms:
[codex:1297625] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:1297625]
[codex:1297625] ================================================================================
[codex:1297625] FILE: contracts/contracts/PackageVersioned.sol
[codex:1297625] ================================================================================
[codex:1297625] // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1297625] pragma solidity >=0.6.11;
[codex:1297625]
[codex:1297625] /**
[codex:1297625] * @title PackageVersioned
[codex:1297625] * @notice Package version getter for contracts
[codex:1297625] **/
[codex:1297625] abstract contract PackageVersioned {
[codex:1297625] // GENERATED CODE - DO NOT EDIT
[codex:1297625] string public constant PACKAGE_VERSION = "7.0.0";
[codex:1297625] }
[codex:1297625]
[codex:1297625] ================================================================================
[codex:1297625] FILE: contracts/contracts/client/GasRouter.sol
[codex:1297625] ================================================================================
[codex:1297625]
[codex:1297625] thinking
[codex:1297625] **Searching for profit-related code**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc 'rg --files contracts/contracts' in /tmp/codex-multi-npogdspu succeeded in 8ms:
[codex:1297625] contracts/contracts/interfaces/hooks/IPostDispatchHook.sol
[codex:1297625] contracts/contracts/interfaces/IMessageRecipient.sol
[codex:1297625] contracts/contracts/interfaces/IInterchainSecurityModule.sol
[codex:1297625] contracts/contracts/interfaces/IMailbox.sol
[codex:1297625] contracts/contracts/PackageVersioned.sol
[codex:1297625] contracts/contracts/libs/Message.sol
[codex:1297625] contracts/contracts/libs/TypeCasts.sol
[codex:1297625] contracts/contracts/libs/EnumerableMapExtended.sol
[codex:1297625] contracts/contracts/token/HypERC20Collateral.sol
[codex:1297625] contracts/contracts/client/GasRouter.sol
[codex:1297625] contracts/contracts/client/MailboxClient.sol
[codex:1297625] contracts/contracts/hooks/libs/StandardHookMetadata.sol
[codex:1297625] contracts/contracts/client/Router.sol
[codex:1297625] contracts/contracts/token/libs/FungibleTokenRouter.sol
[codex:1297625] contracts/contracts/token/libs/TokenMessage.sol
[codex:1297625] contracts/contracts/token/libs/TokenRouter.sol
[codex:1297625]
[codex:1297625]
[codex:1297625] thinking
[codex:1297625] **Analyzing potential reentrancy and initialization exploits**
[codex:1297625]
[codex:1297625] I'm carefully examining token collateral and router contracts for vulnerabilities, focusing on reentrancy risks with wrapped tokens, and the risks around the public initialize function that might let an attacker seize ownership and manipulate interchain message verification to drain tokens. There's a complex interplay of ownership, message validation, and contract initialization that could create a serious exploit if the contract is uninitialized or deployed incorrectly.
[codex:1297625] thinking
[codex:1297625] **Clarifying proxy initialization and attack conditions**
[codex:1297625]
[codex:1297625] I'm evaluating how the proxy pattern with immutable mailbox affects initialization risks, confirming that uninitialized proxies create a real race allowing ownership hijacking. While typical, this risk depends on deployment practices, but owning the contract could let an attacker manipulate security modules and send forged messages to withdraw collateral, so it’s a concrete path if the proxy isn't properly initialized.
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "sed -n '1,220p' contracts/contracts/interfaces/IMailbox.sol" in /tmp/codex-multi-npogdspu succeeded in 7ms:
[codex:1297625] // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1297625] pragma solidity >=0.8.0;
[codex:1297625]
[codex:1297625] import {IInterchainSecurityModule} from "./IInterchainSecurityModule.sol";
[codex:1297625] import {IPostDispatchHook} from "./hooks/IPostDispatchHook.sol";
[codex:1297625]
[codex:1297625] interface IMailbox {
[codex:1297625] // ============ Events ============
[codex:1297625] /**
[codex:1297625] * @notice Emitted when a new message is dispatched via Hyperlane
[codex:1297625] * @param sender The address that dispatched the message
[codex:1297625] * @param destination The destination domain of the message
[codex:1297625] * @param recipient The message recipient address on `destination`
[codex:1297625] * @param message Raw bytes of message
[codex:1297625] */
[codex:1297625] event Dispatch(
[codex:1297625] address indexed sender,
[codex:1297625] uint32 indexed destination,
[codex:1297625] bytes32 indexed recipient,
[codex:1297625] bytes message
[codex:1297625]
[codex:1297625] thinking
[codex:1297625] **Analyzing ISM usage and mailbox security**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "sed -n '1,200p' contracts/contracts/interfaces/IInterchainSecurityModule.sol" in /tmp/codex-multi-npogdspu succeeded in 5ms:
[codex:1297625] // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1297625] pragma solidity >=0.6.11;
[codex:1297625]
[codex:1297625] interface IInterchainSecurityModule {
[codex:1297625] enum Types {
[codex:1297625] UNUSED,
[codex:1297625] ROUTING,
[codex:1297625] AGGREGATION,
[codex:1297625] LEGACY_MULTISIG,
[codex:1297625] MERKLE_ROOT_MULTISIG,
[codex:1297625] MESSAGE_ID_MULTISIG,
[codex:1297625] NULL, // used with relayer carrying no metadata
[codex:1297625] CCIP_READ,
[codex:1297625] ARB_L2_TO_L1,
[codex:1297625] WEIGHTED_MERKLE_ROOT_MULTISIG,
[codex:1297625] WEIGHTED_MESSAGE_ID_MULTISIG,
[codex:1297625] OP_L2_TO_L1
[codex:1297625] }
[codex:1297625]
[codex:1297625] /**
[codex:1297625]
[codex:1297625] thinking
[codex:1297625] **Verifying initializer access control**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "nl -ba contracts/contracts/token/HypERC20Collateral.sol | sed -n '1,220p'" in /tmp/codex-multi-npogdspu succeeded in 6ms:
[codex:1297625] 1 // SPDX-License-Identifier: Apache-2.0
[codex:1297625] 2 pragma solidity >=0.8.0;
[codex:1297625] 3
[codex:1297625] 4 /*@@@@@@@ @@@@@@@@@
[codex:1297625] 5 @@@@@@@@@ @@@@@@@@@
[codex:1297625] 6 @@@@@@@@@ @@@@@@@@@
[codex:1297625] 7 @@@@@@@@@ @@@@@@@@@
[codex:1297625] 8 @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1297625] 9 @@@@@ HYPERLANE @@@@@@@
[codex:1297625] 10 @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1297625] 11 @@@@@@@@@ @@@@@@@@@
[codex:1297625] 12 @@@@@@@@@ @@@@@@@@@
[codex:1297625] 13 @@@@@@@@@ @@@@@@@@@
[codex:1297625] 14 @@@@@@@@@ @@@@@@@@*/
[codex:1297625] 15
[codex:1297625] 16 // ============ Internal Imports ============
[codex:1297625] 17 import {TokenRouter} from "./libs/TokenRouter.sol";
[codex:1297625] 18 import {FungibleTokenRouter} from "./libs/FungibleTokenRouter.sol";
[codex:1297625] 19 import {TokenMessage} from "./libs/TokenMessage.sol";
[codex:1297625] 20 import {MailboxClient} from "../client/MailboxClient.sol";
[codex:1297625]
[codex:1297625] thinking
[codex:1297625] **Locating initialization and hook setup lines**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "nl -ba contracts/contracts/client/MailboxClient.sol | sed -n '1,220p'" in /tmp/codex-multi-npogdspu succeeded in 6ms:
[codex:1297625] 1 // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1297625] 2 pragma solidity >=0.6.11;
[codex:1297625] 3
[codex:1297625] 4 /*@@@@@@@ @@@@@@@@@
[codex:1297625] 5 @@@@@@@@@ @@@@@@@@@
[codex:1297625] 6 @@@@@@@@@ @@@@@@@@@
[codex:1297625] 7 @@@@@@@@@ @@@@@@@@@
[codex:1297625] 8 @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1297625] 9 @@@@@ HYPERLANE @@@@@@@
[codex:1297625] 10 @@@@@@@@@@@@@@@@@@@@@@@@@
[codex:1297625] 11 @@@@@@@@@ @@@@@@@@@
[codex:1297625] 12 @@@@@@@@@ @@@@@@@@@
[codex:1297625] 13 @@@@@@@@@ @@@@@@@@@
[codex:1297625] 14 @@@@@@@@@ @@@@@@@@*/
[codex:1297625] 15
[codex:1297625] 16 // ============ Internal Imports ============
[codex:1297625] 17 import {IMailbox} from "../interfaces/IMailbox.sol";
[codex:1297625] 18 import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
[codex:1297625] 19 import {IInterchainSecurityModule} from "../interfaces/IInterchainSecurityModule.sol";
[codex:1297625] 20 import {Message} from "../libs/Message.sol";
[codex:1297625]
[codex:1297625] thinking
[codex:1297625] **Documenting IMailbox.process usage**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "nl -ba contracts/contracts/interfaces/IMailbox.sol | sed -n '1,220p'" in /tmp/codex-multi-npogdspu succeeded in 6ms:
[codex:1297625] 1 // SPDX-License-Identifier: MIT OR Apache-2.0
[codex:1297625] 2 pragma solidity >=0.8.0;
[codex:1297625] 3
[codex:1297625] 4 import {IInterchainSecurityModule} from "./IInterchainSecurityModule.sol";
[codex:1297625] 5 import {IPostDispatchHook} from "./hooks/IPostDispatchHook.sol";
[codex:1297625] 6
[codex:1297625] 7 interface IMailbox {
[codex:1297625] 8 // ============ Events ============
[codex:1297625] 9 /**
[codex:1297625] 10 * @notice Emitted when a new message is dispatched via Hyperlane
[codex:1297625] 11 * @param sender The address that dispatched the message
[codex:1297625] 12 * @param destination The destination domain of the message
[codex:1297625] 13 * @param recipient The message recipient address on `destination`
[codex:1297625] 14 * @param message Raw bytes of message
[codex:1297625] 15 */
[codex:1297625] 16 event Dispatch(
[codex:1297625] 17 address indexed sender,
[codex:1297625] 18 uint32 indexed destination,
[codex:1297625] 19 bytes32 indexed recipient,
[codex:1297625] 20 bytes message
[codex:1297625]
[codex:1297625] thinking
[codex:1297625] **Considering line numbers in TokenRouter methods**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "nl -ba contracts/contracts/token/libs/TokenRouter.sol | sed -n '1,260p'" in /tmp/codex-multi-npogdspu succeeded in 6ms:
[codex:1297625] 1 // SPDX-License-Identifier: Apache-2.0
[codex:1297625] 2 pragma solidity >=0.8.0;
[codex:1297625] 3
[codex:1297625] 4 import {IPostDispatchHook} from "../../interfaces/hooks/IPostDispatchHook.sol";
[codex:1297625] 5 import {GasRouter} from "../../client/GasRouter.sol";
[codex:1297625] 6 import {MailboxClient} from "../../client/MailboxClient.sol";
[codex:1297625] 7 import {TypeCasts} from "../../libs/TypeCasts.sol";
[codex:1297625] 8 import {TokenMessage} from "./TokenMessage.sol";
[codex:1297625] 9
[codex:1297625] 10 /**
[codex:1297625] 11 * @title Hyperlane Token Router that extends Router with abstract token (ERC20/ERC721) remote transfer functionality.
[codex:1297625] 12 * @author Abacus Works
[codex:1297625] 13 */
[codex:1297625] 14 abstract contract TokenRouter is GasRouter {
[codex:1297625] 15 using TypeCasts for bytes32;
[codex:1297625] 16 using TypeCasts for address;
[codex:1297625] 17 using TokenMessage for bytes;
[codex:1297625] 18
[codex:1297625] 19 /**
[codex:1297625] 20 * @dev Emitted on `transferRemote` when a transfer message is dispatched.
[codex:1297625]
[codex:1297625] thinking
[codex:1297625] **Analyzing unprotected initialize vulnerability**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "nl -ba contracts/contracts/client/Router.sol | sed -n '60,180p'" in /tmp/codex-multi-npogdspu succeeded in 6ms:
[codex:1297625] 60
[codex:1297625] 61 /**
[codex:1297625] 62 * @notice Batch version of `enrollRemoteRouter`
[codex:1297625] 63 * @param _domains The domains of the remote Application Routers
[codex:1297625] 64 * @param _addresses The addresses of the remote Application Routers
[codex:1297625] 65 */
[codex:1297625] 66 function enrollRemoteRouters(
[codex:1297625] 67 uint32[] calldata _domains,
[codex:1297625] 68 bytes32[] calldata _addresses
[codex:1297625] 69 ) external virtual onlyOwner {
[codex:1297625] 70 require(_domains.length == _addresses.length, "!length");
[codex:1297625] 71 uint256 length = _domains.length;
[codex:1297625] 72 for (uint256 i = 0; i < length; i += 1) {
[codex:1297625] 73 _enrollRemoteRouter(_domains[i], _addresses[i]);
[codex:1297625] 74 }
[codex:1297625] 75 }
[codex:1297625] 76
[codex:1297625] 77 /**
[codex:1297625] 78 * @notice Batch version of `unenrollRemoteRouter`
[codex:1297625] 79 * @param _domains The domains of the remote Application Routers
[codex:1297625]
[codex:1297625] thinking
[codex:1297625] **Constructing detailed vulnerability report**
[codex:1297625] exec
[codex:1297625] /bin/bash -lc "nl -ba contracts/contracts/client/Router.sol | sed -n '20,80p'" in /tmp/codex-multi-npogdspu succeeded in 6ms:
[codex:1297625] 20
[codex:1297625] 21 uint256[48] private __GAP; // gap for upgrade safety
[codex:1297625] 22
[codex:1297625] 23 constructor(address _mailbox) MailboxClient(_mailbox) {}
[codex:1297625] 24
[codex:1297625] 25 // ============ External functions ============
[codex:1297625] 26 function domains() external view returns (uint32[] memory) {
[codex:1297625] 27 return _routers.uint32Keys();
[codex:1297625] 28 }
[codex:1297625] 29
[codex:1297625] 30 /**
[codex:1297625] 31 * @notice Returns the address of the Router contract for the given domain
[codex:1297625] 32 * @param _domain The remote domain ID.
[codex:1297625] 33 * @dev Returns 0 address if no router is enrolled for the given domain
[codex:1297625] 34 * @return router The address of the Router contract for the given domain
[codex:1297625] 35 */
[codex:1297625] 36 function routers(uint32 _domain) public view virtual returns (bytes32) {
[codex:1297625] 37 (, bytes32 _router) = _routers.tryGet(_domain);
[codex:1297625] 38 return _router;
[codex:1297625] 39 }
[codex:1297625]
[codex:1297625] thinking
[codex:1297625] **Summarizing exploit and fix details**
[codex:1297625]
[codex:1297625] I'm crafting a detailed JSON report describing a critical unprotected initializer vulnerability that lets attackers take ownership and drain all collateral by forging mailbox messages. The JSON will include severity, category, exploit steps, fix recommendations like adding `_disableInitializers()` in the constructor, and precise evidence with line numbers to support the findings.
[codex:1297625] codex
[codex:1297625] {"no_findings":false,"summary":"One critical unprotected initializer allows ownership/ISM takeover and forged mailbox processing to drain all collateral if the contract is not yet initialized.","findings":[{"severity":"critical","category":"upgradeability","title":"Unprotected initializer enables ownership/ISM takeover and forged mailbox messages to drain collateral","exploit_scenario":"1) Before the legitimate deployer initializes, attacker calls `HypERC20Collateral.initialize` with `_owner=attacker` and `_interchainSecurityModule` set to a permissive ISM that always returns true. 2) As owner, attacker calls `Router.enrollRemoteRouter` to register an attacker-controlled router for some origin domain. 3) Attacker calls `mailbox.process` with arbitrary metadata and a crafted Hyperlane message whose origin/sender match the enrolled router and whose body encodes `TokenMessage(recipient=attacker, amount=wrappedTokenBalance)`. 4) Mailbox invokes `Router.handle` and `TokenRouter._handle`, which calls `_transferTo` in `HypERC20Collateral`, transferring the collateral to attacker.","recommendation":"Harden initialization: call `_disableInitializers()` in the constructor and ensure initialization is executed atomically at proxy deployment (e.g., via constructor data). If non-proxy deployments are intended, gate `initialize` so only the constructor-set owner can call it or remove it entirely.","evidence":"`initialize` is public and unguarded, and `_MailboxClient_initialize` sets owner and the ISM/hook, enabling an attacker to install a permissive ISM and then forge mailbox processing that triggers `_handle` to transfer collateral.","locations":["contracts/contracts/token/HypERC20Collateral.sol:49","contracts/contracts/client/MailboxClient.sol:100","contracts/contracts/client/MailboxClient.sol:92","contracts/contracts/client/Router.sol:54","contracts/contracts/interfaces/IMailbox.sol:101","contracts/contracts/token/libs/TokenRouter.sol:198","contracts/contracts/token/HypERC20Collateral.sol:78"]}]}
[codex:1297625] tokens used
[codex:1297625] 36,563
[codex:1297625] {"no_findings":false,"summary":"One critical unprotected initializer allows ownership/ISM takeover and forged mailbox processing to drain all collateral if the contract is not yet initialized.","findings":[{"severity":"critical","category":"upgradeability","title":"Unprotected initializer enables ownership/ISM takeover and forged mailbox messages to drain collateral","exploit_scenario":"1) Before the legitimate deployer initializes, attacker calls `HypERC20Collateral.initialize` with `_owner=attacker` and `_interchainSecurityModule` set to a permissive ISM that always returns true. 2) As owner, attacker calls `Router.enrollRemoteRouter` to register an attacker-controlled router for some origin domain. 3) Attacker calls `mailbox.process` with arbitrary metadata and a crafted Hyperlane message whose origin/sender match the enrolled router and whose body encodes `TokenMessage(recipient=attacker, amount=wrappedTokenBalance)`. 4) Mailbox invokes `Router.handle` and `TokenRouter._handle`, which calls `_transferTo` in `HypERC20Collateral`, transferring the collateral to attacker.","recommendation":"Harden initialization: call `_disableInitializers()` in the constructor and ensure initialization is executed atomically at proxy deployment (e.g., via constructor data). If non-proxy deployments are intended, gate `initialize` so only the constructor-set owner can call it or remove it entirely.","evidence":"`initialize` is public and unguarded, and `_MailboxClient_initialize` sets owner and the ISM/hook, enabling an attacker to install a permissive ISM and then forge mailbox processing that triggers `_handle` to transfer collateral.","locations":["contracts/contracts/token/HypERC20Collateral.sol:49","contracts/contracts/client/MailboxClient.sol:100","contracts/contracts/client/MailboxClient.sol:92","contracts/contracts/client/Router.sol:54","contracts/contracts/interfaces/IMailbox.sol:101","contracts/contracts/token/libs/TokenRouter.sol:198","contracts/contracts/token/HypERC20Collateral.sol:78"]}]}
{
"codex": {
"ran_at": "2025-12-31T18:15:02.286305+00:00",
"returncode": 0
},
"summary": "One critical unprotected initializer allows ownership/ISM takeover and forged mailbox processing to drain all collateral if the contract is not yet initialized.",
"raw_final": {
"summary": "One critical unprotected initializer allows ownership/ISM takeover and forged mailbox processing to drain all collateral if the contract is not yet initialized.",
"findings": [
{
"title": "Unprotected initializer enables ownership/ISM takeover and forged mailbox messages to drain collateral",
"category": "upgradeability",
"evidence": "`initialize` is public and unguarded, and `_MailboxClient_initialize` sets owner and the ISM/hook, enabling an attacker to install a permissive ISM and then forge mailbox processing that triggers `_handle` to transfer collateral.",
"severity": "critical",
"locations": [
"contracts/contracts/token/HypERC20Collateral.sol:49",
"contracts/contracts/client/MailboxClient.sol:100",
"contracts/contracts/client/MailboxClient.sol:92",
"contracts/contracts/client/Router.sol:54",
"contracts/contracts/interfaces/IMailbox.sol:101",
"contracts/contracts/token/libs/TokenRouter.sol:198",
"contracts/contracts/token/HypERC20Collateral.sol:78"
],
"recommendation": "Harden initialization: call `_disableInitializers()` in the constructor and ensure initialization is executed atomically at proxy deployment (e.g., via constructor data). If non-proxy deployments are intended, gate `initialize` so only the constructor-set owner can call it or remove it entirely.",
"exploit_scenario": "1) Before the legitimate deployer initializes, attacker calls `HypERC20Collateral.initialize` with `_owner=attacker` and `_interchainSecurityModule` set to a permissive ISM that always returns true. 2) As owner, attacker calls `Router.enrollRemoteRouter` to register an attacker-controlled router for some origin domain. 3) Attacker calls `mailbox.process` with arbitrary metadata and a crafted Hyperlane message whose origin/sender match the enrolled router and whose body encodes `TokenMessage(recipient=attacker, amount=wrappedTokenBalance)`. 4) Mailbox invokes `Router.handle` and `TokenRouter._handle`, which calls `_transferTo` in `HypERC20Collateral`, transferring the collateral to attacker."
}
],
"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 0x01ac 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x8d3638f4 00000019: GT 0000001a: PUSH2 0x00ec 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xd5438eae 00000024: GT 00000025: PUSH2 0x008a 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xefae508a 0000002f: GT 00000030: PUSH2 0x0064 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xefae508a 0000003a: EQ 0000003b: PUSH2 0x0554 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xf2ed8c53 00000045: EQ 00000046: PUSH2 0x0574 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf2fde38b 00000050: EQ 00000051: PUSH2 0x0594 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf51e181a 0000005b: EQ 0000005c: PUSH2 0x05b4 0000005f: JUMPI 00000060: PUSH1 0x00 00000062: DUP1 00000063: REVERT 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0xd5438eae 0000006b: EQ 0000006c: PUSH2 0x04d3 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0xde523cf3 00000076: EQ 00000077: PUSH2 0x0507 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xe9198bf9 00000081: EQ 00000082: PUSH2 0x0534 00000085: JUMPI 00000086: PUSH1 0x00 00000088: DUP1 00000089: REVERT 0000008a: JUMPDEST 0000008b: DUP1 0000008c: PUSH4 0x996c6cc3 00000091: GT 00000092: PUSH2 0x00c6 00000095: JUMPI 00000096: DUP1 00000097: PUSH4 0x996c6cc3 0000009c: EQ 0000009d: PUSH2 0x043f 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0xb1bd6436 000000a7: EQ 000000a8: PUSH2 0x0473 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0xb49c53a7 000000b2: EQ 000000b3: PUSH2 0x0493 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0xc0c53b8b 000000bd: EQ 000000be: PUSH2 0x04b3 000000c1: JUMPI 000000c2: PUSH1 0x00 000000c4: DUP1 000000c5: REVERT 000000c6: JUMPDEST 000000c7: DUP1 000000c8: PUSH4 0x8d3638f4 000000cd: EQ 000000ce: PUSH2 0x0375 000000d1: JUMPI 000000d2: DUP1 000000d3: PUSH4 0x8da5cb5b 000000d8: EQ 000000d9: PUSH2 0x03be 000000dc: JUMPI 000000dd: DUP1 000000de: PUSH4 0x93c44847 000000e3: EQ 000000e4: PUSH2 0x03e9 000000e7: JUMPI 000000e8: PUSH1 0x00 000000ea: DUP1 000000eb: REVERT 000000ec: JUMPDEST 000000ed: DUP1 000000ee: PUSH4 0x56d5d475 000000f3: GT 000000f4: PUSH2 0x0159 000000f7: JUMPI 000000f8: DUP1 000000f9: PUSH4 0x71a15b38 000000fe: GT 000000ff: PUSH2 0x0133 00000102: JUMPI 00000103: DUP1 00000104: PUSH4 0x71a15b38 00000109: EQ 0000010a: PUSH2 0x02c3 0000010d: JUMPI 0000010e: DUP1 0000010f: PUSH4 0x775313a1 00000114: EQ 00000115: PUSH2 0x02e3 00000118: JUMPI 00000119: DUP1 0000011a: PUSH4 0x7f5a7c7b 0000011f: EQ 00000120: PUSH2 0x0310 00000123: JUMPI 00000124: DUP1 00000125: PUSH4 0x81b4e8b4 0000012a: EQ 0000012b: PUSH2 0x0362 0000012e: JUMPI 0000012f: PUSH1 0x00 00000131: DUP1 00000132: REVERT 00000133: JUMPDEST 00000134: DUP1 00000135: PUSH4 0x56d5d475 0000013a: EQ 0000013b: PUSH2 0x027b 0000013e: JUMPI 0000013f: DUP1 00000140: PUSH4 0x70a08231 00000145: EQ 00000146: PUSH2 0x028e 00000149: JUMPI 0000014a: DUP1 0000014b: PUSH4 0x715018a6 00000150: EQ 00000151: PUSH2 0x02ae 00000154: JUMPI 00000155: PUSH1 0x00 00000157: DUP1 00000158: REVERT 00000159: JUMPDEST 0000015a: DUP1 0000015b: PUSH4 0x440df4f4 00000160: GT 00000161: PUSH2 0x018a 00000164: JUMPI 00000165: DUP1 00000166: PUSH4 0x440df4f4 0000016b: EQ 0000016c: PUSH2 0x0226 0000016f: JUMPI 00000170: DUP1 00000171: PUSH4 0x49d462ef 00000176: EQ 00000177: PUSH2 0x0248 0000017a: JUMPI 0000017b: DUP1 0000017c: PUSH4 0x51debffc 00000181: EQ 00000182: PUSH2 0x0268 00000185: JUMPI 00000186: PUSH1 0x00 00000188: DUP1 00000189: REVERT 0000018a: JUMPDEST 0000018b: DUP1 0000018c: PUSH4 0x0e72cc06 00000191: EQ 00000192: PUSH2 0x01b1 00000195: JUMPI 00000196: DUP1 00000197: PUSH4 0x2ead72f6 0000019c: EQ 0000019d: PUSH2 0x01d3 000001a0: JUMPI 000001a1: DUP1 000001a2: PUSH4 0x3dfd3873 000001a7: EQ 000001a8: PUSH2 0x0206 000001ab: JUMPI 000001ac: JUMPDEST 000001ad: PUSH1 0x00 000001af: DUP1 000001b0: REVERT 000001b1: JUMPDEST 000001b2: CALLVALUE 000001b3: DUP1 000001b4: ISZERO 000001b5: PUSH2 0x01bd 000001b8: JUMPI 000001b9: PUSH1 0x00 000001bb: DUP1 000001bc: REVERT 000001bd: JUMPDEST 000001be: POP 000001bf: PUSH2 0x01d1 000001c2: PUSH2 0x01cc 000001c5: CALLDATASIZE 000001c6: PUSH1 0x04 000001c8: PUSH2 0x2346 000001cb: JUMP 000001cc: JUMPDEST 000001cd: PUSH2 0x05e8 000001d0: JUMP 000001d1: JUMPDEST 000001d2: STOP 000001d3: JUMPDEST 000001d4: CALLVALUE 000001d5: DUP1 000001d6: ISZERO 000001d7: PUSH2 0x01df 000001da: JUMPI 000001db: PUSH1 0x00 000001dd: DUP1 000001de: REVERT 000001df: JUMPDEST 000001e0: POP 000001e1: PUSH2 0x01f3 000001e4: PUSH2 0x01ee 000001e7: CALLDATASIZE 000001e8: PUSH1 0x04 000001ea: PUSH2 0x2375 000001ed: JUMP 000001ee: JUMPDEST 000001ef: PUSH2 0x0736 000001f2: JUMP 000001f3: JUMPDEST 000001f4: PUSH1 0x40 000001f6: MLOAD 000001f7: SWAP1 000001f8: DUP2 000001f9: MSTORE 000001fa: PUSH1 0x20 000001fc: ADD 000001fd: JUMPDEST 000001fe: PUSH1 0x40 00000200: MLOAD 00000201: DUP1 00000202: SWAP2 00000203: SUB 00000204: SWAP1 00000205: RETURN 00000206: JUMPDEST 00000207: CALLVALUE 00000208: DUP1 00000209: ISZERO 0000020a: PUSH2 0x0212 0000020d: JUMPI 0000020e: PUSH1 0x00 00000210: DUP1 00000211: REVERT 00000212: JUMPDEST 00000213: POP 00000214: PUSH2 0x01d1 00000217: PUSH2 0x0221 0000021a: CALLDATASIZE 0000021b: PUSH1 0x04 0000021d: PUSH2 0x2346 00000220: JUMP 00000221: JUMPDEST 00000222: PUSH2 0x0755 00000225: JUMP 00000226: JUMPDEST 00000227: CALLVALUE 00000228: DUP1 00000229: ISZERO 0000022a: PUSH2 0x0232 0000022d: JUMPI 0000022e: PUSH1 0x00 00000230: DUP1 00000231: REVERT 00000232: JUMPDEST 00000233: POP 00000234: PUSH2 0x023b 00000237: PUSH2 0x0896 0000023a: JUMP 0000023b: JUMPDEST 0000023c: PUSH1 0x40 0000023e: MLOAD 0000023f: PUSH2 0x01fd 00000242: SWAP2 00000243: SWAP1 00000244: PUSH2 0x2390 00000247: JUMP 00000248: JUMPDEST 00000249: CALLVALUE 0000024a: DUP1 0000024b: ISZERO 0000024c: PUSH2 0x0254 0000024f: JUMPI 00000250: PUSH1 0x00 00000252: DUP1 00000253: REVERT 00000254: JUMPDEST 00000255: POP 00000256: PUSH2 0x01d1 00000259: PUSH2 0x0263 0000025c: CALLDATASIZE 0000025d: PUSH1 0x04 0000025f: PUSH2 0x23da 00000262: JUMP 00000263: JUMPDEST 00000264: PUSH2 0x08a7 00000267: JUMP 00000268: JUMPDEST 00000269: PUSH2 0x01f3 0000026c: PUSH2 0x0276 0000026f: CALLDATASIZE 00000270: PUSH1 0x04 00000272: PUSH2 0x2446 00000275: JUMP 00000276: JUMPDEST 00000277: PUSH2 0x08bd 0000027a: JUMP 0000027b: JUMPDEST 0000027c: PUSH2 0x01d1 0000027f: PUSH2 0x0289 00000282: CALLDATASIZE 00000283: PUSH1 0x04 00000285: PUSH2 0x24bd 00000288: JUMP 00000289: JUMPDEST 0000028a: PUSH2 0x090f 0000028d: JUMP 0000028e: JUMPDEST 0000028f: CALLVALUE 00000290: DUP1 00000291: ISZERO 00000292: PUSH2 0x029a 00000295: JUMPI 00000296: PUSH1 0x00 00000298: DUP1 00000299: REVERT 0000029a: JUMPDEST 0000029b: POP 0000029c: PUSH2 0x01f3 0000029f: PUSH2 0x02a9 000002a2: CALLDATASIZE 000002a3: PUSH1 0x04 000002a5: PUSH2 0x2346 000002a8: JUMP 000002a9: JUMPDEST 000002aa: PUSH2 0x0a83 000002ad: JUMP 000002ae: JUMPDEST 000002af: CALLVALUE 000002b0: DUP1 000002b1: ISZERO 000002b2: PUSH2 0x02ba 000002b5: JUMPI 000002b6: PUSH1 0x00 000002b8: DUP1 000002b9: REVERT 000002ba: JUMPDEST 000002bb: POP 000002bc: PUSH2 0x01d1 000002bf: PUSH2 0x0b3e 000002c2: JUMP 000002c3: JUMPDEST 000002c4: CALLVALUE 000002c5: DUP1 000002c6: ISZERO 000002c7: PUSH2 0x02cf 000002ca: JUMPI 000002cb: PUSH1 0x00 000002cd: DUP1 000002ce: REVERT 000002cf: JUMPDEST 000002d0: POP 000002d1: PUSH2 0x01d1 000002d4: PUSH2 0x02de 000002d7: CALLDATASIZE 000002d8: PUSH1 0x04 000002da: PUSH2 0x255c 000002dd: JUMP 000002de: JUMPDEST 000002df: PUSH2 0x0b52 000002e2: JUMP 000002e3: JUMPDEST 000002e4: CALLVALUE 000002e5: DUP1 000002e6: ISZERO 000002e7: PUSH2 0x02ef 000002ea: JUMPI 000002eb: PUSH1 0x00 000002ed: DUP1 000002ee: REVERT 000002ef: JUMPDEST 000002f0: POP 000002f1: PUSH2 0x01f3 000002f4: PUSH2 0x02fe 000002f7: CALLDATASIZE 000002f8: PUSH1 0x04 000002fa: PUSH2 0x2375 000002fd: JUMP 000002fe: JUMPDEST 000002ff: PUSH1 0xca 00000301: PUSH1 0x20 00000303: MSTORE 00000304: PUSH1 0x00 00000306: SWAP1 00000307: DUP2 00000308: MSTORE 00000309: PUSH1 0x40 0000030b: SWAP1 0000030c: KECCAK256 0000030d: SLOAD 0000030e: DUP2 0000030f: JUMP 00000310: JUMPDEST 00000311: CALLVALUE 00000312: DUP1 00000313: ISZERO 00000314: PUSH2 0x031c 00000317: JUMPI 00000318: PUSH1 0x00 0000031a: DUP1 0000031b: REVERT 0000031c: JUMPDEST 0000031d: POP 0000031e: PUSH1 0x65 00000320: SLOAD 00000321: PUSH2 0x033d 00000324: SWAP1 00000325: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000033a: AND 0000033b: DUP2 0000033c: JUMP 0000033d: JUMPDEST 0000033e: PUSH1 0x40 00000340: MLOAD 00000341: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000356: SWAP1 00000357: SWAP2 00000358: AND 00000359: DUP2 0000035a: MSTORE 0000035b: PUSH1 0x20 0000035d: ADD 0000035e: PUSH2 0x01fd 00000361: JUMP 00000362: JUMPDEST 00000363: PUSH2 0x01f3 00000366: PUSH2 0x0370 00000369: CALLDATASIZE 0000036a: PUSH1 0x04 0000036c: PUSH2 0x259e 0000036f: JUMP 00000370: JUMPDEST 00000371: PUSH2 0x0bad 00000374: JUMP 00000375: JUMPDEST 00000376: CALLVALUE 00000377: DUP1 00000378: ISZERO 00000379: PUSH2 0x0381 0000037c: JUMPI 0000037d: PUSH1 0x00 0000037f: DUP1 00000380: REVERT 00000381: JUMPDEST 00000382: POP 00000383: PUSH2 0x03a9 00000386: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001 000003a7: DUP2 000003a8: JUMP 000003a9: JUMPDEST 000003aa: PUSH1 0x40 000003ac: MLOAD 000003ad: PUSH4 0xffffffff 000003b2: SWAP1 000003b3: SWAP2 000003b4: AND 000003b5: DUP2 000003b6: MSTORE 000003b7: PUSH1 0x20 000003b9: ADD 000003ba: PUSH2 0x01fd 000003bd: JUMP 000003be: JUMPDEST 000003bf: CALLVALUE 000003c0: DUP1 000003c1: ISZERO 000003c2: PUSH2 0x03ca 000003c5: JUMPI 000003c6: PUSH1 0x00 000003c8: DUP1 000003c9: REVERT 000003ca: JUMPDEST 000003cb: POP 000003cc: PUSH1 0x33 000003ce: SLOAD 000003cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003e4: AND 000003e5: PUSH2 0x033d 000003e8: JUMP 000003e9: JUMPDEST 000003ea: CALLVALUE 000003eb: DUP1 000003ec: ISZERO 000003ed: PUSH2 0x03f5 000003f0: JUMPI 000003f1: PUSH1 0x00 000003f3: DUP1 000003f4: REVERT 000003f5: JUMPDEST 000003f6: POP 000003f7: PUSH2 0x0432 000003fa: PUSH1 0x40 000003fc: MLOAD 000003fd: DUP1 000003fe: PUSH1 0x40 00000400: ADD 00000401: PUSH1 0x40 00000403: MSTORE 00000404: DUP1 00000405: PUSH1 0x05 00000407: DUP2 00000408: MSTORE 00000409: PUSH1 0x20 0000040b: ADD 0000040c: PUSH32 0x372e302e30000000000000000000000000000000000000000000000000000000 0000042d: DUP2 0000042e: MSTORE 0000042f: POP 00000430: DUP2 00000431: JUMP 00000432: JUMPDEST 00000433: PUSH1 0x40 00000435: MLOAD 00000436: PUSH2 0x01fd 00000439: SWAP2 0000043a: SWAP1 0000043b: PUSH2 0x263f 0000043e: JUMP 0000043f: JUMPDEST 00000440: CALLVALUE 00000441: DUP1 00000442: ISZERO 00000443: PUSH2 0x044b 00000446: JUMPI 00000447: PUSH1 0x00 00000449: DUP1 0000044a: REVERT 0000044b: JUMPDEST 0000044c: POP 0000044d: PUSH2 0x033d 00000450: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000471: DUP2 00000472: JUMP 00000473: JUMPDEST 00000474: CALLVALUE 00000475: DUP1 00000476: ISZERO 00000477: PUSH2 0x047f 0000047a: JUMPI 0000047b: PUSH1 0x00 0000047d: DUP1 0000047e: REVERT 0000047f: JUMPDEST 00000480: POP 00000481: PUSH2 0x01d1 00000484: PUSH2 0x048e 00000487: CALLDATASIZE 00000488: PUSH1 0x04 0000048a: PUSH2 0x2652 0000048d: JUMP 0000048e: JUMPDEST 0000048f: PUSH2 0x0bbb 00000492: JUMP 00000493: JUMPDEST 00000494: CALLVALUE 00000495: DUP1 00000496: ISZERO 00000497: PUSH2 0x049f 0000049a: JUMPI 0000049b: PUSH1 0x00 0000049d: DUP1 0000049e: REVERT 0000049f: JUMPDEST 000004a0: POP 000004a1: PUSH2 0x01d1 000004a4: PUSH2 0x04ae 000004a7: CALLDATASIZE 000004a8: PUSH1 0x04 000004aa: PUSH2 0x23da 000004ad: JUMP 000004ae: JUMPDEST 000004af: PUSH2 0x0c31 000004b2: JUMP 000004b3: JUMPDEST 000004b4: CALLVALUE 000004b5: DUP1 000004b6: ISZERO 000004b7: PUSH2 0x04bf 000004ba: JUMPI 000004bb: PUSH1 0x00 000004bd: DUP1 000004be: REVERT 000004bf: JUMPDEST 000004c0: POP 000004c1: PUSH2 0x01d1 000004c4: PUSH2 0x04ce 000004c7: CALLDATASIZE 000004c8: PUSH1 0x04 000004ca: PUSH2 0x26c7 000004cd: JUMP 000004ce: JUMPDEST 000004cf: PUSH2 0x0c43 000004d2: JUMP 000004d3: JUMPDEST 000004d4: CALLVALUE 000004d5: DUP1 000004d6: ISZERO 000004d7: PUSH2 0x04df 000004da: JUMPI 000004db: PUSH1 0x00 000004dd: DUP1 000004de: REVERT 000004df: JUMPDEST 000004e0: POP 000004e1: PUSH2 0x033d 000004e4: PUSH32 0x000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239 00000505: DUP2 00000506: JUMP 00000507: JUMPDEST 00000508: CALLVALUE 00000509: DUP1 0000050a: ISZERO 0000050b: PUSH2 0x0513 0000050e: JUMPI 0000050f: PUSH1 0x00 00000511: DUP1 00000512: REVERT 00000513: JUMPDEST 00000514: POP 00000515: PUSH1 0x66 00000517: SLOAD 00000518: PUSH2 0x033d 0000051b: SWAP1 0000051c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000531: AND 00000532: DUP2 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 0x01d1 00000545: PUSH2 0x054f 00000548: CALLDATASIZE 00000549: PUSH1 0x04 0000054b: PUSH2 0x270a 0000054e: JUMP 0000054f: JUMPDEST 00000550: PUSH2 0x0dda 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 0x01d1 00000565: PUSH2 0x056f 00000568: CALLDATASIZE 00000569: PUSH1 0x04 0000056b: PUSH2 0x2375 0000056e: JUMP 0000056f: JUMPDEST 00000570: PUSH2 0x0eb9 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 0x01f3 00000585: PUSH2 0x058f 00000588: CALLDATASIZE 00000589: PUSH1 0x04 0000058b: PUSH2 0x2375 0000058e: JUMP 0000058f: JUMPDEST 00000590: PUSH2 0x0ecd 00000593: JUMP 00000594: JUMPDEST 00000595: CALLVALUE 00000596: DUP1 00000597: ISZERO 00000598: PUSH2 0x05a0 0000059b: JUMPI 0000059c: PUSH1 0x00 0000059e: DUP1 0000059f: REVERT 000005a0: JUMPDEST 000005a1: POP 000005a2: PUSH2 0x01d1 000005a5: PUSH2 0x05af 000005a8: CALLDATASIZE 000005a9: PUSH1 0x04 000005ab: PUSH2 0x2346 000005ae: JUMP 000005af: JUMPDEST 000005b0: PUSH2 0x0f2e 000005b3: JUMP 000005b4: JUMPDEST 000005b5: CALLVALUE 000005b6: DUP1 000005b7: ISZERO 000005b8: PUSH2 0x05c0 000005bb: JUMPI 000005bc: PUSH1 0x00 000005be: DUP1 000005bf: REVERT 000005c0: JUMPDEST 000005c1: POP 000005c2: PUSH2 0x01f3 000005c5: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001 000005e6: DUP2 000005e7: JUMP 000005e8: JUMPDEST 000005e9: DUP1 000005ea: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005ff: DUP2 00000600: AND 00000601: EXTCODESIZE 00000602: ISZERO 00000603: ISZERO 00000604: DUP1 00000605: PUSH2 0x0622 00000608: JUMPI 00000609: POP 0000060a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000061f: DUP2 00000620: AND 00000621: ISZERO 00000622: JUMPDEST 00000623: PUSH2 0x06b3 00000626: JUMPI 00000627: PUSH1 0x40 00000629: MLOAD 0000062a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000064b: DUP2 0000064c: MSTORE 0000064d: PUSH1 0x20 0000064f: PUSH1 0x04 00000651: DUP3 00000652: ADD 00000653: MSTORE 00000654: PUSH1 0x27 00000656: PUSH1 0x24 00000658: DUP3 00000659: ADD 0000065a: MSTORE 0000065b: PUSH32 0x4d61696c626f78436c69656e743a20696e76616c696420636f6e747261637420 0000067c: PUSH1 0x44 0000067e: DUP3 0000067f: ADD 00000680: MSTORE 00000681: PUSH32 0x73657474696e6700000000000000000000000000000000000000000000000000 000006a2: PUSH1 0x64 000006a4: DUP3 000006a5: ADD 000006a6: MSTORE 000006a7: PUSH1 0x84 000006a9: ADD 000006aa: JUMPDEST 000006ab: PUSH1 0x40 000006ad: MLOAD 000006ae: DUP1 000006af: SWAP2 000006b0: SUB 000006b1: SWAP1 000006b2: REVERT 000006b3: JUMPDEST 000006b4: PUSH2 0x06bb 000006b7: PUSH2 0x0fe2 000006ba: JUMP 000006bb: JUMPDEST 000006bc: PUSH1 0x66 000006be: DUP1 000006bf: SLOAD 000006c0: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 000006e1: AND 000006e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006f7: DUP5 000006f8: AND 000006f9: SWAP1 000006fa: DUP2 000006fb: OR 000006fc: SWAP1 000006fd: SWAP2 000006fe: SSTORE 000006ff: PUSH1 0x40 00000701: MLOAD 00000702: SWAP1 00000703: DUP2 00000704: MSTORE 00000705: PUSH32 0xc47cbcc588c67679e52261c45cc315e56562f8d0ccaba16facb9093ff9498799 00000726: SWAP1 00000727: PUSH1 0x20 00000729: ADD 0000072a: JUMPDEST 0000072b: PUSH1 0x40 0000072d: MLOAD 0000072e: DUP1 0000072f: SWAP2 00000730: SUB 00000731: SWAP1 00000732: LOG1 00000733: POP 00000734: POP 00000735: JUMP 00000736: JUMPDEST 00000737: PUSH1 0x00 00000739: DUP1 0000073a: PUSH2 0x074d 0000073d: PUSH1 0x97 0000073f: PUSH4 0xffffffff 00000744: DUP1 00000745: DUP7 00000746: AND 00000747: SWAP1 00000748: PUSH2 0x1063 0000074b: AND 0000074c: JUMP 0000074d: JUMPDEST 0000074e: SWAP5 0000074f: SWAP4 00000750: POP 00000751: POP 00000752: POP 00000753: POP 00000754: JUMP 00000755: JUMPDEST 00000756: DUP1 00000757: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000076c: DUP2 0000076d: AND 0000076e: EXTCODESIZE 0000076f: ISZERO 00000770: ISZERO 00000771: DUP1 00000772: PUSH2 0x078f 00000775: JUMPI 00000776: POP 00000777: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000078c: DUP2 0000078d: AND 0000078e: ISZERO 0000078f: JUMPDEST 00000790: PUSH2 0x081b 00000793: JUMPI 00000794: PUSH1 0x40 00000796: MLOAD 00000797: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000007b8: DUP2 000007b9: MSTORE 000007ba: PUSH1 0x20 000007bc: PUSH1 0x04 000007be: DUP3 000007bf: ADD 000007c0: MSTORE 000007c1: PUSH1 0x27 000007c3: PUSH1 0x24 000007c5: DUP3 000007c6: ADD 000007c7: MSTORE 000007c8: PUSH32 0x4d61696c626f78436c69656e743a20696e76616c696420636f6e747261637420 000007e9: PUSH1 0x44 000007eb: DUP3 000007ec: ADD 000007ed: MSTORE 000007ee: PUSH32 0x73657474696e6700000000000000000000000000000000000000000000000000 0000080f: PUSH1 0x64 00000811: DUP3 00000812: ADD 00000813: MSTORE 00000814: PUSH1 0x84 00000816: ADD 00000817: PUSH2 0x06aa 0000081a: JUMP 0000081b: JUMPDEST 0000081c: PUSH2 0x0823 0000081f: PUSH2 0x0fe2 00000822: JUMP 00000823: JUMPDEST 00000824: PUSH1 0x65 00000826: DUP1 00000827: SLOAD 00000828: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00000849: AND 0000084a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000085f: DUP5 00000860: AND 00000861: SWAP1 00000862: DUP2 00000863: OR 00000864: SWAP1 00000865: SWAP2 00000866: SSTORE 00000867: PUSH1 0x40 00000869: MLOAD 0000086a: SWAP1 0000086b: DUP2 0000086c: MSTORE 0000086d: PUSH32 0x4eab7b127c764308788622363ad3e9532de3dfba7845bd4f84c125a22544255a 0000088e: SWAP1 0000088f: PUSH1 0x20 00000891: ADD 00000892: PUSH2 0x072a 00000895: JUMP 00000896: JUMPDEST 00000897: PUSH1 0x60 00000899: PUSH2 0x08a2 0000089c: PUSH1 0x97 0000089e: PUSH2 0x107c 000008a1: JUMP 000008a2: JUMPDEST 000008a3: SWAP1 000008a4: POP 000008a5: SWAP1 000008a6: JUMP 000008a7: JUMPDEST 000008a8: PUSH2 0x08af 000008ab: PUSH2 0x0fe2 000008ae: JUMP 000008af: JUMPDEST 000008b0: PUSH2 0x08b9 000008b3: DUP3 000008b4: DUP3 000008b5: PUSH2 0x112d 000008b8: JUMP 000008b9: JUMPDEST 000008ba: POP 000008bb: POP 000008bc: JUMP 000008bd: JUMPDEST 000008be: PUSH1 0x00 000008c0: PUSH2 0x0904 000008c3: DUP8 000008c4: DUP8 000008c5: DUP8 000008c6: CALLVALUE 000008c7: DUP9 000008c8: DUP9 000008c9: DUP1 000008ca: DUP1 000008cb: PUSH1 0x1f 000008cd: ADD 000008ce: PUSH1 0x20 000008d0: DUP1 000008d1: SWAP2 000008d2: DIV 000008d3: MUL 000008d4: PUSH1 0x20 000008d6: ADD 000008d7: PUSH1 0x40 000008d9: MLOAD 000008da: SWAP1 000008db: DUP2 000008dc: ADD 000008dd: PUSH1 0x40 000008df: MSTORE 000008e0: DUP1 000008e1: SWAP4 000008e2: SWAP3 000008e3: SWAP2 000008e4: SWAP1 000008e5: DUP2 000008e6: DUP2 000008e7: MSTORE 000008e8: PUSH1 0x20 000008ea: ADD 000008eb: DUP4 000008ec: DUP4 000008ed: DUP1 000008ee: DUP3 000008ef: DUP5 000008f0: CALLDATACOPY 000008f1: PUSH1 0x00 000008f3: SWAP3 000008f4: ADD 000008f5: SWAP2 000008f6: SWAP1 000008f7: SWAP2 000008f8: MSTORE 000008f9: POP 000008fa: DUP11 000008fb: SWAP3 000008fc: POP 000008fd: PUSH2 0x117b 00000900: SWAP2 00000901: POP 00000902: POP 00000903: JUMP 00000904: JUMPDEST 00000905: SWAP8 00000906: SWAP7 00000907: POP 00000908: POP 00000909: POP 0000090a: POP 0000090b: POP 0000090c: POP 0000090d: POP 0000090e: JUMP 0000090f: JUMPDEST 00000910: CALLER 00000911: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000926: PUSH32 0x000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239 00000947: AND 00000948: EQ 00000949: PUSH2 0x09d4 0000094c: JUMPI 0000094d: PUSH1 0x40 0000094f: MLOAD 00000950: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000971: DUP2 00000972: MSTORE 00000973: PUSH1 0x20 00000975: PUSH1 0x04 00000977: DUP3 00000978: ADD 00000979: MSTORE 0000097a: PUSH1 0x21 0000097c: PUSH1 0x24 0000097e: DUP3 0000097f: ADD 00000980: MSTORE 00000981: PUSH32 0x4d61696c626f78436c69656e743a2073656e646572206e6f74206d61696c626f 000009a2: PUSH1 0x44 000009a4: DUP3 000009a5: ADD 000009a6: MSTORE 000009a7: PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 000009c8: PUSH1 0x64 000009ca: DUP3 000009cb: ADD 000009cc: MSTORE 000009cd: PUSH1 0x84 000009cf: ADD 000009d0: PUSH2 0x06aa 000009d3: JUMP 000009d4: JUMPDEST 000009d5: PUSH1 0x00 000009d7: PUSH2 0x09df 000009da: DUP6 000009db: PUSH2 0x1202 000009de: JUMP 000009df: JUMPDEST 000009e0: SWAP1 000009e1: POP 000009e2: DUP4 000009e3: DUP2 000009e4: EQ 000009e5: PUSH2 0x0a70 000009e8: JUMPI 000009e9: PUSH1 0x40 000009eb: MLOAD 000009ec: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000a0d: DUP2 00000a0e: MSTORE 00000a0f: PUSH1 0x20 00000a11: PUSH1 0x04 00000a13: DUP3 00000a14: ADD 00000a15: MSTORE 00000a16: PUSH1 0x25 00000a18: PUSH1 0x24 00000a1a: DUP3 00000a1b: ADD 00000a1c: MSTORE 00000a1d: PUSH32 0x456e726f6c6c656420726f7574657220646f6573206e6f74206d617463682073 00000a3e: PUSH1 0x44 00000a40: DUP3 00000a41: ADD 00000a42: MSTORE 00000a43: PUSH32 0x656e646572000000000000000000000000000000000000000000000000000000 00000a64: PUSH1 0x64 00000a66: DUP3 00000a67: ADD 00000a68: MSTORE 00000a69: PUSH1 0x84 00000a6b: ADD 00000a6c: PUSH2 0x06aa 00000a6f: JUMP 00000a70: JUMPDEST 00000a71: PUSH2 0x0a7c 00000a74: DUP6 00000a75: DUP6 00000a76: DUP6 00000a77: DUP6 00000a78: PUSH2 0x1267 00000a7b: JUMP 00000a7c: JUMPDEST 00000a7d: POP 00000a7e: POP 00000a7f: POP 00000a80: POP 00000a81: POP 00000a82: JUMP 00000a83: JUMPDEST 00000a84: PUSH1 0x40 00000a86: MLOAD 00000a87: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000 00000aa8: DUP2 00000aa9: MSTORE 00000aaa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000abf: DUP3 00000ac0: DUP2 00000ac1: AND 00000ac2: PUSH1 0x04 00000ac4: DUP4 00000ac5: ADD 00000ac6: MSTORE 00000ac7: PUSH1 0x00 00000ac9: SWAP2 00000aca: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 00000aeb: SWAP1 00000aec: SWAP2 00000aed: AND 00000aee: SWAP1 00000aef: PUSH4 0x70a08231 00000af4: SWAP1 00000af5: PUSH1 0x24 00000af7: ADD 00000af8: PUSH1 0x20 00000afa: PUSH1 0x40 00000afc: MLOAD 00000afd: DUP1 00000afe: DUP4 00000aff: SUB 00000b00: DUP2 00000b01: DUP7 00000b02: GAS 00000b03: STATICCALL 00000b04: ISZERO 00000b05: DUP1 00000b06: ISZERO 00000b07: PUSH2 0x0b14 00000b0a: JUMPI 00000b0b: RETURNDATASIZE 00000b0c: PUSH1 0x00 00000b0e: DUP1 00000b0f: RETURNDATACOPY 00000b10: RETURNDATASIZE 00000b11: PUSH1 0x00 00000b13: REVERT 00000b14: JUMPDEST 00000b15: POP 00000b16: POP 00000b17: POP 00000b18: POP 00000b19: PUSH1 0x40 00000b1b: MLOAD 00000b1c: RETURNDATASIZE 00000b1d: PUSH1 0x1f 00000b1f: NOT 00000b20: PUSH1 0x1f 00000b22: DUP3 00000b23: ADD 00000b24: AND 00000b25: DUP3 00000b26: ADD 00000b27: DUP1 00000b28: PUSH1 0x40 00000b2a: MSTORE 00000b2b: POP 00000b2c: DUP2 00000b2d: ADD 00000b2e: SWAP1 00000b2f: PUSH2 0x0b38 00000b32: SWAP2 00000b33: SWAP1 00000b34: PUSH2 0x276a 00000b37: JUMP 00000b38: JUMPDEST 00000b39: SWAP3 00000b3a: SWAP2 00000b3b: POP 00000b3c: POP 00000b3d: JUMP 00000b3e: JUMPDEST 00000b3f: PUSH2 0x0b46 00000b42: PUSH2 0x0fe2 00000b45: JUMP 00000b46: JUMPDEST 00000b47: PUSH2 0x0b50 00000b4a: PUSH1 0x00 00000b4c: PUSH2 0x12fb 00000b4f: JUMP 00000b50: JUMPDEST 00000b51: JUMP 00000b52: JUMPDEST 00000b53: PUSH2 0x0b5a 00000b56: PUSH2 0x0fe2 00000b59: JUMP 00000b5a: JUMPDEST 00000b5b: DUP1 00000b5c: PUSH1 0x00 00000b5e: JUMPDEST 00000b5f: DUP2 00000b60: DUP2 00000b61: LT 00000b62: ISZERO 00000b63: PUSH2 0x0ba7 00000b66: JUMPI 00000b67: PUSH2 0x0b95 00000b6a: DUP5 00000b6b: DUP5 00000b6c: DUP4 00000b6d: DUP2 00000b6e: DUP2 00000b6f: LT 00000b70: PUSH2 0x0b7b 00000b73: JUMPI 00000b74: PUSH2 0x0b7b 00000b77: PUSH2 0x2783 00000b7a: JUMP 00000b7b: JUMPDEST 00000b7c: SWAP1 00000b7d: POP 00000b7e: PUSH1 0x20 00000b80: MUL 00000b81: ADD 00000b82: PUSH1 0x20 00000b84: DUP2 00000b85: ADD 00000b86: SWAP1 00000b87: PUSH2 0x0b90 00000b8a: SWAP2 00000b8b: SWAP1 00000b8c: PUSH2 0x2375 00000b8f: JUMP 00000b90: JUMPDEST 00000b91: PUSH2 0x1372 00000b94: JUMP 00000b95: JUMPDEST 00000b96: PUSH2 0x0ba0 00000b99: PUSH1 0x01 00000b9b: DUP3 00000b9c: PUSH2 0x27e1 00000b9f: JUMP 00000ba0: JUMPDEST 00000ba1: SWAP1 00000ba2: POP 00000ba3: PUSH2 0x0b5e 00000ba6: JUMP 00000ba7: JUMPDEST 00000ba8: POP 00000ba9: POP 00000baa: POP 00000bab: POP 00000bac: JUMP 00000bad: JUMPDEST 00000bae: PUSH1 0x00 00000bb0: PUSH2 0x074d 00000bb3: DUP5 00000bb4: DUP5 00000bb5: DUP5 00000bb6: CALLVALUE 00000bb7: PUSH2 0x13c7 00000bba: JUMP 00000bbb: JUMPDEST 00000bbc: PUSH2 0x0bc3 00000bbf: PUSH2 0x0fe2 00000bc2: JUMP 00000bc3: JUMPDEST 00000bc4: PUSH1 0x00 00000bc6: JUMPDEST 00000bc7: DUP2 00000bc8: DUP2 00000bc9: LT 00000bca: ISZERO 00000bcb: PUSH2 0x0c2c 00000bce: JUMPI 00000bcf: PUSH2 0x0c1a 00000bd2: DUP4 00000bd3: DUP4 00000bd4: DUP4 00000bd5: DUP2 00000bd6: DUP2 00000bd7: LT 00000bd8: PUSH2 0x0be3 00000bdb: JUMPI 00000bdc: PUSH2 0x0be3 00000bdf: PUSH2 0x2783 00000be2: JUMP 00000be3: JUMPDEST 00000be4: PUSH2 0x0bf9 00000be7: SWAP3 00000be8: PUSH1 0x20 00000bea: PUSH1 0x40 00000bec: SWAP1 00000bed: SWAP3 00000bee: MUL 00000bef: ADD 00000bf0: SWAP1 00000bf1: DUP2 00000bf2: ADD 00000bf3: SWAP2 00000bf4: POP 00000bf5: PUSH2 0x2375 00000bf8: JUMP 00000bf9: JUMPDEST 00000bfa: DUP5 00000bfb: DUP5 00000bfc: DUP5 00000bfd: DUP2 00000bfe: DUP2 00000bff: LT 00000c00: PUSH2 0x0c0b 00000c03: JUMPI 00000c04: PUSH2 0x0c0b 00000c07: PUSH2 0x2783 00000c0a: JUMP 00000c0b: JUMPDEST 00000c0c: SWAP1 00000c0d: POP 00000c0e: PUSH1 0x40 00000c10: MUL 00000c11: ADD 00000c12: PUSH1 0x20 00000c14: ADD 00000c15: CALLDATALOAD 00000c16: PUSH2 0x112d 00000c19: JUMP 00000c1a: JUMPDEST 00000c1b: PUSH2 0x0c25 00000c1e: PUSH1 0x01 00000c20: DUP3 00000c21: PUSH2 0x27e1 00000c24: JUMP 00000c25: JUMPDEST 00000c26: SWAP1 00000c27: POP 00000c28: PUSH2 0x0bc6 00000c2b: JUMP 00000c2c: JUMPDEST 00000c2d: POP 00000c2e: POP 00000c2f: POP 00000c30: JUMP 00000c31: JUMPDEST 00000c32: PUSH2 0x0c39 00000c35: PUSH2 0x0fe2 00000c38: JUMP 00000c39: JUMPDEST 00000c3a: PUSH2 0x08b9 00000c3d: DUP3 00000c3e: DUP3 00000c3f: PUSH2 0x1400 00000c42: JUMP 00000c43: JUMPDEST 00000c44: PUSH1 0x00 00000c46: SLOAD 00000c47: PUSH2 0x0100 00000c4a: SWAP1 00000c4b: DIV 00000c4c: PUSH1 0xff 00000c4e: AND 00000c4f: ISZERO 00000c50: DUP1 00000c51: DUP1 00000c52: ISZERO 00000c53: PUSH2 0x0c63 00000c56: JUMPI 00000c57: POP 00000c58: PUSH1 0x00 00000c5a: SLOAD 00000c5b: PUSH1 0x01 00000c5d: PUSH1 0xff 00000c5f: SWAP1 00000c60: SWAP2 00000c61: AND 00000c62: LT 00000c63: JUMPDEST 00000c64: DUP1 00000c65: PUSH2 0x0c7d 00000c68: JUMPI 00000c69: POP 00000c6a: ADDRESS 00000c6b: EXTCODESIZE 00000c6c: ISZERO 00000c6d: DUP1 00000c6e: ISZERO 00000c6f: PUSH2 0x0c7d 00000c72: JUMPI 00000c73: POP 00000c74: PUSH1 0x00 00000c76: SLOAD 00000c77: PUSH1 0xff 00000c79: AND 00000c7a: PUSH1 0x01 00000c7c: EQ 00000c7d: JUMPDEST 00000c7e: PUSH2 0x0d09 00000c81: JUMPI 00000c82: PUSH1 0x40 00000c84: MLOAD 00000c85: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000ca6: DUP2 00000ca7: MSTORE 00000ca8: PUSH1 0x20 00000caa: PUSH1 0x04 00000cac: DUP3 00000cad: ADD 00000cae: MSTORE 00000caf: PUSH1 0x2e 00000cb1: PUSH1 0x24 00000cb3: DUP3 00000cb4: ADD 00000cb5: MSTORE 00000cb6: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561 00000cd7: PUSH1 0x44 00000cd9: DUP3 00000cda: ADD 00000cdb: MSTORE 00000cdc: PUSH32 0x647920696e697469616c697a6564000000000000000000000000000000000000 00000cfd: PUSH1 0x64 00000cff: DUP3 00000d00: ADD 00000d01: MSTORE 00000d02: PUSH1 0x84 00000d04: ADD 00000d05: PUSH2 0x06aa 00000d08: JUMP 00000d09: JUMPDEST 00000d0a: PUSH1 0x00 00000d0c: DUP1 00000d0d: SLOAD 00000d0e: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00000d2f: AND 00000d30: PUSH1 0x01 00000d32: OR 00000d33: SWAP1 00000d34: SSTORE 00000d35: DUP1 00000d36: ISZERO 00000d37: PUSH2 0x0d67 00000d3a: JUMPI 00000d3b: PUSH1 0x00 00000d3d: DUP1 00000d3e: SLOAD 00000d3f: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff 00000d60: AND 00000d61: PUSH2 0x0100 00000d64: OR 00000d65: SWAP1 00000d66: SSTORE 00000d67: JUMPDEST 00000d68: PUSH2 0x0d72 00000d6b: DUP5 00000d6c: DUP5 00000d6d: DUP5 00000d6e: PUSH2 0x1416 00000d71: JUMP 00000d72: JUMPDEST 00000d73: DUP1 00000d74: ISZERO 00000d75: PUSH2 0x0ba7 00000d78: JUMPI 00000d79: PUSH1 0x00 00000d7b: DUP1 00000d7c: SLOAD 00000d7d: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff 00000d9e: AND 00000d9f: SWAP1 00000da0: SSTORE 00000da1: PUSH1 0x40 00000da3: MLOAD 00000da4: PUSH1 0x01 00000da6: DUP2 00000da7: MSTORE 00000da8: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498 00000dc9: SWAP1 00000dca: PUSH1 0x20 00000dcc: ADD 00000dcd: PUSH1 0x40 00000dcf: MLOAD 00000dd0: DUP1 00000dd1: SWAP2 00000dd2: SUB 00000dd3: SWAP1 00000dd4: LOG1 00000dd5: POP 00000dd6: POP 00000dd7: POP 00000dd8: POP 00000dd9: JUMP 00000dda: JUMPDEST 00000ddb: PUSH2 0x0de2 00000dde: PUSH2 0x0fe2 00000de1: JUMP 00000de2: JUMPDEST 00000de3: DUP3 00000de4: DUP2 00000de5: EQ 00000de6: PUSH2 0x0e4b 00000de9: JUMPI 00000dea: PUSH1 0x40 00000dec: MLOAD 00000ded: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000e0e: DUP2 00000e0f: MSTORE 00000e10: PUSH1 0x20 00000e12: PUSH1 0x04 00000e14: DUP3 00000e15: ADD 00000e16: MSTORE 00000e17: PUSH1 0x07 00000e19: PUSH1 0x24 00000e1b: DUP3 00000e1c: ADD 00000e1d: MSTORE 00000e1e: PUSH32 0x216c656e67746800000000000000000000000000000000000000000000000000 00000e3f: PUSH1 0x44 00000e41: DUP3 00000e42: ADD 00000e43: MSTORE 00000e44: PUSH1 0x64 00000e46: ADD 00000e47: PUSH2 0x06aa 00000e4a: JUMP 00000e4b: JUMPDEST 00000e4c: DUP3 00000e4d: PUSH1 0x00 00000e4f: JUMPDEST 00000e50: DUP2 00000e51: DUP2 00000e52: LT 00000e53: ISZERO 00000e54: PUSH2 0x0eb1 00000e57: JUMPI 00000e58: PUSH2 0x0e9f 00000e5b: DUP7 00000e5c: DUP7 00000e5d: DUP4 00000e5e: DUP2 00000e5f: DUP2 00000e60: LT 00000e61: PUSH2 0x0e6c 00000e64: JUMPI 00000e65: PUSH2 0x0e6c 00000e68: PUSH2 0x2783 00000e6b: JUMP 00000e6c: JUMPDEST 00000e6d: SWAP1 00000e6e: POP 00000e6f: PUSH1 0x20 00000e71: MUL 00000e72: ADD 00000e73: PUSH1 0x20 00000e75: DUP2 00000e76: ADD 00000e77: SWAP1 00000e78: PUSH2 0x0e81 00000e7b: SWAP2 00000e7c: SWAP1 00000e7d: PUSH2 0x2375 00000e80: JUMP 00000e81: JUMPDEST 00000e82: DUP6 00000e83: DUP6 00000e84: DUP5 00000e85: DUP2 00000e86: DUP2 00000e87: LT 00000e88: PUSH2 0x0e93 00000e8b: JUMPI 00000e8c: PUSH2 0x0e93 00000e8f: PUSH2 0x2783 00000e92: JUMP 00000e93: JUMPDEST 00000e94: SWAP1 00000e95: POP 00000e96: PUSH1 0x20 00000e98: MUL 00000e99: ADD 00000e9a: CALLDATALOAD 00000e9b: PUSH2 0x1400 00000e9e: JUMP 00000e9f: JUMPDEST 00000ea0: PUSH2 0x0eaa 00000ea3: PUSH1 0x01 00000ea5: DUP3 00000ea6: PUSH2 0x27e1 00000ea9: JUMP 00000eaa: JUMPDEST 00000eab: SWAP1 00000eac: POP 00000ead: PUSH2 0x0e4f 00000eb0: JUMP 00000eb1: JUMPDEST 00000eb2: POP 00000eb3: POP 00000eb4: POP 00000eb5: POP 00000eb6: POP 00000eb7: POP 00000eb8: JUMP 00000eb9: JUMPDEST 00000eba: PUSH2 0x0ec1 00000ebd: PUSH2 0x0fe2 00000ec0: JUMP 00000ec1: JUMPDEST 00000ec2: PUSH2 0x0eca 00000ec5: DUP2 00000ec6: PUSH2 0x1372 00000ec9: JUMP 00000eca: JUMPDEST 00000ecb: POP 00000ecc: JUMP 00000ecd: JUMPDEST 00000ece: PUSH1 0x00 00000ed0: PUSH2 0x0b38 00000ed3: DUP3 00000ed4: PUSH2 0x0f10 00000ed7: PUSH1 0x00 00000ed9: DUP1 00000eda: SHL 00000edb: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00000efc: PUSH1 0x40 00000efe: MLOAD 00000eff: DUP1 00000f00: PUSH1 0x20 00000f02: ADD 00000f03: PUSH1 0x40 00000f05: MSTORE 00000f06: DUP1 00000f07: PUSH1 0x00 00000f09: DUP2 00000f0a: MSTORE 00000f0b: POP 00000f0c: PUSH2 0x14d0 00000f0f: JUMP 00000f10: JUMPDEST 00000f11: PUSH1 0x65 00000f13: SLOAD 00000f14: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f29: AND 00000f2a: PUSH2 0x14ff 00000f2d: JUMP 00000f2e: JUMPDEST 00000f2f: PUSH2 0x0f36 00000f32: PUSH2 0x0fe2 00000f35: JUMP 00000f36: JUMPDEST 00000f37: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f4c: DUP2 00000f4d: AND 00000f4e: PUSH2 0x0fd9 00000f51: JUMPI 00000f52: PUSH1 0x40 00000f54: MLOAD 00000f55: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000f76: DUP2 00000f77: MSTORE 00000f78: PUSH1 0x20 00000f7a: PUSH1 0x04 00000f7c: DUP3 00000f7d: ADD 00000f7e: MSTORE 00000f7f: PUSH1 0x26 00000f81: PUSH1 0x24 00000f83: DUP3 00000f84: ADD 00000f85: MSTORE 00000f86: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061 00000fa7: PUSH1 0x44 00000fa9: DUP3 00000faa: ADD 00000fab: MSTORE 00000fac: PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 00000fcd: PUSH1 0x64 00000fcf: DUP3 00000fd0: ADD 00000fd1: MSTORE 00000fd2: PUSH1 0x84 00000fd4: ADD 00000fd5: PUSH2 0x06aa 00000fd8: JUMP 00000fd9: JUMPDEST 00000fda: PUSH2 0x0eca 00000fdd: DUP2 00000fde: PUSH2 0x12fb 00000fe1: JUMP 00000fe2: JUMPDEST 00000fe3: PUSH1 0x33 00000fe5: SLOAD 00000fe6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ffb: AND 00000ffc: CALLER 00000ffd: EQ 00000ffe: PUSH2 0x0b50 00001001: JUMPI 00001002: PUSH1 0x40 00001004: MLOAD 00001005: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001026: DUP2 00001027: MSTORE 00001028: PUSH1 0x20 0000102a: PUSH1 0x04 0000102c: DUP3 0000102d: ADD 0000102e: DUP2 0000102f: SWAP1 00001030: MSTORE 00001031: PUSH1 0x24 00001033: DUP3 00001034: ADD 00001035: MSTORE 00001036: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00001057: PUSH1 0x44 00001059: DUP3 0000105a: ADD 0000105b: MSTORE 0000105c: PUSH1 0x64 0000105e: ADD 0000105f: PUSH2 0x06aa 00001062: JUMP 00001063: JUMPDEST 00001064: PUSH1 0x00 00001066: DUP1 00001067: PUSH2 0x1070 0000106a: DUP5 0000106b: DUP5 0000106c: PUSH2 0x1515 0000106f: JUMP 00001070: JUMPDEST 00001071: SWAP2 00001072: POP 00001073: SWAP2 00001074: POP 00001075: JUMPDEST 00001076: SWAP3 00001077: POP 00001078: SWAP3 00001079: SWAP1 0000107a: POP 0000107b: JUMP 0000107c: JUMPDEST 0000107d: PUSH1 0x60 0000107f: PUSH1 0x00 00001081: PUSH2 0x1089 00001084: DUP4 00001085: PUSH2 0x154f 00001088: JUMP 00001089: JUMPDEST 0000108a: SWAP1 0000108b: POP 0000108c: DUP1 0000108d: MLOAD 0000108e: PUSH8 0xffffffffffffffff 00001097: DUP2 00001098: GT 00001099: ISZERO 0000109a: PUSH2 0x10a5 0000109d: JUMPI 0000109e: PUSH2 0x10a5 000010a1: PUSH2 0x27f4 000010a4: JUMP 000010a5: JUMPDEST 000010a6: PUSH1 0x40 000010a8: MLOAD 000010a9: SWAP1 000010aa: DUP1 000010ab: DUP3 000010ac: MSTORE 000010ad: DUP1 000010ae: PUSH1 0x20 000010b0: MUL 000010b1: PUSH1 0x20 000010b3: ADD 000010b4: DUP3 000010b5: ADD 000010b6: PUSH1 0x40 000010b8: MSTORE 000010b9: DUP1 000010ba: ISZERO 000010bb: PUSH2 0x10ce 000010be: JUMPI 000010bf: DUP2 000010c0: PUSH1 0x20 000010c2: ADD 000010c3: PUSH1 0x20 000010c5: DUP3 000010c6: MUL 000010c7: DUP1 000010c8: CALLDATASIZE 000010c9: DUP4 000010ca: CALLDATACOPY 000010cb: ADD 000010cc: SWAP1 000010cd: POP 000010ce: JUMPDEST 000010cf: POP 000010d0: SWAP2 000010d1: POP 000010d2: PUSH1 0x00 000010d4: JUMPDEST 000010d5: DUP2 000010d6: MLOAD 000010d7: DUP2 000010d8: LT 000010d9: ISZERO 000010da: PUSH2 0x1126 000010dd: JUMPI 000010de: DUP2 000010df: DUP2 000010e0: DUP2 000010e1: MLOAD 000010e2: DUP2 000010e3: LT 000010e4: PUSH2 0x10ef 000010e7: JUMPI 000010e8: PUSH2 0x10ef 000010eb: PUSH2 0x2783 000010ee: JUMP 000010ef: JUMPDEST 000010f0: PUSH1 0x20 000010f2: MUL 000010f3: PUSH1 0x20 000010f5: ADD 000010f6: ADD 000010f7: MLOAD 000010f8: DUP4 000010f9: DUP3 000010fa: DUP2 000010fb: MLOAD 000010fc: DUP2 000010fd: LT 000010fe: PUSH2 0x1109 00001101: JUMPI 00001102: PUSH2 0x1109 00001105: PUSH2 0x2783 00001108: JUMP 00001109: JUMPDEST 0000110a: PUSH4 0xffffffff 0000110f: SWAP1 00001110: SWAP3 00001111: AND 00001112: PUSH1 0x20 00001114: SWAP3 00001115: DUP4 00001116: MUL 00001117: SWAP2 00001118: SWAP1 00001119: SWAP2 0000111a: ADD 0000111b: SWAP1 0000111c: SWAP2 0000111d: ADD 0000111e: MSTORE 0000111f: PUSH1 0x01 00001121: ADD 00001122: PUSH2 0x10d4 00001125: JUMP 00001126: JUMPDEST 00001127: POP 00001128: POP 00001129: SWAP2 0000112a: SWAP1 0000112b: POP 0000112c: JUMP 0000112d: JUMPDEST 0000112e: PUSH4 0xffffffff 00001133: DUP3 00001134: AND 00001135: PUSH1 0x00 00001137: DUP2 00001138: DUP2 00001139: MSTORE 0000113a: PUSH1 0xca 0000113c: PUSH1 0x20 0000113e: SWAP1 0000113f: DUP2 00001140: MSTORE 00001141: PUSH1 0x40 00001143: SWAP2 00001144: DUP3 00001145: SWAP1 00001146: KECCAK256 00001147: DUP5 00001148: SWAP1 00001149: SSTORE 0000114a: DUP2 0000114b: MLOAD 0000114c: SWAP3 0000114d: DUP4 0000114e: MSTORE 0000114f: DUP3 00001150: ADD 00001151: DUP4 00001152: SWAP1 00001153: MSTORE 00001154: PUSH32 0xc3de732a98b24a2b5c6f67e8a7fb057ffc14046b83968a2c73e4148d2fba978b 00001175: SWAP2 00001176: ADD 00001177: PUSH2 0x072a 0000117a: JUMP 0000117b: JUMPDEST 0000117c: PUSH1 0x00 0000117e: DUP1 0000117f: PUSH2 0x1187 00001182: DUP7 00001183: PUSH2 0x15e0 00001186: JUMP 00001187: JUMPDEST 00001188: SWAP1 00001189: POP 0000118a: PUSH1 0x00 0000118c: PUSH2 0x1194 0000118f: DUP8 00001190: PUSH2 0x1638 00001193: JUMP 00001194: JUMPDEST 00001195: SWAP1 00001196: POP 00001197: PUSH1 0x00 00001199: PUSH2 0x11a3 0000119c: DUP10 0000119d: DUP4 0000119e: DUP6 0000119f: PUSH2 0x14d0 000011a2: JUMP 000011a3: JUMPDEST 000011a4: SWAP1 000011a5: POP 000011a6: PUSH2 0x11b2 000011a9: DUP11 000011aa: DUP9 000011ab: DUP4 000011ac: DUP10 000011ad: DUP10 000011ae: PUSH2 0x1664 000011b1: JUMP 000011b2: JUMPDEST 000011b3: SWAP4 000011b4: POP 000011b5: DUP9 000011b6: DUP11 000011b7: PUSH4 0xffffffff 000011bc: AND 000011bd: PUSH32 0xd229aacb94204188fe8042965fa6b269c62dc5818b21238779ab64bdd17efeec 000011de: DUP5 000011df: PUSH1 0x40 000011e1: MLOAD 000011e2: PUSH2 0x11ed 000011e5: SWAP2 000011e6: DUP2 000011e7: MSTORE 000011e8: PUSH1 0x20 000011ea: ADD 000011eb: SWAP1 000011ec: JUMP 000011ed: JUMPDEST 000011ee: PUSH1 0x40 000011f0: MLOAD 000011f1: DUP1 000011f2: SWAP2 000011f3: SUB 000011f4: SWAP1 000011f5: LOG3 000011f6: POP 000011f7: POP 000011f8: POP 000011f9: SWAP7 000011fa: SWAP6 000011fb: POP 000011fc: POP 000011fd: POP 000011fe: POP 000011ff: POP 00001200: POP 00001201: JUMP 00001202: JUMPDEST 00001203: PUSH1 0x00 00001205: DUP1 00001206: DUP1 00001207: PUSH2 0x121a 0000120a: PUSH1 0x97 0000120c: PUSH4 0xffffffff 00001211: DUP1 00001212: DUP8 00001213: AND 00001214: SWAP1 00001215: PUSH2 0x1063 00001218: AND 00001219: JUMP 0000121a: JUMPDEST 0000121b: SWAP2 0000121c: POP 0000121d: SWAP2 0000121e: POP 0000121f: DUP2 00001220: ISZERO 00001221: PUSH2 0x122b 00001224: JUMPI 00001225: SWAP4 00001226: SWAP3 00001227: POP 00001228: POP 00001229: POP 0000122a: JUMP 0000122b: JUMPDEST 0000122c: PUSH2 0x1234 0000122f: DUP5 00001230: PUSH2 0x1717 00001233: JUMP 00001234: JUMPDEST 00001235: PUSH1 0x40 00001237: MLOAD 00001238: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001259: DUP2 0000125a: MSTORE 0000125b: PUSH1 0x04 0000125d: ADD 0000125e: PUSH2 0x06aa 00001261: SWAP2 00001262: SWAP1 00001263: PUSH2 0x263f 00001266: JUMP 00001267: JUMPDEST 00001268: PUSH1 0x00 0000126a: PUSH2 0x1273 0000126d: DUP4 0000126e: DUP4 0000126f: PUSH2 0x174e 00001272: JUMP 00001273: JUMPDEST 00001274: SWAP1 00001275: POP 00001276: PUSH1 0x00 00001278: PUSH2 0x1281 0000127b: DUP5 0000127c: DUP5 0000127d: PUSH2 0x176d 00001280: JUMP 00001281: JUMPDEST 00001282: SWAP1 00001283: POP 00001284: CALLDATASIZE 00001285: PUSH1 0x00 00001287: PUSH2 0x1290 0000128a: DUP7 0000128b: DUP7 0000128c: PUSH2 0x177d 0000128f: JUMP 00001290: JUMPDEST 00001291: SWAP2 00001292: POP 00001293: SWAP2 00001294: POP 00001295: PUSH2 0x12b0 00001298: PUSH2 0x12a0 0000129b: DUP6 0000129c: PUSH2 0x178d 0000129f: JUMP 000012a0: JUMPDEST 000012a1: PUSH2 0x12a9 000012a4: DUP6 000012a5: PUSH2 0x1836 000012a8: JUMP 000012a9: JUMPDEST 000012aa: DUP5 000012ab: DUP5 000012ac: PUSH2 0x1862 000012af: JUMP 000012b0: JUMPDEST 000012b1: DUP4 000012b2: DUP9 000012b3: PUSH4 0xffffffff 000012b8: AND 000012b9: PUSH32 0xba20947a325f450d232530e5f5fce293e7963499d5309a07cee84a269f2f15a6 000012da: DUP6 000012db: PUSH1 0x40 000012dd: MLOAD 000012de: PUSH2 0x12e9 000012e1: SWAP2 000012e2: DUP2 000012e3: MSTORE 000012e4: PUSH1 0x20 000012e6: ADD 000012e7: SWAP1 000012e8: JUMP 000012e9: JUMPDEST 000012ea: PUSH1 0x40 000012ec: MLOAD 000012ed: DUP1 000012ee: SWAP2 000012ef: SUB 000012f0: SWAP1 000012f1: LOG3 000012f2: POP 000012f3: POP 000012f4: POP 000012f5: POP 000012f6: POP 000012f7: POP 000012f8: POP 000012f9: POP 000012fa: JUMP 000012fb: JUMPDEST 000012fc: PUSH1 0x33 000012fe: DUP1 000012ff: SLOAD 00001300: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001315: DUP4 00001316: DUP2 00001317: AND 00001318: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 00001339: DUP4 0000133a: AND 0000133b: DUP2 0000133c: OR 0000133d: SWAP1 0000133e: SWAP4 0000133f: SSTORE 00001340: PUSH1 0x40 00001342: MLOAD 00001343: SWAP2 00001344: AND 00001345: SWAP2 00001346: SWAP1 00001347: DUP3 00001348: SWAP1 00001349: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 0000136a: SWAP1 0000136b: PUSH1 0x00 0000136d: SWAP1 0000136e: LOG3 0000136f: POP 00001370: POP 00001371: JUMP 00001372: JUMPDEST 00001373: PUSH2 0x1386 00001376: PUSH1 0x97 00001378: PUSH4 0xffffffff 0000137d: DUP1 0000137e: DUP5 0000137f: AND 00001380: SWAP1 00001381: PUSH2 0x18a3 00001384: AND 00001385: JUMP 00001386: JUMPDEST 00001387: PUSH2 0x138f 0000138a: DUP3 0000138b: PUSH2 0x1717 0000138e: JUMP 0000138f: JUMPDEST 00001390: SWAP1 00001391: PUSH2 0x08b9 00001394: JUMPI 00001395: PUSH1 0x40 00001397: MLOAD 00001398: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000013b9: DUP2 000013ba: MSTORE 000013bb: PUSH1 0x04 000013bd: ADD 000013be: PUSH2 0x06aa 000013c1: SWAP2 000013c2: SWAP1 000013c3: PUSH2 0x263f 000013c6: JUMP 000013c7: JUMPDEST 000013c8: PUSH1 0x00 000013ca: PUSH2 0x13f7 000013cd: DUP6 000013ce: DUP6 000013cf: DUP6 000013d0: DUP6 000013d1: PUSH2 0x13d9 000013d4: DUP11 000013d5: PUSH2 0x18af 000013d8: JUMP 000013d9: JUMPDEST 000013da: PUSH1 0x65 000013dc: SLOAD 000013dd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013f2: AND 000013f3: PUSH2 0x117b 000013f6: JUMP 000013f7: JUMPDEST 000013f8: SWAP6 000013f9: SWAP5 000013fa: POP 000013fb: POP 000013fc: POP 000013fd: POP 000013fe: POP 000013ff: JUMP 00001400: JUMPDEST 00001401: PUSH2 0x08b9 00001404: PUSH1 0x97 00001406: PUSH4 0xffffffff 0000140b: DUP1 0000140c: DUP6 0000140d: AND 0000140e: SWAP1 0000140f: DUP5 00001410: SWAP1 00001411: PUSH2 0x18d1 00001414: AND 00001415: JUMP 00001416: JUMPDEST 00001417: PUSH1 0x00 00001419: SLOAD 0000141a: PUSH2 0x0100 0000141d: SWAP1 0000141e: DIV 0000141f: PUSH1 0xff 00001421: AND 00001422: PUSH2 0x14ad 00001425: JUMPI 00001426: PUSH1 0x40 00001428: MLOAD 00001429: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000144a: DUP2 0000144b: MSTORE 0000144c: PUSH1 0x20 0000144e: PUSH1 0x04 00001450: DUP3 00001451: ADD 00001452: MSTORE 00001453: PUSH1 0x2b 00001455: PUSH1 0x24 00001457: DUP3 00001458: ADD 00001459: MSTORE 0000145a: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069 0000147b: PUSH1 0x44 0000147d: DUP3 0000147e: ADD 0000147f: MSTORE 00001480: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000 000014a1: PUSH1 0x64 000014a3: DUP3 000014a4: ADD 000014a5: MSTORE 000014a6: PUSH1 0x84 000014a8: ADD 000014a9: PUSH2 0x06aa 000014ac: JUMP 000014ad: JUMPDEST 000014ae: PUSH2 0x14b5 000014b1: PUSH2 0x18dc 000014b4: JUMP 000014b5: JUMPDEST 000014b6: PUSH2 0x14be 000014b9: DUP4 000014ba: PUSH2 0x0755 000014bd: JUMP 000014be: JUMPDEST 000014bf: PUSH2 0x14c7 000014c2: DUP3 000014c3: PUSH2 0x05e8 000014c6: JUMP 000014c7: JUMPDEST 000014c8: PUSH2 0x0c2c 000014cb: DUP2 000014cc: PUSH2 0x12fb 000014cf: JUMP 000014d0: JUMPDEST 000014d1: PUSH1 0x60 000014d3: DUP4 000014d4: DUP4 000014d5: DUP4 000014d6: PUSH1 0x40 000014d8: MLOAD 000014d9: PUSH1 0x20 000014db: ADD 000014dc: PUSH2 0x14e7 000014df: SWAP4 000014e0: SWAP3 000014e1: SWAP2 000014e2: SWAP1 000014e3: PUSH2 0x2823 000014e6: JUMP 000014e7: JUMPDEST 000014e8: PUSH1 0x40 000014ea: MLOAD 000014eb: PUSH1 0x20 000014ed: DUP2 000014ee: DUP4 000014ef: SUB 000014f0: SUB 000014f1: DUP2 000014f2: MSTORE 000014f3: SWAP1 000014f4: PUSH1 0x40 000014f6: MSTORE 000014f7: SWAP1 000014f8: POP 000014f9: SWAP4 000014fa: SWAP3 000014fb: POP 000014fc: POP 000014fd: POP 000014fe: JUMP 000014ff: JUMPDEST 00001500: PUSH1 0x00 00001502: PUSH2 0x074d 00001505: DUP5 00001506: DUP5 00001507: PUSH2 0x150f 0000150a: DUP8 0000150b: PUSH2 0x18af 0000150e: JUMP 0000150f: JUMPDEST 00001510: DUP6 00001511: PUSH2 0x197b 00001514: JUMP 00001515: JUMPDEST 00001516: PUSH1 0x00 00001518: DUP2 00001519: DUP2 0000151a: MSTORE 0000151b: PUSH1 0x02 0000151d: DUP4 0000151e: ADD 0000151f: PUSH1 0x20 00001521: MSTORE 00001522: PUSH1 0x40 00001524: DUP2 00001525: KECCAK256 00001526: SLOAD 00001527: DUP2 00001528: SWAP1 00001529: DUP1 0000152a: PUSH2 0x1544 0000152d: JUMPI 0000152e: PUSH2 0x1537 00001531: DUP6 00001532: DUP6 00001533: PUSH2 0x1a4f 00001536: JUMP 00001537: JUMPDEST 00001538: SWAP3 00001539: POP 0000153a: PUSH1 0x00 0000153c: SWAP2 0000153d: POP 0000153e: PUSH2 0x1075 00001541: SWAP1 00001542: POP 00001543: JUMP 00001544: JUMPDEST 00001545: PUSH1 0x01 00001547: SWAP3 00001548: POP 00001549: SWAP1 0000154a: POP 0000154b: PUSH2 0x1075 0000154e: JUMP 0000154f: JUMPDEST 00001550: PUSH1 0x60 00001552: PUSH1 0x00 00001554: PUSH2 0x155c 00001557: DUP4 00001558: PUSH2 0x1a5b 0000155b: JUMP 0000155c: JUMPDEST 0000155d: SWAP1 0000155e: POP 0000155f: DUP1 00001560: PUSH8 0xffffffffffffffff 00001569: DUP2 0000156a: GT 0000156b: ISZERO 0000156c: PUSH2 0x1577 0000156f: JUMPI 00001570: PUSH2 0x1577 00001573: PUSH2 0x27f4 00001576: JUMP 00001577: JUMPDEST 00001578: PUSH1 0x40 0000157a: MLOAD 0000157b: SWAP1 0000157c: DUP1 0000157d: DUP3 0000157e: MSTORE 0000157f: DUP1 00001580: PUSH1 0x20 00001582: MUL 00001583: PUSH1 0x20 00001585: ADD 00001586: DUP3 00001587: ADD 00001588: PUSH1 0x40 0000158a: MSTORE 0000158b: DUP1 0000158c: ISZERO 0000158d: PUSH2 0x15a0 00001590: JUMPI 00001591: DUP2 00001592: PUSH1 0x20 00001594: ADD 00001595: PUSH1 0x20 00001597: DUP3 00001598: MUL 00001599: DUP1 0000159a: CALLDATASIZE 0000159b: DUP4 0000159c: CALLDATACOPY 0000159d: ADD 0000159e: SWAP1 0000159f: POP 000015a0: JUMPDEST 000015a1: POP 000015a2: SWAP2 000015a3: POP 000015a4: PUSH1 0x00 000015a6: JUMPDEST 000015a7: DUP2 000015a8: DUP2 000015a9: LT 000015aa: ISZERO 000015ab: PUSH2 0x1126 000015ae: JUMPI 000015af: PUSH2 0x15b8 000015b2: DUP5 000015b3: DUP3 000015b4: PUSH2 0x1a66 000015b7: JUMP 000015b8: JUMPDEST 000015b9: PUSH1 0x00 000015bb: SHR 000015bc: DUP4 000015bd: DUP3 000015be: DUP2 000015bf: MLOAD 000015c0: DUP2 000015c1: LT 000015c2: PUSH2 0x15cd 000015c5: JUMPI 000015c6: PUSH2 0x15cd 000015c9: PUSH2 0x2783 000015cc: JUMP 000015cd: JUMPDEST 000015ce: PUSH1 0x20 000015d0: SWAP1 000015d1: DUP2 000015d2: MUL 000015d3: SWAP2 000015d4: SWAP1 000015d5: SWAP2 000015d6: ADD 000015d7: ADD 000015d8: MSTORE 000015d9: PUSH1 0x01 000015db: ADD 000015dc: PUSH2 0x15a6 000015df: JUMP 000015e0: JUMPDEST 000015e1: PUSH1 0x60 000015e3: PUSH2 0x1624 000015e6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000015fb: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 0000161c: AND 0000161d: CALLER 0000161e: ADDRESS 0000161f: DUP6 00001620: PUSH2 0x1a72 00001623: JUMP 00001624: JUMPDEST 00001625: POP 00001626: POP 00001627: PUSH1 0x40 00001629: DUP1 0000162a: MLOAD 0000162b: PUSH1 0x20 0000162d: DUP2 0000162e: ADD 0000162f: SWAP1 00001630: SWAP2 00001631: MSTORE 00001632: PUSH1 0x00 00001634: DUP2 00001635: MSTORE 00001636: SWAP1 00001637: JUMP 00001638: JUMPDEST 00001639: PUSH1 0x00 0000163b: PUSH2 0x0b38 0000163e: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001 0000165f: DUP4 00001660: PUSH2 0x2850 00001663: JUMP 00001664: JUMPDEST 00001665: PUSH1 0x00 00001667: DUP1 00001668: PUSH2 0x1670 0000166b: DUP8 0000166c: PUSH2 0x1202 0000166f: JUMP 00001670: JUMPDEST 00001671: SWAP1 00001672: POP 00001673: PUSH32 0x000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239 00001694: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016a9: AND 000016aa: PUSH4 0x10b83dc0 000016af: DUP8 000016b0: DUP10 000016b1: DUP5 000016b2: DUP10 000016b3: DUP10 000016b4: DUP10 000016b5: PUSH1 0x40 000016b7: MLOAD 000016b8: DUP8 000016b9: PUSH4 0xffffffff 000016be: AND 000016bf: PUSH1 0xe0 000016c1: SHL 000016c2: DUP2 000016c3: MSTORE 000016c4: PUSH1 0x04 000016c6: ADD 000016c7: PUSH2 0x16d4 000016ca: SWAP6 000016cb: SWAP5 000016cc: SWAP4 000016cd: SWAP3 000016ce: SWAP2 000016cf: SWAP1 000016d0: PUSH2 0x2867 000016d3: JUMP 000016d4: JUMPDEST 000016d5: PUSH1 0x20 000016d7: PUSH1 0x40 000016d9: MLOAD 000016da: DUP1 000016db: DUP4 000016dc: SUB 000016dd: DUP2 000016de: DUP6 000016df: DUP9 000016e0: GAS 000016e1: CALL 000016e2: ISZERO 000016e3: DUP1 000016e4: ISZERO 000016e5: PUSH2 0x16f2 000016e8: JUMPI 000016e9: RETURNDATASIZE 000016ea: PUSH1 0x00 000016ec: DUP1 000016ed: RETURNDATACOPY 000016ee: RETURNDATASIZE 000016ef: PUSH1 0x00 000016f1: REVERT 000016f2: JUMPDEST 000016f3: POP 000016f4: POP 000016f5: POP 000016f6: POP 000016f7: POP 000016f8: PUSH1 0x40 000016fa: MLOAD 000016fb: RETURNDATASIZE 000016fc: PUSH1 0x1f 000016fe: NOT 000016ff: PUSH1 0x1f 00001701: DUP3 00001702: ADD 00001703: AND 00001704: DUP3 00001705: ADD 00001706: DUP1 00001707: PUSH1 0x40 00001709: MSTORE 0000170a: POP 0000170b: DUP2 0000170c: ADD 0000170d: SWAP1 0000170e: PUSH2 0x0904 00001711: SWAP2 00001712: SWAP1 00001713: PUSH2 0x276a 00001716: JUMP 00001717: JUMPDEST 00001718: PUSH1 0x60 0000171a: PUSH2 0x1728 0000171d: DUP3 0000171e: PUSH4 0xffffffff 00001723: AND 00001724: PUSH2 0x1b4e 00001727: JUMP 00001728: JUMPDEST 00001729: PUSH1 0x40 0000172b: MLOAD 0000172c: PUSH1 0x20 0000172e: ADD 0000172f: PUSH2 0x1738 00001732: SWAP2 00001733: SWAP1 00001734: PUSH2 0x28c7 00001737: JUMP 00001738: JUMPDEST 00001739: PUSH1 0x40 0000173b: MLOAD 0000173c: PUSH1 0x20 0000173e: DUP2 0000173f: DUP4 00001740: SUB 00001741: SUB 00001742: DUP2 00001743: MSTORE 00001744: SWAP1 00001745: PUSH1 0x40 00001747: MSTORE 00001748: SWAP1 00001749: POP 0000174a: SWAP2 0000174b: SWAP1 0000174c: POP 0000174d: JUMP 0000174e: JUMPDEST 0000174f: PUSH1 0x00 00001751: PUSH2 0x175d 00001754: PUSH1 0x20 00001756: DUP3 00001757: DUP5 00001758: DUP7 00001759: PUSH2 0x290c 0000175c: JUMP 0000175d: JUMPDEST 0000175e: PUSH2 0x1766 00001761: SWAP2 00001762: PUSH2 0x2936 00001765: JUMP 00001766: JUMPDEST 00001767: SWAP4 00001768: SWAP3 00001769: POP 0000176a: POP 0000176b: POP 0000176c: JUMP 0000176d: JUMPDEST 0000176e: PUSH1 0x00 00001770: PUSH2 0x175d 00001773: PUSH1 0x40 00001775: PUSH1 0x20 00001777: DUP5 00001778: DUP7 00001779: PUSH2 0x290c 0000177c: JUMP 0000177d: JUMPDEST 0000177e: CALLDATASIZE 0000177f: PUSH1 0x00 00001781: PUSH2 0x1070 00001784: DUP4 00001785: PUSH1 0x40 00001787: DUP2 00001788: DUP8 00001789: PUSH2 0x290c 0000178c: JUMP 0000178d: JUMPDEST 0000178e: PUSH1 0x00 00001790: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000017a5: DUP3 000017a6: GT 000017a7: ISZERO 000017a8: PUSH2 0x1832 000017ab: JUMPI 000017ac: PUSH1 0x40 000017ae: MLOAD 000017af: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000017d0: DUP2 000017d1: MSTORE 000017d2: PUSH1 0x20 000017d4: PUSH1 0x04 000017d6: DUP3 000017d7: ADD 000017d8: MSTORE 000017d9: PUSH1 0x24 000017db: DUP1 000017dc: DUP3 000017dd: ADD 000017de: MSTORE 000017df: PUSH32 0x5479706543617374733a2062797465733332546f41646472657373206f766572 00001800: PUSH1 0x44 00001802: DUP3 00001803: ADD 00001804: MSTORE 00001805: PUSH32 0x666c6f7700000000000000000000000000000000000000000000000000000000 00001826: PUSH1 0x64 00001828: DUP3 00001829: ADD 0000182a: MSTORE 0000182b: PUSH1 0x84 0000182d: ADD 0000182e: PUSH2 0x06aa 00001831: JUMP 00001832: JUMPDEST 00001833: POP 00001834: SWAP1 00001835: JUMP 00001836: JUMPDEST 00001837: PUSH1 0x00 00001839: PUSH2 0x0b38 0000183c: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001 0000185d: DUP4 0000185e: PUSH2 0x2972 00001861: JUMP 00001862: JUMPDEST 00001863: PUSH2 0x0ba7 00001866: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000187b: PUSH32 0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 0000189c: AND 0000189d: DUP6 0000189e: DUP6 0000189f: PUSH2 0x1c0c 000018a2: JUMP 000018a3: JUMPDEST 000018a4: PUSH1 0x00 000018a6: PUSH2 0x1766 000018a9: DUP4 000018aa: DUP4 000018ab: PUSH2 0x1c62 000018ae: JUMP 000018af: JUMPDEST 000018b0: PUSH4 0xffffffff 000018b5: DUP2 000018b6: AND 000018b7: PUSH1 0x00 000018b9: SWAP1 000018ba: DUP2 000018bb: MSTORE 000018bc: PUSH1 0xca 000018be: PUSH1 0x20 000018c0: MSTORE 000018c1: PUSH1 0x40 000018c3: SWAP1 000018c4: KECCAK256 000018c5: SLOAD 000018c6: PUSH1 0x60 000018c8: SWAP1 000018c9: PUSH2 0x0b38 000018cc: SWAP1 000018cd: PUSH2 0x1c7f 000018d0: JUMP 000018d1: JUMPDEST 000018d2: PUSH2 0x0ba7 000018d5: DUP4 000018d6: DUP4 000018d7: DUP4 000018d8: PUSH2 0x1c9d 000018db: JUMP 000018dc: JUMPDEST 000018dd: PUSH1 0x00 000018df: SLOAD 000018e0: PUSH2 0x0100 000018e3: SWAP1 000018e4: DIV 000018e5: PUSH1 0xff 000018e7: AND 000018e8: PUSH2 0x1973 000018eb: JUMPI 000018ec: PUSH1 0x40 000018ee: MLOAD 000018ef: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001910: DUP2 00001911: MSTORE 00001912: PUSH1 0x20 00001914: PUSH1 0x04 00001916: DUP3 00001917: ADD 00001918: MSTORE 00001919: PUSH1 0x2b 0000191b: PUSH1 0x24 0000191d: DUP3 0000191e: ADD 0000191f: MSTORE 00001920: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069 00001941: PUSH1 0x44 00001943: DUP3 00001944: ADD 00001945: MSTORE 00001946: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000 00001967: PUSH1 0x64 00001969: DUP3 0000196a: ADD 0000196b: MSTORE 0000196c: PUSH1 0x84 0000196e: ADD 0000196f: PUSH2 0x06aa 00001972: JUMP 00001973: JUMPDEST 00001974: PUSH2 0x0b50 00001977: PUSH2 0x1cba 0000197a: JUMP 0000197b: JUMPDEST 0000197c: PUSH1 0x00 0000197e: DUP1 0000197f: PUSH2 0x1987 00001982: DUP7 00001983: PUSH2 0x1202 00001986: JUMP 00001987: JUMPDEST 00001988: PUSH1 0x40 0000198a: MLOAD 0000198b: PUSH32 0x81d2ea9500000000000000000000000000000000000000000000000000000000 000019ac: DUP2 000019ad: MSTORE 000019ae: SWAP1 000019af: SWAP2 000019b0: POP 000019b1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000019c6: PUSH32 0x000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239 000019e7: AND 000019e8: SWAP1 000019e9: PUSH4 0x81d2ea95 000019ee: SWAP1 000019ef: PUSH2 0x1a04 000019f2: SWAP1 000019f3: DUP10 000019f4: SWAP1 000019f5: DUP6 000019f6: SWAP1 000019f7: DUP11 000019f8: SWAP1 000019f9: DUP11 000019fa: SWAP1 000019fb: DUP11 000019fc: SWAP1 000019fd: PUSH1 0x04 000019ff: ADD 00001a00: PUSH2 0x2867 00001a03: JUMP 00001a04: JUMPDEST 00001a05: PUSH1 0x20 00001a07: PUSH1 0x40 00001a09: MLOAD 00001a0a: DUP1 00001a0b: DUP4 00001a0c: SUB 00001a0d: DUP2 00001a0e: DUP7 00001a0f: GAS 00001a10: STATICCALL 00001a11: ISZERO 00001a12: DUP1 00001a13: ISZERO 00001a14: PUSH2 0x1a21 00001a17: JUMPI 00001a18: RETURNDATASIZE 00001a19: PUSH1 0x00 00001a1b: DUP1 00001a1c: RETURNDATACOPY 00001a1d: RETURNDATASIZE 00001a1e: PUSH1 0x00 00001a20: REVERT 00001a21: JUMPDEST 00001a22: POP 00001a23: POP 00001a24: POP 00001a25: POP 00001a26: PUSH1 0x40 00001a28: MLOAD 00001a29: RETURNDATASIZE 00001a2a: PUSH1 0x1f 00001a2c: NOT 00001a2d: PUSH1 0x1f 00001a2f: DUP3 00001a30: ADD 00001a31: AND 00001a32: DUP3 00001a33: ADD 00001a34: DUP1 00001a35: PUSH1 0x40 00001a37: MSTORE 00001a38: POP 00001a39: DUP2 00001a3a: ADD 00001a3b: SWAP1 00001a3c: PUSH2 0x1a45 00001a3f: SWAP2 00001a40: SWAP1 00001a41: PUSH2 0x276a 00001a44: JUMP 00001a45: JUMPDEST 00001a46: SWAP7 00001a47: SWAP6 00001a48: POP 00001a49: POP 00001a4a: POP 00001a4b: POP 00001a4c: POP 00001a4d: POP 00001a4e: JUMP 00001a4f: JUMPDEST 00001a50: PUSH1 0x00 00001a52: PUSH2 0x1766 00001a55: DUP4 00001a56: DUP4 00001a57: PUSH2 0x1d5a 00001a5a: JUMP 00001a5b: JUMPDEST 00001a5c: PUSH1 0x00 00001a5e: PUSH2 0x0b38 00001a61: DUP3 00001a62: PUSH2 0x1d72 00001a65: JUMP 00001a66: JUMPDEST 00001a67: PUSH1 0x00 00001a69: PUSH2 0x1766 00001a6c: DUP4 00001a6d: DUP4 00001a6e: PUSH2 0x1d7c 00001a71: JUMP 00001a72: JUMPDEST 00001a73: PUSH1 0x40 00001a75: MLOAD 00001a76: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a8b: DUP1 00001a8c: DUP6 00001a8d: AND 00001a8e: PUSH1 0x24 00001a90: DUP4 00001a91: ADD 00001a92: MSTORE 00001a93: DUP4 00001a94: AND 00001a95: PUSH1 0x44 00001a97: DUP3 00001a98: ADD 00001a99: MSTORE 00001a9a: PUSH1 0x64 00001a9c: DUP2 00001a9d: ADD 00001a9e: DUP3 00001a9f: SWAP1 00001aa0: MSTORE 00001aa1: PUSH2 0x0ba7 00001aa4: SWAP1 00001aa5: DUP6 00001aa6: SWAP1 00001aa7: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000 00001ac8: SWAP1 00001ac9: PUSH1 0x84 00001acb: ADD 00001acc: JUMPDEST 00001acd: PUSH1 0x40 00001acf: DUP1 00001ad0: MLOAD 00001ad1: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00001af2: DUP2 00001af3: DUP5 00001af4: SUB 00001af5: ADD 00001af6: DUP2 00001af7: MSTORE 00001af8: SWAP2 00001af9: SWAP1 00001afa: MSTORE 00001afb: PUSH1 0x20 00001afd: DUP2 00001afe: ADD 00001aff: DUP1 00001b00: MLOAD 00001b01: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001b1e: AND 00001b1f: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000 00001b40: SWAP1 00001b41: SWAP4 00001b42: AND 00001b43: SWAP3 00001b44: SWAP1 00001b45: SWAP3 00001b46: OR 00001b47: SWAP1 00001b48: SWAP2 00001b49: MSTORE 00001b4a: PUSH2 0x1da6 00001b4d: JUMP 00001b4e: JUMPDEST 00001b4f: PUSH1 0x60 00001b51: PUSH1 0x00 00001b53: PUSH2 0x1b5b 00001b56: DUP4 00001b57: PUSH2 0x1eb5 00001b5a: JUMP 00001b5b: JUMPDEST 00001b5c: PUSH1 0x01 00001b5e: ADD 00001b5f: SWAP1 00001b60: POP 00001b61: PUSH1 0x00 00001b63: DUP2 00001b64: PUSH8 0xffffffffffffffff 00001b6d: DUP2 00001b6e: GT 00001b6f: ISZERO 00001b70: PUSH2 0x1b7b 00001b73: JUMPI 00001b74: PUSH2 0x1b7b 00001b77: PUSH2 0x27f4 00001b7a: JUMP 00001b7b: JUMPDEST 00001b7c: PUSH1 0x40 00001b7e: MLOAD 00001b7f: SWAP1 00001b80: DUP1 00001b81: DUP3 00001b82: MSTORE 00001b83: DUP1 00001b84: PUSH1 0x1f 00001b86: ADD 00001b87: PUSH1 0x1f 00001b89: NOT 00001b8a: AND 00001b8b: PUSH1 0x20 00001b8d: ADD 00001b8e: DUP3 00001b8f: ADD 00001b90: PUSH1 0x40 00001b92: MSTORE 00001b93: DUP1 00001b94: ISZERO 00001b95: PUSH2 0x1ba5 00001b98: JUMPI 00001b99: PUSH1 0x20 00001b9b: DUP3 00001b9c: ADD 00001b9d: DUP2 00001b9e: DUP1 00001b9f: CALLDATASIZE 00001ba0: DUP4 00001ba1: CALLDATACOPY 00001ba2: ADD 00001ba3: SWAP1 00001ba4: POP 00001ba5: JUMPDEST 00001ba6: POP 00001ba7: SWAP1 00001ba8: POP 00001ba9: DUP2 00001baa: DUP2 00001bab: ADD 00001bac: PUSH1 0x20 00001bae: ADD 00001baf: JUMPDEST 00001bb0: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001bd1: ADD 00001bd2: PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 00001bf3: PUSH1 0x0a 00001bf5: DUP7 00001bf6: MOD 00001bf7: BYTE 00001bf8: DUP2 00001bf9: MSTORE8 00001bfa: PUSH1 0x0a 00001bfc: DUP6 00001bfd: DIV 00001bfe: SWAP5 00001bff: POP 00001c00: DUP5 00001c01: PUSH2 0x1baf 00001c04: JUMPI 00001c05: POP 00001c06: SWAP4 00001c07: SWAP3 00001c08: POP 00001c09: POP 00001c0a: POP 00001c0b: JUMP 00001c0c: JUMPDEST 00001c0d: PUSH1 0x40 00001c0f: MLOAD 00001c10: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c25: DUP4 00001c26: AND 00001c27: PUSH1 0x24 00001c29: DUP3 00001c2a: ADD 00001c2b: MSTORE 00001c2c: PUSH1 0x44 00001c2e: DUP2 00001c2f: ADD 00001c30: DUP3 00001c31: SWAP1 00001c32: MSTORE 00001c33: PUSH2 0x0c2c 00001c36: SWAP1 00001c37: DUP5 00001c38: SWAP1 00001c39: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000 00001c5a: SWAP1 00001c5b: PUSH1 0x64 00001c5d: ADD 00001c5e: PUSH2 0x1acc 00001c61: JUMP 00001c62: JUMPDEST 00001c63: PUSH1 0x00 00001c65: DUP2 00001c66: DUP2 00001c67: MSTORE 00001c68: PUSH1 0x02 00001c6a: DUP4 00001c6b: ADD 00001c6c: PUSH1 0x20 00001c6e: MSTORE 00001c6f: PUSH1 0x40 00001c71: DUP2 00001c72: KECCAK256 00001c73: DUP2 00001c74: SWAP1 00001c75: SSTORE 00001c76: PUSH2 0x1766 00001c79: DUP4 00001c7a: DUP4 00001c7b: PUSH2 0x1f97 00001c7e: JUMP 00001c7f: JUMPDEST 00001c80: PUSH1 0x60 00001c82: PUSH2 0x0b38 00001c85: PUSH1 0x00 00001c87: DUP4 00001c88: CALLER 00001c89: PUSH1 0x40 00001c8b: MLOAD 00001c8c: DUP1 00001c8d: PUSH1 0x20 00001c8f: ADD 00001c90: PUSH1 0x40 00001c92: MSTORE 00001c93: DUP1 00001c94: PUSH1 0x00 00001c96: DUP2 00001c97: MSTORE 00001c98: POP 00001c99: PUSH2 0x1fa3 00001c9c: JUMP 00001c9d: JUMPDEST 00001c9e: PUSH1 0x00 00001ca0: DUP3 00001ca1: DUP2 00001ca2: MSTORE 00001ca3: PUSH1 0x02 00001ca5: DUP5 00001ca6: ADD 00001ca7: PUSH1 0x20 00001ca9: MSTORE 00001caa: PUSH1 0x40 00001cac: DUP2 00001cad: KECCAK256 00001cae: DUP3 00001caf: SWAP1 00001cb0: SSTORE 00001cb1: PUSH2 0x074d 00001cb4: DUP5 00001cb5: DUP5 00001cb6: PUSH2 0x1fd8 00001cb9: JUMP 00001cba: JUMPDEST 00001cbb: PUSH1 0x00 00001cbd: SLOAD 00001cbe: PUSH2 0x0100 00001cc1: SWAP1 00001cc2: DIV 00001cc3: PUSH1 0xff 00001cc5: AND 00001cc6: PUSH2 0x1d51 00001cc9: JUMPI 00001cca: PUSH1 0x40 00001ccc: MLOAD 00001ccd: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001cee: DUP2 00001cef: MSTORE 00001cf0: PUSH1 0x20 00001cf2: PUSH1 0x04 00001cf4: DUP3 00001cf5: ADD 00001cf6: MSTORE 00001cf7: PUSH1 0x2b 00001cf9: PUSH1 0x24 00001cfb: DUP3 00001cfc: ADD 00001cfd: MSTORE 00001cfe: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069 00001d1f: PUSH1 0x44 00001d21: DUP3 00001d22: ADD 00001d23: MSTORE 00001d24: PUSH32 0x6e697469616c697a696e67000000000000000000000000000000000000000000 00001d45: PUSH1 0x64 00001d47: DUP3 00001d48: ADD 00001d49: MSTORE 00001d4a: PUSH1 0x84 00001d4c: ADD 00001d4d: PUSH2 0x06aa 00001d50: JUMP 00001d51: JUMPDEST 00001d52: PUSH2 0x0b50 00001d55: CALLER 00001d56: PUSH2 0x12fb 00001d59: JUMP 00001d5a: JUMPDEST 00001d5b: PUSH1 0x00 00001d5d: DUP2 00001d5e: DUP2 00001d5f: MSTORE 00001d60: PUSH1 0x01 00001d62: DUP4 00001d63: ADD 00001d64: PUSH1 0x20 00001d66: MSTORE 00001d67: PUSH1 0x40 00001d69: DUP2 00001d6a: KECCAK256 00001d6b: SLOAD 00001d6c: ISZERO 00001d6d: ISZERO 00001d6e: PUSH2 0x1766 00001d71: JUMP 00001d72: JUMPDEST 00001d73: PUSH1 0x00 00001d75: PUSH2 0x0b38 00001d78: DUP3 00001d79: SLOAD 00001d7a: SWAP1 00001d7b: JUMP 00001d7c: JUMPDEST 00001d7d: PUSH1 0x00 00001d7f: DUP3 00001d80: PUSH1 0x00 00001d82: ADD 00001d83: DUP3 00001d84: DUP2 00001d85: SLOAD 00001d86: DUP2 00001d87: LT 00001d88: PUSH2 0x1d93 00001d8b: JUMPI 00001d8c: PUSH2 0x1d93 00001d8f: PUSH2 0x2783 00001d92: JUMP 00001d93: JUMPDEST 00001d94: SWAP1 00001d95: PUSH1 0x00 00001d97: MSTORE 00001d98: PUSH1 0x20 00001d9a: PUSH1 0x00 00001d9c: KECCAK256 00001d9d: ADD 00001d9e: SLOAD 00001d9f: SWAP1 00001da0: POP 00001da1: SWAP3 00001da2: SWAP2 00001da3: POP 00001da4: POP 00001da5: JUMP 00001da6: JUMPDEST 00001da7: PUSH1 0x00 00001da9: PUSH2 0x1e08 00001dac: DUP3 00001dad: PUSH1 0x40 00001daf: MLOAD 00001db0: DUP1 00001db1: PUSH1 0x40 00001db3: ADD 00001db4: PUSH1 0x40 00001db6: MSTORE 00001db7: DUP1 00001db8: PUSH1 0x20 00001dba: DUP2 00001dbb: MSTORE 00001dbc: PUSH1 0x20 00001dbe: ADD 00001dbf: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 00001de0: DUP2 00001de1: MSTORE 00001de2: POP 00001de3: DUP6 00001de4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001df9: AND 00001dfa: PUSH2 0x1fe4 00001dfd: SWAP1 00001dfe: SWAP3 00001dff: SWAP2 00001e00: SWAP1 00001e01: PUSH4 0xffffffff 00001e06: AND 00001e07: JUMP 00001e08: JUMPDEST 00001e09: SWAP1 00001e0a: POP 00001e0b: DUP1 00001e0c: MLOAD 00001e0d: PUSH1 0x00 00001e0f: EQ 00001e10: DUP1 00001e11: PUSH2 0x1e29 00001e14: JUMPI 00001e15: POP 00001e16: DUP1 00001e17: DUP1 00001e18: PUSH1 0x20 00001e1a: ADD 00001e1b: SWAP1 00001e1c: MLOAD 00001e1d: DUP2 00001e1e: ADD 00001e1f: SWAP1 00001e20: PUSH2 0x1e29 00001e23: SWAP2 00001e24: SWAP1 00001e25: PUSH2 0x29ad 00001e28: JUMP 00001e29: JUMPDEST 00001e2a: PUSH2 0x0c2c 00001e2d: JUMPI 00001e2e: PUSH1 0x40 00001e30: MLOAD 00001e31: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001e52: DUP2 00001e53: MSTORE 00001e54: PUSH1 0x20 00001e56: PUSH1 0x04 00001e58: DUP3 00001e59: ADD 00001e5a: MSTORE 00001e5b: PUSH1 0x2a 00001e5d: PUSH1 0x24 00001e5f: DUP3 00001e60: ADD 00001e61: MSTORE 00001e62: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e 00001e83: PUSH1 0x44 00001e85: DUP3 00001e86: ADD 00001e87: MSTORE 00001e88: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000 00001ea9: PUSH1 0x64 00001eab: DUP3 00001eac: ADD 00001ead: MSTORE 00001eae: PUSH1 0x84 00001eb0: ADD 00001eb1: PUSH2 0x06aa 00001eb4: JUMP 00001eb5: JUMPDEST 00001eb6: PUSH1 0x00 00001eb8: DUP1 00001eb9: PUSH27 0x184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000 00001ed5: DUP4 00001ed6: LT 00001ed7: PUSH2 0x1efe 00001eda: JUMPI 00001edb: PUSH27 0x184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000 00001ef7: DUP4 00001ef8: DIV 00001ef9: SWAP3 00001efa: POP 00001efb: PUSH1 0x40 00001efd: ADD 00001efe: JUMPDEST 00001eff: PUSH14 0x04ee2d6d415b85acef8100000000 00001f0e: DUP4 00001f0f: LT 00001f10: PUSH2 0x1f2a 00001f13: JUMPI 00001f14: PUSH14 0x04ee2d6d415b85acef8100000000 00001f23: DUP4 00001f24: DIV 00001f25: SWAP3 00001f26: POP 00001f27: PUSH1 0x20 00001f29: ADD 00001f2a: JUMPDEST 00001f2b: PUSH7 0x2386f26fc10000 00001f33: DUP4 00001f34: LT 00001f35: PUSH2 0x1f48 00001f38: JUMPI 00001f39: PUSH7 0x2386f26fc10000 00001f41: DUP4 00001f42: DIV 00001f43: SWAP3 00001f44: POP 00001f45: PUSH1 0x10 00001f47: ADD 00001f48: JUMPDEST 00001f49: PUSH4 0x05f5e100 00001f4e: DUP4 00001f4f: LT 00001f50: PUSH2 0x1f60 00001f53: JUMPI 00001f54: PUSH4 0x05f5e100 00001f59: DUP4 00001f5a: DIV 00001f5b: SWAP3 00001f5c: POP 00001f5d: PUSH1 0x08 00001f5f: ADD 00001f60: JUMPDEST 00001f61: PUSH2 0x2710 00001f64: DUP4 00001f65: LT 00001f66: PUSH2 0x1f74 00001f69: JUMPI 00001f6a: PUSH2 0x2710 00001f6d: DUP4 00001f6e: DIV 00001f6f: SWAP3 00001f70: POP 00001f71: PUSH1 0x04 00001f73: ADD 00001f74: JUMPDEST 00001f75: PUSH1 0x64 00001f77: DUP4 00001f78: LT 00001f79: PUSH2 0x1f86 00001f7c: JUMPI 00001f7d: PUSH1 0x64 00001f7f: DUP4 00001f80: DIV 00001f81: SWAP3 00001f82: POP 00001f83: PUSH1 0x02 00001f85: ADD 00001f86: JUMPDEST 00001f87: PUSH1 0x0a 00001f89: DUP4 00001f8a: LT 00001f8b: PUSH2 0x0b38 00001f8e: JUMPI 00001f8f: PUSH1 0x01 00001f91: ADD 00001f92: SWAP3 00001f93: SWAP2 00001f94: POP 00001f95: POP 00001f96: JUMP 00001f97: JUMPDEST 00001f98: PUSH1 0x00 00001f9a: PUSH2 0x1766 00001f9d: DUP4 00001f9e: DUP4 00001f9f: PUSH2 0x1ff3 00001fa2: JUMP 00001fa3: JUMPDEST 00001fa4: PUSH1 0x60 00001fa6: PUSH1 0x01 00001fa8: DUP6 00001fa9: DUP6 00001faa: DUP6 00001fab: DUP6 00001fac: PUSH1 0x40 00001fae: MLOAD 00001faf: PUSH1 0x20 00001fb1: ADD 00001fb2: PUSH2 0x1fbf 00001fb5: SWAP6 00001fb6: SWAP5 00001fb7: SWAP4 00001fb8: SWAP3 00001fb9: SWAP2 00001fba: SWAP1 00001fbb: PUSH2 0x29cf 00001fbe: JUMP 00001fbf: JUMPDEST 00001fc0: PUSH1 0x40 00001fc2: MLOAD 00001fc3: PUSH1 0x20 00001fc5: DUP2 00001fc6: DUP4 00001fc7: SUB 00001fc8: SUB 00001fc9: DUP2 00001fca: MSTORE 00001fcb: SWAP1 00001fcc: PUSH1 0x40 00001fce: MSTORE 00001fcf: SWAP1 00001fd0: POP 00001fd1: SWAP5 00001fd2: SWAP4 00001fd3: POP 00001fd4: POP 00001fd5: POP 00001fd6: POP 00001fd7: JUMP 00001fd8: JUMPDEST 00001fd9: PUSH1 0x00 00001fdb: PUSH2 0x1766 00001fde: DUP4 00001fdf: DUP4 00001fe0: PUSH2 0x20e6 00001fe3: JUMP 00001fe4: JUMPDEST 00001fe5: PUSH1 0x60 00001fe7: PUSH2 0x074d 00001fea: DUP5 00001feb: DUP5 00001fec: PUSH1 0x00 00001fee: DUP6 00001fef: PUSH2 0x2135 00001ff2: JUMP 00001ff3: JUMPDEST 00001ff4: PUSH1 0x00 00001ff6: DUP2 00001ff7: DUP2 00001ff8: MSTORE 00001ff9: PUSH1 0x01 00001ffb: DUP4 00001ffc: ADD 00001ffd: PUSH1 0x20 00001fff: MSTORE 00002000: PUSH1 0x40 00002002: DUP2 00002003: KECCAK256 00002004: SLOAD 00002005: DUP1 00002006: ISZERO 00002007: PUSH2 0x20dc 0000200a: JUMPI 0000200b: PUSH1 0x00 0000200d: PUSH2 0x2017 00002010: PUSH1 0x01 00002012: DUP4 00002013: PUSH2 0x2a54 00002016: JUMP 00002017: JUMPDEST 00002018: DUP6 00002019: SLOAD 0000201a: SWAP1 0000201b: SWAP2 0000201c: POP 0000201d: PUSH1 0x00 0000201f: SWAP1 00002020: PUSH2 0x202b 00002023: SWAP1 00002024: PUSH1 0x01 00002026: SWAP1 00002027: PUSH2 0x2a54 0000202a: JUMP 0000202b: JUMPDEST 0000202c: SWAP1 0000202d: POP 0000202e: DUP2 0000202f: DUP2 00002030: EQ 00002031: PUSH2 0x2090 00002034: JUMPI 00002035: PUSH1 0x00 00002037: DUP7 00002038: PUSH1 0x00 0000203a: ADD 0000203b: DUP3 0000203c: DUP2 0000203d: SLOAD 0000203e: DUP2 0000203f: LT 00002040: PUSH2 0x204b 00002043: JUMPI 00002044: PUSH2 0x204b 00002047: PUSH2 0x2783 0000204a: JUMP 0000204b: JUMPDEST 0000204c: SWAP1 0000204d: PUSH1 0x00 0000204f: MSTORE 00002050: PUSH1 0x20 00002052: PUSH1 0x00 00002054: KECCAK256 00002055: ADD 00002056: SLOAD 00002057: SWAP1 00002058: POP 00002059: DUP1 0000205a: DUP8 0000205b: PUSH1 0x00 0000205d: ADD 0000205e: DUP5 0000205f: DUP2 00002060: SLOAD 00002061: DUP2 00002062: LT 00002063: PUSH2 0x206e 00002066: JUMPI 00002067: PUSH2 0x206e 0000206a: PUSH2 0x2783 0000206d: JUMP 0000206e: JUMPDEST 0000206f: PUSH1 0x00 00002071: SWAP2 00002072: DUP3 00002073: MSTORE 00002074: PUSH1 0x20 00002076: DUP1 00002077: DUP4 00002078: KECCAK256 00002079: SWAP1 0000207a: SWAP2 0000207b: ADD 0000207c: SWAP3 0000207d: SWAP1 0000207e: SWAP3 0000207f: SSTORE 00002080: SWAP2 00002081: DUP3 00002082: MSTORE 00002083: PUSH1 0x01 00002085: DUP9 00002086: ADD 00002087: SWAP1 00002088: MSTORE 00002089: PUSH1 0x40 0000208b: SWAP1 0000208c: KECCAK256 0000208d: DUP4 0000208e: SWAP1 0000208f: SSTORE 00002090: JUMPDEST 00002091: DUP6 00002092: SLOAD 00002093: DUP7 00002094: SWAP1 00002095: DUP1 00002096: PUSH2 0x20a1 00002099: JUMPI 0000209a: PUSH2 0x20a1 0000209d: PUSH2 0x2a67 000020a0: JUMP 000020a1: JUMPDEST 000020a2: PUSH1 0x01 000020a4: SWAP1 000020a5: SUB 000020a6: DUP2 000020a7: DUP2 000020a8: SWAP1 000020a9: PUSH1 0x00 000020ab: MSTORE 000020ac: PUSH1 0x20 000020ae: PUSH1 0x00 000020b0: KECCAK256 000020b1: ADD 000020b2: PUSH1 0x00 000020b4: SWAP1 000020b5: SSTORE 000020b6: SWAP1 000020b7: SSTORE 000020b8: DUP6 000020b9: PUSH1 0x01 000020bb: ADD 000020bc: PUSH1 0x00 000020be: DUP7 000020bf: DUP2 000020c0: MSTORE 000020c1: PUSH1 0x20 000020c3: ADD 000020c4: SWAP1 000020c5: DUP2 000020c6: MSTORE 000020c7: PUSH1 0x20 000020c9: ADD 000020ca: PUSH1 0x00 000020cc: KECCAK256 000020cd: PUSH1 0x00 000020cf: SWAP1 000020d0: SSTORE 000020d1: PUSH1 0x01 000020d3: SWAP4 000020d4: POP 000020d5: POP 000020d6: POP 000020d7: POP 000020d8: PUSH2 0x0b38 000020db: JUMP 000020dc: JUMPDEST 000020dd: PUSH1 0x00 000020df: SWAP2 000020e0: POP 000020e1: POP 000020e2: PUSH2 0x0b38 000020e5: JUMP 000020e6: JUMPDEST 000020e7: PUSH1 0x00 000020e9: DUP2 000020ea: DUP2 000020eb: MSTORE 000020ec: PUSH1 0x01 000020ee: DUP4 000020ef: ADD 000020f0: PUSH1 0x20 000020f2: MSTORE 000020f3: PUSH1 0x40 000020f5: DUP2 000020f6: KECCAK256 000020f7: SLOAD 000020f8: PUSH2 0x212d 000020fb: JUMPI 000020fc: POP 000020fd: DUP2 000020fe: SLOAD 000020ff: PUSH1 0x01 00002101: DUP2 00002102: DUP2 00002103: ADD 00002104: DUP5 00002105: SSTORE 00002106: PUSH1 0x00 00002108: DUP5 00002109: DUP2 0000210a: MSTORE 0000210b: PUSH1 0x20 0000210d: DUP1 0000210e: DUP3 0000210f: KECCAK256 00002110: SWAP1 00002111: SWAP4 00002112: ADD 00002113: DUP5 00002114: SWAP1 00002115: SSTORE 00002116: DUP5 00002117: SLOAD 00002118: DUP5 00002119: DUP3 0000211a: MSTORE 0000211b: DUP3 0000211c: DUP7 0000211d: ADD 0000211e: SWAP1 0000211f: SWAP4 00002120: MSTORE 00002121: PUSH1 0x40 00002123: SWAP1 00002124: KECCAK256 00002125: SWAP2 00002126: SWAP1 00002127: SWAP2 00002128: SSTORE 00002129: PUSH2 0x0b38 0000212c: JUMP 0000212d: JUMPDEST 0000212e: POP 0000212f: PUSH1 0x00 00002131: PUSH2 0x0b38 00002134: JUMP 00002135: JUMPDEST 00002136: PUSH1 0x60 00002138: DUP3 00002139: SELFBALANCE 0000213a: LT 0000213b: ISZERO 0000213c: PUSH2 0x21c7 0000213f: JUMPI 00002140: PUSH1 0x40 00002142: MLOAD 00002143: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002164: DUP2 00002165: MSTORE 00002166: PUSH1 0x20 00002168: PUSH1 0x04 0000216a: DUP3 0000216b: ADD 0000216c: MSTORE 0000216d: PUSH1 0x26 0000216f: PUSH1 0x24 00002171: DUP3 00002172: ADD 00002173: MSTORE 00002174: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f 00002195: PUSH1 0x44 00002197: DUP3 00002198: ADD 00002199: MSTORE 0000219a: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000 000021bb: PUSH1 0x64 000021bd: DUP3 000021be: ADD 000021bf: MSTORE 000021c0: PUSH1 0x84 000021c2: ADD 000021c3: PUSH2 0x06aa 000021c6: JUMP 000021c7: JUMPDEST 000021c8: PUSH1 0x00 000021ca: DUP1 000021cb: DUP7 000021cc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000021e1: AND 000021e2: DUP6 000021e3: DUP8 000021e4: PUSH1 0x40 000021e6: MLOAD 000021e7: PUSH2 0x21f0 000021ea: SWAP2 000021eb: SWAP1 000021ec: PUSH2 0x2a96 000021ef: JUMP 000021f0: JUMPDEST 000021f1: PUSH1 0x00 000021f3: PUSH1 0x40 000021f5: MLOAD 000021f6: DUP1 000021f7: DUP4 000021f8: SUB 000021f9: DUP2 000021fa: DUP6 000021fb: DUP8 000021fc: GAS 000021fd: CALL 000021fe: SWAP3 000021ff: POP 00002200: POP 00002201: POP 00002202: RETURNDATASIZE 00002203: DUP1 00002204: PUSH1 0x00 00002206: DUP2 00002207: EQ 00002208: PUSH2 0x222d 0000220b: JUMPI 0000220c: PUSH1 0x40 0000220e: MLOAD 0000220f: SWAP2 00002210: POP 00002211: PUSH1 0x1f 00002213: NOT 00002214: PUSH1 0x3f 00002216: RETURNDATASIZE 00002217: ADD 00002218: AND 00002219: DUP3 0000221a: ADD 0000221b: PUSH1 0x40 0000221d: MSTORE 0000221e: RETURNDATASIZE 0000221f: DUP3 00002220: MSTORE 00002221: RETURNDATASIZE 00002222: PUSH1 0x00 00002224: PUSH1 0x20 00002226: DUP5 00002227: ADD 00002228: RETURNDATACOPY 00002229: PUSH2 0x2232 0000222c: JUMP 0000222d: JUMPDEST 0000222e: PUSH1 0x60 00002230: SWAP2 00002231: POP 00002232: JUMPDEST 00002233: POP 00002234: SWAP2 00002235: POP 00002236: SWAP2 00002237: POP 00002238: PUSH2 0x0904 0000223b: DUP8 0000223c: DUP4 0000223d: DUP4 0000223e: DUP8 0000223f: PUSH1 0x60 00002241: DUP4 00002242: ISZERO 00002243: PUSH2 0x22d4 00002246: JUMPI 00002247: DUP3 00002248: MLOAD 00002249: PUSH1 0x00 0000224b: SUB 0000224c: PUSH2 0x22cd 0000224f: JUMPI 00002250: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002265: DUP6 00002266: AND 00002267: EXTCODESIZE 00002268: PUSH2 0x22cd 0000226b: JUMPI 0000226c: PUSH1 0x40 0000226e: MLOAD 0000226f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002290: DUP2 00002291: MSTORE 00002292: PUSH1 0x20 00002294: PUSH1 0x04 00002296: DUP3 00002297: ADD 00002298: MSTORE 00002299: PUSH1 0x1d 0000229b: PUSH1 0x24 0000229d: DUP3 0000229e: ADD 0000229f: MSTORE 000022a0: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 000022c1: PUSH1 0x44 000022c3: DUP3 000022c4: ADD 000022c5: MSTORE 000022c6: PUSH1 0x64 000022c8: ADD 000022c9: PUSH2 0x06aa 000022cc: JUMP 000022cd: JUMPDEST 000022ce: POP 000022cf: DUP2 000022d0: PUSH2 0x074d 000022d3: JUMP 000022d4: JUMPDEST 000022d5: PUSH2 0x074d 000022d8: DUP4 000022d9: DUP4 000022da: DUP2 000022db: MLOAD 000022dc: ISZERO 000022dd: PUSH2 0x22e9 000022e0: JUMPI 000022e1: DUP2 000022e2: MLOAD 000022e3: DUP1 000022e4: DUP4 000022e5: PUSH1 0x20 000022e7: ADD 000022e8: REVERT 000022e9: JUMPDEST 000022ea: DUP1 000022eb: PUSH1 0x40 000022ed: MLOAD 000022ee: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000230f: DUP2 00002310: MSTORE 00002311: PUSH1 0x04 00002313: ADD 00002314: PUSH2 0x06aa 00002317: SWAP2 00002318: SWAP1 00002319: PUSH2 0x263f 0000231c: JUMP 0000231d: JUMPDEST 0000231e: DUP1 0000231f: CALLDATALOAD 00002320: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002335: DUP2 00002336: AND 00002337: DUP2 00002338: EQ 00002339: PUSH2 0x2341 0000233c: JUMPI 0000233d: PUSH1 0x00 0000233f: DUP1 00002340: REVERT 00002341: JUMPDEST 00002342: SWAP2 00002343: SWAP1 00002344: POP 00002345: JUMP 00002346: JUMPDEST 00002347: PUSH1 0x00 00002349: PUSH1 0x20 0000234b: DUP3 0000234c: DUP5 0000234d: SUB 0000234e: SLT 0000234f: ISZERO 00002350: PUSH2 0x2358 00002353: JUMPI 00002354: PUSH1 0x00 00002356: DUP1 00002357: REVERT 00002358: JUMPDEST 00002359: PUSH2 0x1766 0000235c: DUP3 0000235d: PUSH2 0x231d 00002360: JUMP 00002361: JUMPDEST 00002362: DUP1 00002363: CALLDATALOAD 00002364: PUSH4 0xffffffff 00002369: DUP2 0000236a: AND 0000236b: DUP2 0000236c: EQ 0000236d: PUSH2 0x2341 00002370: JUMPI 00002371: PUSH1 0x00 00002373: DUP1 00002374: REVERT 00002375: JUMPDEST 00002376: PUSH1 0x00 00002378: PUSH1 0x20 0000237a: DUP3 0000237b: DUP5 0000237c: SUB 0000237d: SLT 0000237e: ISZERO 0000237f: PUSH2 0x2387 00002382: JUMPI 00002383: PUSH1 0x00 00002385: DUP1 00002386: REVERT 00002387: JUMPDEST 00002388: PUSH2 0x1766 0000238b: DUP3 0000238c: PUSH2 0x2361 0000238f: JUMP 00002390: JUMPDEST 00002391: PUSH1 0x20 00002393: DUP1 00002394: DUP3 00002395: MSTORE 00002396: DUP3 00002397: MLOAD 00002398: DUP3 00002399: DUP3 0000239a: ADD 0000239b: DUP2 0000239c: SWAP1 0000239d: MSTORE 0000239e: PUSH1 0x00 000023a0: SWAP2 000023a1: SWAP1 000023a2: DUP5 000023a3: DUP3 000023a4: ADD 000023a5: SWAP1 000023a6: PUSH1 0x40 000023a8: DUP6 000023a9: ADD 000023aa: SWAP1 000023ab: DUP5 000023ac: JUMPDEST 000023ad: DUP2 000023ae: DUP2 000023af: LT 000023b0: ISZERO 000023b1: PUSH2 0x23ce 000023b4: JUMPI 000023b5: DUP4 000023b6: MLOAD 000023b7: PUSH4 0xffffffff 000023bc: AND 000023bd: DUP4 000023be: MSTORE 000023bf: SWAP3 000023c0: DUP5 000023c1: ADD 000023c2: SWAP3 000023c3: SWAP2 000023c4: DUP5 000023c5: ADD 000023c6: SWAP2 000023c7: PUSH1 0x01 000023c9: ADD 000023ca: PUSH2 0x23ac 000023cd: JUMP 000023ce: JUMPDEST 000023cf: POP 000023d0: SWAP1 000023d1: SWAP7 000023d2: SWAP6 000023d3: POP 000023d4: POP 000023d5: POP 000023d6: POP 000023d7: POP 000023d8: POP 000023d9: JUMP 000023da: JUMPDEST 000023db: PUSH1 0x00 000023dd: DUP1 000023de: PUSH1 0x40 000023e0: DUP4 000023e1: DUP6 000023e2: SUB 000023e3: SLT 000023e4: ISZERO 000023e5: PUSH2 0x23ed 000023e8: JUMPI 000023e9: PUSH1 0x00 000023eb: DUP1 000023ec: REVERT 000023ed: JUMPDEST 000023ee: PUSH2 0x23f6 000023f1: DUP4 000023f2: PUSH2 0x2361 000023f5: JUMP 000023f6: JUMPDEST 000023f7: SWAP5 000023f8: PUSH1 0x20 000023fa: SWAP4 000023fb: SWAP1 000023fc: SWAP4 000023fd: ADD 000023fe: CALLDATALOAD 000023ff: SWAP4 00002400: POP 00002401: POP 00002402: POP 00002403: JUMP 00002404: JUMPDEST 00002405: PUSH1 0x00 00002407: DUP1 00002408: DUP4 00002409: PUSH1 0x1f 0000240b: DUP5 0000240c: ADD 0000240d: SLT 0000240e: PUSH2 0x2416 00002411: JUMPI 00002412: PUSH1 0x00 00002414: DUP1 00002415: REVERT 00002416: JUMPDEST 00002417: POP 00002418: DUP2 00002419: CALLDATALOAD 0000241a: PUSH8 0xffffffffffffffff 00002423: DUP2 00002424: GT 00002425: ISZERO 00002426: PUSH2 0x242e 00002429: JUMPI 0000242a: PUSH1 0x00 0000242c: DUP1 0000242d: REVERT 0000242e: JUMPDEST 0000242f: PUSH1 0x20 00002431: DUP4 00002432: ADD 00002433: SWAP2 00002434: POP 00002435: DUP4 00002436: PUSH1 0x20 00002438: DUP3 00002439: DUP6 0000243a: ADD 0000243b: ADD 0000243c: GT 0000243d: ISZERO 0000243e: PUSH2 0x1075 00002441: JUMPI 00002442: PUSH1 0x00 00002444: DUP1 00002445: REVERT 00002446: JUMPDEST 00002447: PUSH1 0x00 00002449: DUP1 0000244a: PUSH1 0x00 0000244c: DUP1 0000244d: PUSH1 0x00 0000244f: DUP1 00002450: PUSH1 0xa0 00002452: DUP8 00002453: DUP10 00002454: SUB 00002455: SLT 00002456: ISZERO 00002457: PUSH2 0x245f 0000245a: JUMPI 0000245b: PUSH1 0x00 0000245d: DUP1 0000245e: REVERT 0000245f: JUMPDEST 00002460: PUSH2 0x2468 00002463: DUP8 00002464: PUSH2 0x2361 00002467: JUMP 00002468: JUMPDEST 00002469: SWAP6 0000246a: POP 0000246b: PUSH1 0x20 0000246d: DUP8 0000246e: ADD 0000246f: CALLDATALOAD 00002470: SWAP5 00002471: POP 00002472: PUSH1 0x40 00002474: DUP8 00002475: ADD 00002476: CALLDATALOAD 00002477: SWAP4 00002478: POP 00002479: PUSH1 0x60 0000247b: DUP8 0000247c: ADD 0000247d: CALLDATALOAD 0000247e: PUSH8 0xffffffffffffffff 00002487: DUP2 00002488: GT 00002489: ISZERO 0000248a: PUSH2 0x2492 0000248d: JUMPI 0000248e: PUSH1 0x00 00002490: DUP1 00002491: REVERT 00002492: JUMPDEST 00002493: PUSH2 0x249e 00002496: DUP10 00002497: DUP3 00002498: DUP11 00002499: ADD 0000249a: PUSH2 0x2404 0000249d: JUMP 0000249e: JUMPDEST 0000249f: SWAP1 000024a0: SWAP5 000024a1: POP 000024a2: SWAP3 000024a3: POP 000024a4: PUSH2 0x24b1 000024a7: SWAP1 000024a8: POP 000024a9: PUSH1 0x80 000024ab: DUP9 000024ac: ADD 000024ad: PUSH2 0x231d 000024b0: JUMP 000024b1: JUMPDEST 000024b2: SWAP1 000024b3: POP 000024b4: SWAP3 000024b5: SWAP6 000024b6: POP 000024b7: SWAP3 000024b8: SWAP6 000024b9: POP 000024ba: SWAP3 000024bb: SWAP6 000024bc: JUMP 000024bd: JUMPDEST 000024be: PUSH1 0x00 000024c0: DUP1 000024c1: PUSH1 0x00 000024c3: DUP1 000024c4: PUSH1 0x60 000024c6: DUP6 000024c7: DUP8 000024c8: SUB 000024c9: SLT 000024ca: ISZERO 000024cb: PUSH2 0x24d3 000024ce: JUMPI 000024cf: PUSH1 0x00 000024d1: DUP1 000024d2: REVERT 000024d3: JUMPDEST 000024d4: PUSH2 0x24dc 000024d7: DUP6 000024d8: PUSH2 0x2361 000024db: JUMP 000024dc: JUMPDEST 000024dd: SWAP4 000024de: POP 000024df: PUSH1 0x20 000024e1: DUP6 000024e2: ADD 000024e3: CALLDATALOAD 000024e4: SWAP3 000024e5: POP 000024e6: PUSH1 0x40 000024e8: DUP6 000024e9: ADD 000024ea: CALLDATALOAD 000024eb: PUSH8 0xffffffffffffffff 000024f4: DUP2 000024f5: GT 000024f6: ISZERO 000024f7: PUSH2 0x24ff 000024fa: JUMPI 000024fb: PUSH1 0x00 000024fd: DUP1 000024fe: REVERT 000024ff: JUMPDEST 00002500: PUSH2 0x250b 00002503: DUP8 00002504: DUP3 00002505: DUP9 00002506: ADD 00002507: PUSH2 0x2404 0000250a: JUMP 0000250b: JUMPDEST 0000250c: SWAP6 0000250d: SWAP9 0000250e: SWAP5 0000250f: SWAP8 00002510: POP 00002511: SWAP6 00002512: POP 00002513: POP 00002514: POP 00002515: POP 00002516: JUMP 00002517: JUMPDEST 00002518: PUSH1 0x00 0000251a: DUP1 0000251b: DUP4 0000251c: PUSH1 0x1f 0000251e: DUP5 0000251f: ADD 00002520: SLT 00002521: PUSH2 0x2529 00002524: JUMPI 00002525: PUSH1 0x00 00002527: DUP1 00002528: REVERT 00002529: JUMPDEST 0000252a: POP 0000252b: DUP2 0000252c: CALLDATALOAD 0000252d: PUSH8 0xffffffffffffffff 00002536: DUP2 00002537: GT 00002538: ISZERO 00002539: PUSH2 0x2541 0000253c: JUMPI 0000253d: PUSH1 0x00 0000253f: DUP1 00002540: REVERT 00002541: JUMPDEST 00002542: PUSH1 0x20 00002544: DUP4 00002545: ADD 00002546: SWAP2 00002547: POP 00002548: DUP4 00002549: PUSH1 0x20 0000254b: DUP3 0000254c: PUSH1 0x05 0000254e: SHL 0000254f: DUP6 00002550: ADD 00002551: ADD 00002552: GT 00002553: ISZERO 00002554: PUSH2 0x1075 00002557: JUMPI 00002558: PUSH1 0x00 0000255a: DUP1 0000255b: REVERT 0000255c: JUMPDEST 0000255d: PUSH1 0x00 0000255f: DUP1 00002560: PUSH1 0x20 00002562: DUP4 00002563: DUP6 00002564: SUB 00002565: SLT 00002566: ISZERO 00002567: PUSH2 0x256f 0000256a: JUMPI 0000256b: PUSH1 0x00 0000256d: DUP1 0000256e: REVERT 0000256f: JUMPDEST 00002570: DUP3 00002571: CALLDATALOAD 00002572: PUSH8 0xffffffffffffffff 0000257b: DUP2 0000257c: GT 0000257d: ISZERO 0000257e: PUSH2 0x2586 00002581: JUMPI 00002582: PUSH1 0x00 00002584: DUP1 00002585: REVERT 00002586: JUMPDEST 00002587: PUSH2 0x2592 0000258a: DUP6 0000258b: DUP3 0000258c: DUP7 0000258d: ADD 0000258e: PUSH2 0x2517 00002591: JUMP 00002592: JUMPDEST 00002593: SWAP1 00002594: SWAP7 00002595: SWAP1 00002596: SWAP6 00002597: POP 00002598: SWAP4 00002599: POP 0000259a: POP 0000259b: POP 0000259c: POP 0000259d: JUMP 0000259e: JUMPDEST 0000259f: PUSH1 0x00 000025a1: DUP1 000025a2: PUSH1 0x00 000025a4: PUSH1 0x60 000025a6: DUP5 000025a7: DUP7 000025a8: SUB 000025a9: SLT 000025aa: ISZERO 000025ab: PUSH2 0x25b3 000025ae: JUMPI 000025af: PUSH1 0x00 000025b1: DUP1 000025b2: REVERT 000025b3: JUMPDEST 000025b4: PUSH2 0x25bc 000025b7: DUP5 000025b8: PUSH2 0x2361 000025bb: JUMP 000025bc: JUMPDEST 000025bd: SWAP6 000025be: PUSH1 0x20 000025c0: DUP6 000025c1: ADD 000025c2: CALLDATALOAD 000025c3: SWAP6 000025c4: POP 000025c5: PUSH1 0x40 000025c7: SWAP1 000025c8: SWAP5 000025c9: ADD 000025ca: CALLDATALOAD 000025cb: SWAP4 000025cc: SWAP3 000025cd: POP 000025ce: POP 000025cf: POP 000025d0: JUMP 000025d1: JUMPDEST 000025d2: PUSH1 0x00 000025d4: JUMPDEST 000025d5: DUP4 000025d6: DUP2 000025d7: LT 000025d8: ISZERO 000025d9: PUSH2 0x25ec 000025dc: JUMPI 000025dd: DUP2 000025de: DUP2 000025df: ADD 000025e0: MLOAD 000025e1: DUP4 000025e2: DUP3 000025e3: ADD 000025e4: MSTORE 000025e5: PUSH1 0x20 000025e7: ADD 000025e8: PUSH2 0x25d4 000025eb: JUMP 000025ec: JUMPDEST 000025ed: POP 000025ee: POP 000025ef: PUSH1 0x00 000025f1: SWAP2 000025f2: ADD 000025f3: MSTORE 000025f4: JUMP 000025f5: JUMPDEST 000025f6: PUSH1 0x00 000025f8: DUP2 000025f9: MLOAD 000025fa: DUP1 000025fb: DUP5 000025fc: MSTORE 000025fd: PUSH2 0x260d 00002600: DUP2 00002601: PUSH1 0x20 00002603: DUP7 00002604: ADD 00002605: PUSH1 0x20 00002607: DUP7 00002608: ADD 00002609: PUSH2 0x25d1 0000260c: JUMP 0000260d: JUMPDEST 0000260e: PUSH1 0x1f 00002610: ADD 00002611: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0 00002632: AND 00002633: SWAP3 00002634: SWAP1 00002635: SWAP3 00002636: ADD 00002637: PUSH1 0x20 00002639: ADD 0000263a: SWAP3 0000263b: SWAP2 0000263c: POP 0000263d: POP 0000263e: JUMP 0000263f: JUMPDEST 00002640: PUSH1 0x20 00002642: DUP2 00002643: MSTORE 00002644: PUSH1 0x00 00002646: PUSH2 0x1766 00002649: PUSH1 0x20 0000264b: DUP4 0000264c: ADD 0000264d: DUP5 0000264e: PUSH2 0x25f5 00002651: JUMP 00002652: JUMPDEST 00002653: PUSH1 0x00 00002655: DUP1 00002656: PUSH1 0x20 00002658: DUP4 00002659: DUP6 0000265a: SUB 0000265b: SLT 0000265c: ISZERO 0000265d: PUSH2 0x2665 00002660: JUMPI 00002661: PUSH1 0x00 00002663: DUP1 00002664: REVERT 00002665: JUMPDEST 00002666: DUP3 00002667: CALLDATALOAD 00002668: PUSH8 0xffffffffffffffff 00002671: DUP1 00002672: DUP3 00002673: GT 00002674: ISZERO 00002675: PUSH2 0x267d 00002678: JUMPI 00002679: PUSH1 0x00 0000267b: DUP1 0000267c: REVERT 0000267d: JUMPDEST 0000267e: DUP2 0000267f: DUP6 00002680: ADD 00002681: SWAP2 00002682: POP 00002683: DUP6 00002684: PUSH1 0x1f 00002686: DUP4 00002687: ADD 00002688: SLT 00002689: PUSH2 0x2691 0000268c: JUMPI 0000268d: PUSH1 0x00 0000268f: DUP1 00002690: REVERT 00002691: JUMPDEST 00002692: DUP2 00002693: CALLDATALOAD 00002694: DUP2 00002695: DUP2 00002696: GT 00002697: ISZERO 00002698: PUSH2 0x26a0 0000269b: JUMPI 0000269c: PUSH1 0x00 0000269e: DUP1 0000269f: REVERT 000026a0: JUMPDEST 000026a1: DUP7 000026a2: PUSH1 0x20 000026a4: DUP3 000026a5: PUSH1 0x06 000026a7: SHL 000026a8: DUP6 000026a9: ADD 000026aa: ADD 000026ab: GT 000026ac: ISZERO 000026ad: PUSH2 0x26b5 000026b0: JUMPI 000026b1: PUSH1 0x00 000026b3: DUP1 000026b4: REVERT 000026b5: JUMPDEST 000026b6: PUSH1 0x20 000026b8: SWAP3 000026b9: SWAP1 000026ba: SWAP3 000026bb: ADD 000026bc: SWAP7 000026bd: SWAP2 000026be: SWAP6 000026bf: POP 000026c0: SWAP1 000026c1: SWAP4 000026c2: POP 000026c3: POP 000026c4: POP 000026c5: POP 000026c6: JUMP 000026c7: JUMPDEST 000026c8: PUSH1 0x00 000026ca: DUP1 000026cb: PUSH1 0x00 000026cd: PUSH1 0x60 000026cf: DUP5 000026d0: DUP7 000026d1: SUB 000026d2: SLT 000026d3: ISZERO 000026d4: PUSH2 0x26dc 000026d7: JUMPI 000026d8: PUSH1 0x00 000026da: DUP1 000026db: REVERT 000026dc: JUMPDEST 000026dd: PUSH2 0x26e5 000026e0: DUP5 000026e1: PUSH2 0x231d 000026e4: JUMP 000026e5: JUMPDEST 000026e6: SWAP3 000026e7: POP 000026e8: PUSH2 0x26f3 000026eb: PUSH1 0x20 000026ed: DUP6 000026ee: ADD 000026ef: PUSH2 0x231d 000026f2: JUMP 000026f3: JUMPDEST 000026f4: SWAP2 000026f5: POP 000026f6: PUSH2 0x2701 000026f9: PUSH1 0x40 000026fb: DUP6 000026fc: ADD 000026fd: PUSH2 0x231d 00002700: JUMP 00002701: JUMPDEST 00002702: SWAP1 00002703: POP 00002704: SWAP3 00002705: POP 00002706: SWAP3 00002707: POP 00002708: SWAP3 00002709: JUMP 0000270a: JUMPDEST 0000270b: PUSH1 0x00 0000270d: DUP1 0000270e: PUSH1 0x00 00002710: DUP1 00002711: PUSH1 0x40 00002713: DUP6 00002714: DUP8 00002715: SUB 00002716: SLT 00002717: ISZERO 00002718: PUSH2 0x2720 0000271b: JUMPI 0000271c: PUSH1 0x00 0000271e: DUP1 0000271f: REVERT 00002720: JUMPDEST 00002721: DUP5 00002722: CALLDATALOAD 00002723: PUSH8 0xffffffffffffffff 0000272c: DUP1 0000272d: DUP3 0000272e: GT 0000272f: ISZERO 00002730: PUSH2 0x2738 00002733: JUMPI 00002734: PUSH1 0x00 00002736: DUP1 00002737: REVERT 00002738: JUMPDEST 00002739: PUSH2 0x2744 0000273c: DUP9 0000273d: DUP4 0000273e: DUP10 0000273f: ADD 00002740: PUSH2 0x2517 00002743: JUMP 00002744: JUMPDEST 00002745: SWAP1 00002746: SWAP7 00002747: POP 00002748: SWAP5 00002749: POP 0000274a: PUSH1 0x20 0000274c: DUP8 0000274d: ADD 0000274e: CALLDATALOAD 0000274f: SWAP2 00002750: POP 00002751: DUP1 00002752: DUP3 00002753: GT 00002754: ISZERO 00002755: PUSH2 0x275d 00002758: JUMPI 00002759: PUSH1 0x00 0000275b: DUP1 0000275c: REVERT 0000275d: JUMPDEST 0000275e: POP 0000275f: PUSH2 0x250b 00002762: DUP8 00002763: DUP3 00002764: DUP9 00002765: ADD 00002766: PUSH2 0x2517 00002769: JUMP 0000276a: JUMPDEST 0000276b: PUSH1 0x00 0000276d: PUSH1 0x20 0000276f: DUP3 00002770: DUP5 00002771: SUB 00002772: SLT 00002773: ISZERO 00002774: PUSH2 0x277c 00002777: JUMPI 00002778: PUSH1 0x00 0000277a: DUP1 0000277b: REVERT 0000277c: JUMPDEST 0000277d: POP 0000277e: MLOAD 0000277f: SWAP2 00002780: SWAP1 00002781: POP 00002782: JUMP 00002783: JUMPDEST 00002784: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000027a5: PUSH1 0x00 000027a7: MSTORE 000027a8: PUSH1 0x32 000027aa: PUSH1 0x04 000027ac: MSTORE 000027ad: PUSH1 0x24 000027af: PUSH1 0x00 000027b1: REVERT 000027b2: JUMPDEST 000027b3: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 000027d4: PUSH1 0x00 000027d6: MSTORE 000027d7: PUSH1 0x11 000027d9: PUSH1 0x04 000027db: MSTORE 000027dc: PUSH1 0x24 000027de: PUSH1 0x00 000027e0: REVERT 000027e1: JUMPDEST 000027e2: DUP1 000027e3: DUP3 000027e4: ADD 000027e5: DUP1 000027e6: DUP3 000027e7: GT 000027e8: ISZERO 000027e9: PUSH2 0x0b38 000027ec: JUMPI 000027ed: PUSH2 0x0b38 000027f0: PUSH2 0x27b2 000027f3: JUMP 000027f4: JUMPDEST 000027f5: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002816: PUSH1 0x00 00002818: MSTORE 00002819: PUSH1 0x41 0000281b: PUSH1 0x04 0000281d: MSTORE 0000281e: PUSH1 0x24 00002820: PUSH1 0x00 00002822: REVERT 00002823: JUMPDEST 00002824: DUP4 00002825: DUP2 00002826: MSTORE 00002827: DUP3 00002828: PUSH1 0x20 0000282a: DUP3 0000282b: ADD 0000282c: MSTORE 0000282d: PUSH1 0x00 0000282f: DUP3 00002830: MLOAD 00002831: PUSH2 0x2841 00002834: DUP2 00002835: PUSH1 0x40 00002837: DUP6 00002838: ADD 00002839: PUSH1 0x20 0000283b: DUP8 0000283c: ADD 0000283d: PUSH2 0x25d1 00002840: JUMP 00002841: JUMPDEST 00002842: SWAP2 00002843: SWAP1 00002844: SWAP2 00002845: ADD 00002846: PUSH1 0x40 00002848: ADD 00002849: SWAP5 0000284a: SWAP4 0000284b: POP 0000284c: POP 0000284d: POP 0000284e: POP 0000284f: JUMP 00002850: JUMPDEST 00002851: DUP1 00002852: DUP3 00002853: MUL 00002854: DUP2 00002855: ISZERO 00002856: DUP3 00002857: DUP3 00002858: DIV 00002859: DUP5 0000285a: EQ 0000285b: OR 0000285c: PUSH2 0x0b38 0000285f: JUMPI 00002860: PUSH2 0x0b38 00002863: PUSH2 0x27b2 00002866: JUMP 00002867: JUMPDEST 00002868: PUSH4 0xffffffff 0000286d: DUP7 0000286e: AND 0000286f: DUP2 00002870: MSTORE 00002871: DUP5 00002872: PUSH1 0x20 00002874: DUP3 00002875: ADD 00002876: MSTORE 00002877: PUSH1 0xa0 00002879: PUSH1 0x40 0000287b: DUP3 0000287c: ADD 0000287d: MSTORE 0000287e: PUSH1 0x00 00002880: PUSH2 0x288c 00002883: PUSH1 0xa0 00002885: DUP4 00002886: ADD 00002887: DUP7 00002888: PUSH2 0x25f5 0000288b: JUMP 0000288c: JUMPDEST 0000288d: DUP3 0000288e: DUP2 0000288f: SUB 00002890: PUSH1 0x60 00002892: DUP5 00002893: ADD 00002894: MSTORE 00002895: PUSH2 0x289e 00002898: DUP2 00002899: DUP7 0000289a: PUSH2 0x25f5 0000289d: JUMP 0000289e: JUMPDEST 0000289f: SWAP2 000028a0: POP 000028a1: POP 000028a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000028b7: DUP4 000028b8: AND 000028b9: PUSH1 0x80 000028bb: DUP4 000028bc: ADD 000028bd: MSTORE 000028be: SWAP7 000028bf: SWAP6 000028c0: POP 000028c1: POP 000028c2: POP 000028c3: POP 000028c4: POP 000028c5: POP 000028c6: JUMP 000028c7: JUMPDEST 000028c8: PUSH32 0x4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e3a2000 000028e9: DUP2 000028ea: MSTORE 000028eb: PUSH1 0x00 000028ed: DUP3 000028ee: MLOAD 000028ef: PUSH2 0x28ff 000028f2: DUP2 000028f3: PUSH1 0x1f 000028f5: DUP6 000028f6: ADD 000028f7: PUSH1 0x20 000028f9: DUP8 000028fa: ADD 000028fb: PUSH2 0x25d1 000028fe: JUMP 000028ff: JUMPDEST 00002900: SWAP2 00002901: SWAP1 00002902: SWAP2 00002903: ADD 00002904: PUSH1 0x1f 00002906: ADD 00002907: SWAP3 00002908: SWAP2 00002909: POP 0000290a: POP 0000290b: JUMP 0000290c: JUMPDEST 0000290d: PUSH1 0x00 0000290f: DUP1 00002910: DUP6 00002911: DUP6 00002912: GT 00002913: ISZERO 00002914: PUSH2 0x291c 00002917: JUMPI 00002918: PUSH1 0x00 0000291a: DUP1 0000291b: REVERT 0000291c: JUMPDEST 0000291d: DUP4 0000291e: DUP7 0000291f: GT 00002920: ISZERO 00002921: PUSH2 0x2929 00002924: JUMPI 00002925: PUSH1 0x00 00002927: DUP1 00002928: REVERT 00002929: JUMPDEST 0000292a: POP 0000292b: POP 0000292c: DUP3 0000292d: ADD 0000292e: SWAP4 0000292f: SWAP2 00002930: SWAP1 00002931: SWAP3 00002932: SUB 00002933: SWAP2 00002934: POP 00002935: JUMP 00002936: JUMPDEST 00002937: DUP1 00002938: CALLDATALOAD 00002939: PUSH1 0x20 0000293b: DUP4 0000293c: LT 0000293d: ISZERO 0000293e: PUSH2 0x0b38 00002941: JUMPI 00002942: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00002963: PUSH1 0x20 00002965: DUP5 00002966: SWAP1 00002967: SUB 00002968: PUSH1 0x03 0000296a: SHL 0000296b: SHL 0000296c: AND 0000296d: SWAP3 0000296e: SWAP2 0000296f: POP 00002970: POP 00002971: JUMP 00002972: JUMPDEST 00002973: PUSH1 0x00 00002975: DUP3 00002976: PUSH2 0x29a8 00002979: JUMPI 0000297a: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 0000299b: PUSH1 0x00 0000299d: MSTORE 0000299e: PUSH1 0x12 000029a0: PUSH1 0x04 000029a2: MSTORE 000029a3: PUSH1 0x24 000029a5: PUSH1 0x00 000029a7: REVERT 000029a8: JUMPDEST 000029a9: POP 000029aa: DIV 000029ab: SWAP1 000029ac: JUMP 000029ad: JUMPDEST 000029ae: PUSH1 0x00 000029b0: PUSH1 0x20 000029b2: DUP3 000029b3: DUP5 000029b4: SUB 000029b5: SLT 000029b6: ISZERO 000029b7: PUSH2 0x29bf 000029ba: JUMPI 000029bb: PUSH1 0x00 000029bd: DUP1 000029be: REVERT 000029bf: JUMPDEST 000029c0: DUP2 000029c1: MLOAD 000029c2: DUP1 000029c3: ISZERO 000029c4: ISZERO 000029c5: DUP2 000029c6: EQ 000029c7: PUSH2 0x1766 000029ca: JUMPI 000029cb: PUSH1 0x00 000029cd: DUP1 000029ce: REVERT 000029cf: JUMPDEST 000029d0: PUSH32 0xffff000000000000000000000000000000000000000000000000000000000000 000029f1: DUP7 000029f2: PUSH1 0xf0 000029f4: SHL 000029f5: AND 000029f6: DUP2 000029f7: MSTORE 000029f8: DUP5 000029f9: PUSH1 0x02 000029fb: DUP3 000029fc: ADD 000029fd: MSTORE 000029fe: DUP4 000029ff: PUSH1 0x22 00002a01: DUP3 00002a02: ADD 00002a03: MSTORE 00002a04: PUSH32 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000 00002a25: DUP4 00002a26: PUSH1 0x60 00002a28: SHL 00002a29: AND 00002a2a: PUSH1 0x42 00002a2c: DUP3 00002a2d: ADD 00002a2e: MSTORE 00002a2f: PUSH1 0x00 00002a31: DUP3 00002a32: MLOAD 00002a33: PUSH2 0x2a43 00002a36: DUP2 00002a37: PUSH1 0x56 00002a39: DUP6 00002a3a: ADD 00002a3b: PUSH1 0x20 00002a3d: DUP8 00002a3e: ADD 00002a3f: PUSH2 0x25d1 00002a42: JUMP 00002a43: JUMPDEST 00002a44: SWAP2 00002a45: SWAP1 00002a46: SWAP2 00002a47: ADD 00002a48: PUSH1 0x56 00002a4a: ADD 00002a4b: SWAP7 00002a4c: SWAP6 00002a4d: POP 00002a4e: POP 00002a4f: POP 00002a50: POP 00002a51: POP 00002a52: POP 00002a53: JUMP 00002a54: JUMPDEST 00002a55: DUP2 00002a56: DUP2 00002a57: SUB 00002a58: DUP2 00002a59: DUP2 00002a5a: GT 00002a5b: ISZERO 00002a5c: PUSH2 0x0b38 00002a5f: JUMPI 00002a60: PUSH2 0x0b38 00002a63: PUSH2 0x27b2 00002a66: JUMP 00002a67: JUMPDEST 00002a68: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000 00002a89: PUSH1 0x00 00002a8b: MSTORE 00002a8c: PUSH1 0x31 00002a8e: PUSH1 0x04 00002a90: MSTORE 00002a91: PUSH1 0x24 00002a93: PUSH1 0x00 00002a95: REVERT 00002a96: JUMPDEST 00002a97: PUSH1 0x00 00002a99: DUP3 00002a9a: MLOAD 00002a9b: PUSH2 0x2aa8 00002a9e: DUP2 00002a9f: DUP5 00002aa0: PUSH1 0x20 00002aa2: DUP8 00002aa3: ADD 00002aa4: PUSH2 0x25d1 00002aa7: JUMP 00002aa8: JUMPDEST 00002aa9: SWAP2 00002aaa: SWAP1 00002aab: SWAP2 00002aac: ADD 00002aad: SWAP3 00002aae: SWAP2 00002aaf: POP 00002ab0: POP 00002ab1: JUMP 00002ab2: INVALID 00002ab3: LOG2 00002ab4: PUSH5 0x6970667358 00002aba: UNKNOWN(0x22) 00002abb: SLT 00002abc: KECCAK256 00002abd: DIV 00002abe: UNKNOWN(0xA8) 00002abf: UNKNOWN(0xAA) 00002ac0: TLOAD 00002ac1: UNKNOWN(0xEB) 00002ac2: CALLDATASIZE 00002ac3: UNKNOWN(0xD9) 00002ac4: UNKNOWN(0xE2) 00002ac5: SWAP3 00002ac6: DIV 00002ac7: UNKNOWN(0xF9) 00002ac8: UNKNOWN(0xD8) 00002ac9: SWAP3 00002aca: SWAP3 00002acb: PUSH8 0x5c9d41f21c9b6541 00002ad4: UNKNOWN(0xD6) 00002ad5: UNKNOWN(0xE6) 00002ad6: DUP10 00002ad7: UNKNOWN(0x28) 00002ad8: GT 00002ad9: DUP1 00002ada: REVERT 00002adb: PUSH11 0xef64736f6c634300081600 00002ae7: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | codex | Unprotected initializer enables ownership/ISM takeover and forged mailbox messages to drain collateral | 90 | no | — |
viewevidence_json{
"evidence": "`initialize` is public and unguarded, and `_MailboxClient_initialize` sets owner and the ISM/hook, enabling an attacker to install a permissive ISM and then forge mailbox processing that triggers `_handle` to transfer collateral.",
"locations": [
"contracts/contracts/token/HypERC20Collateral.sol:49",
"contracts/contracts/client/MailboxClient.sol:100",
"contracts/contracts/client/MailboxClient.sol:92",
"contracts/contracts/client/Router.sol:54",
"contracts/contracts/interfaces/IMailbox.sol:101",
"contracts/contracts/token/libs/TokenRouter.sol:198",
"contracts/contracts/token/HypERC20Collateral.sol:78"
],
"recommendation": "Harden initialization: call `_disableInitializers()` in the constructor and ensure initialization is executed atomically at proxy deployment (e.g., via constructor data). If non-proxy deployments are intended, gate `initialize` so only the constructor-set owner can call it or remove it entirely.",
"exploit_scenario": "1) Before the legitimate deployer initializes, attacker calls `HypERC20Collateral.initialize` with `_owner=attacker` and `_interchainSecurityModule` set to a permissive ISM that always returns true. 2) As owner, attacker calls `Router.enrollRemoteRouter` to register an attacker-controlled router for some origin domain. 3) Attacker calls `mailbox.process` with arbitrary metadata and a crafted Hyperlane message whose origin/sender match the enrolled router and whose body encodes `TokenMessage(recipient=attacker, amount=wrappedTokenBalance)`. 4) Mailbox invokes `Router.handle` and `TokenRouter._handle`, which calls `_transferTo` in `HypERC20Collateral`, transferring the collateral to attacker."
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0xbfa6ef15b1e7d075c5ad84344afbbccfd409ce16cb5aefedcf6eee84debd6472
call_targets:
0x631953e16e8a57fc159e1fb1d92443c981b00770
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xbfa6ef15b1e7d075c5ad84344afbbccfd409ce16cb5aefedcf6eee84debd6472",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x631953e16e8a57fc159e1fb1d92443c981b00770"
],
"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": "0xefae508a",
"selector": "0xefae508a",
"calldata_variants": [
"0xefae508a",
"0xefae508a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2ed8c53",
"selector": "0xf2ed8c53",
"calldata_variants": [
"0xf2ed8c53",
"0xf2ed8c530000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf51e181a",
"selector": "0xf51e181a",
"calldata_variants": [
"0xf51e181a",
"0xf51e181a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd5438eae",
"selector": "0xd5438eae",
"calldata_variants": [
"0xd5438eae",
"0xd5438eae0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xde523cf3",
"selector": "0xde523cf3",
"calldata_variants": [
"0xde523cf3",
"0xde523cf30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe9198bf9",
"selector": "0xe9198bf9",
"calldata_variants": [
"0xe9198bf9",
"0xe9198bf90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x996c6cc3",
"selector": "0x996c6cc3",
"calldata_variants": [
"0x996c6cc3",
"0x996c6cc30000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5857,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 8701,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [
{
"pc": 2320,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"untrusted_call_count": 2
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0xbfa6ef15b1e7d075c5ad84344afbbccfd409ce16cb5aefedcf6eee84debd6472
call_targets:
0x631953e16e8a57fc159e1fb1d92443c981b00770
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xbfa6ef15b1e7d075c5ad84344afbbccfd409ce16cb5aefedcf6eee84debd6472",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x631953e16e8a57fc159e1fb1d92443c981b00770"
],
"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": "0xefae508a",
"selector": "0xefae508a",
"calldata_variants": [
"0xefae508a",
"0xefae508a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2ed8c53",
"selector": "0xf2ed8c53",
"calldata_variants": [
"0xf2ed8c53",
"0xf2ed8c530000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf51e181a",
"selector": "0xf51e181a",
"calldata_variants": [
"0xf51e181a",
"0xf51e181a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd5438eae",
"selector": "0xd5438eae",
"calldata_variants": [
"0xd5438eae",
"0xd5438eae0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xde523cf3",
"selector": "0xde523cf3",
"calldata_variants": [
"0xde523cf3",
"0xde523cf30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe9198bf9",
"selector": "0xe9198bf9",
"calldata_variants": [
"0xe9198bf9",
"0xe9198bf90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x996c6cc3",
"selector": "0x996c6cc3",
"calldata_variants": [
"0x996c6cc3",
"0x996c6cc30000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5857,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 8701,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": [
{
"pc": 2320,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
}
|