019bab3b-aaa7-70e2-8f3a-b33ac294d2ca
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 |
|---|---|---|---|---|
| 38366 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 38367 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 38368 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 38369 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 38370 | capability.graph | complete | 1 / 3 | 3 months ago |
| 38371 | detector.run | complete | 1 / 3 | 3 months ago |
| 38372 | validation.fork | complete | 1 / 3 | 3 months ago |
| 38974 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 38975 | tool.slither | complete | 1 / 2 | 3 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-36h7uohj)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-36h7uohj)
NFTEntry.random(uint256) (contracts/Contract.sol#2215-2228) uses a weak PRNG: "uint256(keccak256(bytes)(abi.encodePacked(block.timestamp,block.difficulty,msg.sender))) % number (contracts/Contract.sol#2217-2228)"
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#weak-PRNG
NFTEntry._BITMASK_NEXT_INITIALIZED (contracts/Contract.sol#2047-2049) shadows:
- ERC721A._BITMASK_NEXT_INITIALIZED (contracts/Contract.sol#644-647)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing
Reentrancy in NFTEntry.userMint(uint256,uint256,uint256,uint256,uint256,bytes) (contracts/Contract.sol#2124-2152):
External calls:
- TransferHelper.safeTransferETH(address(this),eth) (contracts/Contract.sol#2138-2139)
State variables written after the call(s):
- transferToken(address(this),msg.sender,i) (contracts/Contract.sol#2144-2145)
- -- _packedAddressData[from] (contracts/Contract.sol#2266-2267)
- ++ _packedAddressData[to] (contracts/Contract.sol#2270)
ERC721A._packedAddressData (contracts/Contract.sol#691-695) can be used in cross function reentrancies:
- ERC721A._burn(uint256,bool) (contracts/Contract.sol#1582-1673)
- ERC721A._mint(address,uint256) (contracts/Contract.sol#1408-1478)
- ERC721A._numberBurned(address) (contracts/Contract.sol#813-818)
- ERC721A._numberMinted(address) (contracts/Contract.sol#801-809)
- ERC721A.balanceOf(address) (contracts/Contract.sol#791-799)
- ERC721A.transferFrom(address,address,uint256) (contracts/Contract.sol#1212-1285)
- NFTEntry.transferToken(address,address,uint256) (contracts/Contract.sol#2230-2310)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1
ERC721AQueryable.tokensOfOwner(address).tokenIdsIdx (contracts/Contract.sol#2023-2024) is a local variable never initialized
ERC721AQueryable.tokensOfOwner(address).currOwnershipAddr (contracts/Contract.sol#2024-2025) is a local variable never initialized
ERC721AQueryable.explicitOwnershipOf(uint256).ownership (contracts/Contract.sol#1906) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
NFTEntry.numberBurned(address).owner (contracts/Contract.sol#2099) shadows:
- Ownable.owner() (contracts/Contract.sol#68-71) (function)
NFTEntry.numberMinted(address).owner (contracts/Contract.sol#2104-2106) shadows:
- Ownable.owner() (contracts/Contract.sol#68-71) (function)
NFTEntry.mint(uint256).totalSupply (contracts/Contract.sol#2159-2162) shadows:
- ERC721A.totalSupply() (contracts/Contract.sol#753-767) (function)
- IERC721A.totalSupply() (contracts/Contract.sol#371-373) (function)
NFTEntry.withdraw(uint256)._owner (contracts/Contract.sol#2175) shadows:
- Ownable._owner (contracts/Contract.sol#47-48) (state variable)
NFTEntry.transferToken(address,address,uint256).nextTokenId (contracts/Contract.sol#2290-2293) shadows:
- NFTEntry.nextTokenId() (contracts/Contract.sol#2108-2110) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
ERC721A._checkContractOnERC721Received(address,address,uint256,bytes) (contracts/Contract.sol#1374-1394) has external calls inside a loop: retval = ERC721A__IERC721Receiver(to).onERC721Received(_msgSenderERC721A(),from,tokenId,_data) (contracts/Contract.sol#1379-1394)
Calls stack containing the loop:
NFTEntry.safeMint(address,uint256,bytes)
ERC721A._safeMint(address,uint256,bytes)
ERC721A._checkContractOnERC721Received(address,address,uint256,bytes) (contracts/Contract.sol#1374-1394) has external calls inside a loop: retval = ERC721A__IERC721Receiver(to).onERC721Received(_msgSenderERC721A(),from,tokenId,_data) (contracts/Contract.sol#1379-1394)
Calls stack containing the loop:
NFTEntry.safeMint(address,uint256)
ERC721A._safeMint(address,uint256)
ERC721A._safeMint(address,uint256,bytes)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop
Reentrancy in NFTEntry.userMint(uint256,uint256,uint256,uint256,uint256,bytes) (contracts/Contract.sol#2124-2152):
External calls:
- TransferHelper.safeTransferETH(address(this),eth) (contracts/Contract.sol#2138-2139)
State variables written after the call(s):
- transferToken(address(this),msg.sender,i) (contracts/Contract.sol#2144-2145)
- _packedOwnerships[tokenId] = _packOwnershipData(to,_BITMASK_NEXT_INITIALIZED | _nextExtraData(from,to,prevOwnershipPacked)) (contracts/Contract.sol#2277-2285)
- _packedOwnerships[nextTokenId] = prevOwnershipPacked (contracts/Contract.sol#2306-2307)
- orders[orderId].push(i) (contracts/Contract.sol#2145-2148)
- quantityUserMinted += quantity (contracts/Contract.sol#2148)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2
Reentrancy in NFTEntry.userMint(uint256,uint256,uint256,uint256,uint256,bytes) (contracts/Contract.sol#2124-2152):
External calls:
- TransferHelper.safeTransferETH(address(this),eth) (contracts/Contract.sol#2138-2139)
Event emitted after the call(s):
- Transfer(from,to,tokenId) (contracts/Contract.sol#2308)
- transferToken(address(this),msg.sender,i) (contracts/Contract.sol#2144-2145)
- UserMint(msg.sender,quantity,orderId,orders[orderId]) (contracts/Contract.sol#2148-2151)
Reentrancy in NFTEntry.withdraw(uint256) (contracts/Contract.sol#2169-2182):
External calls:
- (sent,None) = _owner.call{value: amount}() (contracts/Contract.sol#2177-2178)
Event emitted after the call(s):
- Withdraw(msg.sender,amount) (contracts/Contract.sol#2182)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
ECDSA.recover(bytes32,bytes) (contracts/Contract.sol#179-208) uses assembly
- INLINE ASM (contracts/Contract.sol#189-196)
ERC721A._setAux(address,uint64) (contracts/Contract.sol#834-845) uses assembly
- INLINE ASM (contracts/Contract.sol#841)
ERC721A._addressToUint256(address) (contracts/Contract.sol#914-919) uses assembly
- INLINE ASM (contracts/Contract.sol#919)
ERC721A._boolToUint256(bool) (contracts/Contract.sol#921-928) uses assembly
- INLINE ASM (contracts/Contract.sol#926-928)
ERC721A._packOwnershipData(address,uint256) (contracts/Contract.sol#1037-1046) uses assembly
- INLINE ASM (contracts/Contract.sol#1039-1046)
ERC721A._nextInitializedFlag(uint256) (contracts/Contract.sol#1051-1063) uses assembly
- INLINE ASM (contracts/Contract.sol#1058-1063)
ERC721A._isSenderApprovedOrOwner(address,address,address) (contracts/Contract.sol#1159-1182) uses assembly
- INLINE ASM (contracts/Contract.sol#1166-1182)
ERC721A._getApprovedSlotAndAddress(uint256) (contracts/Contract.sol#1188-1200) uses assembly
- INLINE ASM (contracts/Contract.sol#1195-1200)
ERC721A.transferFrom(address,address,uint256) (contracts/Contract.sol#1212-1285) uses assembly
- INLINE ASM (contracts/Contract.sol#1238-1244)
ERC721A._checkContractOnERC721Received(address,address,uint256,bytes) (contracts/Contract.sol#1374-1394) uses assembly
- INLINE ASM (contracts/Contract.sol#1392-1394)
ERC721A._mint(address,uint256) (contracts/Contract.sol#1408-1478) uses assembly
- INLINE ASM (contracts/Contract.sol#1453-1474)
ERC721A._burn(uint256,bool) (contracts/Contract.sol#1582-1673) uses assembly
- INLINE ASM (contracts/Contract.sol#1607-1611)
ERC721A._setExtraDataAt(uint256,uint24) (contracts/Contract.sol#1679-1691) uses assembly
- INLINE ASM (contracts/Contract.sol#1686-1687)
ERC721A._toString(uint256) (contracts/Contract.sol#1733-1776) uses assembly
- INLINE ASM (contracts/Contract.sol#1735-1776)
ERC721AQueryable.tokensOfOwnerIn(address,uint256,uint256) (contracts/Contract.sol#1944-2011) uses assembly
- INLINE ASM (contracts/Contract.sol#2009-2010)
NFTEntry.transferToken(address,address,uint256) (contracts/Contract.sol#2230-2310) uses assembly
- INLINE ASM (contracts/Contract.sol#2251-2256)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
ERC721A.transferFrom(address,address,uint256) (contracts/Contract.sol#1212-1285) compares to a boolean constant:
-require(bool,string)(lock[tokenId] != true,token have been locked!) (contracts/Contract.sol#1218-1220)
ERC721A.safeTransferFrom(address,address,uint256) (contracts/Contract.sol#1287-1293) compares to a boolean constant:
-require(bool,string)(lock[tokenId] != true,token have been locked!) (contracts/Contract.sol#1289-1292)
ERC721A.safeTransferFrom(address,address,uint256,bytes) (contracts/Contract.sol#1305-1316) compares to a boolean constant:
-require(bool,string)(lock[tokenId] != true,token have been locked!) (contracts/Contract.sol#1308-1309)
NFTEntry.transferToken(address,address,uint256) (contracts/Contract.sol#2230-2310) compares to a boolean constant:
-require(bool,string)(lock[tokenId] != true,TOKEN HAS BEEN LOCKED!) (contracts/Contract.sol#2234-2235)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#boolean-equality
Context._msgData() (contracts/Contract.sol#22-26) is never used and should be removed
ERC721A._addressToUint256(address) (contracts/Contract.sol#914-919) is never used and should be removed
ERC721A._baseURI() (contracts/Contract.sol#907-911) is never used and should be removed
ERC721A._boolToUint256(bool) (contracts/Contract.sol#921-928) is never used and should be removed
ERC721A._burn(uint256) (contracts/Contract.sol#1569-1572) is never used and should be removed
ERC721A._getAux(address) (contracts/Contract.sol#821-827) is never used and should be removed
ERC721A._mintERC2309(address,uint256) (contracts/Contract.sol#1496-1532) is never used and should be removed
ERC721A._setAux(address,uint64) (contracts/Contract.sol#834-845) is never used and should be removed
ERC721A._setExtraDataAt(uint256,uint24) (contracts/Contract.sol#1679-1691) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
Version constraint ^0.8.4 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess
- AbiReencodingHeadOverflowWithStaticArrayCleanup
- DirtyBytesArrayToStorage
- DataLocationChangeInInternalOverride
- NestedCalldataArrayAbiReencodingSizeValidation
- SignedImmutables.
It is used by:
- ^0.8.4 (contracts/Contract.sol#6-8)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity
Low level call in TransferHelper.safeApprove(address,address,uint256) (contracts/Contract.sol#117-128):
- (success,data) = token.call(abi.encodeWithSelector(0x095ea7b3,to,value)) (contracts/Contract.sol#120-124)
Low level call in TransferHelper.safeTransfer(address,address,uint256) (contracts/Contract.sol#128-141):
- (success,data) = token.call(abi.encodeWithSelector(0xa9059cbb,to,value)) (contracts/Contract.sol#135-139)
Low level call in TransferHelper.safeTransferFrom(address,address,address,uint256) (contracts/Contract.sol#141-157):
- (success,data) = token.call(abi.encodeWithSelector(0x23b872dd,from,to,value)) (contracts/Contract.sol#150-155)
Low level call in TransferHelper.safeTransferETH(address,uint256) (contracts/Contract.sol#157-165):
- (success,None) = to.call{value: value}(new bytes(0)) (contracts/Contract.sol#160-161)
Low level call in NFTEntry.withdraw(uint256) (contracts/Contract.sol#2169-2182):
- (sent,None) = _owner.call{value: amount}() (contracts/Contract.sol#2177-2178)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
Contract ERC721A__IERC721Receiver (contracts/Contract.sol#574-578) is not in CapWords
Parameter ERC721A.safeTransferFrom(address,address,uint256,bytes)._data (contracts/Contract.sol#1307) is not in mixedCase
Parameter NFTEntry.setEntryAddress(address)._entryAddress (contracts/Contract.sol#2115) is not in mixedCase
Parameter NFTEntry.getOrder(uint256)._orderId (contracts/Contract.sol#2152-2153) is not in mixedCase
Parameter NFTEntry.safeMint(address,uint256,bytes)._data (contracts/Contract.sol#2167-2168) is not in mixedCase
Variable NFTEntry.Tokens (contracts/Contract.sol#2046-2047) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
NFTEntry.Tokens (contracts/Contract.sol#2046-2047) is never used in NFTEntry (contracts/Contract.sol#2039-2310)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-state-variable
. analyzed (13 contracts with 100 detectors), 58 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.8.4",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.8.4",
"install_stderr": null,
"install_stdout": "Installing solc '0.8.4'...\nVersion '0.8.4' installed."
},
"solc_args": "--base-path /tmp/slither-36h7uohj --allow-paths /tmp/slither-36h7uohj,/tmp/slither-36h7uohj/lib,/tmp/slither-36h7uohj/src",
"remappings": [],
"source_files": [
"contracts/Contract.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 58,
"workspace_hash": "d2a5f96ef36fa1121129342aa41eb6ff311c9cbe080306c4f359a47833a73cb4",
"duration_seconds": 2.9660558700561523,
"solc_version_requested": "0.8.4"
}
{"no_findings":false,"summary":"Found 2 issues: user-controlled mint price is not bound to the signature, enabling underpayment, and the signature expiry/domain separation checks are ineffective.","findings":[{"severity":"high","category":"auth","title":"Signed mint does not bind payment amount, enabling free or underpriced mints","exploit_scenario":"Owner signs a mint authorization for a user (msg.sender, nonce, orderId, quantity). The user calls userMint with eth=0 (or any lower amount) and msg.value=0, passes verifySignature (since eth is not signed) and the payment check (msg.value >= eth), and receives tokens without paying the intended price.","recommendation":"Bind the price to the signed payload (or store pricing on-chain). For example, include eth (or price * quantity) in the signed message and require msg.value to equal the signed amount.","evidence":"verifySignature hashes only msg.sender, nonce, orderId, quantity; userMint accepts a caller-supplied eth and only checks msg.value >= eth.","locations":["contracts/Contract.sol:2131","contracts/Contract.sol:2195"]},{"severity":"medium","category":"auth","title":"Signature expiry and domain separation are ineffective","exploit_scenario":"Because timestamp is not part of the signed data, the caller can set timestamp to any future value and bypass the intended expiry. Additionally, the signature does not include address(this) or chainid, so a signature intended for another deployment/chain using the same signer key can be replayed here.","recommendation":"Include timestamp, address(this), and block.chainid in the signed message (preferably EIP-712 typed data) and enforce block.timestamp <= timestamp.","evidence":"The signed hash omits timestamp and any domain separator; timestamp is only checked as a user-supplied parameter.","locations":["contracts/Contract.sol:2131","contracts/Contract.sol:2139"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-3_nm27ti
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bab6f-7986-7901-8abc-88d6e7f32e89
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Reading AUDIT_BUNDLE file**
exec
/bin/bash -lc ls in /tmp/codex-3_nm27ti succeeded in 5ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-3_nm27ti succeeded in 6ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/Contract.sol
================================================================================
// Sources flattened with hardhat v2.10.1 https://hardhat.org
// File contracts/libraries/Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.4;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
exec
/bin/bash -lc "sed -n '200,400p' AUDIT_BUNDLE.txt" in /tmp/codex-3_nm27ti succeeded in 26ms:
}
// Divide the signature in r, s and v variables with inline assembly.
assembly {
r := mload(add(signature, 0x20))
s := mload(add(signature, 0x40))
v := byte(0, mload(add(signature, 0x60)))
}
// Version of signature should be 27 or 28, but 0 and 1 are also possible versions
if (v < 27) {
v += 27;
}
// If the version is correct return the signer address
if (v != 27 && v != 28) {
return (address(0));
} else {
// solium-disable-next-line arg-overflow
return ecrecover(hash, v, r, s);
thinking
**Planning full AUDIT_BUNDLE.txt review**
exec
/bin/bash -lc "sed -n '400,800p' AUDIT_BUNDLE.txt" in /tmp/codex-3_nm27ti succeeded in 28ms:
* [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)
* to learn more about how these ids are created.
*
* This function call must use less than 30000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
// =============================================================
// IERC721
// =============================================================
/**
* @dev Emitted when `tokenId` token is transferred from `from` to `to`.
*/
event Transfer(
address indexed from,
address indexed to,
uint256 indexed tokenId
);
thinking
**Continuing to read large file**
exec
/bin/bash -lc "sed -n '800,1200p' AUDIT_BUNDLE.txt" in /tmp/codex-3_nm27ti succeeded in 11ms:
/**
* @dev Returns the total amount of tokens minted in the contract.
*/
function _totalMinted() internal view virtual returns (uint256) {
// Counter underflow is impossible as `_currentIndex` does not decrement,
// and it is initialized to `_startTokenId()`.
unchecked {
return _currentIndex - _startTokenId();
}
}
/**
* @dev Returns the total number of tokens burned.
*/
function _totalBurned() internal view virtual returns (uint256) {
return _burnCounter;
}
// =============================================================
exec
/bin/bash -lc "sed -n '1200,1600p' AUDIT_BUNDLE.txt" in /tmp/codex-3_nm27ti succeeded in 29ms:
_startTokenId() <= tokenId &&
tokenId < _currentIndex && // If within bounds,
_packedOwnerships[tokenId] & _BITMASK_BURNED == 0; // and not burned.
}
/**
* @dev Returns whether `msgSender` is equal to `approvedAddress` or `owner`.
*/
function _isSenderApprovedOrOwner(
address approvedAddress,
address owner,
address msgSender
) internal pure returns (bool result) {
assembly {
// Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean.
owner := and(owner, _BITMASK_ADDRESS)
// Mask `msgSender` to the lower 160 bits, in case the upper bits somehow aren't clean.
msgSender := and(msgSender, _BITMASK_ADDRESS)
// `msgSender == owner || msgSender == approvedAddress`.
result := or(eq(msgSender, owner), eq(msgSender, approvedAddress))
exec
/bin/bash -lc "sed -n '1600,2000p' AUDIT_BUNDLE.txt" in /tmp/codex-3_nm27ti succeeded in 6ms:
function _safeMint(
address to,
uint256 quantity,
bytes memory _data
) internal virtual {
_mint(to, quantity);
unchecked {
if (to.code.length != 0) {
uint256 end = _currentIndex;
uint256 index = end - quantity;
do {
if (!_checkContractOnERC721Received(address(0), to, index++, _data)) {
revert TransferToNonERC721ReceiverImplementer();
}
} while (index < end);
// Reentrancy protection.
if (_currentIndex != end) revert();
}
}
exec
/bin/bash -lc "sed -n '2000,2400p' AUDIT_BUNDLE.txt" in /tmp/codex-3_nm27ti succeeded in 5ms:
* grows too big for a single call of {ERC721AQueryable-tokensOfOwner}.
*
* Requirements:
*
* - `start` < `stop`
*/
function tokensOfOwnerIn(
address owner,
uint256 start,
uint256 stop
) external view override returns (uint256[] memory) {
unchecked {
if (start >= stop) revert InvalidQueryRange();
uint256 tokenIdsIdx;
uint256 stopLimit = _nextTokenId();
// Set `start = max(start, _startTokenId())`.
if (start < _startTokenId()) {
start = _startTokenId();
}
// Set `stop = min(stop, stopLimit)`.
thinking
**Checking for file end**
exec
/bin/bash -lc "sed -n '2400,2800p' AUDIT_BUNDLE.txt" in /tmp/codex-3_nm27ti succeeded in 6ms:
thinking
**Analyzing smart contract vulnerabilities**
I’m reviewing the NFTEntry contract's security with a focus on signature validation, reentrancy, access control, and token accounting. I notice the signature misses binding to price and timestamp, allowing users to bypass payment and expiration checks, and lacks domain separation which could enable replay attacks across chains. Other points include a redundant ETH self-transfer with no reentrancy risk, possible owner-only burn centralization, and token minting logic that may revert if tokens are moved out of sequence. Overall, the signature validation issues and timestamp handling stand out as the main vulnerabilities.
thinking
**Identifying critical signature and payment issues**
I’m focusing on how the contract’s signature verification omits essential parameters like price and expiration, allowing users to mint tokens without paying the intended price and bypassing signature expiry checks. The absence of domain separation also opens possibilities for cross-contract or cross-chain replay. Additionally, the userMint function's external call to itself is unusual but safe here due to an empty receive function, and token transfers to contracts without receiver checks could cause tokens to be stuck, though that’s a user choice rather than a security flaw. Overall, signature binding and payment validation stand out as major concerns worth highlighting.
exec
/bin/bash -lc 'rg -n "verifySignature|userMint" contracts/Contract.sol' in /tmp/codex-3_nm27ti succeeded in 7ms:
2124: modifier verifySignature(
2195: function userMint(
2205: verifySignature(nonce, orderId, timestamp, quantity, signature)
thinking
**Preparing line numbers for signature check**
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '2120,2235p'" in /tmp/codex-3_nm27ti succeeded in 9ms:
2120 uint256[] tokenId
2121 );
2122 event Withdraw(address caller, uint256 amount);
2123
2124 modifier verifySignature(
2125 uint256 nonce,
2126 uint256 orderId,
2127 uint256 timestamp,
2128 uint256 quantity,
2129 bytes memory signature
2130 ) {
2131 bytes32 hash = keccak256(
2132 abi.encodePacked(msg.sender, nonce, orderId, quantity)
2133 );
2134 // This recreates the message hash that was signed on the client.
2135 bytes32 messageHash = hash.toEthSignedMessageHash();
2136 // Verify that the message's signer is the owner of the order
2137 require(messageHash.recover(signature) == owner(), "INVALID SIGNATURE");
2138 require(!seenNonces[msg.sender][nonce], "USED NONCE");
2139 require(timestamp >= block.timestamp, "SIGNATURE EXPIRED");
thinking
**Analyzing signature and payment vulnerabilities**
codex
{"no_findings":false,"summary":"Found 2 issues: user-controlled mint price is not bound to the signature, enabling underpayment, and the signature expiry/domain separation checks are ineffective.","findings":[{"severity":"high","category":"auth","title":"Signed mint does not bind payment amount, enabling free or underpriced mints","exploit_scenario":"Owner signs a mint authorization for a user (msg.sender, nonce, orderId, quantity). The user calls userMint with eth=0 (or any lower amount) and msg.value=0, passes verifySignature (since eth is not signed) and the payment check (msg.value >= eth), and receives tokens without paying the intended price.","recommendation":"Bind the price to the signed payload (or store pricing on-chain). For example, include eth (or price * quantity) in the signed message and require msg.value to equal the signed amount.","evidence":"verifySignature hashes only msg.sender, nonce, orderId, quantity; userMint accepts a caller-supplied eth and only checks msg.value >= eth.","locations":["contracts/Contract.sol:2131","contracts/Contract.sol:2195"]},{"severity":"medium","category":"auth","title":"Signature expiry and domain separation are ineffective","exploit_scenario":"Because timestamp is not part of the signed data, the caller can set timestamp to any future value and bypass the intended expiry. Additionally, the signature does not include address(this) or chainid, so a signature intended for another deployment/chain using the same signer key can be replayed here.","recommendation":"Include timestamp, address(this), and block.chainid in the signed message (preferably EIP-712 typed data) and enforce block.timestamp <= timestamp.","evidence":"The signed hash omits timestamp and any domain separator; timestamp is only checked as a user-supplied parameter.","locations":["contracts/Contract.sol:2131","contracts/Contract.sol:2139"]}]}
tokens used
46,764
{
"codex": {
"ran_at": "2026-01-11T05:05:21.685154+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "Found 2 issues: user-controlled mint price is not bound to the signature, enabling underpayment, and the signature expiry/domain separation checks are ineffective.",
"raw_final": {
"summary": "Found 2 issues: user-controlled mint price is not bound to the signature, enabling underpayment, and the signature expiry/domain separation checks are ineffective.",
"findings": [
{
"title": "Signed mint does not bind payment amount, enabling free or underpriced mints",
"category": "auth",
"evidence": "verifySignature hashes only msg.sender, nonce, orderId, quantity; userMint accepts a caller-supplied eth and only checks msg.value >= eth.",
"severity": "high",
"locations": [
"contracts/Contract.sol:2131",
"contracts/Contract.sol:2195"
],
"recommendation": "Bind the price to the signed payload (or store pricing on-chain). For example, include eth (or price * quantity) in the signed message and require msg.value to equal the signed amount.",
"exploit_scenario": "Owner signs a mint authorization for a user (msg.sender, nonce, orderId, quantity). The user calls userMint with eth=0 (or any lower amount) and msg.value=0, passes verifySignature (since eth is not signed) and the payment check (msg.value >= eth), and receives tokens without paying the intended price."
},
{
"title": "Signature expiry and domain separation are ineffective",
"category": "auth",
"evidence": "The signed hash omits timestamp and any domain separator; timestamp is only checked as a user-supplied parameter.",
"severity": "medium",
"locations": [
"contracts/Contract.sol:2131",
"contracts/Contract.sol:2139"
],
"recommendation": "Include timestamp, address(this), and block.chainid in the signed message (preferably EIP-712 typed data) and enforce block.timestamp <= timestamp.",
"exploit_scenario": "Because timestamp is not part of the signed data, the caller can set timestamp to any future value and bypass the intended expiry. Additionally, the signature does not include address(this) or chainid, so a signature intended for another deployment/chain using the same signer key can be replayed here."
}
],
"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 0x02b2 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x75794a3c 00000019: GT 0000001a: PUSH2 0x0175 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xb863bd37 00000024: GT 00000025: PUSH2 0x00dc 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xd09ef241 0000002f: GT 00000030: PUSH2 0x0095 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xdd467064 0000003a: GT 0000003b: PUSH2 0x006f 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xdd467064 00000045: EQ 00000046: PUSH2 0x085e 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xe985e9c5 00000050: EQ 00000051: PUSH2 0x088e 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf2523633 0000005b: EQ 0000005c: PUSH2 0x08ae 0000005f: JUMPI 00000060: DUP1 00000061: PUSH4 0xf2fde38b 00000066: EQ 00000067: PUSH2 0x08ce 0000006a: JUMPI 0000006b: PUSH1 0x00 0000006d: DUP1 0000006e: REVERT 0000006f: JUMPDEST 00000070: DUP1 00000071: PUSH4 0xd09ef241 00000076: EQ 00000077: PUSH2 0x0809 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xd89135cd 00000081: EQ 00000082: PUSH2 0x0829 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0xdc33e681 0000008c: EQ 0000008d: PUSH2 0x083e 00000090: JUMPI 00000091: PUSH1 0x00 00000093: DUP1 00000094: REVERT 00000095: JUMPDEST 00000096: DUP1 00000097: PUSH4 0xb863bd37 0000009c: EQ 0000009d: PUSH2 0x0756 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0xb88d4fde 000000a7: EQ 000000a8: PUSH2 0x0776 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0xb94a000f 000000b2: EQ 000000b3: PUSH2 0x0796 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0xc23dc68f 000000bd: EQ 000000be: PUSH2 0x07b6 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0xc87b56dd 000000c8: EQ 000000c9: PUSH2 0x07d6 000000cc: JUMPI 000000cd: DUP1 000000ce: PUSH4 0xc8b13a94 000000d3: EQ 000000d4: PUSH2 0x07f6 000000d7: JUMPI 000000d8: PUSH1 0x00 000000da: DUP1 000000db: REVERT 000000dc: JUMPDEST 000000dd: DUP1 000000de: PUSH4 0x99a2557a 000000e3: GT 000000e4: PUSH2 0x012e 000000e7: JUMPI 000000e8: DUP1 000000e9: PUSH4 0x99a2557a 000000ee: EQ 000000ef: PUSH2 0x06a1 000000f2: JUMPI 000000f3: DUP1 000000f4: PUSH4 0x9fac68cb 000000f9: EQ 000000fa: PUSH2 0x06c1 000000fd: JUMPI 000000fe: DUP1 000000ff: PUSH4 0xa0712d68 00000104: EQ 00000105: PUSH2 0x06e1 00000108: JUMPI 00000109: DUP1 0000010a: PUSH4 0xa1448194 0000010f: EQ 00000110: PUSH2 0x0701 00000113: JUMPI 00000114: DUP1 00000115: PUSH4 0xa22cb465 0000011a: EQ 0000011b: PUSH2 0x0721 0000011e: JUMPI 0000011f: DUP1 00000120: PUSH4 0xa2309ff8 00000125: EQ 00000126: PUSH2 0x0741 00000129: JUMPI 0000012a: PUSH1 0x00 0000012c: DUP1 0000012d: REVERT 0000012e: JUMPDEST 0000012f: DUP1 00000130: PUSH4 0x75794a3c 00000135: EQ 00000136: PUSH2 0x05f6 00000139: JUMPI 0000013a: DUP1 0000013b: PUSH4 0x77737a5a 00000140: EQ 00000141: PUSH2 0x060b 00000144: JUMPI 00000145: DUP1 00000146: PUSH4 0x8462151c 0000014b: EQ 0000014c: PUSH2 0x0621 0000014f: JUMPI 00000150: DUP1 00000151: PUSH4 0x8832e6e3 00000156: EQ 00000157: PUSH2 0x064e 0000015a: JUMPI 0000015b: DUP1 0000015c: PUSH4 0x8da5cb5b 00000161: EQ 00000162: PUSH2 0x066e 00000165: JUMPI 00000166: DUP1 00000167: PUSH4 0x95d89b41 0000016c: EQ 0000016d: PUSH2 0x068c 00000170: JUMPI 00000171: PUSH1 0x00 00000173: DUP1 00000174: REVERT 00000175: JUMPDEST 00000176: DUP1 00000177: PUSH4 0x42966c68 0000017c: GT 0000017d: PUSH2 0x0219 00000180: JUMPI 00000181: DUP1 00000182: PUSH4 0x6352211e 00000187: GT 00000188: PUSH2 0x01d2 0000018b: JUMPI 0000018c: DUP1 0000018d: PUSH4 0x6352211e 00000192: EQ 00000193: PUSH2 0x054c 00000196: JUMPI 00000197: DUP1 00000198: PUSH4 0x665adcfd 0000019d: EQ 0000019e: PUSH2 0x056c 000001a1: JUMPI 000001a2: DUP1 000001a3: PUSH4 0x6900a3ae 000001a8: EQ 000001a9: PUSH2 0x058c 000001ac: JUMPI 000001ad: DUP1 000001ae: PUSH4 0x6c0360eb 000001b3: EQ 000001b4: PUSH2 0x05ac 000001b7: JUMPI 000001b8: DUP1 000001b9: PUSH4 0x70a08231 000001be: EQ 000001bf: PUSH2 0x05c1 000001c2: JUMPI 000001c3: DUP1 000001c4: PUSH4 0x715018a6 000001c9: EQ 000001ca: PUSH2 0x05e1 000001cd: JUMPI 000001ce: PUSH1 0x00 000001d0: DUP1 000001d1: REVERT 000001d2: JUMPDEST 000001d3: DUP1 000001d4: PUSH4 0x42966c68 000001d9: EQ 000001da: PUSH2 0x0472 000001dd: JUMPI 000001de: DUP1 000001df: PUSH4 0x4f558e79 000001e4: EQ 000001e5: PUSH2 0x0492 000001e8: JUMPI 000001e9: DUP1 000001ea: PUSH4 0x52d8a4d1 000001ef: EQ 000001f0: PUSH2 0x04b2 000001f3: JUMPI 000001f4: DUP1 000001f5: PUSH4 0x53b1233d 000001fa: EQ 000001fb: PUSH2 0x04df 000001fe: JUMPI 000001ff: DUP1 00000200: PUSH4 0x55f804b3 00000205: EQ 00000206: PUSH2 0x04ff 00000209: JUMPI 0000020a: DUP1 0000020b: PUSH4 0x5bbb2177 00000210: EQ 00000211: PUSH2 0x051f 00000214: JUMPI 00000215: PUSH1 0x00 00000217: DUP1 00000218: REVERT 00000219: JUMPDEST 0000021a: DUP1 0000021b: PUSH4 0x226b06e6 00000220: GT 00000221: PUSH2 0x026b 00000224: JUMPI 00000225: DUP1 00000226: PUSH4 0x226b06e6 0000022b: EQ 0000022c: PUSH2 0x03b2 0000022f: JUMPI 00000230: DUP1 00000231: PUSH4 0x23b872dd 00000236: EQ 00000237: PUSH2 0x03d2 0000023a: JUMPI 0000023b: DUP1 0000023c: PUSH4 0x2478d639 00000241: EQ 00000242: PUSH2 0x03f2 00000245: JUMPI 00000246: DUP1 00000247: PUSH4 0x279bc3aa 0000024c: EQ 0000024d: PUSH2 0x0412 00000250: JUMPI 00000251: DUP1 00000252: PUSH4 0x2e1a7d4d 00000257: EQ 00000258: PUSH2 0x0432 0000025b: JUMPI 0000025c: DUP1 0000025d: PUSH4 0x42842e0e 00000262: EQ 00000263: PUSH2 0x0452 00000266: JUMPI 00000267: PUSH1 0x00 00000269: DUP1 0000026a: REVERT 0000026b: JUMPDEST 0000026c: DUP1 0000026d: PUSH4 0x01ffc9a7 00000272: EQ 00000273: PUSH2 0x02be 00000276: JUMPI 00000277: DUP1 00000278: PUSH4 0x06fdde03 0000027d: EQ 0000027e: PUSH2 0x02f3 00000281: JUMPI 00000282: DUP1 00000283: PUSH4 0x081812fc 00000288: EQ 00000289: PUSH2 0x0315 0000028c: JUMPI 0000028d: DUP1 0000028e: PUSH4 0x095ea7b3 00000293: EQ 00000294: PUSH2 0x034d 00000297: JUMPI 00000298: DUP1 00000299: PUSH4 0x0acb7924 0000029e: EQ 0000029f: PUSH2 0x036f 000002a2: JUMPI 000002a3: DUP1 000002a4: PUSH4 0x18160ddd 000002a9: EQ 000002aa: PUSH2 0x038f 000002ad: JUMPI 000002ae: PUSH1 0x00 000002b0: DUP1 000002b1: REVERT 000002b2: JUMPDEST 000002b3: CALLDATASIZE 000002b4: PUSH2 0x02b9 000002b7: JUMPI 000002b8: STOP 000002b9: JUMPDEST 000002ba: PUSH1 0x00 000002bc: DUP1 000002bd: REVERT 000002be: JUMPDEST 000002bf: CALLVALUE 000002c0: DUP1 000002c1: ISZERO 000002c2: PUSH2 0x02ca 000002c5: JUMPI 000002c6: PUSH1 0x00 000002c8: DUP1 000002c9: REVERT 000002ca: JUMPDEST 000002cb: POP 000002cc: PUSH2 0x02de 000002cf: PUSH2 0x02d9 000002d2: CALLDATASIZE 000002d3: PUSH1 0x04 000002d5: PUSH2 0x293b 000002d8: JUMP 000002d9: JUMPDEST 000002da: PUSH2 0x08ee 000002dd: JUMP 000002de: JUMPDEST 000002df: PUSH1 0x40 000002e1: MLOAD 000002e2: SWAP1 000002e3: ISZERO 000002e4: ISZERO 000002e5: DUP2 000002e6: MSTORE 000002e7: PUSH1 0x20 000002e9: ADD 000002ea: JUMPDEST 000002eb: PUSH1 0x40 000002ed: MLOAD 000002ee: DUP1 000002ef: SWAP2 000002f0: SUB 000002f1: SWAP1 000002f2: RETURN 000002f3: JUMPDEST 000002f4: CALLVALUE 000002f5: DUP1 000002f6: ISZERO 000002f7: PUSH2 0x02ff 000002fa: JUMPI 000002fb: PUSH1 0x00 000002fd: DUP1 000002fe: REVERT 000002ff: JUMPDEST 00000300: POP 00000301: PUSH2 0x0308 00000304: PUSH2 0x0940 00000307: JUMP 00000308: JUMPDEST 00000309: PUSH1 0x40 0000030b: MLOAD 0000030c: PUSH2 0x02ea 0000030f: SWAP2 00000310: SWAP1 00000311: PUSH2 0x2c4c 00000314: JUMP 00000315: JUMPDEST 00000316: CALLVALUE 00000317: DUP1 00000318: ISZERO 00000319: PUSH2 0x0321 0000031c: JUMPI 0000031d: PUSH1 0x00 0000031f: DUP1 00000320: REVERT 00000321: JUMPDEST 00000322: POP 00000323: PUSH2 0x0335 00000326: PUSH2 0x0330 00000329: CALLDATASIZE 0000032a: PUSH1 0x04 0000032c: PUSH2 0x29b8 0000032f: JUMP 00000330: JUMPDEST 00000331: PUSH2 0x09d2 00000334: JUMP 00000335: JUMPDEST 00000336: PUSH1 0x40 00000338: MLOAD 00000339: PUSH1 0x01 0000033b: PUSH1 0x01 0000033d: PUSH1 0xa0 0000033f: SHL 00000340: SUB 00000341: SWAP1 00000342: SWAP2 00000343: AND 00000344: DUP2 00000345: MSTORE 00000346: PUSH1 0x20 00000348: ADD 00000349: PUSH2 0x02ea 0000034c: JUMP 0000034d: JUMPDEST 0000034e: CALLVALUE 0000034f: DUP1 00000350: ISZERO 00000351: PUSH2 0x0359 00000354: JUMPI 00000355: PUSH1 0x00 00000357: DUP1 00000358: REVERT 00000359: JUMPDEST 0000035a: POP 0000035b: PUSH2 0x036d 0000035e: PUSH2 0x0368 00000361: CALLDATASIZE 00000362: PUSH1 0x04 00000364: PUSH2 0x27e5 00000367: JUMP 00000368: JUMPDEST 00000369: PUSH2 0x0a16 0000036c: JUMP 0000036d: JUMPDEST 0000036e: STOP 0000036f: JUMPDEST 00000370: CALLVALUE 00000371: DUP1 00000372: ISZERO 00000373: PUSH2 0x037b 00000376: JUMPI 00000377: PUSH1 0x00 00000379: DUP1 0000037a: REVERT 0000037b: JUMPDEST 0000037c: POP 0000037d: PUSH2 0x036d 00000380: PUSH2 0x038a 00000383: CALLDATASIZE 00000384: PUSH1 0x04 00000386: PUSH2 0x2894 00000389: JUMP 0000038a: JUMPDEST 0000038b: PUSH2 0x0ab6 0000038e: JUMP 0000038f: JUMPDEST 00000390: CALLVALUE 00000391: DUP1 00000392: ISZERO 00000393: PUSH2 0x039b 00000396: JUMPI 00000397: PUSH1 0x00 00000399: DUP1 0000039a: REVERT 0000039b: JUMPDEST 0000039c: POP 0000039d: PUSH1 0x01 0000039f: SLOAD 000003a0: PUSH1 0x00 000003a2: SLOAD 000003a3: SUB 000003a4: JUMPDEST 000003a5: PUSH1 0x40 000003a7: MLOAD 000003a8: SWAP1 000003a9: DUP2 000003aa: MSTORE 000003ab: PUSH1 0x20 000003ad: ADD 000003ae: PUSH2 0x02ea 000003b1: JUMP 000003b2: JUMPDEST 000003b3: CALLVALUE 000003b4: DUP1 000003b5: ISZERO 000003b6: PUSH2 0x03be 000003b9: JUMPI 000003ba: PUSH1 0x00 000003bc: DUP1 000003bd: REVERT 000003be: JUMPDEST 000003bf: POP 000003c0: PUSH1 0x0b 000003c2: SLOAD 000003c3: PUSH2 0x0335 000003c6: SWAP1 000003c7: PUSH1 0x01 000003c9: PUSH1 0x01 000003cb: PUSH1 0xa0 000003cd: SHL 000003ce: SUB 000003cf: AND 000003d0: DUP2 000003d1: JUMP 000003d2: JUMPDEST 000003d3: CALLVALUE 000003d4: DUP1 000003d5: ISZERO 000003d6: PUSH2 0x03de 000003d9: JUMPI 000003da: PUSH1 0x00 000003dc: DUP1 000003dd: REVERT 000003de: JUMPDEST 000003df: POP 000003e0: PUSH2 0x036d 000003e3: PUSH2 0x03ed 000003e6: CALLDATASIZE 000003e7: PUSH1 0x04 000003e9: PUSH2 0x271c 000003ec: JUMP 000003ed: JUMPDEST 000003ee: PUSH2 0x0b22 000003f1: JUMP 000003f2: JUMPDEST 000003f3: CALLVALUE 000003f4: DUP1 000003f5: ISZERO 000003f6: PUSH2 0x03fe 000003f9: JUMPI 000003fa: PUSH1 0x00 000003fc: DUP1 000003fd: REVERT 000003fe: JUMPDEST 000003ff: POP 00000400: PUSH2 0x03a4 00000403: PUSH2 0x040d 00000406: CALLDATASIZE 00000407: PUSH1 0x04 00000409: PUSH2 0x26d0 0000040c: JUMP 0000040d: JUMPDEST 0000040e: PUSH2 0x0ce0 00000411: JUMP 00000412: JUMPDEST 00000413: CALLVALUE 00000414: DUP1 00000415: ISZERO 00000416: PUSH2 0x041e 00000419: JUMPI 0000041a: PUSH1 0x00 0000041c: DUP1 0000041d: REVERT 0000041e: JUMPDEST 0000041f: POP 00000420: PUSH2 0x036d 00000423: PUSH2 0x042d 00000426: CALLDATASIZE 00000427: PUSH1 0x04 00000429: PUSH2 0x26d0 0000042c: JUMP 0000042d: JUMPDEST 0000042e: PUSH2 0x0d1a 00000431: JUMP 00000432: JUMPDEST 00000433: CALLVALUE 00000434: DUP1 00000435: ISZERO 00000436: PUSH2 0x043e 00000439: JUMPI 0000043a: PUSH1 0x00 0000043c: DUP1 0000043d: REVERT 0000043e: JUMPDEST 0000043f: POP 00000440: PUSH2 0x036d 00000443: PUSH2 0x044d 00000446: CALLDATASIZE 00000447: PUSH1 0x04 00000449: PUSH2 0x29b8 0000044c: JUMP 0000044d: JUMPDEST 0000044e: PUSH2 0x0d93 00000451: JUMP 00000452: JUMPDEST 00000453: CALLVALUE 00000454: DUP1 00000455: ISZERO 00000456: PUSH2 0x045e 00000459: JUMPI 0000045a: PUSH1 0x00 0000045c: DUP1 0000045d: REVERT 0000045e: JUMPDEST 0000045f: POP 00000460: PUSH2 0x036d 00000463: PUSH2 0x046d 00000466: CALLDATASIZE 00000467: PUSH1 0x04 00000469: PUSH2 0x271c 0000046c: JUMP 0000046d: JUMPDEST 0000046e: PUSH2 0x0ed9 00000471: JUMP 00000472: JUMPDEST 00000473: CALLVALUE 00000474: DUP1 00000475: ISZERO 00000476: PUSH2 0x047e 00000479: JUMPI 0000047a: PUSH1 0x00 0000047c: DUP1 0000047d: REVERT 0000047e: JUMPDEST 0000047f: POP 00000480: PUSH2 0x036d 00000483: PUSH2 0x048d 00000486: CALLDATASIZE 00000487: PUSH1 0x04 00000489: PUSH2 0x29b8 0000048c: JUMP 0000048d: JUMPDEST 0000048e: PUSH2 0x0f2d 00000491: JUMP 00000492: JUMPDEST 00000493: CALLVALUE 00000494: DUP1 00000495: ISZERO 00000496: PUSH2 0x049e 00000499: JUMPI 0000049a: PUSH1 0x00 0000049c: DUP1 0000049d: REVERT 0000049e: JUMPDEST 0000049f: POP 000004a0: PUSH2 0x02de 000004a3: PUSH2 0x04ad 000004a6: CALLDATASIZE 000004a7: PUSH1 0x04 000004a9: PUSH2 0x29b8 000004ac: JUMP 000004ad: JUMPDEST 000004ae: PUSH2 0x0f3b 000004b1: JUMP 000004b2: JUMPDEST 000004b3: CALLVALUE 000004b4: DUP1 000004b5: ISZERO 000004b6: PUSH2 0x04be 000004b9: JUMPI 000004ba: PUSH1 0x00 000004bc: DUP1 000004bd: REVERT 000004be: JUMPDEST 000004bf: POP 000004c0: PUSH2 0x04d2 000004c3: PUSH2 0x04cd 000004c6: CALLDATASIZE 000004c7: PUSH1 0x04 000004c9: PUSH2 0x29b8 000004cc: JUMP 000004cd: JUMPDEST 000004ce: PUSH2 0x0f46 000004d1: JUMP 000004d2: JUMPDEST 000004d3: PUSH1 0x40 000004d5: MLOAD 000004d6: PUSH2 0x02ea 000004d9: SWAP2 000004da: SWAP1 000004db: PUSH2 0x2c96 000004de: JUMP 000004df: JUMPDEST 000004e0: CALLVALUE 000004e1: DUP1 000004e2: ISZERO 000004e3: PUSH2 0x04eb 000004e6: JUMPI 000004e7: PUSH1 0x00 000004e9: DUP1 000004ea: REVERT 000004eb: JUMPDEST 000004ec: POP 000004ed: PUSH2 0x036d 000004f0: PUSH2 0x04fa 000004f3: CALLDATASIZE 000004f4: PUSH1 0x04 000004f6: PUSH2 0x29b8 000004f9: JUMP 000004fa: JUMPDEST 000004fb: PUSH2 0x0f57 000004fe: JUMP 000004ff: JUMPDEST 00000500: CALLVALUE 00000501: DUP1 00000502: ISZERO 00000503: PUSH2 0x050b 00000506: JUMPI 00000507: PUSH1 0x00 00000509: DUP1 0000050a: REVERT 0000050b: JUMPDEST 0000050c: POP 0000050d: PUSH2 0x036d 00000510: PUSH2 0x051a 00000513: CALLDATASIZE 00000514: PUSH1 0x04 00000516: PUSH2 0x2973 00000519: JUMP 0000051a: JUMPDEST 0000051b: PUSH2 0x0f68 0000051e: JUMP 0000051f: JUMPDEST 00000520: CALLVALUE 00000521: DUP1 00000522: ISZERO 00000523: PUSH2 0x052b 00000526: JUMPI 00000527: PUSH1 0x00 00000529: DUP1 0000052a: REVERT 0000052b: JUMPDEST 0000052c: POP 0000052d: PUSH2 0x053f 00000530: PUSH2 0x053a 00000533: CALLDATASIZE 00000534: PUSH1 0x04 00000536: PUSH2 0x2894 00000539: JUMP 0000053a: JUMPDEST 0000053b: PUSH2 0x0f83 0000053e: JUMP 0000053f: JUMPDEST 00000540: PUSH1 0x40 00000542: MLOAD 00000543: PUSH2 0x02ea 00000546: SWAP2 00000547: SWAP1 00000548: PUSH2 0x2bd2 0000054b: JUMP 0000054c: JUMPDEST 0000054d: CALLVALUE 0000054e: DUP1 0000054f: ISZERO 00000550: PUSH2 0x0558 00000553: JUMPI 00000554: PUSH1 0x00 00000556: DUP1 00000557: REVERT 00000558: JUMPDEST 00000559: POP 0000055a: PUSH2 0x0335 0000055d: PUSH2 0x0567 00000560: CALLDATASIZE 00000561: PUSH1 0x04 00000563: PUSH2 0x29b8 00000566: JUMP 00000567: JUMPDEST 00000568: PUSH2 0x1061 0000056b: JUMP 0000056c: JUMPDEST 0000056d: CALLVALUE 0000056e: DUP1 0000056f: ISZERO 00000570: PUSH2 0x0578 00000573: JUMPI 00000574: PUSH1 0x00 00000576: DUP1 00000577: REVERT 00000578: JUMPDEST 00000579: POP 0000057a: PUSH2 0x036d 0000057d: PUSH2 0x0587 00000580: CALLDATASIZE 00000581: PUSH1 0x04 00000583: PUSH2 0x2894 00000586: JUMP 00000587: JUMPDEST 00000588: PUSH2 0x106c 0000058b: JUMP 0000058c: JUMPDEST 0000058d: CALLVALUE 0000058e: DUP1 0000058f: ISZERO 00000590: PUSH2 0x0598 00000593: JUMPI 00000594: PUSH1 0x00 00000596: DUP1 00000597: REVERT 00000598: JUMPDEST 00000599: POP 0000059a: PUSH2 0x0308 0000059d: PUSH2 0x05a7 000005a0: CALLDATASIZE 000005a1: PUSH1 0x04 000005a3: PUSH2 0x29b8 000005a6: JUMP 000005a7: JUMPDEST 000005a8: PUSH2 0x10cf 000005ab: JUMP 000005ac: JUMPDEST 000005ad: CALLVALUE 000005ae: DUP1 000005af: ISZERO 000005b0: PUSH2 0x05b8 000005b3: JUMPI 000005b4: PUSH1 0x00 000005b6: DUP1 000005b7: REVERT 000005b8: JUMPDEST 000005b9: POP 000005ba: PUSH2 0x0308 000005bd: PUSH2 0x10da 000005c0: JUMP 000005c1: JUMPDEST 000005c2: CALLVALUE 000005c3: DUP1 000005c4: ISZERO 000005c5: PUSH2 0x05cd 000005c8: JUMPI 000005c9: PUSH1 0x00 000005cb: DUP1 000005cc: REVERT 000005cd: JUMPDEST 000005ce: POP 000005cf: PUSH2 0x03a4 000005d2: PUSH2 0x05dc 000005d5: CALLDATASIZE 000005d6: PUSH1 0x04 000005d8: PUSH2 0x26d0 000005db: JUMP 000005dc: JUMPDEST 000005dd: PUSH2 0x10e9 000005e0: JUMP 000005e1: JUMPDEST 000005e2: CALLVALUE 000005e3: DUP1 000005e4: ISZERO 000005e5: PUSH2 0x05ed 000005e8: JUMPI 000005e9: PUSH1 0x00 000005eb: DUP1 000005ec: REVERT 000005ed: JUMPDEST 000005ee: POP 000005ef: PUSH2 0x036d 000005f2: PUSH2 0x1137 000005f5: JUMP 000005f6: JUMPDEST 000005f7: CALLVALUE 000005f8: DUP1 000005f9: ISZERO 000005fa: PUSH2 0x0602 000005fd: JUMPI 000005fe: PUSH1 0x00 00000600: DUP1 00000601: REVERT 00000602: JUMPDEST 00000603: POP 00000604: PUSH1 0x00 00000606: SLOAD 00000607: PUSH2 0x03a4 0000060a: JUMP 0000060b: JUMPDEST 0000060c: CALLVALUE 0000060d: DUP1 0000060e: ISZERO 0000060f: PUSH2 0x0617 00000612: JUMPI 00000613: PUSH1 0x00 00000615: DUP1 00000616: REVERT 00000617: JUMPDEST 00000618: POP 00000619: PUSH2 0x03a4 0000061c: PUSH1 0x0c 0000061e: SLOAD 0000061f: DUP2 00000620: JUMP 00000621: JUMPDEST 00000622: CALLVALUE 00000623: DUP1 00000624: ISZERO 00000625: PUSH2 0x062d 00000628: JUMPI 00000629: PUSH1 0x00 0000062b: DUP1 0000062c: REVERT 0000062d: JUMPDEST 0000062e: POP 0000062f: PUSH2 0x0641 00000632: PUSH2 0x063c 00000635: CALLDATASIZE 00000636: PUSH1 0x04 00000638: PUSH2 0x26d0 0000063b: JUMP 0000063c: JUMPDEST 0000063d: PUSH2 0x114b 00000640: JUMP 00000641: JUMPDEST 00000642: PUSH1 0x40 00000644: MLOAD 00000645: PUSH2 0x02ea 00000648: SWAP2 00000649: SWAP1 0000064a: PUSH2 0x2c14 0000064d: JUMP 0000064e: JUMPDEST 0000064f: CALLVALUE 00000650: DUP1 00000651: ISZERO 00000652: PUSH2 0x065a 00000655: JUMPI 00000656: PUSH1 0x00 00000658: DUP1 00000659: REVERT 0000065a: JUMPDEST 0000065b: POP 0000065c: PUSH2 0x036d 0000065f: PUSH2 0x0669 00000662: CALLDATASIZE 00000663: PUSH1 0x04 00000665: PUSH2 0x280e 00000668: JUMP 00000669: JUMPDEST 0000066a: PUSH2 0x1254 0000066d: JUMP 0000066e: JUMPDEST 0000066f: CALLVALUE 00000670: DUP1 00000671: ISZERO 00000672: PUSH2 0x067a 00000675: JUMPI 00000676: PUSH1 0x00 00000678: DUP1 00000679: REVERT 0000067a: JUMPDEST 0000067b: POP 0000067c: PUSH1 0x09 0000067e: SLOAD 0000067f: PUSH1 0x01 00000681: PUSH1 0x01 00000683: PUSH1 0xa0 00000685: SHL 00000686: SUB 00000687: AND 00000688: PUSH2 0x0335 0000068b: JUMP 0000068c: JUMPDEST 0000068d: CALLVALUE 0000068e: DUP1 0000068f: ISZERO 00000690: PUSH2 0x0698 00000693: JUMPI 00000694: PUSH1 0x00 00000696: DUP1 00000697: REVERT 00000698: JUMPDEST 00000699: POP 0000069a: PUSH2 0x0308 0000069d: PUSH2 0x1267 000006a0: JUMP 000006a1: JUMPDEST 000006a2: CALLVALUE 000006a3: DUP1 000006a4: ISZERO 000006a5: PUSH2 0x06ad 000006a8: JUMPI 000006a9: PUSH1 0x00 000006ab: DUP1 000006ac: REVERT 000006ad: JUMPDEST 000006ae: POP 000006af: PUSH2 0x0641 000006b2: PUSH2 0x06bc 000006b5: CALLDATASIZE 000006b6: PUSH1 0x04 000006b8: PUSH2 0x2862 000006bb: JUMP 000006bc: JUMPDEST 000006bd: PUSH2 0x1276 000006c0: JUMP 000006c1: JUMPDEST 000006c2: CALLVALUE 000006c3: DUP1 000006c4: ISZERO 000006c5: PUSH2 0x06cd 000006c8: JUMPI 000006c9: PUSH1 0x00 000006cb: DUP1 000006cc: REVERT 000006cd: JUMPDEST 000006ce: POP 000006cf: PUSH2 0x036d 000006d2: PUSH2 0x06dc 000006d5: CALLDATASIZE 000006d6: PUSH1 0x04 000006d8: PUSH2 0x29d0 000006db: JUMP 000006dc: JUMPDEST 000006dd: PUSH2 0x140f 000006e0: JUMP 000006e1: JUMPDEST 000006e2: CALLVALUE 000006e3: DUP1 000006e4: ISZERO 000006e5: PUSH2 0x06ed 000006e8: JUMPI 000006e9: PUSH1 0x00 000006eb: DUP1 000006ec: REVERT 000006ed: JUMPDEST 000006ee: POP 000006ef: PUSH2 0x036d 000006f2: PUSH2 0x06fc 000006f5: CALLDATASIZE 000006f6: PUSH1 0x04 000006f8: PUSH2 0x29b8 000006fb: JUMP 000006fc: JUMPDEST 000006fd: PUSH2 0x1421 00000700: JUMP 00000701: JUMPDEST 00000702: CALLVALUE 00000703: DUP1 00000704: ISZERO 00000705: PUSH2 0x070d 00000708: JUMPI 00000709: PUSH1 0x00 0000070b: DUP1 0000070c: REVERT 0000070d: JUMPDEST 0000070e: POP 0000070f: PUSH2 0x036d 00000712: PUSH2 0x071c 00000715: CALLDATASIZE 00000716: PUSH1 0x04 00000718: PUSH2 0x27e5 0000071b: JUMP 0000071c: JUMPDEST 0000071d: PUSH2 0x148a 00000720: JUMP 00000721: JUMPDEST 00000722: CALLVALUE 00000723: DUP1 00000724: ISZERO 00000725: PUSH2 0x072d 00000728: JUMPI 00000729: PUSH1 0x00 0000072b: DUP1 0000072c: REVERT 0000072d: JUMPDEST 0000072e: POP 0000072f: PUSH2 0x036d 00000732: PUSH2 0x073c 00000735: CALLDATASIZE 00000736: PUSH1 0x04 00000738: PUSH2 0x27bc 0000073b: JUMP 0000073c: JUMPDEST 0000073d: PUSH2 0x149c 00000740: JUMP 00000741: JUMPDEST 00000742: CALLVALUE 00000743: DUP1 00000744: ISZERO 00000745: PUSH2 0x074d 00000748: JUMPI 00000749: PUSH1 0x00 0000074b: DUP1 0000074c: REVERT 0000074d: JUMPDEST 0000074e: POP 0000074f: PUSH2 0x03a4 00000752: PUSH2 0x1532 00000755: JUMP 00000756: JUMPDEST 00000757: CALLVALUE 00000758: DUP1 00000759: ISZERO 0000075a: PUSH2 0x0762 0000075d: JUMPI 0000075e: PUSH1 0x00 00000760: DUP1 00000761: REVERT 00000762: JUMPDEST 00000763: POP 00000764: PUSH2 0x03a4 00000767: PUSH2 0x0771 0000076a: CALLDATASIZE 0000076b: PUSH1 0x04 0000076d: PUSH2 0x29b8 00000770: JUMP 00000771: JUMPDEST 00000772: PUSH2 0x1543 00000775: JUMP 00000776: JUMPDEST 00000777: CALLVALUE 00000778: DUP1 00000779: ISZERO 0000077a: PUSH2 0x0782 0000077d: JUMPI 0000077e: PUSH1 0x00 00000780: DUP1 00000781: REVERT 00000782: JUMPDEST 00000783: POP 00000784: PUSH2 0x036d 00000787: PUSH2 0x0791 0000078a: CALLDATASIZE 0000078b: PUSH1 0x04 0000078d: PUSH2 0x2757 00000790: JUMP 00000791: JUMPDEST 00000792: PUSH2 0x15a1 00000795: JUMP 00000796: JUMPDEST 00000797: CALLVALUE 00000798: DUP1 00000799: ISZERO 0000079a: PUSH2 0x07a2 0000079d: JUMPI 0000079e: PUSH1 0x00 000007a0: DUP1 000007a1: REVERT 000007a2: JUMPDEST 000007a3: POP 000007a4: PUSH2 0x03a4 000007a7: PUSH2 0x07b1 000007aa: CALLDATASIZE 000007ab: PUSH1 0x04 000007ad: PUSH2 0x29f2 000007b0: JUMP 000007b1: JUMPDEST 000007b2: PUSH2 0x161f 000007b5: JUMP 000007b6: JUMPDEST 000007b7: CALLVALUE 000007b8: DUP1 000007b9: ISZERO 000007ba: PUSH2 0x07c2 000007bd: JUMPI 000007be: PUSH1 0x00 000007c0: DUP1 000007c1: REVERT 000007c2: JUMPDEST 000007c3: POP 000007c4: PUSH2 0x04d2 000007c7: PUSH2 0x07d1 000007ca: CALLDATASIZE 000007cb: PUSH1 0x04 000007cd: PUSH2 0x29b8 000007d0: JUMP 000007d1: JUMPDEST 000007d2: PUSH2 0x1650 000007d5: JUMP 000007d6: JUMPDEST 000007d7: CALLVALUE 000007d8: DUP1 000007d9: ISZERO 000007da: PUSH2 0x07e2 000007dd: JUMPI 000007de: PUSH1 0x00 000007e0: DUP1 000007e1: REVERT 000007e2: JUMPDEST 000007e3: POP 000007e4: PUSH2 0x0308 000007e7: PUSH2 0x07f1 000007ea: CALLDATASIZE 000007eb: PUSH1 0x04 000007ed: PUSH2 0x29b8 000007f0: JUMP 000007f1: JUMPDEST 000007f2: PUSH2 0x1693 000007f5: JUMP 000007f6: JUMPDEST 000007f7: PUSH2 0x036d 000007fa: PUSH2 0x0804 000007fd: CALLDATASIZE 000007fe: PUSH1 0x04 00000800: PUSH2 0x2a13 00000803: JUMP 00000804: JUMPDEST 00000805: PUSH2 0x1717 00000808: JUMP 00000809: JUMPDEST 0000080a: CALLVALUE 0000080b: DUP1 0000080c: ISZERO 0000080d: PUSH2 0x0815 00000810: JUMPI 00000811: PUSH1 0x00 00000813: DUP1 00000814: REVERT 00000815: JUMPDEST 00000816: POP 00000817: PUSH2 0x0641 0000081a: PUSH2 0x0824 0000081d: CALLDATASIZE 0000081e: PUSH1 0x04 00000820: PUSH2 0x29b8 00000823: JUMP 00000824: JUMPDEST 00000825: PUSH2 0x1ab1 00000828: JUMP 00000829: JUMPDEST 0000082a: CALLVALUE 0000082b: DUP1 0000082c: ISZERO 0000082d: PUSH2 0x0835 00000830: JUMPI 00000831: PUSH1 0x00 00000833: DUP1 00000834: REVERT 00000835: JUMPDEST 00000836: POP 00000837: PUSH2 0x03a4 0000083a: PUSH2 0x1b13 0000083d: JUMP 0000083e: JUMPDEST 0000083f: CALLVALUE 00000840: DUP1 00000841: ISZERO 00000842: PUSH2 0x084a 00000845: JUMPI 00000846: PUSH1 0x00 00000848: DUP1 00000849: REVERT 0000084a: JUMPDEST 0000084b: POP 0000084c: PUSH2 0x03a4 0000084f: PUSH2 0x0859 00000852: CALLDATASIZE 00000853: PUSH1 0x04 00000855: PUSH2 0x26d0 00000858: JUMP 00000859: JUMPDEST 0000085a: PUSH2 0x1b24 0000085d: JUMP 0000085e: JUMPDEST 0000085f: CALLVALUE 00000860: DUP1 00000861: ISZERO 00000862: PUSH2 0x086a 00000865: JUMPI 00000866: PUSH1 0x00 00000868: DUP1 00000869: REVERT 0000086a: JUMPDEST 0000086b: POP 0000086c: PUSH2 0x02de 0000086f: PUSH2 0x0879 00000872: CALLDATASIZE 00000873: PUSH1 0x04 00000875: PUSH2 0x29b8 00000878: JUMP 00000879: JUMPDEST 0000087a: PUSH1 0x08 0000087c: PUSH1 0x20 0000087e: MSTORE 0000087f: PUSH1 0x00 00000881: SWAP1 00000882: DUP2 00000883: MSTORE 00000884: PUSH1 0x40 00000886: SWAP1 00000887: KECCAK256 00000888: SLOAD 00000889: PUSH1 0xff 0000088b: AND 0000088c: DUP2 0000088d: JUMP 0000088e: JUMPDEST 0000088f: CALLVALUE 00000890: DUP1 00000891: ISZERO 00000892: PUSH2 0x089a 00000895: JUMPI 00000896: PUSH1 0x00 00000898: DUP1 00000899: REVERT 0000089a: JUMPDEST 0000089b: POP 0000089c: PUSH2 0x02de 0000089f: PUSH2 0x08a9 000008a2: CALLDATASIZE 000008a3: PUSH1 0x04 000008a5: PUSH2 0x26ea 000008a8: JUMP 000008a9: JUMPDEST 000008aa: PUSH2 0x1b59 000008ad: JUMP 000008ae: JUMPDEST 000008af: CALLVALUE 000008b0: DUP1 000008b1: ISZERO 000008b2: PUSH2 0x08ba 000008b5: JUMPI 000008b6: PUSH1 0x00 000008b8: DUP1 000008b9: REVERT 000008ba: JUMPDEST 000008bb: POP 000008bc: PUSH2 0x04d2 000008bf: PUSH2 0x08c9 000008c2: CALLDATASIZE 000008c3: PUSH1 0x04 000008c5: PUSH2 0x29b8 000008c8: JUMP 000008c9: JUMPDEST 000008ca: PUSH2 0x1b87 000008cd: JUMP 000008ce: JUMPDEST 000008cf: CALLVALUE 000008d0: DUP1 000008d1: ISZERO 000008d2: PUSH2 0x08da 000008d5: JUMPI 000008d6: PUSH1 0x00 000008d8: DUP1 000008d9: REVERT 000008da: JUMPDEST 000008db: POP 000008dc: PUSH2 0x036d 000008df: PUSH2 0x08e9 000008e2: CALLDATASIZE 000008e3: PUSH1 0x04 000008e5: PUSH2 0x26d0 000008e8: JUMP 000008e9: JUMPDEST 000008ea: PUSH2 0x1b98 000008ed: JUMP 000008ee: JUMPDEST 000008ef: PUSH1 0x00 000008f1: PUSH4 0x01ffc9a7 000008f6: PUSH1 0xe0 000008f8: SHL 000008f9: PUSH1 0x01 000008fb: PUSH1 0x01 000008fd: PUSH1 0xe0 000008ff: SHL 00000900: SUB 00000901: NOT 00000902: DUP4 00000903: AND 00000904: EQ 00000905: DUP1 00000906: PUSH2 0x091f 00000909: JUMPI 0000090a: POP 0000090b: PUSH4 0x80ac58cd 00000910: PUSH1 0xe0 00000912: SHL 00000913: PUSH1 0x01 00000915: PUSH1 0x01 00000917: PUSH1 0xe0 00000919: SHL 0000091a: SUB 0000091b: NOT 0000091c: DUP4 0000091d: AND 0000091e: EQ 0000091f: JUMPDEST 00000920: DUP1 00000921: PUSH2 0x093a 00000924: JUMPI 00000925: POP 00000926: PUSH4 0x5b5e139f 0000092b: PUSH1 0xe0 0000092d: SHL 0000092e: PUSH1 0x01 00000930: PUSH1 0x01 00000932: PUSH1 0xe0 00000934: SHL 00000935: SUB 00000936: NOT 00000937: DUP4 00000938: AND 00000939: EQ 0000093a: JUMPDEST 0000093b: SWAP3 0000093c: SWAP2 0000093d: POP 0000093e: POP 0000093f: JUMP 00000940: JUMPDEST 00000941: PUSH1 0x60 00000943: PUSH1 0x02 00000945: DUP1 00000946: SLOAD 00000947: PUSH2 0x094f 0000094a: SWAP1 0000094b: PUSH2 0x2d3d 0000094e: JUMP 0000094f: JUMPDEST 00000950: DUP1 00000951: PUSH1 0x1f 00000953: ADD 00000954: PUSH1 0x20 00000956: DUP1 00000957: SWAP2 00000958: DIV 00000959: MUL 0000095a: PUSH1 0x20 0000095c: ADD 0000095d: PUSH1 0x40 0000095f: MLOAD 00000960: SWAP1 00000961: DUP2 00000962: ADD 00000963: PUSH1 0x40 00000965: MSTORE 00000966: DUP1 00000967: SWAP3 00000968: SWAP2 00000969: SWAP1 0000096a: DUP2 0000096b: DUP2 0000096c: MSTORE 0000096d: PUSH1 0x20 0000096f: ADD 00000970: DUP3 00000971: DUP1 00000972: SLOAD 00000973: PUSH2 0x097b 00000976: SWAP1 00000977: PUSH2 0x2d3d 0000097a: JUMP 0000097b: JUMPDEST 0000097c: DUP1 0000097d: ISZERO 0000097e: PUSH2 0x09c8 00000981: JUMPI 00000982: DUP1 00000983: PUSH1 0x1f 00000985: LT 00000986: PUSH2 0x099d 00000989: JUMPI 0000098a: PUSH2 0x0100 0000098d: DUP1 0000098e: DUP4 0000098f: SLOAD 00000990: DIV 00000991: MUL 00000992: DUP4 00000993: MSTORE 00000994: SWAP2 00000995: PUSH1 0x20 00000997: ADD 00000998: SWAP2 00000999: PUSH2 0x09c8 0000099c: JUMP 0000099d: JUMPDEST 0000099e: DUP3 0000099f: ADD 000009a0: SWAP2 000009a1: SWAP1 000009a2: PUSH1 0x00 000009a4: MSTORE 000009a5: PUSH1 0x20 000009a7: PUSH1 0x00 000009a9: KECCAK256 000009aa: SWAP1 000009ab: JUMPDEST 000009ac: DUP2 000009ad: SLOAD 000009ae: DUP2 000009af: MSTORE 000009b0: SWAP1 000009b1: PUSH1 0x01 000009b3: ADD 000009b4: SWAP1 000009b5: PUSH1 0x20 000009b7: ADD 000009b8: DUP1 000009b9: DUP4 000009ba: GT 000009bb: PUSH2 0x09ab 000009be: JUMPI 000009bf: DUP3 000009c0: SWAP1 000009c1: SUB 000009c2: PUSH1 0x1f 000009c4: AND 000009c5: DUP3 000009c6: ADD 000009c7: SWAP2 000009c8: JUMPDEST 000009c9: POP 000009ca: POP 000009cb: POP 000009cc: POP 000009cd: POP 000009ce: SWAP1 000009cf: POP 000009d0: SWAP1 000009d1: JUMP 000009d2: JUMPDEST 000009d3: PUSH1 0x00 000009d5: PUSH2 0x09dd 000009d8: DUP3 000009d9: PUSH2 0x1c0e 000009dc: JUMP 000009dd: JUMPDEST 000009de: PUSH2 0x09fa 000009e1: JUMPI 000009e2: PUSH1 0x40 000009e4: MLOAD 000009e5: PUSH4 0x33d1c039 000009ea: PUSH1 0xe2 000009ec: SHL 000009ed: DUP2 000009ee: MSTORE 000009ef: PUSH1 0x04 000009f1: ADD 000009f2: PUSH1 0x40 000009f4: MLOAD 000009f5: DUP1 000009f6: SWAP2 000009f7: SUB 000009f8: SWAP1 000009f9: REVERT 000009fa: JUMPDEST 000009fb: POP 000009fc: PUSH1 0x00 000009fe: SWAP1 000009ff: DUP2 00000a00: MSTORE 00000a01: PUSH1 0x06 00000a03: PUSH1 0x20 00000a05: MSTORE 00000a06: PUSH1 0x40 00000a08: SWAP1 00000a09: KECCAK256 00000a0a: SLOAD 00000a0b: PUSH1 0x01 00000a0d: PUSH1 0x01 00000a0f: PUSH1 0xa0 00000a11: SHL 00000a12: SUB 00000a13: AND 00000a14: SWAP1 00000a15: JUMP 00000a16: JUMPDEST 00000a17: PUSH1 0x00 00000a19: PUSH2 0x0a21 00000a1c: DUP3 00000a1d: PUSH2 0x1061 00000a20: JUMP 00000a21: JUMPDEST 00000a22: SWAP1 00000a23: POP 00000a24: CALLER 00000a25: PUSH1 0x01 00000a27: PUSH1 0x01 00000a29: PUSH1 0xa0 00000a2b: SHL 00000a2c: SUB 00000a2d: DUP3 00000a2e: AND 00000a2f: EQ 00000a30: PUSH2 0x0a5a 00000a33: JUMPI 00000a34: PUSH2 0x0a3d 00000a37: DUP2 00000a38: CALLER 00000a39: PUSH2 0x1b59 00000a3c: JUMP 00000a3d: JUMPDEST 00000a3e: PUSH2 0x0a5a 00000a41: JUMPI 00000a42: PUSH1 0x40 00000a44: MLOAD 00000a45: PUSH4 0x67d9dca1 00000a4a: PUSH1 0xe1 00000a4c: SHL 00000a4d: DUP2 00000a4e: MSTORE 00000a4f: PUSH1 0x04 00000a51: ADD 00000a52: PUSH1 0x40 00000a54: MLOAD 00000a55: DUP1 00000a56: SWAP2 00000a57: SUB 00000a58: SWAP1 00000a59: REVERT 00000a5a: JUMPDEST 00000a5b: PUSH1 0x00 00000a5d: DUP3 00000a5e: DUP2 00000a5f: MSTORE 00000a60: PUSH1 0x06 00000a62: PUSH1 0x20 00000a64: MSTORE 00000a65: PUSH1 0x40 00000a67: DUP1 00000a68: DUP3 00000a69: KECCAK256 00000a6a: DUP1 00000a6b: SLOAD 00000a6c: PUSH1 0x01 00000a6e: PUSH1 0x01 00000a70: PUSH1 0xa0 00000a72: SHL 00000a73: SUB 00000a74: NOT 00000a75: AND 00000a76: PUSH1 0x01 00000a78: PUSH1 0x01 00000a7a: PUSH1 0xa0 00000a7c: SHL 00000a7d: SUB 00000a7e: DUP8 00000a7f: DUP2 00000a80: AND 00000a81: SWAP2 00000a82: DUP3 00000a83: OR 00000a84: SWAP1 00000a85: SWAP3 00000a86: SSTORE 00000a87: SWAP2 00000a88: MLOAD 00000a89: DUP6 00000a8a: SWAP4 00000a8b: SWAP2 00000a8c: DUP6 00000a8d: AND 00000a8e: SWAP2 00000a8f: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00000ab0: SWAP2 00000ab1: LOG4 00000ab2: POP 00000ab3: POP 00000ab4: POP 00000ab5: JUMP 00000ab6: JUMPDEST 00000ab7: PUSH1 0x0b 00000ab9: SLOAD 00000aba: PUSH1 0x01 00000abc: PUSH1 0x01 00000abe: PUSH1 0xa0 00000ac0: SHL 00000ac1: SUB 00000ac2: AND 00000ac3: CALLER 00000ac4: EQ 00000ac5: PUSH2 0x0b15 00000ac8: JUMPI 00000ac9: PUSH1 0x40 00000acb: MLOAD 00000acc: PUSH3 0x461bcd 00000ad0: PUSH1 0xe5 00000ad2: SHL 00000ad3: DUP2 00000ad4: MSTORE 00000ad5: PUSH1 0x20 00000ad7: PUSH1 0x04 00000ad9: DUP3 00000ada: ADD 00000adb: MSTORE 00000adc: PUSH1 0x1d 00000ade: PUSH1 0x24 00000ae0: DUP3 00000ae1: ADD 00000ae2: MSTORE 00000ae3: PUSH32 0x594f55204e4f5420414c4c4f57454420544f204c4f434b20544f4b454e000000 00000b04: PUSH1 0x44 00000b06: DUP3 00000b07: ADD 00000b08: MSTORE 00000b09: PUSH1 0x64 00000b0b: ADD 00000b0c: JUMPDEST 00000b0d: PUSH1 0x40 00000b0f: MLOAD 00000b10: DUP1 00000b11: SWAP2 00000b12: SUB 00000b13: SWAP1 00000b14: REVERT 00000b15: JUMPDEST 00000b16: PUSH2 0x0b1e 00000b19: DUP2 00000b1a: PUSH2 0x1c35 00000b1d: JUMP 00000b1e: JUMPDEST 00000b1f: POP 00000b20: POP 00000b21: JUMP 00000b22: JUMPDEST 00000b23: PUSH1 0x00 00000b25: PUSH2 0x0b2d 00000b28: DUP3 00000b29: PUSH2 0x1d02 00000b2c: JUMP 00000b2d: JUMPDEST 00000b2e: PUSH1 0x00 00000b30: DUP4 00000b31: DUP2 00000b32: MSTORE 00000b33: PUSH1 0x08 00000b35: PUSH1 0x20 00000b37: MSTORE 00000b38: PUSH1 0x40 00000b3a: SWAP1 00000b3b: KECCAK256 00000b3c: SLOAD 00000b3d: SWAP1 00000b3e: SWAP2 00000b3f: POP 00000b40: PUSH1 0xff 00000b42: AND 00000b43: ISZERO 00000b44: ISZERO 00000b45: PUSH1 0x01 00000b47: EQ 00000b48: ISZERO 00000b49: PUSH2 0x0b64 00000b4c: JUMPI 00000b4d: PUSH1 0x40 00000b4f: MLOAD 00000b50: PUSH3 0x461bcd 00000b54: PUSH1 0xe5 00000b56: SHL 00000b57: DUP2 00000b58: MSTORE 00000b59: PUSH1 0x04 00000b5b: ADD 00000b5c: PUSH2 0x0b0c 00000b5f: SWAP1 00000b60: PUSH2 0x2c5f 00000b63: JUMP 00000b64: JUMPDEST 00000b65: DUP4 00000b66: PUSH1 0x01 00000b68: PUSH1 0x01 00000b6a: PUSH1 0xa0 00000b6c: SHL 00000b6d: SUB 00000b6e: AND 00000b6f: DUP2 00000b70: PUSH1 0x01 00000b72: PUSH1 0x01 00000b74: PUSH1 0xa0 00000b76: SHL 00000b77: SUB 00000b78: AND 00000b79: EQ 00000b7a: PUSH2 0x0b95 00000b7d: JUMPI 00000b7e: PUSH1 0x40 00000b80: MLOAD 00000b81: PUSH3 0xa11481 00000b85: PUSH1 0xe8 00000b87: SHL 00000b88: DUP2 00000b89: MSTORE 00000b8a: PUSH1 0x04 00000b8c: ADD 00000b8d: PUSH1 0x40 00000b8f: MLOAD 00000b90: DUP1 00000b91: SWAP2 00000b92: SUB 00000b93: SWAP1 00000b94: REVERT 00000b95: JUMPDEST 00000b96: PUSH1 0x00 00000b98: DUP3 00000b99: DUP2 00000b9a: MSTORE 00000b9b: PUSH1 0x06 00000b9d: PUSH1 0x20 00000b9f: MSTORE 00000ba0: PUSH1 0x40 00000ba2: SWAP1 00000ba3: KECCAK256 00000ba4: DUP1 00000ba5: SLOAD 00000ba6: PUSH2 0x0bc1 00000ba9: DUP2 00000baa: DUP8 00000bab: CALLER 00000bac: JUMPDEST 00000bad: PUSH1 0x01 00000baf: PUSH1 0x01 00000bb1: PUSH1 0xa0 00000bb3: SHL 00000bb4: SUB 00000bb5: SWAP1 00000bb6: DUP2 00000bb7: AND 00000bb8: SWAP2 00000bb9: AND 00000bba: DUP2 00000bbb: EQ 00000bbc: SWAP2 00000bbd: EQ 00000bbe: OR 00000bbf: SWAP1 00000bc0: JUMP 00000bc1: JUMPDEST 00000bc2: PUSH2 0x0bec 00000bc5: JUMPI 00000bc6: PUSH2 0x0bcf 00000bc9: DUP7 00000bca: CALLER 00000bcb: PUSH2 0x1b59 00000bce: JUMP 00000bcf: JUMPDEST 00000bd0: PUSH2 0x0bec 00000bd3: JUMPI 00000bd4: PUSH1 0x40 00000bd6: MLOAD 00000bd7: PUSH4 0x2ce44b5f 00000bdc: PUSH1 0xe1 00000bde: SHL 00000bdf: DUP2 00000be0: MSTORE 00000be1: PUSH1 0x04 00000be3: ADD 00000be4: PUSH1 0x40 00000be6: MLOAD 00000be7: DUP1 00000be8: SWAP2 00000be9: SUB 00000bea: SWAP1 00000beb: REVERT 00000bec: JUMPDEST 00000bed: PUSH1 0x01 00000bef: PUSH1 0x01 00000bf1: PUSH1 0xa0 00000bf3: SHL 00000bf4: SUB 00000bf5: DUP6 00000bf6: AND 00000bf7: PUSH2 0x0c13 00000bfa: JUMPI 00000bfb: PUSH1 0x40 00000bfd: MLOAD 00000bfe: PUSH4 0x3a954ecd 00000c03: PUSH1 0xe2 00000c05: SHL 00000c06: DUP2 00000c07: MSTORE 00000c08: PUSH1 0x04 00000c0a: ADD 00000c0b: PUSH1 0x40 00000c0d: MLOAD 00000c0e: DUP1 00000c0f: SWAP2 00000c10: SUB 00000c11: SWAP1 00000c12: REVERT 00000c13: JUMPDEST 00000c14: DUP1 00000c15: ISZERO 00000c16: PUSH2 0x0c1e 00000c19: JUMPI 00000c1a: PUSH1 0x00 00000c1c: DUP3 00000c1d: SSTORE 00000c1e: JUMPDEST 00000c1f: PUSH1 0x01 00000c21: PUSH1 0x01 00000c23: PUSH1 0xa0 00000c25: SHL 00000c26: SUB 00000c27: DUP7 00000c28: DUP2 00000c29: AND 00000c2a: PUSH1 0x00 00000c2c: SWAP1 00000c2d: DUP2 00000c2e: MSTORE 00000c2f: PUSH1 0x05 00000c31: PUSH1 0x20 00000c33: MSTORE 00000c34: PUSH1 0x40 00000c36: DUP1 00000c37: DUP3 00000c38: KECCAK256 00000c39: DUP1 00000c3a: SLOAD 00000c3b: PUSH1 0x00 00000c3d: NOT 00000c3e: ADD 00000c3f: SWAP1 00000c40: SSTORE 00000c41: SWAP2 00000c42: DUP8 00000c43: AND 00000c44: DUP1 00000c45: DUP3 00000c46: MSTORE 00000c47: SWAP2 00000c48: SWAP1 00000c49: KECCAK256 00000c4a: DUP1 00000c4b: SLOAD 00000c4c: PUSH1 0x01 00000c4e: ADD 00000c4f: SWAP1 00000c50: SSTORE 00000c51: TIMESTAMP 00000c52: PUSH1 0xa0 00000c54: SHL 00000c55: OR 00000c56: PUSH1 0x01 00000c58: PUSH1 0xe1 00000c5a: SHL 00000c5b: OR 00000c5c: PUSH1 0x00 00000c5e: DUP6 00000c5f: DUP2 00000c60: MSTORE 00000c61: PUSH1 0x04 00000c63: PUSH1 0x20 00000c65: MSTORE 00000c66: PUSH1 0x40 00000c68: SWAP1 00000c69: KECCAK256 00000c6a: SSTORE 00000c6b: PUSH1 0x01 00000c6d: PUSH1 0xe1 00000c6f: SHL 00000c70: DUP4 00000c71: AND 00000c72: PUSH2 0x0ca9 00000c75: JUMPI 00000c76: PUSH1 0x01 00000c78: DUP5 00000c79: ADD 00000c7a: PUSH1 0x00 00000c7c: DUP2 00000c7d: DUP2 00000c7e: MSTORE 00000c7f: PUSH1 0x04 00000c81: PUSH1 0x20 00000c83: MSTORE 00000c84: PUSH1 0x40 00000c86: SWAP1 00000c87: KECCAK256 00000c88: SLOAD 00000c89: PUSH2 0x0ca7 00000c8c: JUMPI 00000c8d: PUSH1 0x00 00000c8f: SLOAD 00000c90: DUP2 00000c91: EQ 00000c92: PUSH2 0x0ca7 00000c95: JUMPI 00000c96: PUSH1 0x00 00000c98: DUP2 00000c99: DUP2 00000c9a: MSTORE 00000c9b: PUSH1 0x04 00000c9d: PUSH1 0x20 00000c9f: MSTORE 00000ca0: PUSH1 0x40 00000ca2: SWAP1 00000ca3: KECCAK256 00000ca4: DUP5 00000ca5: SWAP1 00000ca6: SSTORE 00000ca7: JUMPDEST 00000ca8: POP 00000ca9: JUMPDEST 00000caa: DUP4 00000cab: DUP6 00000cac: PUSH1 0x01 00000cae: PUSH1 0x01 00000cb0: PUSH1 0xa0 00000cb2: SHL 00000cb3: SUB 00000cb4: AND 00000cb5: DUP8 00000cb6: PUSH1 0x01 00000cb8: PUSH1 0x01 00000cba: PUSH1 0xa0 00000cbc: SHL 00000cbd: SUB 00000cbe: AND 00000cbf: PUSH1 0x00 00000cc1: DUP1 00000cc2: MLOAD 00000cc3: PUSH1 0x20 00000cc5: PUSH2 0x2df0 00000cc8: DUP4 00000cc9: CODECOPY 00000cca: DUP2 00000ccb: MLOAD 00000ccc: SWAP2 00000ccd: MSTORE 00000cce: PUSH1 0x40 00000cd0: MLOAD 00000cd1: PUSH1 0x40 00000cd3: MLOAD 00000cd4: DUP1 00000cd5: SWAP2 00000cd6: SUB 00000cd7: SWAP1 00000cd8: LOG4 00000cd9: POP 00000cda: POP 00000cdb: POP 00000cdc: POP 00000cdd: POP 00000cde: POP 00000cdf: JUMP 00000ce0: JUMPDEST 00000ce1: PUSH1 0x00 00000ce3: PUSH2 0x0cea 00000ce6: PUSH2 0x1d63 00000ce9: JUMP 00000cea: JUMPDEST 00000ceb: PUSH2 0x093a 00000cee: DUP3 00000cef: PUSH1 0x01 00000cf1: PUSH1 0x01 00000cf3: PUSH1 0xa0 00000cf5: SHL 00000cf6: SUB 00000cf7: AND 00000cf8: PUSH1 0x00 00000cfa: SWAP1 00000cfb: DUP2 00000cfc: MSTORE 00000cfd: PUSH1 0x05 00000cff: PUSH1 0x20 00000d01: MSTORE 00000d02: PUSH1 0x40 00000d04: SWAP1 00000d05: KECCAK256 00000d06: SLOAD 00000d07: PUSH1 0x80 00000d09: SHR 00000d0a: PUSH1 0x01 00000d0c: PUSH1 0x01 00000d0e: PUSH1 0x40 00000d10: SHL 00000d11: SUB 00000d12: AND 00000d13: SWAP1 00000d14: JUMP 00000d15: JUMPDEST 00000d16: SWAP2 00000d17: SWAP1 00000d18: POP 00000d19: JUMP 00000d1a: JUMPDEST 00000d1b: PUSH2 0x0d22 00000d1e: PUSH2 0x1d63 00000d21: JUMP 00000d22: JUMPDEST 00000d23: PUSH1 0x01 00000d25: PUSH1 0x01 00000d27: PUSH1 0xa0 00000d29: SHL 00000d2a: SUB 00000d2b: DUP2 00000d2c: AND 00000d2d: PUSH2 0x0d71 00000d30: JUMPI 00000d31: PUSH1 0x40 00000d33: MLOAD 00000d34: PUSH3 0x461bcd 00000d38: PUSH1 0xe5 00000d3a: SHL 00000d3b: DUP2 00000d3c: MSTORE 00000d3d: PUSH1 0x20 00000d3f: PUSH1 0x04 00000d41: DUP3 00000d42: ADD 00000d43: MSTORE 00000d44: PUSH1 0x16 00000d46: PUSH1 0x24 00000d48: DUP3 00000d49: ADD 00000d4a: MSTORE 00000d4b: PUSH22 0x24a72b20a624a21022a72a292c9020a2222922a9a997 00000d62: PUSH1 0x51 00000d64: SHL 00000d65: PUSH1 0x44 00000d67: DUP3 00000d68: ADD 00000d69: MSTORE 00000d6a: PUSH1 0x64 00000d6c: ADD 00000d6d: PUSH2 0x0b0c 00000d70: JUMP 00000d71: JUMPDEST 00000d72: PUSH1 0x0b 00000d74: DUP1 00000d75: SLOAD 00000d76: PUSH1 0x01 00000d78: PUSH1 0x01 00000d7a: PUSH1 0xa0 00000d7c: SHL 00000d7d: SUB 00000d7e: NOT 00000d7f: AND 00000d80: PUSH1 0x01 00000d82: PUSH1 0x01 00000d84: PUSH1 0xa0 00000d86: SHL 00000d87: SUB 00000d88: SWAP3 00000d89: SWAP1 00000d8a: SWAP3 00000d8b: AND 00000d8c: SWAP2 00000d8d: SWAP1 00000d8e: SWAP2 00000d8f: OR 00000d90: SWAP1 00000d91: SSTORE 00000d92: JUMP 00000d93: JUMPDEST 00000d94: PUSH2 0x0d9b 00000d97: PUSH2 0x1d63 00000d9a: JUMP 00000d9b: JUMPDEST 00000d9c: PUSH1 0x00 00000d9e: DUP2 00000d9f: GT 00000da0: PUSH2 0x0deb 00000da3: JUMPI 00000da4: PUSH1 0x40 00000da6: MLOAD 00000da7: PUSH3 0x461bcd 00000dab: PUSH1 0xe5 00000dad: SHL 00000dae: DUP2 00000daf: MSTORE 00000db0: PUSH1 0x20 00000db2: PUSH1 0x04 00000db4: DUP3 00000db5: ADD 00000db6: MSTORE 00000db7: PUSH1 0x1d 00000db9: PUSH1 0x24 00000dbb: DUP3 00000dbc: ADD 00000dbd: MSTORE 00000dbe: PUSH32 0x414d4f554e54204d5553542042452047524541544552205448414e2030000000 00000ddf: PUSH1 0x44 00000de1: DUP3 00000de2: ADD 00000de3: MSTORE 00000de4: PUSH1 0x64 00000de6: ADD 00000de7: PUSH2 0x0b0c 00000dea: JUMP 00000deb: JUMPDEST 00000dec: PUSH1 0x00 00000dee: PUSH2 0x0dff 00000df1: PUSH1 0x09 00000df3: SLOAD 00000df4: PUSH1 0x01 00000df6: PUSH1 0x01 00000df8: PUSH1 0xa0 00000dfa: SHL 00000dfb: SUB 00000dfc: AND 00000dfd: SWAP1 00000dfe: JUMP 00000dff: JUMPDEST 00000e00: SWAP1 00000e01: POP 00000e02: PUSH1 0x00 00000e04: DUP2 00000e05: PUSH1 0x01 00000e07: PUSH1 0x01 00000e09: PUSH1 0xa0 00000e0b: SHL 00000e0c: SUB 00000e0d: AND 00000e0e: DUP4 00000e0f: PUSH1 0x40 00000e11: MLOAD 00000e12: PUSH1 0x00 00000e14: PUSH1 0x40 00000e16: MLOAD 00000e17: DUP1 00000e18: DUP4 00000e19: SUB 00000e1a: DUP2 00000e1b: DUP6 00000e1c: DUP8 00000e1d: GAS 00000e1e: CALL 00000e1f: SWAP3 00000e20: POP 00000e21: POP 00000e22: POP 00000e23: RETURNDATASIZE 00000e24: DUP1 00000e25: PUSH1 0x00 00000e27: DUP2 00000e28: EQ 00000e29: PUSH2 0x0e4e 00000e2c: JUMPI 00000e2d: PUSH1 0x40 00000e2f: MLOAD 00000e30: SWAP2 00000e31: POP 00000e32: PUSH1 0x1f 00000e34: NOT 00000e35: PUSH1 0x3f 00000e37: RETURNDATASIZE 00000e38: ADD 00000e39: AND 00000e3a: DUP3 00000e3b: ADD 00000e3c: PUSH1 0x40 00000e3e: MSTORE 00000e3f: RETURNDATASIZE 00000e40: DUP3 00000e41: MSTORE 00000e42: RETURNDATASIZE 00000e43: PUSH1 0x00 00000e45: PUSH1 0x20 00000e47: DUP5 00000e48: ADD 00000e49: RETURNDATACOPY 00000e4a: PUSH2 0x0e53 00000e4d: JUMP 00000e4e: JUMPDEST 00000e4f: PUSH1 0x60 00000e51: SWAP2 00000e52: POP 00000e53: JUMPDEST 00000e54: POP 00000e55: POP 00000e56: SWAP1 00000e57: POP 00000e58: DUP1 00000e59: PUSH2 0x0e9b 00000e5c: JUMPI 00000e5d: PUSH1 0x40 00000e5f: MLOAD 00000e60: PUSH3 0x461bcd 00000e64: PUSH1 0xe5 00000e66: SHL 00000e67: DUP2 00000e68: MSTORE 00000e69: PUSH1 0x20 00000e6b: PUSH1 0x04 00000e6d: DUP3 00000e6e: ADD 00000e6f: MSTORE 00000e70: PUSH1 0x14 00000e72: PUSH1 0x24 00000e74: DUP3 00000e75: ADD 00000e76: MSTORE 00000e77: PUSH20 0x2320a4a622a2102a279029a2a7221022aa2422a9 00000e8c: PUSH1 0x61 00000e8e: SHL 00000e8f: PUSH1 0x44 00000e91: DUP3 00000e92: ADD 00000e93: MSTORE 00000e94: PUSH1 0x64 00000e96: ADD 00000e97: PUSH2 0x0b0c 00000e9a: JUMP 00000e9b: JUMPDEST 00000e9c: PUSH1 0x40 00000e9e: DUP1 00000e9f: MLOAD 00000ea0: CALLER 00000ea1: DUP2 00000ea2: MSTORE 00000ea3: PUSH1 0x20 00000ea5: DUP2 00000ea6: ADD 00000ea7: DUP6 00000ea8: SWAP1 00000ea9: MSTORE 00000eaa: PUSH32 0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364 00000ecb: SWAP2 00000ecc: ADD 00000ecd: PUSH1 0x40 00000ecf: MLOAD 00000ed0: DUP1 00000ed1: SWAP2 00000ed2: SUB 00000ed3: SWAP1 00000ed4: LOG1 00000ed5: POP 00000ed6: POP 00000ed7: POP 00000ed8: JUMP 00000ed9: JUMPDEST 00000eda: PUSH1 0x00 00000edc: DUP2 00000edd: DUP2 00000ede: MSTORE 00000edf: PUSH1 0x08 00000ee1: PUSH1 0x20 00000ee3: MSTORE 00000ee4: PUSH1 0x40 00000ee6: SWAP1 00000ee7: KECCAK256 00000ee8: SLOAD 00000ee9: PUSH1 0xff 00000eeb: AND 00000eec: ISZERO 00000eed: ISZERO 00000eee: PUSH1 0x01 00000ef0: EQ 00000ef1: ISZERO 00000ef2: PUSH2 0x0f0d 00000ef5: JUMPI 00000ef6: PUSH1 0x40 00000ef8: MLOAD 00000ef9: PUSH3 0x461bcd 00000efd: PUSH1 0xe5 00000eff: SHL 00000f00: DUP2 00000f01: MSTORE 00000f02: PUSH1 0x04 00000f04: ADD 00000f05: PUSH2 0x0b0c 00000f08: SWAP1 00000f09: PUSH2 0x2c5f 00000f0c: JUMP 00000f0d: JUMPDEST 00000f0e: PUSH2 0x0f28 00000f11: DUP4 00000f12: DUP4 00000f13: DUP4 00000f14: PUSH1 0x40 00000f16: MLOAD 00000f17: DUP1 00000f18: PUSH1 0x20 00000f1a: ADD 00000f1b: PUSH1 0x40 00000f1d: MSTORE 00000f1e: DUP1 00000f1f: PUSH1 0x00 00000f21: DUP2 00000f22: MSTORE 00000f23: POP 00000f24: PUSH2 0x15a1 00000f27: JUMP 00000f28: JUMPDEST 00000f29: POP 00000f2a: POP 00000f2b: POP 00000f2c: JUMP 00000f2d: JUMPDEST 00000f2e: PUSH2 0x0f38 00000f31: DUP2 00000f32: PUSH1 0x01 00000f34: PUSH2 0x1dbd 00000f37: JUMP 00000f38: JUMPDEST 00000f39: POP 00000f3a: JUMP 00000f3b: JUMPDEST 00000f3c: PUSH1 0x00 00000f3e: PUSH2 0x093a 00000f41: DUP3 00000f42: PUSH2 0x1c0e 00000f45: JUMP 00000f46: JUMPDEST 00000f47: PUSH2 0x0f4e 00000f4a: PUSH2 0x2573 00000f4d: JUMP 00000f4e: JUMPDEST 00000f4f: PUSH2 0x093a 00000f52: DUP3 00000f53: PUSH2 0x1eee 00000f56: JUMP 00000f57: JUMPDEST 00000f58: PUSH2 0x0f5f 00000f5b: PUSH2 0x1d63 00000f5e: JUMP 00000f5f: JUMPDEST 00000f60: PUSH2 0x0f38 00000f63: DUP2 00000f64: PUSH2 0x1f07 00000f67: JUMP 00000f68: JUMPDEST 00000f69: PUSH2 0x0f70 00000f6c: PUSH2 0x1d63 00000f6f: JUMP 00000f70: JUMPDEST 00000f71: DUP1 00000f72: MLOAD 00000f73: PUSH2 0x0b1e 00000f76: SWAP1 00000f77: PUSH1 0x0a 00000f79: SWAP1 00000f7a: PUSH1 0x20 00000f7c: DUP5 00000f7d: ADD 00000f7e: SWAP1 00000f7f: PUSH2 0x259a 00000f82: JUMP 00000f83: JUMPDEST 00000f84: DUP1 00000f85: MLOAD 00000f86: PUSH1 0x60 00000f88: SWAP1 00000f89: PUSH1 0x00 00000f8b: DUP2 00000f8c: PUSH1 0x01 00000f8e: PUSH1 0x01 00000f90: PUSH1 0x40 00000f92: SHL 00000f93: SUB 00000f94: DUP2 00000f95: GT 00000f96: ISZERO 00000f97: PUSH2 0x0fb0 00000f9a: JUMPI 00000f9b: PUSH4 0x4e487b71 00000fa0: PUSH1 0xe0 00000fa2: SHL 00000fa3: PUSH1 0x00 00000fa5: MSTORE 00000fa6: PUSH1 0x41 00000fa8: PUSH1 0x04 00000faa: MSTORE 00000fab: PUSH1 0x24 00000fad: PUSH1 0x00 00000faf: REVERT 00000fb0: JUMPDEST 00000fb1: PUSH1 0x40 00000fb3: MLOAD 00000fb4: SWAP1 00000fb5: DUP1 00000fb6: DUP3 00000fb7: MSTORE 00000fb8: DUP1 00000fb9: PUSH1 0x20 00000fbb: MUL 00000fbc: PUSH1 0x20 00000fbe: ADD 00000fbf: DUP3 00000fc0: ADD 00000fc1: PUSH1 0x40 00000fc3: MSTORE 00000fc4: DUP1 00000fc5: ISZERO 00000fc6: PUSH2 0x0fe9 00000fc9: JUMPI 00000fca: DUP2 00000fcb: PUSH1 0x20 00000fcd: ADD 00000fce: JUMPDEST 00000fcf: PUSH2 0x0fd6 00000fd2: PUSH2 0x2573 00000fd5: JUMP 00000fd6: JUMPDEST 00000fd7: DUP2 00000fd8: MSTORE 00000fd9: PUSH1 0x20 00000fdb: ADD 00000fdc: SWAP1 00000fdd: PUSH1 0x01 00000fdf: SWAP1 00000fe0: SUB 00000fe1: SWAP1 00000fe2: DUP2 00000fe3: PUSH2 0x0fce 00000fe6: JUMPI 00000fe7: SWAP1 00000fe8: POP 00000fe9: JUMPDEST 00000fea: POP 00000feb: SWAP1 00000fec: POP 00000fed: PUSH1 0x00 00000fef: JUMPDEST 00000ff0: DUP3 00000ff1: DUP2 00000ff2: EQ 00000ff3: PUSH2 0x1059 00000ff6: JUMPI 00000ff7: PUSH2 0x1026 00000ffa: DUP6 00000ffb: DUP3 00000ffc: DUP2 00000ffd: MLOAD 00000ffe: DUP2 00000fff: LT 00001000: PUSH2 0x1019 00001003: JUMPI 00001004: PUSH4 0x4e487b71 00001009: PUSH1 0xe0 0000100b: SHL 0000100c: PUSH1 0x00 0000100e: MSTORE 0000100f: PUSH1 0x32 00001011: PUSH1 0x04 00001013: MSTORE 00001014: PUSH1 0x24 00001016: PUSH1 0x00 00001018: REVERT 00001019: JUMPDEST 0000101a: PUSH1 0x20 0000101c: MUL 0000101d: PUSH1 0x20 0000101f: ADD 00001020: ADD 00001021: MLOAD 00001022: PUSH2 0x1650 00001025: JUMP 00001026: JUMPDEST 00001027: DUP3 00001028: DUP3 00001029: DUP2 0000102a: MLOAD 0000102b: DUP2 0000102c: LT 0000102d: PUSH2 0x1046 00001030: JUMPI 00001031: PUSH4 0x4e487b71 00001036: PUSH1 0xe0 00001038: SHL 00001039: PUSH1 0x00 0000103b: MSTORE 0000103c: PUSH1 0x32 0000103e: PUSH1 0x04 00001040: MSTORE 00001041: PUSH1 0x24 00001043: PUSH1 0x00 00001045: REVERT 00001046: JUMPDEST 00001047: PUSH1 0x20 00001049: SWAP1 0000104a: DUP2 0000104b: MUL 0000104c: SWAP2 0000104d: SWAP1 0000104e: SWAP2 0000104f: ADD 00001050: ADD 00001051: MSTORE 00001052: PUSH1 0x01 00001054: ADD 00001055: PUSH2 0x0fef 00001058: JUMP 00001059: JUMPDEST 0000105a: POP 0000105b: SWAP4 0000105c: SWAP3 0000105d: POP 0000105e: POP 0000105f: POP 00001060: JUMP 00001061: JUMPDEST 00001062: PUSH1 0x00 00001064: PUSH2 0x093a 00001067: DUP3 00001068: PUSH2 0x1d02 0000106b: JUMP 0000106c: JUMPDEST 0000106d: PUSH1 0x0b 0000106f: SLOAD 00001070: PUSH1 0x01 00001072: PUSH1 0x01 00001074: PUSH1 0xa0 00001076: SHL 00001077: SUB 00001078: AND 00001079: CALLER 0000107a: EQ 0000107b: PUSH2 0x10c6 0000107e: JUMPI 0000107f: PUSH1 0x40 00001081: MLOAD 00001082: PUSH3 0x461bcd 00001086: PUSH1 0xe5 00001088: SHL 00001089: DUP2 0000108a: MSTORE 0000108b: PUSH1 0x20 0000108d: PUSH1 0x04 0000108f: DUP3 00001090: ADD 00001091: MSTORE 00001092: PUSH1 0x1d 00001094: PUSH1 0x24 00001096: DUP3 00001097: ADD 00001098: MSTORE 00001099: PUSH32 0x594f55204e4f5420414c4c4f57454420544f204c4f434b20544f4b454e000000 000010ba: PUSH1 0x44 000010bc: DUP3 000010bd: ADD 000010be: MSTORE 000010bf: PUSH1 0x64 000010c1: ADD 000010c2: PUSH2 0x0b0c 000010c5: JUMP 000010c6: JUMPDEST 000010c7: PUSH2 0x0b1e 000010ca: DUP2 000010cb: PUSH2 0x1f35 000010ce: JUMP 000010cf: JUMPDEST 000010d0: PUSH1 0x60 000010d2: PUSH2 0x093a 000010d5: DUP3 000010d6: PUSH2 0x1fa8 000010d9: JUMP 000010da: JUMPDEST 000010db: PUSH1 0x60 000010dd: PUSH2 0x10e4 000010e0: PUSH2 0x1fea 000010e3: JUMP 000010e4: JUMPDEST 000010e5: SWAP1 000010e6: POP 000010e7: SWAP1 000010e8: JUMP 000010e9: JUMPDEST 000010ea: PUSH1 0x00 000010ec: PUSH1 0x01 000010ee: PUSH1 0x01 000010f0: PUSH1 0xa0 000010f2: SHL 000010f3: SUB 000010f4: DUP3 000010f5: AND 000010f6: PUSH2 0x1112 000010f9: JUMPI 000010fa: PUSH1 0x40 000010fc: MLOAD 000010fd: PUSH4 0x23d3ad81 00001102: PUSH1 0xe2 00001104: SHL 00001105: DUP2 00001106: MSTORE 00001107: PUSH1 0x04 00001109: ADD 0000110a: PUSH1 0x40 0000110c: MLOAD 0000110d: DUP1 0000110e: SWAP2 0000110f: SUB 00001110: SWAP1 00001111: REVERT 00001112: JUMPDEST 00001113: POP 00001114: PUSH1 0x01 00001116: PUSH1 0x01 00001118: PUSH1 0xa0 0000111a: SHL 0000111b: SUB 0000111c: AND 0000111d: PUSH1 0x00 0000111f: SWAP1 00001120: DUP2 00001121: MSTORE 00001122: PUSH1 0x05 00001124: PUSH1 0x20 00001126: MSTORE 00001127: PUSH1 0x40 00001129: SWAP1 0000112a: KECCAK256 0000112b: SLOAD 0000112c: PUSH1 0x01 0000112e: PUSH1 0x01 00001130: PUSH1 0x40 00001132: SHL 00001133: SUB 00001134: AND 00001135: SWAP1 00001136: JUMP 00001137: JUMPDEST 00001138: PUSH2 0x113f 0000113b: PUSH2 0x1d63 0000113e: JUMP 0000113f: JUMPDEST 00001140: PUSH2 0x1149 00001143: PUSH1 0x00 00001145: PUSH2 0x1ff9 00001148: JUMP 00001149: JUMPDEST 0000114a: JUMP 0000114b: JUMPDEST 0000114c: PUSH1 0x60 0000114e: PUSH1 0x00 00001150: DUP1 00001151: PUSH1 0x00 00001153: PUSH2 0x115b 00001156: DUP6 00001157: PUSH2 0x10e9 0000115a: JUMP 0000115b: JUMPDEST 0000115c: SWAP1 0000115d: POP 0000115e: PUSH1 0x00 00001160: DUP2 00001161: PUSH1 0x01 00001163: PUSH1 0x01 00001165: PUSH1 0x40 00001167: SHL 00001168: SUB 00001169: DUP2 0000116a: GT 0000116b: ISZERO 0000116c: PUSH2 0x1185 0000116f: JUMPI 00001170: PUSH4 0x4e487b71 00001175: PUSH1 0xe0 00001177: SHL 00001178: PUSH1 0x00 0000117a: MSTORE 0000117b: PUSH1 0x41 0000117d: PUSH1 0x04 0000117f: MSTORE 00001180: PUSH1 0x24 00001182: PUSH1 0x00 00001184: REVERT 00001185: JUMPDEST 00001186: PUSH1 0x40 00001188: MLOAD 00001189: SWAP1 0000118a: DUP1 0000118b: DUP3 0000118c: MSTORE 0000118d: DUP1 0000118e: PUSH1 0x20 00001190: MUL 00001191: PUSH1 0x20 00001193: ADD 00001194: DUP3 00001195: ADD 00001196: PUSH1 0x40 00001198: MSTORE 00001199: DUP1 0000119a: ISZERO 0000119b: PUSH2 0x11ae 0000119e: JUMPI 0000119f: DUP2 000011a0: PUSH1 0x20 000011a2: ADD 000011a3: PUSH1 0x20 000011a5: DUP3 000011a6: MUL 000011a7: DUP1 000011a8: CALLDATASIZE 000011a9: DUP4 000011aa: CALLDATACOPY 000011ab: ADD 000011ac: SWAP1 000011ad: POP 000011ae: JUMPDEST 000011af: POP 000011b0: SWAP1 000011b1: POP 000011b2: PUSH2 0x11b9 000011b5: PUSH2 0x2573 000011b8: JUMP 000011b9: JUMPDEST 000011ba: PUSH1 0x00 000011bc: JUMPDEST 000011bd: DUP4 000011be: DUP7 000011bf: EQ 000011c0: PUSH2 0x1248 000011c3: JUMPI 000011c4: PUSH2 0x11cc 000011c7: DUP2 000011c8: PUSH2 0x204b 000011cb: JUMP 000011cc: JUMPDEST 000011cd: SWAP2 000011ce: POP 000011cf: DUP2 000011d0: PUSH1 0x40 000011d2: ADD 000011d3: MLOAD 000011d4: ISZERO 000011d5: PUSH2 0x11dd 000011d8: JUMPI 000011d9: PUSH2 0x1240 000011dc: JUMP 000011dd: JUMPDEST 000011de: DUP2 000011df: MLOAD 000011e0: PUSH1 0x01 000011e2: PUSH1 0x01 000011e4: PUSH1 0xa0 000011e6: SHL 000011e7: SUB 000011e8: AND 000011e9: ISZERO 000011ea: PUSH2 0x11f2 000011ed: JUMPI 000011ee: DUP2 000011ef: MLOAD 000011f0: SWAP5 000011f1: POP 000011f2: JUMPDEST 000011f3: DUP8 000011f4: PUSH1 0x01 000011f6: PUSH1 0x01 000011f8: PUSH1 0xa0 000011fa: SHL 000011fb: SUB 000011fc: AND 000011fd: DUP6 000011fe: PUSH1 0x01 00001200: PUSH1 0x01 00001202: PUSH1 0xa0 00001204: SHL 00001205: SUB 00001206: AND 00001207: EQ 00001208: ISZERO 00001209: PUSH2 0x1240 0000120c: JUMPI 0000120d: DUP1 0000120e: DUP4 0000120f: DUP8 00001210: DUP1 00001211: PUSH1 0x01 00001213: ADD 00001214: SWAP9 00001215: POP 00001216: DUP2 00001217: MLOAD 00001218: DUP2 00001219: LT 0000121a: PUSH2 0x1233 0000121d: JUMPI 0000121e: PUSH4 0x4e487b71 00001223: PUSH1 0xe0 00001225: SHL 00001226: PUSH1 0x00 00001228: MSTORE 00001229: PUSH1 0x32 0000122b: PUSH1 0x04 0000122d: MSTORE 0000122e: PUSH1 0x24 00001230: PUSH1 0x00 00001232: REVERT 00001233: JUMPDEST 00001234: PUSH1 0x20 00001236: MUL 00001237: PUSH1 0x20 00001239: ADD 0000123a: ADD 0000123b: DUP2 0000123c: DUP2 0000123d: MSTORE 0000123e: POP 0000123f: POP 00001240: JUMPDEST 00001241: PUSH1 0x01 00001243: ADD 00001244: PUSH2 0x11bc 00001247: JUMP 00001248: JUMPDEST 00001249: POP 0000124a: SWAP1 0000124b: SWAP7 0000124c: SWAP6 0000124d: POP 0000124e: POP 0000124f: POP 00001250: POP 00001251: POP 00001252: POP 00001253: JUMP 00001254: JUMPDEST 00001255: PUSH2 0x125c 00001258: PUSH2 0x1d63 0000125b: JUMP 0000125c: JUMPDEST 0000125d: PUSH2 0x0f28 00001260: DUP4 00001261: DUP4 00001262: DUP4 00001263: PUSH2 0x206b 00001266: JUMP 00001267: JUMPDEST 00001268: PUSH1 0x60 0000126a: PUSH1 0x03 0000126c: DUP1 0000126d: SLOAD 0000126e: PUSH2 0x094f 00001271: SWAP1 00001272: PUSH2 0x2d3d 00001275: JUMP 00001276: JUMPDEST 00001277: PUSH1 0x60 00001279: DUP2 0000127a: DUP4 0000127b: LT 0000127c: PUSH2 0x1298 0000127f: JUMPI 00001280: PUSH1 0x40 00001282: MLOAD 00001283: PUSH4 0x1960ccad 00001288: PUSH1 0xe1 0000128a: SHL 0000128b: DUP2 0000128c: MSTORE 0000128d: PUSH1 0x04 0000128f: ADD 00001290: PUSH1 0x40 00001292: MLOAD 00001293: DUP1 00001294: SWAP2 00001295: SUB 00001296: SWAP1 00001297: REVERT 00001298: JUMPDEST 00001299: PUSH1 0x00 0000129b: DUP1 0000129c: PUSH2 0x12a4 0000129f: PUSH1 0x00 000012a1: SLOAD 000012a2: SWAP1 000012a3: JUMP 000012a4: JUMPDEST 000012a5: SWAP1 000012a6: POP 000012a7: DUP1 000012a8: DUP5 000012a9: GT 000012aa: ISZERO 000012ab: PUSH2 0x12b2 000012ae: JUMPI 000012af: DUP1 000012b0: SWAP4 000012b1: POP 000012b2: JUMPDEST 000012b3: PUSH1 0x00 000012b5: PUSH2 0x12bd 000012b8: DUP8 000012b9: PUSH2 0x10e9 000012bc: JUMP 000012bd: JUMPDEST 000012be: SWAP1 000012bf: POP 000012c0: DUP5 000012c1: DUP7 000012c2: LT 000012c3: ISZERO 000012c4: PUSH2 0x12dc 000012c7: JUMPI 000012c8: DUP6 000012c9: DUP6 000012ca: SUB 000012cb: DUP2 000012cc: DUP2 000012cd: LT 000012ce: ISZERO 000012cf: PUSH2 0x12d6 000012d2: JUMPI 000012d3: DUP1 000012d4: SWAP2 000012d5: POP 000012d6: JUMPDEST 000012d7: POP 000012d8: PUSH2 0x12e0 000012db: JUMP 000012dc: JUMPDEST 000012dd: POP 000012de: PUSH1 0x00 000012e0: JUMPDEST 000012e1: PUSH1 0x00 000012e3: DUP2 000012e4: PUSH1 0x01 000012e6: PUSH1 0x01 000012e8: PUSH1 0x40 000012ea: SHL 000012eb: SUB 000012ec: DUP2 000012ed: GT 000012ee: ISZERO 000012ef: PUSH2 0x1308 000012f2: JUMPI 000012f3: PUSH4 0x4e487b71 000012f8: PUSH1 0xe0 000012fa: SHL 000012fb: PUSH1 0x00 000012fd: MSTORE 000012fe: PUSH1 0x41 00001300: PUSH1 0x04 00001302: MSTORE 00001303: PUSH1 0x24 00001305: PUSH1 0x00 00001307: REVERT 00001308: JUMPDEST 00001309: PUSH1 0x40 0000130b: MLOAD 0000130c: SWAP1 0000130d: DUP1 0000130e: DUP3 0000130f: MSTORE 00001310: DUP1 00001311: PUSH1 0x20 00001313: MUL 00001314: PUSH1 0x20 00001316: ADD 00001317: DUP3 00001318: ADD 00001319: PUSH1 0x40 0000131b: MSTORE 0000131c: DUP1 0000131d: ISZERO 0000131e: PUSH2 0x1331 00001321: JUMPI 00001322: DUP2 00001323: PUSH1 0x20 00001325: ADD 00001326: PUSH1 0x20 00001328: DUP3 00001329: MUL 0000132a: DUP1 0000132b: CALLDATASIZE 0000132c: DUP4 0000132d: CALLDATACOPY 0000132e: ADD 0000132f: SWAP1 00001330: POP 00001331: JUMPDEST 00001332: POP 00001333: SWAP1 00001334: POP 00001335: DUP2 00001336: PUSH2 0x1344 00001339: JUMPI 0000133a: SWAP4 0000133b: POP 0000133c: PUSH2 0x1408 0000133f: SWAP3 00001340: POP 00001341: POP 00001342: POP 00001343: JUMP 00001344: JUMPDEST 00001345: PUSH1 0x00 00001347: PUSH2 0x134f 0000134a: DUP9 0000134b: PUSH2 0x1650 0000134e: JUMP 0000134f: JUMPDEST 00001350: SWAP1 00001351: POP 00001352: PUSH1 0x00 00001354: DUP2 00001355: PUSH1 0x40 00001357: ADD 00001358: MLOAD 00001359: PUSH2 0x1360 0000135c: JUMPI 0000135d: POP 0000135e: DUP1 0000135f: MLOAD 00001360: JUMPDEST 00001361: DUP9 00001362: JUMPDEST 00001363: DUP9 00001364: DUP2 00001365: EQ 00001366: ISZERO 00001367: DUP1 00001368: ISZERO 00001369: PUSH2 0x1372 0000136c: JUMPI 0000136d: POP 0000136e: DUP5 0000136f: DUP8 00001370: EQ 00001371: ISZERO 00001372: JUMPDEST 00001373: ISZERO 00001374: PUSH2 0x13fc 00001377: JUMPI 00001378: PUSH2 0x1380 0000137b: DUP2 0000137c: PUSH2 0x204b 0000137f: JUMP 00001380: JUMPDEST 00001381: SWAP3 00001382: POP 00001383: DUP3 00001384: PUSH1 0x40 00001386: ADD 00001387: MLOAD 00001388: ISZERO 00001389: PUSH2 0x1391 0000138c: JUMPI 0000138d: PUSH2 0x13f4 00001390: JUMP 00001391: JUMPDEST 00001392: DUP3 00001393: MLOAD 00001394: PUSH1 0x01 00001396: PUSH1 0x01 00001398: PUSH1 0xa0 0000139a: SHL 0000139b: SUB 0000139c: AND 0000139d: ISZERO 0000139e: PUSH2 0x13a6 000013a1: JUMPI 000013a2: DUP3 000013a3: MLOAD 000013a4: SWAP2 000013a5: POP 000013a6: JUMPDEST 000013a7: DUP11 000013a8: PUSH1 0x01 000013aa: PUSH1 0x01 000013ac: PUSH1 0xa0 000013ae: SHL 000013af: SUB 000013b0: AND 000013b1: DUP3 000013b2: PUSH1 0x01 000013b4: PUSH1 0x01 000013b6: PUSH1 0xa0 000013b8: SHL 000013b9: SUB 000013ba: AND 000013bb: EQ 000013bc: ISZERO 000013bd: PUSH2 0x13f4 000013c0: JUMPI 000013c1: DUP1 000013c2: DUP5 000013c3: DUP9 000013c4: DUP1 000013c5: PUSH1 0x01 000013c7: ADD 000013c8: SWAP10 000013c9: POP 000013ca: DUP2 000013cb: MLOAD 000013cc: DUP2 000013cd: LT 000013ce: PUSH2 0x13e7 000013d1: JUMPI 000013d2: PUSH4 0x4e487b71 000013d7: PUSH1 0xe0 000013d9: SHL 000013da: PUSH1 0x00 000013dc: MSTORE 000013dd: PUSH1 0x32 000013df: PUSH1 0x04 000013e1: MSTORE 000013e2: PUSH1 0x24 000013e4: PUSH1 0x00 000013e6: REVERT 000013e7: JUMPDEST 000013e8: PUSH1 0x20 000013ea: MUL 000013eb: PUSH1 0x20 000013ed: ADD 000013ee: ADD 000013ef: DUP2 000013f0: DUP2 000013f1: MSTORE 000013f2: POP 000013f3: POP 000013f4: JUMPDEST 000013f5: PUSH1 0x01 000013f7: ADD 000013f8: PUSH2 0x1362 000013fb: JUMP 000013fc: JUMPDEST 000013fd: POP 000013fe: POP 000013ff: POP 00001400: SWAP3 00001401: DUP4 00001402: MSTORE 00001403: POP 00001404: SWAP1 00001405: SWAP2 00001406: POP 00001407: POP 00001408: JUMPDEST 00001409: SWAP4 0000140a: SWAP3 0000140b: POP 0000140c: POP 0000140d: POP 0000140e: JUMP 0000140f: JUMPDEST 00001410: PUSH2 0x1417 00001413: PUSH2 0x1d63 00001416: JUMP 00001417: JUMPDEST 00001418: PUSH2 0x0b1e 0000141b: DUP3 0000141c: DUP3 0000141d: PUSH2 0x1dbd 00001420: JUMP 00001421: JUMPDEST 00001422: PUSH2 0x1429 00001425: PUSH2 0x1d63 00001428: JUMP 00001429: JUMPDEST 0000142a: PUSH2 0x1433 0000142d: ADDRESS 0000142e: DUP3 0000142f: PUSH2 0x20d8 00001432: JUMP 00001433: JUMPDEST 00001434: PUSH1 0x00 00001436: PUSH2 0x1442 00001439: PUSH1 0x01 0000143b: SLOAD 0000143c: PUSH1 0x00 0000143e: SLOAD 0000143f: SUB 00001440: SWAP1 00001441: JUMP 00001442: JUMPDEST 00001443: PUSH1 0x40 00001445: DUP1 00001446: MLOAD 00001447: CALLER 00001448: DUP2 00001449: MSTORE 0000144a: PUSH1 0x20 0000144c: DUP2 0000144d: ADD 0000144e: DUP6 0000144f: SWAP1 00001450: MSTORE 00001451: SWAP1 00001452: DUP2 00001453: ADD 00001454: DUP3 00001455: SWAP1 00001456: MSTORE 00001457: SWAP1 00001458: SWAP2 00001459: POP 0000145a: PUSH32 0x90713123437f9381be7548941b7969410656d7a61a33bfda49a0fe9cc91042ee 0000147b: SWAP1 0000147c: PUSH1 0x60 0000147e: ADD 0000147f: PUSH1 0x40 00001481: MLOAD 00001482: DUP1 00001483: SWAP2 00001484: SUB 00001485: SWAP1 00001486: LOG1 00001487: POP 00001488: POP 00001489: JUMP 0000148a: JUMPDEST 0000148b: PUSH2 0x1492 0000148e: PUSH2 0x1d63 00001491: JUMP 00001492: JUMPDEST 00001493: PUSH2 0x0b1e 00001496: DUP3 00001497: DUP3 00001498: PUSH2 0x21ab 0000149b: JUMP 0000149c: JUMPDEST 0000149d: PUSH1 0x01 0000149f: PUSH1 0x01 000014a1: PUSH1 0xa0 000014a3: SHL 000014a4: SUB 000014a5: DUP3 000014a6: AND 000014a7: CALLER 000014a8: EQ 000014a9: ISZERO 000014aa: PUSH2 0x14c6 000014ad: JUMPI 000014ae: PUSH1 0x40 000014b0: MLOAD 000014b1: PUSH4 0xb06307db 000014b6: PUSH1 0xe0 000014b8: SHL 000014b9: DUP2 000014ba: MSTORE 000014bb: PUSH1 0x04 000014bd: ADD 000014be: PUSH1 0x40 000014c0: MLOAD 000014c1: DUP1 000014c2: SWAP2 000014c3: SUB 000014c4: SWAP1 000014c5: REVERT 000014c6: JUMPDEST 000014c7: CALLER 000014c8: PUSH1 0x00 000014ca: DUP2 000014cb: DUP2 000014cc: MSTORE 000014cd: PUSH1 0x07 000014cf: PUSH1 0x20 000014d1: SWAP1 000014d2: DUP2 000014d3: MSTORE 000014d4: PUSH1 0x40 000014d6: DUP1 000014d7: DUP4 000014d8: KECCAK256 000014d9: PUSH1 0x01 000014db: PUSH1 0x01 000014dd: PUSH1 0xa0 000014df: SHL 000014e0: SUB 000014e1: DUP8 000014e2: AND 000014e3: DUP1 000014e4: DUP6 000014e5: MSTORE 000014e6: SWAP1 000014e7: DUP4 000014e8: MSTORE 000014e9: SWAP3 000014ea: DUP2 000014eb: SWAP1 000014ec: KECCAK256 000014ed: DUP1 000014ee: SLOAD 000014ef: PUSH1 0xff 000014f1: NOT 000014f2: AND 000014f3: DUP7 000014f4: ISZERO 000014f5: ISZERO 000014f6: SWAP1 000014f7: DUP2 000014f8: OR 000014f9: SWAP1 000014fa: SWAP2 000014fb: SSTORE 000014fc: SWAP1 000014fd: MLOAD 000014fe: SWAP1 000014ff: DUP2 00001500: MSTORE 00001501: SWAP2 00001502: SWAP3 00001503: SWAP2 00001504: PUSH32 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31 00001525: SWAP2 00001526: ADD 00001527: PUSH1 0x40 00001529: MLOAD 0000152a: DUP1 0000152b: SWAP2 0000152c: SUB 0000152d: SWAP1 0000152e: LOG3 0000152f: POP 00001530: POP 00001531: JUMP 00001532: JUMPDEST 00001533: PUSH1 0x00 00001535: PUSH2 0x153c 00001538: PUSH2 0x1d63 0000153b: JUMP 0000153c: JUMPDEST 0000153d: POP 0000153e: PUSH1 0x00 00001540: SLOAD 00001541: SWAP1 00001542: JUMP 00001543: JUMPDEST 00001544: PUSH1 0x00 00001546: DUP2 00001547: TIMESTAMP 00001548: DIFFICULTY 00001549: CALLER 0000154a: PUSH1 0x40 0000154c: MLOAD 0000154d: PUSH1 0x20 0000154f: ADD 00001550: PUSH2 0x157e 00001553: SWAP4 00001554: SWAP3 00001555: SWAP2 00001556: SWAP1 00001557: SWAP3 00001558: DUP4 00001559: MSTORE 0000155a: PUSH1 0x20 0000155c: DUP4 0000155d: ADD 0000155e: SWAP2 0000155f: SWAP1 00001560: SWAP2 00001561: MSTORE 00001562: PUSH1 0x60 00001564: SHL 00001565: PUSH12 0xffffffffffffffffffffffff 00001572: NOT 00001573: AND 00001574: PUSH1 0x40 00001576: DUP3 00001577: ADD 00001578: MSTORE 00001579: PUSH1 0x54 0000157b: ADD 0000157c: SWAP1 0000157d: JUMP 0000157e: JUMPDEST 0000157f: PUSH1 0x40 00001581: MLOAD 00001582: PUSH1 0x20 00001584: DUP2 00001585: DUP4 00001586: SUB 00001587: SUB 00001588: DUP2 00001589: MSTORE 0000158a: SWAP1 0000158b: PUSH1 0x40 0000158d: MSTORE 0000158e: DUP1 0000158f: MLOAD 00001590: SWAP1 00001591: PUSH1 0x20 00001593: ADD 00001594: KECCAK256 00001595: PUSH1 0x00 00001597: SHR 00001598: PUSH2 0x093a 0000159b: SWAP2 0000159c: SWAP1 0000159d: PUSH2 0x2d8d 000015a0: JUMP 000015a1: JUMPDEST 000015a2: PUSH1 0x00 000015a4: DUP3 000015a5: DUP2 000015a6: MSTORE 000015a7: PUSH1 0x08 000015a9: PUSH1 0x20 000015ab: MSTORE 000015ac: PUSH1 0x40 000015ae: SWAP1 000015af: KECCAK256 000015b0: SLOAD 000015b1: PUSH1 0xff 000015b3: AND 000015b4: ISZERO 000015b5: ISZERO 000015b6: PUSH1 0x01 000015b8: EQ 000015b9: ISZERO 000015ba: PUSH2 0x15d5 000015bd: JUMPI 000015be: PUSH1 0x40 000015c0: MLOAD 000015c1: PUSH3 0x461bcd 000015c5: PUSH1 0xe5 000015c7: SHL 000015c8: DUP2 000015c9: MSTORE 000015ca: PUSH1 0x04 000015cc: ADD 000015cd: PUSH2 0x0b0c 000015d0: SWAP1 000015d1: PUSH2 0x2c5f 000015d4: JUMP 000015d5: JUMPDEST 000015d6: PUSH2 0x15e0 000015d9: DUP5 000015da: DUP5 000015db: DUP5 000015dc: PUSH2 0x0b22 000015df: JUMP 000015e0: JUMPDEST 000015e1: PUSH1 0x01 000015e3: PUSH1 0x01 000015e5: PUSH1 0xa0 000015e7: SHL 000015e8: SUB 000015e9: DUP4 000015ea: AND 000015eb: EXTCODESIZE 000015ec: ISZERO 000015ed: PUSH2 0x1619 000015f0: JUMPI 000015f1: PUSH2 0x15fc 000015f4: DUP5 000015f5: DUP5 000015f6: DUP5 000015f7: DUP5 000015f8: PUSH2 0x21c5 000015fb: JUMP 000015fc: JUMPDEST 000015fd: PUSH2 0x1619 00001600: JUMPI 00001601: PUSH1 0x40 00001603: MLOAD 00001604: PUSH4 0x68d2bf6b 00001609: PUSH1 0xe1 0000160b: SHL 0000160c: DUP2 0000160d: MSTORE 0000160e: PUSH1 0x04 00001610: ADD 00001611: PUSH1 0x40 00001613: MLOAD 00001614: DUP1 00001615: SWAP2 00001616: SUB 00001617: SWAP1 00001618: REVERT 00001619: JUMPDEST 0000161a: POP 0000161b: POP 0000161c: POP 0000161d: POP 0000161e: JUMP 0000161f: JUMPDEST 00001620: PUSH1 0x0f 00001622: PUSH1 0x20 00001624: MSTORE 00001625: DUP2 00001626: PUSH1 0x00 00001628: MSTORE 00001629: PUSH1 0x40 0000162b: PUSH1 0x00 0000162d: KECCAK256 0000162e: DUP2 0000162f: DUP2 00001630: SLOAD 00001631: DUP2 00001632: LT 00001633: PUSH2 0x163b 00001636: JUMPI 00001637: PUSH1 0x00 00001639: DUP1 0000163a: REVERT 0000163b: JUMPDEST 0000163c: SWAP1 0000163d: PUSH1 0x00 0000163f: MSTORE 00001640: PUSH1 0x20 00001642: PUSH1 0x00 00001644: KECCAK256 00001645: ADD 00001646: PUSH1 0x00 00001648: SWAP2 00001649: POP 0000164a: SWAP2 0000164b: POP 0000164c: POP 0000164d: SLOAD 0000164e: DUP2 0000164f: JUMP 00001650: JUMPDEST 00001651: PUSH2 0x1658 00001654: PUSH2 0x2573 00001657: JUMP 00001658: JUMPDEST 00001659: PUSH2 0x1660 0000165c: PUSH2 0x2573 0000165f: JUMP 00001660: JUMPDEST 00001661: PUSH1 0x00 00001663: SLOAD 00001664: DUP4 00001665: LT 00001666: PUSH2 0x166f 00001669: JUMPI 0000166a: SWAP3 0000166b: SWAP2 0000166c: POP 0000166d: POP 0000166e: JUMP 0000166f: JUMPDEST 00001670: PUSH2 0x1678 00001673: DUP4 00001674: PUSH2 0x204b 00001677: JUMP 00001678: JUMPDEST 00001679: SWAP1 0000167a: POP 0000167b: DUP1 0000167c: PUSH1 0x40 0000167e: ADD 0000167f: MLOAD 00001680: ISZERO 00001681: PUSH2 0x168a 00001684: JUMPI 00001685: SWAP3 00001686: SWAP2 00001687: POP 00001688: POP 00001689: JUMP 0000168a: JUMPDEST 0000168b: PUSH2 0x1408 0000168e: DUP4 0000168f: PUSH2 0x1eee 00001692: JUMP 00001693: JUMPDEST 00001694: PUSH1 0x60 00001696: PUSH2 0x169e 00001699: DUP3 0000169a: PUSH2 0x1c0e 0000169d: JUMP 0000169e: JUMPDEST 0000169f: PUSH2 0x16bb 000016a2: JUMPI 000016a3: PUSH1 0x40 000016a5: MLOAD 000016a6: PUSH4 0x0a14c4b5 000016ab: PUSH1 0xe4 000016ad: SHL 000016ae: DUP2 000016af: MSTORE 000016b0: PUSH1 0x04 000016b2: ADD 000016b3: PUSH1 0x40 000016b5: MLOAD 000016b6: DUP1 000016b7: SWAP2 000016b8: SUB 000016b9: SWAP1 000016ba: REVERT 000016bb: JUMPDEST 000016bc: PUSH1 0x00 000016be: PUSH2 0x16c5 000016c1: PUSH2 0x1fea 000016c4: JUMP 000016c5: JUMPDEST 000016c6: SWAP1 000016c7: POP 000016c8: DUP1 000016c9: MLOAD 000016ca: PUSH1 0x00 000016cc: EQ 000016cd: ISZERO 000016ce: PUSH2 0x16e6 000016d1: JUMPI 000016d2: PUSH1 0x40 000016d4: MLOAD 000016d5: DUP1 000016d6: PUSH1 0x20 000016d8: ADD 000016d9: PUSH1 0x40 000016db: MSTORE 000016dc: DUP1 000016dd: PUSH1 0x00 000016df: DUP2 000016e0: MSTORE 000016e1: POP 000016e2: PUSH2 0x1408 000016e5: JUMP 000016e6: JUMPDEST 000016e7: DUP1 000016e8: PUSH2 0x16f0 000016eb: DUP5 000016ec: PUSH2 0x1fa8 000016ef: JUMP 000016f0: JUMPDEST 000016f1: PUSH1 0x40 000016f3: MLOAD 000016f4: PUSH1 0x20 000016f6: ADD 000016f7: PUSH2 0x1701 000016fa: SWAP3 000016fb: SWAP2 000016fc: SWAP1 000016fd: PUSH2 0x2b00 00001700: JUMP 00001701: JUMPDEST 00001702: PUSH1 0x40 00001704: MLOAD 00001705: PUSH1 0x20 00001707: DUP2 00001708: DUP4 00001709: SUB 0000170a: SUB 0000170b: DUP2 0000170c: MSTORE 0000170d: SWAP1 0000170e: PUSH1 0x40 00001710: MSTORE 00001711: SWAP4 00001712: SWAP3 00001713: POP 00001714: POP 00001715: POP 00001716: JUMP 00001717: JUMPDEST 00001718: PUSH1 0x40 0000171a: DUP1 0000171b: MLOAD 0000171c: CALLER 0000171d: PUSH1 0x60 0000171f: SHL 00001720: PUSH12 0xffffffffffffffffffffffff 0000172d: NOT 0000172e: AND 0000172f: PUSH1 0x20 00001731: DUP1 00001732: DUP4 00001733: ADD 00001734: SWAP2 00001735: SWAP1 00001736: SWAP2 00001737: MSTORE 00001738: PUSH1 0x34 0000173a: DUP3 0000173b: ADD 0000173c: DUP8 0000173d: SWAP1 0000173e: MSTORE 0000173f: PUSH1 0x54 00001741: DUP3 00001742: ADD 00001743: DUP6 00001744: SWAP1 00001745: MSTORE 00001746: PUSH1 0x74 00001748: DUP1 00001749: DUP4 0000174a: ADD 0000174b: DUP10 0000174c: SWAP1 0000174d: MSTORE 0000174e: DUP4 0000174f: MLOAD 00001750: DUP1 00001751: DUP5 00001752: SUB 00001753: SWAP1 00001754: SWAP2 00001755: ADD 00001756: DUP2 00001757: MSTORE 00001758: PUSH1 0x94 0000175a: DUP4 0000175b: ADD 0000175c: DUP5 0000175d: MSTORE 0000175e: DUP1 0000175f: MLOAD 00001760: SWAP1 00001761: DUP3 00001762: ADD 00001763: KECCAK256 00001764: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000 00001785: PUSH1 0xb4 00001787: DUP5 00001788: ADD 00001789: MSTORE 0000178a: PUSH1 0xd0 0000178c: DUP1 0000178d: DUP5 0000178e: ADD 0000178f: DUP3 00001790: SWAP1 00001791: MSTORE 00001792: DUP5 00001793: MLOAD 00001794: DUP1 00001795: DUP6 00001796: SUB 00001797: SWAP1 00001798: SWAP2 00001799: ADD 0000179a: DUP2 0000179b: MSTORE 0000179c: PUSH1 0xf0 0000179e: SWAP1 0000179f: SWAP4 000017a0: ADD 000017a1: SWAP1 000017a2: SWAP4 000017a3: MSTORE 000017a4: DUP2 000017a5: MLOAD 000017a6: SWAP2 000017a7: ADD 000017a8: KECCAK256 000017a9: DUP6 000017aa: SWAP2 000017ab: DUP5 000017ac: SWAP2 000017ad: DUP7 000017ae: SWAP2 000017af: DUP10 000017b0: SWAP2 000017b1: DUP7 000017b2: SWAP2 000017b3: SWAP1 000017b4: PUSH2 0x17c5 000017b7: PUSH1 0x09 000017b9: SLOAD 000017ba: PUSH1 0x01 000017bc: PUSH1 0x01 000017be: PUSH1 0xa0 000017c0: SHL 000017c1: SUB 000017c2: AND 000017c3: SWAP1 000017c4: JUMP 000017c5: JUMPDEST 000017c6: PUSH1 0x01 000017c8: PUSH1 0x01 000017ca: PUSH1 0xa0 000017cc: SHL 000017cd: SUB 000017ce: AND 000017cf: PUSH2 0x17d8 000017d2: DUP3 000017d3: DUP6 000017d4: PUSH2 0x22bd 000017d7: JUMP 000017d8: JUMPDEST 000017d9: PUSH1 0x01 000017db: PUSH1 0x01 000017dd: PUSH1 0xa0 000017df: SHL 000017e0: SUB 000017e1: AND 000017e2: EQ 000017e3: PUSH2 0x1822 000017e6: JUMPI 000017e7: PUSH1 0x40 000017e9: MLOAD 000017ea: PUSH3 0x461bcd 000017ee: PUSH1 0xe5 000017f0: SHL 000017f1: DUP2 000017f2: MSTORE 000017f3: PUSH1 0x20 000017f5: PUSH1 0x04 000017f7: DUP3 000017f8: ADD 000017f9: MSTORE 000017fa: PUSH1 0x11 000017fc: PUSH1 0x24 000017fe: DUP3 000017ff: ADD 00001800: MSTORE 00001801: PUSH17 0x494e56414c4944205349474e4154555245 00001813: PUSH1 0x78 00001815: SHL 00001816: PUSH1 0x44 00001818: DUP3 00001819: ADD 0000181a: MSTORE 0000181b: PUSH1 0x64 0000181d: ADD 0000181e: PUSH2 0x0b0c 00001821: JUMP 00001822: JUMPDEST 00001823: CALLER 00001824: PUSH1 0x00 00001826: SWAP1 00001827: DUP2 00001828: MSTORE 00001829: PUSH1 0x0e 0000182b: PUSH1 0x20 0000182d: SWAP1 0000182e: DUP2 0000182f: MSTORE 00001830: PUSH1 0x40 00001832: DUP1 00001833: DUP4 00001834: KECCAK256 00001835: DUP11 00001836: DUP5 00001837: MSTORE 00001838: SWAP1 00001839: SWAP2 0000183a: MSTORE 0000183b: SWAP1 0000183c: KECCAK256 0000183d: SLOAD 0000183e: PUSH1 0xff 00001840: AND 00001841: ISZERO 00001842: PUSH2 0x187a 00001845: JUMPI 00001846: PUSH1 0x40 00001848: MLOAD 00001849: PUSH3 0x461bcd 0000184d: PUSH1 0xe5 0000184f: SHL 00001850: DUP2 00001851: MSTORE 00001852: PUSH1 0x20 00001854: PUSH1 0x04 00001856: DUP3 00001857: ADD 00001858: MSTORE 00001859: PUSH1 0x0a 0000185b: PUSH1 0x24 0000185d: DUP3 0000185e: ADD 0000185f: MSTORE 00001860: PUSH10 0x55534544204e4f4e4345 0000186b: PUSH1 0xb0 0000186d: SHL 0000186e: PUSH1 0x44 00001870: DUP3 00001871: ADD 00001872: MSTORE 00001873: PUSH1 0x64 00001875: ADD 00001876: PUSH2 0x0b0c 00001879: JUMP 0000187a: JUMPDEST 0000187b: TIMESTAMP 0000187c: DUP6 0000187d: LT 0000187e: ISZERO 0000187f: PUSH2 0x18be 00001882: JUMPI 00001883: PUSH1 0x40 00001885: MLOAD 00001886: PUSH3 0x461bcd 0000188a: PUSH1 0xe5 0000188c: SHL 0000188d: DUP2 0000188e: MSTORE 0000188f: PUSH1 0x20 00001891: PUSH1 0x04 00001893: DUP3 00001894: ADD 00001895: MSTORE 00001896: PUSH1 0x11 00001898: PUSH1 0x24 0000189a: DUP3 0000189b: ADD 0000189c: MSTORE 0000189d: PUSH17 0x14d251d390551554914811561412549151 000018af: PUSH1 0x7a 000018b1: SHL 000018b2: PUSH1 0x44 000018b4: DUP3 000018b5: ADD 000018b6: MSTORE 000018b7: PUSH1 0x64 000018b9: ADD 000018ba: PUSH2 0x0b0c 000018bd: JUMP 000018be: JUMPDEST 000018bf: CALLER 000018c0: PUSH1 0x00 000018c2: SWAP1 000018c3: DUP2 000018c4: MSTORE 000018c5: PUSH1 0x0e 000018c7: PUSH1 0x20 000018c9: SWAP1 000018ca: DUP2 000018cb: MSTORE 000018cc: PUSH1 0x40 000018ce: DUP1 000018cf: DUP4 000018d0: KECCAK256 000018d1: DUP11 000018d2: DUP5 000018d3: MSTORE 000018d4: SWAP1 000018d5: SWAP2 000018d6: MSTORE 000018d7: SWAP1 000018d8: KECCAK256 000018d9: DUP1 000018da: SLOAD 000018db: PUSH1 0xff 000018dd: NOT 000018de: AND 000018df: PUSH1 0x01 000018e1: OR 000018e2: SWAP1 000018e3: SSTORE 000018e4: DUP12 000018e5: PUSH2 0x1930 000018e8: JUMPI 000018e9: PUSH1 0x40 000018eb: MLOAD 000018ec: PUSH3 0x461bcd 000018f0: PUSH1 0xe5 000018f2: SHL 000018f3: DUP2 000018f4: MSTORE 000018f5: PUSH1 0x20 000018f7: PUSH1 0x04 000018f9: DUP3 000018fa: ADD 000018fb: MSTORE 000018fc: PUSH1 0x1f 000018fe: PUSH1 0x24 00001900: DUP3 00001901: ADD 00001902: MSTORE 00001903: PUSH32 0x5155414e54495459204d5553542042452047524541544552205448414e203000 00001924: PUSH1 0x44 00001926: DUP3 00001927: ADD 00001928: MSTORE 00001929: PUSH1 0x64 0000192b: ADD 0000192c: PUSH2 0x0b0c 0000192f: JUMP 00001930: JUMPDEST 00001931: DUP12 00001932: PUSH2 0x193a 00001935: ADDRESS 00001936: PUSH2 0x10e9 00001939: JUMP 0000193a: JUMPDEST 0000193b: LT 0000193c: ISZERO 0000193d: PUSH2 0x1988 00001940: JUMPI 00001941: PUSH1 0x40 00001943: MLOAD 00001944: PUSH3 0x461bcd 00001948: PUSH1 0xe5 0000194a: SHL 0000194b: DUP2 0000194c: MSTORE 0000194d: PUSH1 0x20 0000194f: PUSH1 0x04 00001951: DUP3 00001952: ADD 00001953: MSTORE 00001954: PUSH1 0x1a 00001956: PUSH1 0x24 00001958: DUP3 00001959: ADD 0000195a: MSTORE 0000195b: PUSH32 0x5155414e54495459204953204d4f5245205448414e20504f4f4c000000000000 0000197c: PUSH1 0x44 0000197e: DUP3 0000197f: ADD 00001980: MSTORE 00001981: PUSH1 0x64 00001983: ADD 00001984: PUSH2 0x0b0c 00001987: JUMP 00001988: JUMPDEST 00001989: DUP13 0000198a: CALLVALUE 0000198b: LT 0000198c: ISZERO 0000198d: PUSH2 0x19d8 00001990: JUMPI 00001991: PUSH1 0x40 00001993: MLOAD 00001994: PUSH3 0x461bcd 00001998: PUSH1 0xe5 0000199a: SHL 0000199b: DUP2 0000199c: MSTORE 0000199d: PUSH1 0x20 0000199f: PUSH1 0x04 000019a1: DUP3 000019a2: ADD 000019a3: MSTORE 000019a4: PUSH1 0x1c 000019a6: PUSH1 0x24 000019a8: DUP3 000019a9: ADD 000019aa: MSTORE 000019ab: PUSH32 0x42414c414e434520544f204d494e5420494e53554646494349454e5400000000 000019cc: PUSH1 0x44 000019ce: DUP3 000019cf: ADD 000019d0: MSTORE 000019d1: PUSH1 0x64 000019d3: ADD 000019d4: PUSH2 0x0b0c 000019d7: JUMP 000019d8: JUMPDEST 000019d9: PUSH2 0x19e2 000019dc: ADDRESS 000019dd: DUP15 000019de: PUSH2 0x2394 000019e1: JUMP 000019e2: JUMPDEST 000019e3: PUSH1 0x0c 000019e5: SLOAD 000019e6: JUMPDEST 000019e7: DUP13 000019e8: PUSH1 0x0c 000019ea: SLOAD 000019eb: PUSH2 0x19f4 000019ee: SWAP2 000019ef: SWAP1 000019f0: PUSH2 0x2cd4 000019f3: JUMP 000019f4: JUMPDEST 000019f5: DUP2 000019f6: LT 000019f7: ISZERO 000019f8: PUSH2 0x1a39 000019fb: JUMPI 000019fc: PUSH2 0x1a06 000019ff: ADDRESS 00001a00: CALLER 00001a01: DUP4 00001a02: PUSH2 0x245d 00001a05: JUMP 00001a06: JUMPDEST 00001a07: PUSH1 0x00 00001a09: DUP11 00001a0a: DUP2 00001a0b: MSTORE 00001a0c: PUSH1 0x0f 00001a0e: PUSH1 0x20 00001a10: SWAP1 00001a11: DUP2 00001a12: MSTORE 00001a13: PUSH1 0x40 00001a15: DUP3 00001a16: KECCAK256 00001a17: DUP1 00001a18: SLOAD 00001a19: PUSH1 0x01 00001a1b: DUP2 00001a1c: ADD 00001a1d: DUP3 00001a1e: SSTORE 00001a1f: SWAP1 00001a20: DUP4 00001a21: MSTORE 00001a22: SWAP2 00001a23: KECCAK256 00001a24: ADD 00001a25: DUP2 00001a26: SWAP1 00001a27: SSTORE 00001a28: DUP1 00001a29: PUSH2 0x1a31 00001a2c: DUP2 00001a2d: PUSH2 0x2d72 00001a30: JUMP 00001a31: JUMPDEST 00001a32: SWAP2 00001a33: POP 00001a34: POP 00001a35: PUSH2 0x19e6 00001a38: JUMP 00001a39: JUMPDEST 00001a3a: POP 00001a3b: DUP12 00001a3c: PUSH1 0x0c 00001a3e: PUSH1 0x00 00001a40: DUP3 00001a41: DUP3 00001a42: SLOAD 00001a43: PUSH2 0x1a4c 00001a46: SWAP2 00001a47: SWAP1 00001a48: PUSH2 0x2cd4 00001a4b: JUMP 00001a4c: JUMPDEST 00001a4d: SWAP3 00001a4e: POP 00001a4f: POP 00001a50: DUP2 00001a51: SWAP1 00001a52: SSTORE 00001a53: POP 00001a54: PUSH32 0x9ee47cf30294467ad4067eabb72650081c0ed7a84c55b698e0300fc1c9f8bc02 00001a75: CALLER 00001a76: DUP14 00001a77: DUP12 00001a78: PUSH1 0x0f 00001a7a: PUSH1 0x00 00001a7c: DUP15 00001a7d: DUP2 00001a7e: MSTORE 00001a7f: PUSH1 0x20 00001a81: ADD 00001a82: SWAP1 00001a83: DUP2 00001a84: MSTORE 00001a85: PUSH1 0x20 00001a87: ADD 00001a88: PUSH1 0x00 00001a8a: KECCAK256 00001a8b: PUSH1 0x40 00001a8d: MLOAD 00001a8e: PUSH2 0x1a9a 00001a91: SWAP5 00001a92: SWAP4 00001a93: SWAP3 00001a94: SWAP2 00001a95: SWAP1 00001a96: PUSH2 0x2b6c 00001a99: JUMP 00001a9a: JUMPDEST 00001a9b: PUSH1 0x40 00001a9d: MLOAD 00001a9e: DUP1 00001a9f: SWAP2 00001aa0: SUB 00001aa1: SWAP1 00001aa2: LOG1 00001aa3: POP 00001aa4: POP 00001aa5: POP 00001aa6: POP 00001aa7: POP 00001aa8: POP 00001aa9: POP 00001aaa: POP 00001aab: POP 00001aac: POP 00001aad: POP 00001aae: POP 00001aaf: POP 00001ab0: JUMP 00001ab1: JUMPDEST 00001ab2: PUSH1 0x00 00001ab4: DUP2 00001ab5: DUP2 00001ab6: MSTORE 00001ab7: PUSH1 0x0f 00001ab9: PUSH1 0x20 00001abb: SWAP1 00001abc: DUP2 00001abd: MSTORE 00001abe: PUSH1 0x40 00001ac0: SWAP2 00001ac1: DUP3 00001ac2: SWAP1 00001ac3: KECCAK256 00001ac4: DUP1 00001ac5: SLOAD 00001ac6: DUP4 00001ac7: MLOAD 00001ac8: DUP2 00001ac9: DUP5 00001aca: MUL 00001acb: DUP2 00001acc: ADD 00001acd: DUP5 00001ace: ADD 00001acf: SWAP1 00001ad0: SWAP5 00001ad1: MSTORE 00001ad2: DUP1 00001ad3: DUP5 00001ad4: MSTORE 00001ad5: PUSH1 0x60 00001ad7: SWAP4 00001ad8: SWAP3 00001ad9: DUP4 00001ada: ADD 00001adb: DUP3 00001adc: DUP3 00001add: DUP1 00001ade: ISZERO 00001adf: PUSH2 0x1b07 00001ae2: JUMPI 00001ae3: PUSH1 0x20 00001ae5: MUL 00001ae6: DUP3 00001ae7: ADD 00001ae8: SWAP2 00001ae9: SWAP1 00001aea: PUSH1 0x00 00001aec: MSTORE 00001aed: PUSH1 0x20 00001aef: PUSH1 0x00 00001af1: KECCAK256 00001af2: SWAP1 00001af3: JUMPDEST 00001af4: DUP2 00001af5: SLOAD 00001af6: DUP2 00001af7: MSTORE 00001af8: PUSH1 0x20 00001afa: ADD 00001afb: SWAP1 00001afc: PUSH1 0x01 00001afe: ADD 00001aff: SWAP1 00001b00: DUP1 00001b01: DUP4 00001b02: GT 00001b03: PUSH2 0x1af3 00001b06: JUMPI 00001b07: JUMPDEST 00001b08: POP 00001b09: POP 00001b0a: POP 00001b0b: POP 00001b0c: POP 00001b0d: SWAP1 00001b0e: POP 00001b0f: SWAP2 00001b10: SWAP1 00001b11: POP 00001b12: JUMP 00001b13: JUMPDEST 00001b14: PUSH1 0x00 00001b16: PUSH2 0x1b1d 00001b19: PUSH2 0x1d63 00001b1c: JUMP 00001b1d: JUMPDEST 00001b1e: POP 00001b1f: PUSH1 0x01 00001b21: SLOAD 00001b22: SWAP1 00001b23: JUMP 00001b24: JUMPDEST 00001b25: PUSH1 0x00 00001b27: PUSH2 0x1b2e 00001b2a: PUSH2 0x1d63 00001b2d: JUMP 00001b2e: JUMPDEST 00001b2f: PUSH1 0x01 00001b31: PUSH1 0x01 00001b33: PUSH1 0xa0 00001b35: SHL 00001b36: SUB 00001b37: DUP3 00001b38: AND 00001b39: PUSH1 0x00 00001b3b: SWAP1 00001b3c: DUP2 00001b3d: MSTORE 00001b3e: PUSH1 0x05 00001b40: PUSH1 0x20 00001b42: MSTORE 00001b43: PUSH1 0x40 00001b45: SWAP1 00001b46: DUP2 00001b47: SWAP1 00001b48: KECCAK256 00001b49: SLOAD 00001b4a: PUSH1 0x01 00001b4c: PUSH1 0x01 00001b4e: PUSH1 0x40 00001b50: SHL 00001b51: SUB 00001b52: SWAP2 00001b53: SHR 00001b54: AND 00001b55: PUSH2 0x093a 00001b58: JUMP 00001b59: JUMPDEST 00001b5a: PUSH1 0x01 00001b5c: PUSH1 0x01 00001b5e: PUSH1 0xa0 00001b60: SHL 00001b61: SUB 00001b62: SWAP2 00001b63: DUP3 00001b64: AND 00001b65: PUSH1 0x00 00001b67: SWAP1 00001b68: DUP2 00001b69: MSTORE 00001b6a: PUSH1 0x07 00001b6c: PUSH1 0x20 00001b6e: SWAP1 00001b6f: DUP2 00001b70: MSTORE 00001b71: PUSH1 0x40 00001b73: DUP1 00001b74: DUP4 00001b75: KECCAK256 00001b76: SWAP4 00001b77: SWAP1 00001b78: SWAP5 00001b79: AND 00001b7a: DUP3 00001b7b: MSTORE 00001b7c: SWAP2 00001b7d: SWAP1 00001b7e: SWAP2 00001b7f: MSTORE 00001b80: KECCAK256 00001b81: SLOAD 00001b82: PUSH1 0xff 00001b84: AND 00001b85: SWAP1 00001b86: JUMP 00001b87: JUMPDEST 00001b88: PUSH2 0x1b8f 00001b8b: PUSH2 0x2573 00001b8e: JUMP 00001b8f: JUMPDEST 00001b90: PUSH2 0x093a 00001b93: DUP3 00001b94: PUSH2 0x204b 00001b97: JUMP 00001b98: JUMPDEST 00001b99: PUSH2 0x1ba0 00001b9c: PUSH2 0x1d63 00001b9f: JUMP 00001ba0: JUMPDEST 00001ba1: PUSH1 0x01 00001ba3: PUSH1 0x01 00001ba5: PUSH1 0xa0 00001ba7: SHL 00001ba8: SUB 00001ba9: DUP2 00001baa: AND 00001bab: PUSH2 0x1c05 00001bae: JUMPI 00001baf: PUSH1 0x40 00001bb1: MLOAD 00001bb2: PUSH3 0x461bcd 00001bb6: PUSH1 0xe5 00001bb8: SHL 00001bb9: DUP2 00001bba: MSTORE 00001bbb: PUSH1 0x20 00001bbd: PUSH1 0x04 00001bbf: DUP3 00001bc0: ADD 00001bc1: MSTORE 00001bc2: PUSH1 0x26 00001bc4: PUSH1 0x24 00001bc6: DUP3 00001bc7: ADD 00001bc8: MSTORE 00001bc9: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061 00001bea: PUSH1 0x44 00001bec: DUP3 00001bed: ADD 00001bee: MSTORE 00001bef: PUSH6 0x646472657373 00001bf6: PUSH1 0xd0 00001bf8: SHL 00001bf9: PUSH1 0x64 00001bfb: DUP3 00001bfc: ADD 00001bfd: MSTORE 00001bfe: PUSH1 0x84 00001c00: ADD 00001c01: PUSH2 0x0b0c 00001c04: JUMP 00001c05: JUMPDEST 00001c06: PUSH2 0x0f38 00001c09: DUP2 00001c0a: PUSH2 0x1ff9 00001c0d: JUMP 00001c0e: JUMPDEST 00001c0f: PUSH1 0x00 00001c11: DUP1 00001c12: SLOAD 00001c13: DUP3 00001c14: LT 00001c15: DUP1 00001c16: ISZERO 00001c17: PUSH2 0x093a 00001c1a: JUMPI 00001c1b: POP 00001c1c: POP 00001c1d: PUSH1 0x00 00001c1f: SWAP1 00001c20: DUP2 00001c21: MSTORE 00001c22: PUSH1 0x04 00001c24: PUSH1 0x20 00001c26: MSTORE 00001c27: PUSH1 0x40 00001c29: SWAP1 00001c2a: KECCAK256 00001c2b: SLOAD 00001c2c: PUSH1 0x01 00001c2e: PUSH1 0xe0 00001c30: SHL 00001c31: AND 00001c32: ISZERO 00001c33: SWAP1 00001c34: JUMP 00001c35: JUMPDEST 00001c36: PUSH1 0x00 00001c38: DUP1 00001c39: JUMPDEST 00001c3a: DUP3 00001c3b: MLOAD 00001c3c: DUP2 00001c3d: LT 00001c3e: ISZERO 00001c3f: PUSH2 0x1ca8 00001c42: JUMPI 00001c43: PUSH1 0x01 00001c45: PUSH1 0x08 00001c47: PUSH1 0x00 00001c49: DUP6 00001c4a: DUP5 00001c4b: DUP2 00001c4c: MLOAD 00001c4d: DUP2 00001c4e: LT 00001c4f: PUSH2 0x1c68 00001c52: JUMPI 00001c53: PUSH4 0x4e487b71 00001c58: PUSH1 0xe0 00001c5a: SHL 00001c5b: PUSH1 0x00 00001c5d: MSTORE 00001c5e: PUSH1 0x32 00001c60: PUSH1 0x04 00001c62: MSTORE 00001c63: PUSH1 0x24 00001c65: PUSH1 0x00 00001c67: REVERT 00001c68: JUMPDEST 00001c69: PUSH1 0x20 00001c6b: MUL 00001c6c: PUSH1 0x20 00001c6e: ADD 00001c6f: ADD 00001c70: MLOAD 00001c71: DUP2 00001c72: MSTORE 00001c73: PUSH1 0x20 00001c75: ADD 00001c76: SWAP1 00001c77: DUP2 00001c78: MSTORE 00001c79: PUSH1 0x20 00001c7b: ADD 00001c7c: PUSH1 0x00 00001c7e: KECCAK256 00001c7f: PUSH1 0x00 00001c81: PUSH2 0x0100 00001c84: EXP 00001c85: DUP2 00001c86: SLOAD 00001c87: DUP2 00001c88: PUSH1 0xff 00001c8a: MUL 00001c8b: NOT 00001c8c: AND 00001c8d: SWAP1 00001c8e: DUP4 00001c8f: ISZERO 00001c90: ISZERO 00001c91: MUL 00001c92: OR 00001c93: SWAP1 00001c94: SSTORE 00001c95: POP 00001c96: DUP1 00001c97: DUP1 00001c98: PUSH2 0x1ca0 00001c9b: SWAP1 00001c9c: PUSH2 0x2d72 00001c9f: JUMP 00001ca0: JUMPDEST 00001ca1: SWAP2 00001ca2: POP 00001ca3: POP 00001ca4: PUSH2 0x1c39 00001ca7: JUMP 00001ca8: JUMPDEST 00001ca9: POP 00001caa: DUP2 00001cab: MLOAD 00001cac: PUSH1 0x00 00001cae: SWAP1 00001caf: ISZERO 00001cb0: PUSH2 0x1cfc 00001cb3: JUMPI 00001cb4: PUSH1 0x08 00001cb6: PUSH1 0x00 00001cb8: DUP5 00001cb9: DUP4 00001cba: DUP2 00001cbb: MLOAD 00001cbc: DUP2 00001cbd: LT 00001cbe: PUSH2 0x1cd7 00001cc1: JUMPI 00001cc2: PUSH4 0x4e487b71 00001cc7: PUSH1 0xe0 00001cc9: SHL 00001cca: PUSH1 0x00 00001ccc: MSTORE 00001ccd: PUSH1 0x32 00001ccf: PUSH1 0x04 00001cd1: MSTORE 00001cd2: PUSH1 0x24 00001cd4: PUSH1 0x00 00001cd6: REVERT 00001cd7: JUMPDEST 00001cd8: PUSH1 0x20 00001cda: SWAP1 00001cdb: DUP2 00001cdc: MUL 00001cdd: SWAP2 00001cde: SWAP1 00001cdf: SWAP2 00001ce0: ADD 00001ce1: DUP2 00001ce2: ADD 00001ce3: MLOAD 00001ce4: DUP3 00001ce5: MSTORE 00001ce6: DUP2 00001ce7: ADD 00001ce8: SWAP2 00001ce9: SWAP1 00001cea: SWAP2 00001ceb: MSTORE 00001cec: PUSH1 0x40 00001cee: ADD 00001cef: PUSH1 0x00 00001cf1: KECCAK256 00001cf2: SLOAD 00001cf3: PUSH1 0xff 00001cf5: AND 00001cf6: SWAP4 00001cf7: SWAP3 00001cf8: POP 00001cf9: POP 00001cfa: POP 00001cfb: JUMP 00001cfc: JUMPDEST 00001cfd: POP 00001cfe: SWAP2 00001cff: SWAP1 00001d00: POP 00001d01: JUMP 00001d02: JUMPDEST 00001d03: PUSH1 0x00 00001d05: DUP2 00001d06: PUSH1 0x00 00001d08: SLOAD 00001d09: DUP2 00001d0a: LT 00001d0b: ISZERO 00001d0c: PUSH2 0x1d4a 00001d0f: JUMPI 00001d10: PUSH1 0x00 00001d12: DUP2 00001d13: DUP2 00001d14: MSTORE 00001d15: PUSH1 0x04 00001d17: PUSH1 0x20 00001d19: MSTORE 00001d1a: PUSH1 0x40 00001d1c: SWAP1 00001d1d: KECCAK256 00001d1e: SLOAD 00001d1f: PUSH1 0x01 00001d21: PUSH1 0xe0 00001d23: SHL 00001d24: DUP2 00001d25: AND 00001d26: PUSH2 0x1d48 00001d29: JUMPI 00001d2a: JUMPDEST 00001d2b: DUP1 00001d2c: PUSH2 0x1408 00001d2f: JUMPI 00001d30: POP 00001d31: PUSH1 0x00 00001d33: NOT 00001d34: ADD 00001d35: PUSH1 0x00 00001d37: DUP2 00001d38: DUP2 00001d39: MSTORE 00001d3a: PUSH1 0x04 00001d3c: PUSH1 0x20 00001d3e: MSTORE 00001d3f: PUSH1 0x40 00001d41: SWAP1 00001d42: KECCAK256 00001d43: SLOAD 00001d44: PUSH2 0x1d2a 00001d47: JUMP 00001d48: JUMPDEST 00001d49: POP 00001d4a: JUMPDEST 00001d4b: PUSH1 0x40 00001d4d: MLOAD 00001d4e: PUSH4 0x6f96cda1 00001d53: PUSH1 0xe1 00001d55: SHL 00001d56: DUP2 00001d57: MSTORE 00001d58: PUSH1 0x04 00001d5a: ADD 00001d5b: PUSH1 0x40 00001d5d: MLOAD 00001d5e: DUP1 00001d5f: SWAP2 00001d60: SUB 00001d61: SWAP1 00001d62: REVERT 00001d63: JUMPDEST 00001d64: PUSH1 0x09 00001d66: SLOAD 00001d67: PUSH1 0x01 00001d69: PUSH1 0x01 00001d6b: PUSH1 0xa0 00001d6d: SHL 00001d6e: SUB 00001d6f: AND 00001d70: CALLER 00001d71: EQ 00001d72: PUSH2 0x1149 00001d75: JUMPI 00001d76: PUSH1 0x40 00001d78: MLOAD 00001d79: PUSH3 0x461bcd 00001d7d: PUSH1 0xe5 00001d7f: SHL 00001d80: DUP2 00001d81: MSTORE 00001d82: PUSH1 0x20 00001d84: PUSH1 0x04 00001d86: DUP3 00001d87: ADD 00001d88: DUP2 00001d89: SWAP1 00001d8a: MSTORE 00001d8b: PUSH1 0x24 00001d8d: DUP3 00001d8e: ADD 00001d8f: MSTORE 00001d90: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 00001db1: PUSH1 0x44 00001db3: DUP3 00001db4: ADD 00001db5: MSTORE 00001db6: PUSH1 0x64 00001db8: ADD 00001db9: PUSH2 0x0b0c 00001dbc: JUMP 00001dbd: JUMPDEST 00001dbe: PUSH1 0x00 00001dc0: PUSH2 0x1dc8 00001dc3: DUP4 00001dc4: PUSH2 0x1d02 00001dc7: JUMP 00001dc8: JUMPDEST 00001dc9: SWAP1 00001dca: POP 00001dcb: DUP1 00001dcc: PUSH1 0x00 00001dce: DUP1 00001dcf: PUSH2 0x1de6 00001dd2: DUP7 00001dd3: PUSH1 0x00 00001dd5: SWAP1 00001dd6: DUP2 00001dd7: MSTORE 00001dd8: PUSH1 0x06 00001dda: PUSH1 0x20 00001ddc: MSTORE 00001ddd: PUSH1 0x40 00001ddf: SWAP1 00001de0: KECCAK256 00001de1: DUP1 00001de2: SLOAD 00001de3: SWAP1 00001de4: SWAP2 00001de5: JUMP 00001de6: JUMPDEST 00001de7: SWAP2 00001de8: POP 00001de9: SWAP2 00001dea: POP 00001deb: DUP5 00001dec: ISZERO 00001ded: PUSH2 0x1e26 00001df0: JUMPI 00001df1: PUSH2 0x1dfb 00001df4: DUP2 00001df5: DUP5 00001df6: CALLER 00001df7: PUSH2 0x0bac 00001dfa: JUMP 00001dfb: JUMPDEST 00001dfc: PUSH2 0x1e26 00001dff: JUMPI 00001e00: PUSH2 0x1e09 00001e03: DUP4 00001e04: CALLER 00001e05: PUSH2 0x1b59 00001e08: JUMP 00001e09: JUMPDEST 00001e0a: PUSH2 0x1e26 00001e0d: JUMPI 00001e0e: PUSH1 0x40 00001e10: MLOAD 00001e11: PUSH4 0x2ce44b5f 00001e16: PUSH1 0xe1 00001e18: SHL 00001e19: DUP2 00001e1a: MSTORE 00001e1b: PUSH1 0x04 00001e1d: ADD 00001e1e: PUSH1 0x40 00001e20: MLOAD 00001e21: DUP1 00001e22: SWAP2 00001e23: SUB 00001e24: SWAP1 00001e25: REVERT 00001e26: JUMPDEST 00001e27: DUP1 00001e28: ISZERO 00001e29: PUSH2 0x1e31 00001e2c: JUMPI 00001e2d: PUSH1 0x00 00001e2f: DUP3 00001e30: SSTORE 00001e31: JUMPDEST 00001e32: PUSH1 0x01 00001e34: PUSH1 0x01 00001e36: PUSH1 0xa0 00001e38: SHL 00001e39: SUB 00001e3a: DUP4 00001e3b: AND 00001e3c: PUSH1 0x00 00001e3e: DUP2 00001e3f: DUP2 00001e40: MSTORE 00001e41: PUSH1 0x05 00001e43: PUSH1 0x20 00001e45: MSTORE 00001e46: PUSH1 0x40 00001e48: SWAP1 00001e49: KECCAK256 00001e4a: DUP1 00001e4b: SLOAD 00001e4c: PUSH16 0xffffffffffffffffffffffffffffffff 00001e5d: ADD 00001e5e: SWAP1 00001e5f: SSTORE 00001e60: TIMESTAMP 00001e61: PUSH1 0xa0 00001e63: SHL 00001e64: OR 00001e65: PUSH1 0x03 00001e67: PUSH1 0xe0 00001e69: SHL 00001e6a: OR 00001e6b: PUSH1 0x00 00001e6d: DUP8 00001e6e: DUP2 00001e6f: MSTORE 00001e70: PUSH1 0x04 00001e72: PUSH1 0x20 00001e74: MSTORE 00001e75: PUSH1 0x40 00001e77: SWAP1 00001e78: KECCAK256 00001e79: SSTORE 00001e7a: PUSH1 0x01 00001e7c: PUSH1 0xe1 00001e7e: SHL 00001e7f: DUP5 00001e80: AND 00001e81: PUSH2 0x1eb8 00001e84: JUMPI 00001e85: PUSH1 0x01 00001e87: DUP7 00001e88: ADD 00001e89: PUSH1 0x00 00001e8b: DUP2 00001e8c: DUP2 00001e8d: MSTORE 00001e8e: PUSH1 0x04 00001e90: PUSH1 0x20 00001e92: MSTORE 00001e93: PUSH1 0x40 00001e95: SWAP1 00001e96: KECCAK256 00001e97: SLOAD 00001e98: PUSH2 0x1eb6 00001e9b: JUMPI 00001e9c: PUSH1 0x00 00001e9e: SLOAD 00001e9f: DUP2 00001ea0: EQ 00001ea1: PUSH2 0x1eb6 00001ea4: JUMPI 00001ea5: PUSH1 0x00 00001ea7: DUP2 00001ea8: DUP2 00001ea9: MSTORE 00001eaa: PUSH1 0x04 00001eac: PUSH1 0x20 00001eae: MSTORE 00001eaf: PUSH1 0x40 00001eb1: SWAP1 00001eb2: KECCAK256 00001eb3: DUP6 00001eb4: SWAP1 00001eb5: SSTORE 00001eb6: JUMPDEST 00001eb7: POP 00001eb8: JUMPDEST 00001eb9: PUSH1 0x40 00001ebb: MLOAD 00001ebc: DUP7 00001ebd: SWAP1 00001ebe: PUSH1 0x00 00001ec0: SWAP1 00001ec1: PUSH1 0x01 00001ec3: PUSH1 0x01 00001ec5: PUSH1 0xa0 00001ec7: SHL 00001ec8: SUB 00001ec9: DUP7 00001eca: AND 00001ecb: SWAP1 00001ecc: PUSH1 0x00 00001ece: DUP1 00001ecf: MLOAD 00001ed0: PUSH1 0x20 00001ed2: PUSH2 0x2df0 00001ed5: DUP4 00001ed6: CODECOPY 00001ed7: DUP2 00001ed8: MLOAD 00001ed9: SWAP2 00001eda: MSTORE 00001edb: SWAP1 00001edc: DUP4 00001edd: SWAP1 00001ede: LOG4 00001edf: POP 00001ee0: POP 00001ee1: PUSH1 0x01 00001ee3: DUP1 00001ee4: SLOAD 00001ee5: DUP2 00001ee6: ADD 00001ee7: SWAP1 00001ee8: SSTORE 00001ee9: POP 00001eea: POP 00001eeb: POP 00001eec: POP 00001eed: JUMP 00001eee: JUMPDEST 00001eef: PUSH2 0x1ef6 00001ef2: PUSH2 0x2573 00001ef5: JUMP 00001ef6: JUMPDEST 00001ef7: PUSH2 0x093a 00001efa: PUSH2 0x1f02 00001efd: DUP4 00001efe: PUSH2 0x1d02 00001f01: JUMP 00001f02: JUMPDEST 00001f03: PUSH2 0x2530 00001f06: JUMP 00001f07: JUMPDEST 00001f08: PUSH1 0x00 00001f0a: DUP2 00001f0b: DUP2 00001f0c: MSTORE 00001f0d: PUSH1 0x04 00001f0f: PUSH1 0x20 00001f11: MSTORE 00001f12: PUSH1 0x40 00001f14: SWAP1 00001f15: KECCAK256 00001f16: SLOAD 00001f17: PUSH2 0x0f38 00001f1a: JUMPI 00001f1b: PUSH2 0x1f23 00001f1e: DUP2 00001f1f: PUSH2 0x1d02 00001f22: JUMP 00001f23: JUMPDEST 00001f24: PUSH1 0x00 00001f26: DUP3 00001f27: DUP2 00001f28: MSTORE 00001f29: PUSH1 0x04 00001f2b: PUSH1 0x20 00001f2d: MSTORE 00001f2e: PUSH1 0x40 00001f30: SWAP1 00001f31: KECCAK256 00001f32: SSTORE 00001f33: POP 00001f34: JUMP 00001f35: JUMPDEST 00001f36: PUSH1 0x00 00001f38: DUP1 00001f39: JUMPDEST 00001f3a: DUP3 00001f3b: MLOAD 00001f3c: DUP2 00001f3d: LT 00001f3e: ISZERO 00001f3f: PUSH2 0x1ca8 00001f42: JUMPI 00001f43: PUSH1 0x00 00001f45: PUSH1 0x08 00001f47: PUSH1 0x00 00001f49: DUP6 00001f4a: DUP5 00001f4b: DUP2 00001f4c: MLOAD 00001f4d: DUP2 00001f4e: LT 00001f4f: PUSH2 0x1f68 00001f52: JUMPI 00001f53: PUSH4 0x4e487b71 00001f58: PUSH1 0xe0 00001f5a: SHL 00001f5b: PUSH1 0x00 00001f5d: MSTORE 00001f5e: PUSH1 0x32 00001f60: PUSH1 0x04 00001f62: MSTORE 00001f63: PUSH1 0x24 00001f65: PUSH1 0x00 00001f67: REVERT 00001f68: JUMPDEST 00001f69: PUSH1 0x20 00001f6b: MUL 00001f6c: PUSH1 0x20 00001f6e: ADD 00001f6f: ADD 00001f70: MLOAD 00001f71: DUP2 00001f72: MSTORE 00001f73: PUSH1 0x20 00001f75: ADD 00001f76: SWAP1 00001f77: DUP2 00001f78: MSTORE 00001f79: PUSH1 0x20 00001f7b: ADD 00001f7c: PUSH1 0x00 00001f7e: KECCAK256 00001f7f: PUSH1 0x00 00001f81: PUSH2 0x0100 00001f84: EXP 00001f85: DUP2 00001f86: SLOAD 00001f87: DUP2 00001f88: PUSH1 0xff 00001f8a: MUL 00001f8b: NOT 00001f8c: AND 00001f8d: SWAP1 00001f8e: DUP4 00001f8f: ISZERO 00001f90: ISZERO 00001f91: MUL 00001f92: OR 00001f93: SWAP1 00001f94: SSTORE 00001f95: POP 00001f96: DUP1 00001f97: DUP1 00001f98: PUSH2 0x1fa0 00001f9b: SWAP1 00001f9c: PUSH2 0x2d72 00001f9f: JUMP 00001fa0: JUMPDEST 00001fa1: SWAP2 00001fa2: POP 00001fa3: POP 00001fa4: PUSH2 0x1f39 00001fa7: JUMP 00001fa8: JUMPDEST 00001fa9: PUSH1 0x40 00001fab: DUP1 00001fac: MLOAD 00001fad: PUSH1 0x80 00001faf: ADD 00001fb0: SWAP1 00001fb1: DUP2 00001fb2: SWAP1 00001fb3: MSTORE 00001fb4: DUP1 00001fb5: DUP3 00001fb6: JUMPDEST 00001fb7: PUSH1 0x01 00001fb9: DUP4 00001fba: SUB 00001fbb: SWAP3 00001fbc: POP 00001fbd: PUSH1 0x0a 00001fbf: DUP2 00001fc0: MOD 00001fc1: PUSH1 0x30 00001fc3: ADD 00001fc4: DUP4 00001fc5: MSTORE8 00001fc6: PUSH1 0x0a 00001fc8: SWAP1 00001fc9: DIV 00001fca: DUP1 00001fcb: PUSH2 0x1fd3 00001fce: JUMPI 00001fcf: PUSH2 0x1fd8 00001fd2: JUMP 00001fd3: JUMPDEST 00001fd4: PUSH2 0x1fb6 00001fd7: JUMP 00001fd8: JUMPDEST 00001fd9: POP 00001fda: DUP2 00001fdb: SWAP1 00001fdc: SUB 00001fdd: PUSH1 0x1f 00001fdf: NOT 00001fe0: SWAP1 00001fe1: SWAP2 00001fe2: ADD 00001fe3: SWAP1 00001fe4: DUP2 00001fe5: MSTORE 00001fe6: SWAP2 00001fe7: SWAP1 00001fe8: POP 00001fe9: JUMP 00001fea: JUMPDEST 00001feb: PUSH1 0x60 00001fed: PUSH1 0x0a 00001fef: DUP1 00001ff0: SLOAD 00001ff1: PUSH2 0x094f 00001ff4: SWAP1 00001ff5: PUSH2 0x2d3d 00001ff8: JUMP 00001ff9: JUMPDEST 00001ffa: PUSH1 0x09 00001ffc: DUP1 00001ffd: SLOAD 00001ffe: PUSH1 0x01 00002000: PUSH1 0x01 00002002: PUSH1 0xa0 00002004: SHL 00002005: SUB 00002006: DUP4 00002007: DUP2 00002008: AND 00002009: PUSH1 0x01 0000200b: PUSH1 0x01 0000200d: PUSH1 0xa0 0000200f: SHL 00002010: SUB 00002011: NOT 00002012: DUP4 00002013: AND 00002014: DUP2 00002015: OR 00002016: SWAP1 00002017: SWAP4 00002018: SSTORE 00002019: PUSH1 0x40 0000201b: MLOAD 0000201c: SWAP2 0000201d: AND 0000201e: SWAP2 0000201f: SWAP1 00002020: DUP3 00002021: SWAP1 00002022: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00002043: SWAP1 00002044: PUSH1 0x00 00002046: SWAP1 00002047: LOG3 00002048: POP 00002049: POP 0000204a: JUMP 0000204b: JUMPDEST 0000204c: PUSH2 0x2053 0000204f: PUSH2 0x2573 00002052: JUMP 00002053: JUMPDEST 00002054: PUSH1 0x00 00002056: DUP3 00002057: DUP2 00002058: MSTORE 00002059: PUSH1 0x04 0000205b: PUSH1 0x20 0000205d: MSTORE 0000205e: PUSH1 0x40 00002060: SWAP1 00002061: KECCAK256 00002062: SLOAD 00002063: PUSH2 0x093a 00002066: SWAP1 00002067: PUSH2 0x2530 0000206a: JUMP 0000206b: JUMPDEST 0000206c: PUSH2 0x2075 0000206f: DUP4 00002070: DUP4 00002071: PUSH2 0x20d8 00002074: JUMP 00002075: JUMPDEST 00002076: PUSH1 0x01 00002078: PUSH1 0x01 0000207a: PUSH1 0xa0 0000207c: SHL 0000207d: SUB 0000207e: DUP4 0000207f: AND 00002080: EXTCODESIZE 00002081: ISZERO 00002082: PUSH2 0x0f28 00002085: JUMPI 00002086: PUSH1 0x00 00002088: SLOAD 00002089: DUP3 0000208a: DUP2 0000208b: SUB 0000208c: JUMPDEST 0000208d: PUSH2 0x209f 00002090: PUSH1 0x00 00002092: DUP7 00002093: DUP4 00002094: DUP1 00002095: PUSH1 0x01 00002097: ADD 00002098: SWAP5 00002099: POP 0000209a: DUP7 0000209b: PUSH2 0x21c5 0000209e: JUMP 0000209f: JUMPDEST 000020a0: PUSH2 0x20bc 000020a3: JUMPI 000020a4: PUSH1 0x40 000020a6: MLOAD 000020a7: PUSH4 0x68d2bf6b 000020ac: PUSH1 0xe1 000020ae: SHL 000020af: DUP2 000020b0: MSTORE 000020b1: PUSH1 0x04 000020b3: ADD 000020b4: PUSH1 0x40 000020b6: MLOAD 000020b7: DUP1 000020b8: SWAP2 000020b9: SUB 000020ba: SWAP1 000020bb: REVERT 000020bc: JUMPDEST 000020bd: DUP2 000020be: DUP2 000020bf: LT 000020c0: PUSH2 0x208c 000020c3: JUMPI 000020c4: DUP2 000020c5: PUSH1 0x00 000020c7: SLOAD 000020c8: EQ 000020c9: PUSH2 0x20d1 000020cc: JUMPI 000020cd: PUSH1 0x00 000020cf: DUP1 000020d0: REVERT 000020d1: JUMPDEST 000020d2: POP 000020d3: POP 000020d4: POP 000020d5: POP 000020d6: POP 000020d7: JUMP 000020d8: JUMPDEST 000020d9: PUSH1 0x00 000020db: SLOAD 000020dc: DUP2 000020dd: PUSH2 0x20f9 000020e0: JUMPI 000020e1: PUSH1 0x40 000020e3: MLOAD 000020e4: PUSH4 0xb562e8dd 000020e9: PUSH1 0xe0 000020eb: SHL 000020ec: DUP2 000020ed: MSTORE 000020ee: PUSH1 0x04 000020f0: ADD 000020f1: PUSH1 0x40 000020f3: MLOAD 000020f4: DUP1 000020f5: SWAP2 000020f6: SUB 000020f7: SWAP1 000020f8: REVERT 000020f9: JUMPDEST 000020fa: PUSH1 0x01 000020fc: PUSH1 0x01 000020fe: PUSH1 0xa0 00002100: SHL 00002101: SUB 00002102: DUP4 00002103: AND 00002104: PUSH1 0x00 00002106: DUP2 00002107: DUP2 00002108: MSTORE 00002109: PUSH1 0x05 0000210b: PUSH1 0x20 0000210d: SWAP1 0000210e: DUP2 0000210f: MSTORE 00002110: PUSH1 0x40 00002112: DUP1 00002113: DUP4 00002114: KECCAK256 00002115: DUP1 00002116: SLOAD 00002117: PUSH9 0x010000000000000001 00002121: DUP9 00002122: MUL 00002123: ADD 00002124: SWAP1 00002125: SSTORE 00002126: DUP5 00002127: DUP4 00002128: MSTORE 00002129: PUSH1 0x04 0000212b: SWAP1 0000212c: SWAP2 0000212d: MSTORE 0000212e: DUP2 0000212f: KECCAK256 00002130: PUSH1 0x01 00002132: DUP6 00002133: EQ 00002134: PUSH1 0xe1 00002136: SHL 00002137: TIMESTAMP 00002138: PUSH1 0xa0 0000213a: SHL 0000213b: OR 0000213c: DUP4 0000213d: OR 0000213e: SWAP1 0000213f: SSTORE 00002140: DUP3 00002141: DUP5 00002142: ADD 00002143: SWAP1 00002144: DUP4 00002145: SWAP1 00002146: DUP4 00002147: SWAP1 00002148: PUSH1 0x00 0000214a: DUP1 0000214b: MLOAD 0000214c: PUSH1 0x20 0000214e: PUSH2 0x2df0 00002151: DUP4 00002152: CODECOPY 00002153: DUP2 00002154: MLOAD 00002155: SWAP2 00002156: MSTORE 00002157: DUP2 00002158: DUP1 00002159: LOG4 0000215a: PUSH1 0x01 0000215c: DUP4 0000215d: ADD 0000215e: JUMPDEST 0000215f: DUP2 00002160: DUP2 00002161: EQ 00002162: PUSH2 0x2184 00002165: JUMPI 00002166: DUP1 00002167: DUP4 00002168: PUSH1 0x00 0000216a: PUSH1 0x00 0000216c: DUP1 0000216d: MLOAD 0000216e: PUSH1 0x20 00002170: PUSH2 0x2df0 00002173: DUP4 00002174: CODECOPY 00002175: DUP2 00002176: MLOAD 00002177: SWAP2 00002178: MSTORE 00002179: PUSH1 0x00 0000217b: DUP1 0000217c: LOG4 0000217d: PUSH1 0x01 0000217f: ADD 00002180: PUSH2 0x215e 00002183: JUMP 00002184: JUMPDEST 00002185: POP 00002186: DUP2 00002187: PUSH2 0x21a2 0000218a: JUMPI 0000218b: PUSH1 0x40 0000218d: MLOAD 0000218e: PUSH3 0x2e0763 00002192: PUSH1 0xe8 00002194: SHL 00002195: DUP2 00002196: MSTORE 00002197: PUSH1 0x04 00002199: ADD 0000219a: PUSH1 0x40 0000219c: MLOAD 0000219d: DUP1 0000219e: SWAP2 0000219f: SUB 000021a0: SWAP1 000021a1: REVERT 000021a2: JUMPDEST 000021a3: PUSH1 0x00 000021a5: SSTORE 000021a6: POP 000021a7: POP 000021a8: POP 000021a9: POP 000021aa: JUMP 000021ab: JUMPDEST 000021ac: PUSH2 0x0b1e 000021af: DUP3 000021b0: DUP3 000021b1: PUSH1 0x40 000021b3: MLOAD 000021b4: DUP1 000021b5: PUSH1 0x20 000021b7: ADD 000021b8: PUSH1 0x40 000021ba: MSTORE 000021bb: DUP1 000021bc: PUSH1 0x00 000021be: DUP2 000021bf: MSTORE 000021c0: POP 000021c1: PUSH2 0x206b 000021c4: JUMP 000021c5: JUMPDEST 000021c6: PUSH1 0x40 000021c8: MLOAD 000021c9: PUSH4 0x0a85bd01 000021ce: PUSH1 0xe1 000021d0: SHL 000021d1: DUP2 000021d2: MSTORE 000021d3: PUSH1 0x00 000021d5: SWAP1 000021d6: PUSH1 0x01 000021d8: PUSH1 0x01 000021da: PUSH1 0xa0 000021dc: SHL 000021dd: SUB 000021de: DUP6 000021df: AND 000021e0: SWAP1 000021e1: PUSH4 0x150b7a02 000021e6: SWAP1 000021e7: PUSH2 0x21fa 000021ea: SWAP1 000021eb: CALLER 000021ec: SWAP1 000021ed: DUP10 000021ee: SWAP1 000021ef: DUP9 000021f0: SWAP1 000021f1: DUP9 000021f2: SWAP1 000021f3: PUSH1 0x04 000021f5: ADD 000021f6: PUSH2 0x2b2f 000021f9: JUMP 000021fa: JUMPDEST 000021fb: PUSH1 0x20 000021fd: PUSH1 0x40 000021ff: MLOAD 00002200: DUP1 00002201: DUP4 00002202: SUB 00002203: DUP2 00002204: PUSH1 0x00 00002206: DUP8 00002207: DUP1 00002208: EXTCODESIZE 00002209: ISZERO 0000220a: DUP1 0000220b: ISZERO 0000220c: PUSH2 0x2214 0000220f: JUMPI 00002210: PUSH1 0x00 00002212: DUP1 00002213: REVERT 00002214: JUMPDEST 00002215: POP 00002216: GAS 00002217: CALL 00002218: SWAP3 00002219: POP 0000221a: POP 0000221b: POP 0000221c: DUP1 0000221d: ISZERO 0000221e: PUSH2 0x2244 00002221: JUMPI 00002222: POP 00002223: PUSH1 0x40 00002225: DUP1 00002226: MLOAD 00002227: PUSH1 0x1f 00002229: RETURNDATASIZE 0000222a: SWAP1 0000222b: DUP2 0000222c: ADD 0000222d: PUSH1 0x1f 0000222f: NOT 00002230: AND 00002231: DUP3 00002232: ADD 00002233: SWAP1 00002234: SWAP3 00002235: MSTORE 00002236: PUSH2 0x2241 00002239: SWAP2 0000223a: DUP2 0000223b: ADD 0000223c: SWAP1 0000223d: PUSH2 0x2957 00002240: JUMP 00002241: JUMPDEST 00002242: PUSH1 0x01 00002244: JUMPDEST 00002245: PUSH2 0x229f 00002248: JUMPI 00002249: RETURNDATASIZE 0000224a: DUP1 0000224b: DUP1 0000224c: ISZERO 0000224d: PUSH2 0x2272 00002250: JUMPI 00002251: PUSH1 0x40 00002253: MLOAD 00002254: SWAP2 00002255: POP 00002256: PUSH1 0x1f 00002258: NOT 00002259: PUSH1 0x3f 0000225b: RETURNDATASIZE 0000225c: ADD 0000225d: AND 0000225e: DUP3 0000225f: ADD 00002260: PUSH1 0x40 00002262: MSTORE 00002263: RETURNDATASIZE 00002264: DUP3 00002265: MSTORE 00002266: RETURNDATASIZE 00002267: PUSH1 0x00 00002269: PUSH1 0x20 0000226b: DUP5 0000226c: ADD 0000226d: RETURNDATACOPY 0000226e: PUSH2 0x2277 00002271: JUMP 00002272: JUMPDEST 00002273: PUSH1 0x60 00002275: SWAP2 00002276: POP 00002277: JUMPDEST 00002278: POP 00002279: DUP1 0000227a: MLOAD 0000227b: PUSH2 0x2297 0000227e: JUMPI 0000227f: PUSH1 0x40 00002281: MLOAD 00002282: PUSH4 0x68d2bf6b 00002287: PUSH1 0xe1 00002289: SHL 0000228a: DUP2 0000228b: MSTORE 0000228c: PUSH1 0x04 0000228e: ADD 0000228f: PUSH1 0x40 00002291: MLOAD 00002292: DUP1 00002293: SWAP2 00002294: SUB 00002295: SWAP1 00002296: REVERT 00002297: JUMPDEST 00002298: DUP1 00002299: MLOAD 0000229a: DUP2 0000229b: PUSH1 0x20 0000229d: ADD 0000229e: REVERT 0000229f: JUMPDEST 000022a0: PUSH1 0x01 000022a2: PUSH1 0x01 000022a4: PUSH1 0xe0 000022a6: SHL 000022a7: SUB 000022a8: NOT 000022a9: AND 000022aa: PUSH4 0x0a85bd01 000022af: PUSH1 0xe1 000022b1: SHL 000022b2: EQ 000022b3: SWAP1 000022b4: POP 000022b5: JUMPDEST 000022b6: SWAP5 000022b7: SWAP4 000022b8: POP 000022b9: POP 000022ba: POP 000022bb: POP 000022bc: JUMP 000022bd: JUMPDEST 000022be: PUSH1 0x00 000022c0: DUP1 000022c1: PUSH1 0x00 000022c3: DUP1 000022c4: DUP5 000022c5: MLOAD 000022c6: PUSH1 0x41 000022c8: EQ 000022c9: PUSH2 0x22d8 000022cc: JUMPI 000022cd: PUSH1 0x00 000022cf: SWAP4 000022d0: POP 000022d1: POP 000022d2: POP 000022d3: POP 000022d4: PUSH2 0x093a 000022d7: JUMP 000022d8: JUMPDEST 000022d9: POP 000022da: POP 000022db: POP 000022dc: PUSH1 0x20 000022de: DUP3 000022df: ADD 000022e0: MLOAD 000022e1: PUSH1 0x40 000022e3: DUP4 000022e4: ADD 000022e5: MLOAD 000022e6: PUSH1 0x60 000022e8: DUP5 000022e9: ADD 000022ea: MLOAD 000022eb: PUSH1 0x00 000022ed: BYTE 000022ee: PUSH1 0x1b 000022f0: DUP2 000022f1: LT 000022f2: ISZERO 000022f3: PUSH2 0x2304 000022f6: JUMPI 000022f7: PUSH2 0x2301 000022fa: PUSH1 0x1b 000022fc: DUP3 000022fd: PUSH2 0x2cec 00002300: JUMP 00002301: JUMPDEST 00002302: SWAP1 00002303: POP 00002304: JUMPDEST 00002305: DUP1 00002306: PUSH1 0xff 00002308: AND 00002309: PUSH1 0x1b 0000230b: EQ 0000230c: ISZERO 0000230d: DUP1 0000230e: ISZERO 0000230f: PUSH2 0x231c 00002312: JUMPI 00002313: POP 00002314: DUP1 00002315: PUSH1 0xff 00002317: AND 00002318: PUSH1 0x1c 0000231a: EQ 0000231b: ISZERO 0000231c: JUMPDEST 0000231d: ISZERO 0000231e: PUSH2 0x232d 00002321: JUMPI 00002322: PUSH1 0x00 00002324: SWAP4 00002325: POP 00002326: POP 00002327: POP 00002328: POP 00002329: PUSH2 0x093a 0000232c: JUMP 0000232d: JUMPDEST 0000232e: PUSH1 0x40 00002330: DUP1 00002331: MLOAD 00002332: PUSH1 0x00 00002334: DUP2 00002335: MSTORE 00002336: PUSH1 0x20 00002338: DUP2 00002339: ADD 0000233a: DUP1 0000233b: DUP4 0000233c: MSTORE 0000233d: DUP9 0000233e: SWAP1 0000233f: MSTORE 00002340: PUSH1 0xff 00002342: DUP4 00002343: AND 00002344: SWAP2 00002345: DUP2 00002346: ADD 00002347: SWAP2 00002348: SWAP1 00002349: SWAP2 0000234a: MSTORE 0000234b: PUSH1 0x60 0000234d: DUP2 0000234e: ADD 0000234f: DUP5 00002350: SWAP1 00002351: MSTORE 00002352: PUSH1 0x80 00002354: DUP2 00002355: ADD 00002356: DUP4 00002357: SWAP1 00002358: MSTORE 00002359: PUSH1 0x01 0000235b: SWAP1 0000235c: PUSH1 0xa0 0000235e: ADD 0000235f: PUSH1 0x20 00002361: PUSH1 0x40 00002363: MLOAD 00002364: PUSH1 0x20 00002366: DUP2 00002367: SUB 00002368: SWAP1 00002369: DUP1 0000236a: DUP5 0000236b: SUB 0000236c: SWAP1 0000236d: DUP6 0000236e: GAS 0000236f: STATICCALL 00002370: ISZERO 00002371: DUP1 00002372: ISZERO 00002373: PUSH2 0x2380 00002376: JUMPI 00002377: RETURNDATASIZE 00002378: PUSH1 0x00 0000237a: DUP1 0000237b: RETURNDATACOPY 0000237c: RETURNDATASIZE 0000237d: PUSH1 0x00 0000237f: REVERT 00002380: JUMPDEST 00002381: POP 00002382: POP 00002383: POP 00002384: PUSH1 0x20 00002386: PUSH1 0x40 00002388: MLOAD 00002389: SUB 0000238a: MLOAD 0000238b: SWAP4 0000238c: POP 0000238d: POP 0000238e: POP 0000238f: POP 00002390: PUSH2 0x093a 00002393: JUMP 00002394: JUMPDEST 00002395: PUSH1 0x40 00002397: DUP1 00002398: MLOAD 00002399: PUSH1 0x00 0000239b: DUP1 0000239c: DUP3 0000239d: MSTORE 0000239e: PUSH1 0x20 000023a0: DUP3 000023a1: ADD 000023a2: SWAP1 000023a3: SWAP3 000023a4: MSTORE 000023a5: PUSH1 0x01 000023a7: PUSH1 0x01 000023a9: PUSH1 0xa0 000023ab: SHL 000023ac: SUB 000023ad: DUP5 000023ae: AND 000023af: SWAP1 000023b0: DUP4 000023b1: SWAP1 000023b2: PUSH1 0x40 000023b4: MLOAD 000023b5: PUSH2 0x23be 000023b8: SWAP2 000023b9: SWAP1 000023ba: PUSH2 0x2ae4 000023bd: JUMP 000023be: JUMPDEST 000023bf: PUSH1 0x00 000023c1: PUSH1 0x40 000023c3: MLOAD 000023c4: DUP1 000023c5: DUP4 000023c6: SUB 000023c7: DUP2 000023c8: DUP6 000023c9: DUP8 000023ca: GAS 000023cb: CALL 000023cc: SWAP3 000023cd: POP 000023ce: POP 000023cf: POP 000023d0: RETURNDATASIZE 000023d1: DUP1 000023d2: PUSH1 0x00 000023d4: DUP2 000023d5: EQ 000023d6: PUSH2 0x23fb 000023d9: JUMPI 000023da: PUSH1 0x40 000023dc: MLOAD 000023dd: SWAP2 000023de: POP 000023df: PUSH1 0x1f 000023e1: NOT 000023e2: PUSH1 0x3f 000023e4: RETURNDATASIZE 000023e5: ADD 000023e6: AND 000023e7: DUP3 000023e8: ADD 000023e9: PUSH1 0x40 000023eb: MSTORE 000023ec: RETURNDATASIZE 000023ed: DUP3 000023ee: MSTORE 000023ef: RETURNDATASIZE 000023f0: PUSH1 0x00 000023f2: PUSH1 0x20 000023f4: DUP5 000023f5: ADD 000023f6: RETURNDATACOPY 000023f7: PUSH2 0x2400 000023fa: JUMP 000023fb: JUMPDEST 000023fc: PUSH1 0x60 000023fe: SWAP2 000023ff: POP 00002400: JUMPDEST 00002401: POP 00002402: POP 00002403: SWAP1 00002404: POP 00002405: DUP1 00002406: PUSH2 0x0f28 00002409: JUMPI 0000240a: PUSH1 0x40 0000240c: MLOAD 0000240d: PUSH3 0x461bcd 00002411: PUSH1 0xe5 00002413: SHL 00002414: DUP2 00002415: MSTORE 00002416: PUSH1 0x20 00002418: PUSH1 0x04 0000241a: DUP3 0000241b: ADD 0000241c: MSTORE 0000241d: PUSH1 0x23 0000241f: PUSH1 0x24 00002421: DUP3 00002422: ADD 00002423: MSTORE 00002424: PUSH32 0x5472616e7366657248656c7065723a204554485f5452414e534645525f464149 00002445: PUSH1 0x44 00002447: DUP3 00002448: ADD 00002449: MSTORE 0000244a: PUSH3 0x131151 0000244e: PUSH1 0xea 00002450: SHL 00002451: PUSH1 0x64 00002453: DUP3 00002454: ADD 00002455: MSTORE 00002456: PUSH1 0x84 00002458: ADD 00002459: PUSH2 0x0b0c 0000245c: JUMP 0000245d: JUMPDEST 0000245e: PUSH1 0x00 00002460: PUSH2 0x2468 00002463: DUP3 00002464: PUSH2 0x1d02 00002467: JUMP 00002468: JUMPDEST 00002469: PUSH1 0x00 0000246b: DUP4 0000246c: DUP2 0000246d: MSTORE 0000246e: PUSH1 0x08 00002470: PUSH1 0x20 00002472: MSTORE 00002473: PUSH1 0x40 00002475: SWAP1 00002476: KECCAK256 00002477: SLOAD 00002478: SWAP1 00002479: SWAP2 0000247a: POP 0000247b: PUSH1 0xff 0000247d: AND 0000247e: ISZERO 0000247f: ISZERO 00002480: PUSH1 0x01 00002482: EQ 00002483: ISZERO 00002484: PUSH2 0x24c8 00002487: JUMPI 00002488: PUSH1 0x40 0000248a: MLOAD 0000248b: PUSH3 0x461bcd 0000248f: PUSH1 0xe5 00002491: SHL 00002492: DUP2 00002493: MSTORE 00002494: PUSH1 0x20 00002496: PUSH1 0x04 00002498: DUP3 00002499: ADD 0000249a: MSTORE 0000249b: PUSH1 0x16 0000249d: PUSH1 0x24 0000249f: DUP3 000024a0: ADD 000024a1: MSTORE 000024a2: PUSH22 0x544f4b454e20484153204245454e204c4f434b454421 000024b9: PUSH1 0x50 000024bb: SHL 000024bc: PUSH1 0x44 000024be: DUP3 000024bf: ADD 000024c0: MSTORE 000024c1: PUSH1 0x64 000024c3: ADD 000024c4: PUSH2 0x0b0c 000024c7: JUMP 000024c8: JUMPDEST 000024c9: DUP4 000024ca: PUSH1 0x01 000024cc: PUSH1 0x01 000024ce: PUSH1 0xa0 000024d0: SHL 000024d1: SUB 000024d2: AND 000024d3: DUP2 000024d4: PUSH1 0x01 000024d6: PUSH1 0x01 000024d8: PUSH1 0xa0 000024da: SHL 000024db: SUB 000024dc: AND 000024dd: EQ 000024de: PUSH2 0x24f9 000024e1: JUMPI 000024e2: PUSH1 0x40 000024e4: MLOAD 000024e5: PUSH3 0xa11481 000024e9: PUSH1 0xe8 000024eb: SHL 000024ec: DUP2 000024ed: MSTORE 000024ee: PUSH1 0x04 000024f0: ADD 000024f1: PUSH1 0x40 000024f3: MLOAD 000024f4: DUP1 000024f5: SWAP2 000024f6: SUB 000024f7: SWAP1 000024f8: REVERT 000024f9: JUMPDEST 000024fa: PUSH1 0x00 000024fc: DUP3 000024fd: DUP2 000024fe: MSTORE 000024ff: PUSH1 0x06 00002501: PUSH1 0x20 00002503: MSTORE 00002504: PUSH1 0x40 00002506: SWAP1 00002507: KECCAK256 00002508: DUP1 00002509: SLOAD 0000250a: PUSH1 0x01 0000250c: PUSH1 0x01 0000250e: PUSH1 0xa0 00002510: SHL 00002511: SUB 00002512: DUP6 00002513: AND 00002514: PUSH2 0x0c13 00002517: JUMPI 00002518: PUSH1 0x40 0000251a: MLOAD 0000251b: PUSH4 0x3a954ecd 00002520: PUSH1 0xe2 00002522: SHL 00002523: DUP2 00002524: MSTORE 00002525: PUSH1 0x04 00002527: ADD 00002528: PUSH1 0x40 0000252a: MLOAD 0000252b: DUP1 0000252c: SWAP2 0000252d: SUB 0000252e: SWAP1 0000252f: REVERT 00002530: JUMPDEST 00002531: PUSH2 0x2538 00002534: PUSH2 0x2573 00002537: JUMP 00002538: JUMPDEST 00002539: PUSH1 0x01 0000253b: PUSH1 0x01 0000253d: PUSH1 0xa0 0000253f: SHL 00002540: SUB 00002541: DUP3 00002542: AND 00002543: DUP2 00002544: MSTORE 00002545: PUSH1 0x01 00002547: PUSH1 0x01 00002549: PUSH1 0x40 0000254b: SHL 0000254c: SUB 0000254d: PUSH1 0xa0 0000254f: DUP4 00002550: SWAP1 00002551: SHR 00002552: AND 00002553: PUSH1 0x20 00002555: DUP3 00002556: ADD 00002557: MSTORE 00002558: PUSH1 0x01 0000255a: PUSH1 0xe0 0000255c: SHL 0000255d: DUP3 0000255e: AND 0000255f: ISZERO 00002560: ISZERO 00002561: PUSH1 0x40 00002563: DUP3 00002564: ADD 00002565: MSTORE 00002566: PUSH1 0xe8 00002568: SWAP2 00002569: SWAP1 0000256a: SWAP2 0000256b: SHR 0000256c: PUSH1 0x60 0000256e: DUP3 0000256f: ADD 00002570: MSTORE 00002571: SWAP1 00002572: JUMP 00002573: JUMPDEST 00002574: PUSH1 0x40 00002576: DUP1 00002577: MLOAD 00002578: PUSH1 0x80 0000257a: DUP2 0000257b: ADD 0000257c: DUP3 0000257d: MSTORE 0000257e: PUSH1 0x00 00002580: DUP1 00002581: DUP3 00002582: MSTORE 00002583: PUSH1 0x20 00002585: DUP3 00002586: ADD 00002587: DUP2 00002588: SWAP1 00002589: MSTORE 0000258a: SWAP2 0000258b: DUP2 0000258c: ADD 0000258d: DUP3 0000258e: SWAP1 0000258f: MSTORE 00002590: PUSH1 0x60 00002592: DUP2 00002593: ADD 00002594: SWAP2 00002595: SWAP1 00002596: SWAP2 00002597: MSTORE 00002598: SWAP1 00002599: JUMP 0000259a: JUMPDEST 0000259b: DUP3 0000259c: DUP1 0000259d: SLOAD 0000259e: PUSH2 0x25a6 000025a1: SWAP1 000025a2: PUSH2 0x2d3d 000025a5: JUMP 000025a6: JUMPDEST 000025a7: SWAP1 000025a8: PUSH1 0x00 000025aa: MSTORE 000025ab: PUSH1 0x20 000025ad: PUSH1 0x00 000025af: KECCAK256 000025b0: SWAP1 000025b1: PUSH1 0x1f 000025b3: ADD 000025b4: PUSH1 0x20 000025b6: SWAP1 000025b7: DIV 000025b8: DUP2 000025b9: ADD 000025ba: SWAP3 000025bb: DUP3 000025bc: PUSH2 0x25c8 000025bf: JUMPI 000025c0: PUSH1 0x00 000025c2: DUP6 000025c3: SSTORE 000025c4: PUSH2 0x260e 000025c7: JUMP 000025c8: JUMPDEST 000025c9: DUP3 000025ca: PUSH1 0x1f 000025cc: LT 000025cd: PUSH2 0x25e1 000025d0: JUMPI 000025d1: DUP1 000025d2: MLOAD 000025d3: PUSH1 0xff 000025d5: NOT 000025d6: AND 000025d7: DUP4 000025d8: DUP1 000025d9: ADD 000025da: OR 000025db: DUP6 000025dc: SSTORE 000025dd: PUSH2 0x260e 000025e0: JUMP 000025e1: JUMPDEST 000025e2: DUP3 000025e3: DUP1 000025e4: ADD 000025e5: PUSH1 0x01 000025e7: ADD 000025e8: DUP6 000025e9: SSTORE 000025ea: DUP3 000025eb: ISZERO 000025ec: PUSH2 0x260e 000025ef: JUMPI 000025f0: SWAP2 000025f1: DUP3 000025f2: ADD 000025f3: JUMPDEST 000025f4: DUP3 000025f5: DUP2 000025f6: GT 000025f7: ISZERO 000025f8: PUSH2 0x260e 000025fb: JUMPI 000025fc: DUP3 000025fd: MLOAD 000025fe: DUP3 000025ff: SSTORE 00002600: SWAP2 00002601: PUSH1 0x20 00002603: ADD 00002604: SWAP2 00002605: SWAP1 00002606: PUSH1 0x01 00002608: ADD 00002609: SWAP1 0000260a: PUSH2 0x25f3 0000260d: JUMP 0000260e: JUMPDEST 0000260f: POP 00002610: PUSH2 0x261a 00002613: SWAP3 00002614: SWAP2 00002615: POP 00002616: PUSH2 0x261e 00002619: JUMP 0000261a: JUMPDEST 0000261b: POP 0000261c: SWAP1 0000261d: JUMP 0000261e: JUMPDEST 0000261f: JUMPDEST 00002620: DUP1 00002621: DUP3 00002622: GT 00002623: ISZERO 00002624: PUSH2 0x261a 00002627: JUMPI 00002628: PUSH1 0x00 0000262a: DUP2 0000262b: SSTORE 0000262c: PUSH1 0x01 0000262e: ADD 0000262f: PUSH2 0x261f 00002632: JUMP 00002633: JUMPDEST 00002634: PUSH1 0x00 00002636: PUSH1 0x01 00002638: PUSH1 0x01 0000263a: PUSH1 0x40 0000263c: SHL 0000263d: SUB 0000263e: DUP4 0000263f: GT 00002640: ISZERO 00002641: PUSH2 0x264c 00002644: JUMPI 00002645: PUSH2 0x264c 00002648: PUSH2 0x2dc3 0000264b: JUMP 0000264c: JUMPDEST 0000264d: PUSH2 0x265f 00002650: PUSH1 0x1f 00002652: DUP5 00002653: ADD 00002654: PUSH1 0x1f 00002656: NOT 00002657: AND 00002658: PUSH1 0x20 0000265a: ADD 0000265b: PUSH2 0x2ca4 0000265e: JUMP 0000265f: JUMPDEST 00002660: SWAP1 00002661: POP 00002662: DUP3 00002663: DUP2 00002664: MSTORE 00002665: DUP4 00002666: DUP4 00002667: DUP4 00002668: ADD 00002669: GT 0000266a: ISZERO 0000266b: PUSH2 0x2673 0000266e: JUMPI 0000266f: PUSH1 0x00 00002671: DUP1 00002672: REVERT 00002673: JUMPDEST 00002674: DUP3 00002675: DUP3 00002676: PUSH1 0x20 00002678: DUP4 00002679: ADD 0000267a: CALLDATACOPY 0000267b: PUSH1 0x00 0000267d: PUSH1 0x20 0000267f: DUP5 00002680: DUP4 00002681: ADD 00002682: ADD 00002683: MSTORE 00002684: SWAP4 00002685: SWAP3 00002686: POP 00002687: POP 00002688: POP 00002689: JUMP 0000268a: JUMPDEST 0000268b: DUP1 0000268c: CALLDATALOAD 0000268d: PUSH1 0x01 0000268f: PUSH1 0x01 00002691: PUSH1 0xa0 00002693: SHL 00002694: SUB 00002695: DUP2 00002696: AND 00002697: DUP2 00002698: EQ 00002699: PUSH2 0x0d15 0000269c: JUMPI 0000269d: PUSH1 0x00 0000269f: DUP1 000026a0: REVERT 000026a1: JUMPDEST 000026a2: DUP1 000026a3: CALLDATALOAD 000026a4: DUP1 000026a5: ISZERO 000026a6: ISZERO 000026a7: DUP2 000026a8: EQ 000026a9: PUSH2 0x0d15 000026ac: JUMPI 000026ad: PUSH1 0x00 000026af: DUP1 000026b0: REVERT 000026b1: JUMPDEST 000026b2: PUSH1 0x00 000026b4: DUP3 000026b5: PUSH1 0x1f 000026b7: DUP4 000026b8: ADD 000026b9: SLT 000026ba: PUSH2 0x26c1 000026bd: JUMPI 000026be: DUP1 000026bf: DUP2 000026c0: REVERT 000026c1: JUMPDEST 000026c2: PUSH2 0x1408 000026c5: DUP4 000026c6: DUP4 000026c7: CALLDATALOAD 000026c8: PUSH1 0x20 000026ca: DUP6 000026cb: ADD 000026cc: PUSH2 0x2633 000026cf: JUMP 000026d0: JUMPDEST 000026d1: PUSH1 0x00 000026d3: PUSH1 0x20 000026d5: DUP3 000026d6: DUP5 000026d7: SUB 000026d8: SLT 000026d9: ISZERO 000026da: PUSH2 0x26e1 000026dd: JUMPI 000026de: DUP1 000026df: DUP2 000026e0: REVERT 000026e1: JUMPDEST 000026e2: PUSH2 0x1408 000026e5: DUP3 000026e6: PUSH2 0x268a 000026e9: JUMP 000026ea: JUMPDEST 000026eb: PUSH1 0x00 000026ed: DUP1 000026ee: PUSH1 0x40 000026f0: DUP4 000026f1: DUP6 000026f2: SUB 000026f3: SLT 000026f4: ISZERO 000026f5: PUSH2 0x26fc 000026f8: JUMPI 000026f9: DUP1 000026fa: DUP2 000026fb: REVERT 000026fc: JUMPDEST 000026fd: PUSH2 0x2705 00002700: DUP4 00002701: PUSH2 0x268a 00002704: JUMP 00002705: JUMPDEST 00002706: SWAP2 00002707: POP 00002708: PUSH2 0x2713 0000270b: PUSH1 0x20 0000270d: DUP5 0000270e: ADD 0000270f: PUSH2 0x268a 00002712: JUMP 00002713: JUMPDEST 00002714: SWAP1 00002715: POP 00002716: SWAP3 00002717: POP 00002718: SWAP3 00002719: SWAP1 0000271a: POP 0000271b: JUMP 0000271c: JUMPDEST 0000271d: PUSH1 0x00 0000271f: DUP1 00002720: PUSH1 0x00 00002722: PUSH1 0x60 00002724: DUP5 00002725: DUP7 00002726: SUB 00002727: SLT 00002728: ISZERO 00002729: PUSH2 0x2730 0000272c: JUMPI 0000272d: DUP1 0000272e: DUP2 0000272f: REVERT 00002730: JUMPDEST 00002731: PUSH2 0x2739 00002734: DUP5 00002735: PUSH2 0x268a 00002738: JUMP 00002739: JUMPDEST 0000273a: SWAP3 0000273b: POP 0000273c: PUSH2 0x2747 0000273f: PUSH1 0x20 00002741: DUP6 00002742: ADD 00002743: PUSH2 0x268a 00002746: JUMP 00002747: JUMPDEST 00002748: SWAP2 00002749: POP 0000274a: PUSH1 0x40 0000274c: DUP5 0000274d: ADD 0000274e: CALLDATALOAD 0000274f: SWAP1 00002750: POP 00002751: SWAP3 00002752: POP 00002753: SWAP3 00002754: POP 00002755: SWAP3 00002756: JUMP 00002757: JUMPDEST 00002758: PUSH1 0x00 0000275a: DUP1 0000275b: PUSH1 0x00 0000275d: DUP1 0000275e: PUSH1 0x80 00002760: DUP6 00002761: DUP8 00002762: SUB 00002763: SLT 00002764: ISZERO 00002765: PUSH2 0x276c 00002768: JUMPI 00002769: DUP1 0000276a: DUP2 0000276b: REVERT 0000276c: JUMPDEST 0000276d: PUSH2 0x2775 00002770: DUP6 00002771: PUSH2 0x268a 00002774: JUMP 00002775: JUMPDEST 00002776: SWAP4 00002777: POP 00002778: PUSH2 0x2783 0000277b: PUSH1 0x20 0000277d: DUP7 0000277e: ADD 0000277f: PUSH2 0x268a 00002782: JUMP 00002783: JUMPDEST 00002784: SWAP3 00002785: POP 00002786: PUSH1 0x40 00002788: DUP6 00002789: ADD 0000278a: CALLDATALOAD 0000278b: SWAP2 0000278c: POP 0000278d: PUSH1 0x60 0000278f: DUP6 00002790: ADD 00002791: CALLDATALOAD 00002792: PUSH1 0x01 00002794: PUSH1 0x01 00002796: PUSH1 0x40 00002798: SHL 00002799: SUB 0000279a: DUP2 0000279b: GT 0000279c: ISZERO 0000279d: PUSH2 0x27a4 000027a0: JUMPI 000027a1: DUP2 000027a2: DUP3 000027a3: REVERT 000027a4: JUMPDEST 000027a5: PUSH2 0x27b0 000027a8: DUP8 000027a9: DUP3 000027aa: DUP9 000027ab: ADD 000027ac: PUSH2 0x26b1 000027af: JUMP 000027b0: JUMPDEST 000027b1: SWAP2 000027b2: POP 000027b3: POP 000027b4: SWAP3 000027b5: SWAP6 000027b6: SWAP2 000027b7: SWAP5 000027b8: POP 000027b9: SWAP3 000027ba: POP 000027bb: JUMP 000027bc: JUMPDEST 000027bd: PUSH1 0x00 000027bf: DUP1 000027c0: PUSH1 0x40 000027c2: DUP4 000027c3: DUP6 000027c4: SUB 000027c5: SLT 000027c6: ISZERO 000027c7: PUSH2 0x27ce 000027ca: JUMPI 000027cb: DUP2 000027cc: DUP3 000027cd: REVERT 000027ce: JUMPDEST 000027cf: PUSH2 0x27d7 000027d2: DUP4 000027d3: PUSH2 0x268a 000027d6: JUMP 000027d7: JUMPDEST 000027d8: SWAP2 000027d9: POP 000027da: PUSH2 0x2713 000027dd: PUSH1 0x20 000027df: DUP5 000027e0: ADD 000027e1: PUSH2 0x26a1 000027e4: JUMP 000027e5: JUMPDEST 000027e6: PUSH1 0x00 000027e8: DUP1 000027e9: PUSH1 0x40 000027eb: DUP4 000027ec: DUP6 000027ed: SUB 000027ee: SLT 000027ef: ISZERO 000027f0: PUSH2 0x27f7 000027f3: JUMPI 000027f4: DUP2 000027f5: DUP3 000027f6: REVERT 000027f7: JUMPDEST 000027f8: PUSH2 0x2800 000027fb: DUP4 000027fc: PUSH2 0x268a 000027ff: JUMP 00002800: JUMPDEST 00002801: SWAP5 00002802: PUSH1 0x20 00002804: SWAP4 00002805: SWAP1 00002806: SWAP4 00002807: ADD 00002808: CALLDATALOAD 00002809: SWAP4 0000280a: POP 0000280b: POP 0000280c: POP 0000280d: JUMP 0000280e: JUMPDEST 0000280f: PUSH1 0x00 00002811: DUP1 00002812: PUSH1 0x00 00002814: PUSH1 0x60 00002816: DUP5 00002817: DUP7 00002818: SUB 00002819: SLT 0000281a: ISZERO 0000281b: PUSH2 0x2822 0000281e: JUMPI 0000281f: DUP3 00002820: DUP4 00002821: REVERT 00002822: JUMPDEST 00002823: PUSH2 0x282b 00002826: DUP5 00002827: PUSH2 0x268a 0000282a: JUMP 0000282b: JUMPDEST 0000282c: SWAP3 0000282d: POP 0000282e: PUSH1 0x20 00002830: DUP5 00002831: ADD 00002832: CALLDATALOAD 00002833: SWAP2 00002834: POP 00002835: PUSH1 0x40 00002837: DUP5 00002838: ADD 00002839: CALLDATALOAD 0000283a: PUSH1 0x01 0000283c: PUSH1 0x01 0000283e: PUSH1 0x40 00002840: SHL 00002841: SUB 00002842: DUP2 00002843: GT 00002844: ISZERO 00002845: PUSH2 0x284c 00002848: JUMPI 00002849: DUP2 0000284a: DUP3 0000284b: REVERT 0000284c: JUMPDEST 0000284d: PUSH2 0x2858 00002850: DUP7 00002851: DUP3 00002852: DUP8 00002853: ADD 00002854: PUSH2 0x26b1 00002857: JUMP 00002858: JUMPDEST 00002859: SWAP2 0000285a: POP 0000285b: POP 0000285c: SWAP3 0000285d: POP 0000285e: SWAP3 0000285f: POP 00002860: SWAP3 00002861: JUMP 00002862: JUMPDEST 00002863: PUSH1 0x00 00002865: DUP1 00002866: PUSH1 0x00 00002868: PUSH1 0x60 0000286a: DUP5 0000286b: DUP7 0000286c: SUB 0000286d: SLT 0000286e: ISZERO 0000286f: PUSH2 0x2876 00002872: JUMPI 00002873: DUP3 00002874: DUP4 00002875: REVERT 00002876: JUMPDEST 00002877: PUSH2 0x287f 0000287a: DUP5 0000287b: PUSH2 0x268a 0000287e: JUMP 0000287f: JUMPDEST 00002880: SWAP6 00002881: PUSH1 0x20 00002883: DUP6 00002884: ADD 00002885: CALLDATALOAD 00002886: SWAP6 00002887: POP 00002888: PUSH1 0x40 0000288a: SWAP1 0000288b: SWAP5 0000288c: ADD 0000288d: CALLDATALOAD 0000288e: SWAP4 0000288f: SWAP3 00002890: POP 00002891: POP 00002892: POP 00002893: JUMP 00002894: JUMPDEST 00002895: PUSH1 0x00 00002897: PUSH1 0x20 00002899: DUP1 0000289a: DUP4 0000289b: DUP6 0000289c: SUB 0000289d: SLT 0000289e: ISZERO 0000289f: PUSH2 0x28a6 000028a2: JUMPI 000028a3: DUP2 000028a4: DUP3 000028a5: REVERT 000028a6: JUMPDEST 000028a7: DUP3 000028a8: CALLDATALOAD 000028a9: PUSH1 0x01 000028ab: PUSH1 0x01 000028ad: PUSH1 0x40 000028af: SHL 000028b0: SUB 000028b1: DUP1 000028b2: DUP3 000028b3: GT 000028b4: ISZERO 000028b5: PUSH2 0x28bc 000028b8: JUMPI 000028b9: DUP4 000028ba: DUP5 000028bb: REVERT 000028bc: JUMPDEST 000028bd: DUP2 000028be: DUP6 000028bf: ADD 000028c0: SWAP2 000028c1: POP 000028c2: DUP6 000028c3: PUSH1 0x1f 000028c5: DUP4 000028c6: ADD 000028c7: SLT 000028c8: PUSH2 0x28cf 000028cb: JUMPI 000028cc: DUP4 000028cd: DUP5 000028ce: REVERT 000028cf: JUMPDEST 000028d0: DUP2 000028d1: CALLDATALOAD 000028d2: DUP2 000028d3: DUP2 000028d4: GT 000028d5: ISZERO 000028d6: PUSH2 0x28e1 000028d9: JUMPI 000028da: PUSH2 0x28e1 000028dd: PUSH2 0x2dc3 000028e0: JUMP 000028e1: JUMPDEST 000028e2: DUP1 000028e3: PUSH1 0x05 000028e5: SHL 000028e6: SWAP2 000028e7: POP 000028e8: PUSH2 0x28f2 000028eb: DUP5 000028ec: DUP4 000028ed: ADD 000028ee: PUSH2 0x2ca4 000028f1: JUMP 000028f2: JUMPDEST 000028f3: DUP2 000028f4: DUP2 000028f5: MSTORE 000028f6: DUP5 000028f7: DUP2 000028f8: ADD 000028f9: SWAP1 000028fa: DUP5 000028fb: DUP7 000028fc: ADD 000028fd: DUP5 000028fe: DUP7 000028ff: ADD 00002900: DUP8 00002901: ADD 00002902: DUP11 00002903: LT 00002904: ISZERO 00002905: PUSH2 0x290c 00002908: JUMPI 00002909: DUP8 0000290a: DUP9 0000290b: REVERT 0000290c: JUMPDEST 0000290d: DUP8 0000290e: SWAP6 0000290f: POP 00002910: JUMPDEST 00002911: DUP4 00002912: DUP7 00002913: LT 00002914: ISZERO 00002915: PUSH2 0x292e 00002918: JUMPI 00002919: DUP1 0000291a: CALLDATALOAD 0000291b: DUP4 0000291c: MSTORE 0000291d: PUSH1 0x01 0000291f: SWAP6 00002920: SWAP1 00002921: SWAP6 00002922: ADD 00002923: SWAP5 00002924: SWAP2 00002925: DUP7 00002926: ADD 00002927: SWAP2 00002928: DUP7 00002929: ADD 0000292a: PUSH2 0x2910 0000292d: JUMP 0000292e: JUMPDEST 0000292f: POP 00002930: SWAP9 00002931: SWAP8 00002932: POP 00002933: POP 00002934: POP 00002935: POP 00002936: POP 00002937: POP 00002938: POP 00002939: POP 0000293a: JUMP 0000293b: JUMPDEST 0000293c: PUSH1 0x00 0000293e: PUSH1 0x20 00002940: DUP3 00002941: DUP5 00002942: SUB 00002943: SLT 00002944: ISZERO 00002945: PUSH2 0x294c 00002948: JUMPI 00002949: DUP1 0000294a: DUP2 0000294b: REVERT 0000294c: JUMPDEST 0000294d: DUP2 0000294e: CALLDATALOAD 0000294f: PUSH2 0x1408 00002952: DUP2 00002953: PUSH2 0x2dd9 00002956: JUMP 00002957: JUMPDEST 00002958: PUSH1 0x00 0000295a: PUSH1 0x20 0000295c: DUP3 0000295d: DUP5 0000295e: SUB 0000295f: SLT 00002960: ISZERO 00002961: PUSH2 0x2968 00002964: JUMPI 00002965: DUP1 00002966: DUP2 00002967: REVERT 00002968: JUMPDEST 00002969: DUP2 0000296a: MLOAD 0000296b: PUSH2 0x1408 0000296e: DUP2 0000296f: PUSH2 0x2dd9 00002972: JUMP 00002973: JUMPDEST 00002974: PUSH1 0x00 00002976: PUSH1 0x20 00002978: DUP3 00002979: DUP5 0000297a: SUB 0000297b: SLT 0000297c: ISZERO 0000297d: PUSH2 0x2984 00002980: JUMPI 00002981: DUP1 00002982: DUP2 00002983: REVERT 00002984: JUMPDEST 00002985: DUP2 00002986: CALLDATALOAD 00002987: PUSH1 0x01 00002989: PUSH1 0x01 0000298b: PUSH1 0x40 0000298d: SHL 0000298e: SUB 0000298f: DUP2 00002990: GT 00002991: ISZERO 00002992: PUSH2 0x2999 00002995: JUMPI 00002996: DUP2 00002997: DUP3 00002998: REVERT 00002999: JUMPDEST 0000299a: DUP3 0000299b: ADD 0000299c: PUSH1 0x1f 0000299e: DUP2 0000299f: ADD 000029a0: DUP5 000029a1: SGT 000029a2: PUSH2 0x29a9 000029a5: JUMPI 000029a6: DUP2 000029a7: DUP3 000029a8: REVERT 000029a9: JUMPDEST 000029aa: PUSH2 0x22b5 000029ad: DUP5 000029ae: DUP3 000029af: CALLDATALOAD 000029b0: PUSH1 0x20 000029b2: DUP5 000029b3: ADD 000029b4: PUSH2 0x2633 000029b7: JUMP 000029b8: JUMPDEST 000029b9: PUSH1 0x00 000029bb: PUSH1 0x20 000029bd: DUP3 000029be: DUP5 000029bf: SUB 000029c0: SLT 000029c1: ISZERO 000029c2: PUSH2 0x29c9 000029c5: JUMPI 000029c6: DUP1 000029c7: DUP2 000029c8: REVERT 000029c9: JUMPDEST 000029ca: POP 000029cb: CALLDATALOAD 000029cc: SWAP2 000029cd: SWAP1 000029ce: POP 000029cf: JUMP 000029d0: JUMPDEST 000029d1: PUSH1 0x00 000029d3: DUP1 000029d4: PUSH1 0x40 000029d6: DUP4 000029d7: DUP6 000029d8: SUB 000029d9: SLT 000029da: ISZERO 000029db: PUSH2 0x29e2 000029de: JUMPI 000029df: DUP2 000029e0: DUP3 000029e1: REVERT 000029e2: JUMPDEST 000029e3: DUP3 000029e4: CALLDATALOAD 000029e5: SWAP2 000029e6: POP 000029e7: PUSH2 0x2713 000029ea: PUSH1 0x20 000029ec: DUP5 000029ed: ADD 000029ee: PUSH2 0x26a1 000029f1: JUMP 000029f2: JUMPDEST 000029f3: PUSH1 0x00 000029f5: DUP1 000029f6: PUSH1 0x40 000029f8: DUP4 000029f9: DUP6 000029fa: SUB 000029fb: SLT 000029fc: ISZERO 000029fd: PUSH2 0x2a04 00002a00: JUMPI 00002a01: DUP2 00002a02: DUP3 00002a03: REVERT 00002a04: JUMPDEST 00002a05: POP 00002a06: POP 00002a07: DUP1 00002a08: CALLDATALOAD 00002a09: SWAP3 00002a0a: PUSH1 0x20 00002a0c: SWAP1 00002a0d: SWAP2 00002a0e: ADD 00002a0f: CALLDATALOAD 00002a10: SWAP2 00002a11: POP 00002a12: JUMP 00002a13: JUMPDEST 00002a14: PUSH1 0x00 00002a16: DUP1 00002a17: PUSH1 0x00 00002a19: DUP1 00002a1a: PUSH1 0x00 00002a1c: DUP1 00002a1d: PUSH1 0xc0 00002a1f: DUP8 00002a20: DUP10 00002a21: SUB 00002a22: SLT 00002a23: ISZERO 00002a24: PUSH2 0x2a2b 00002a27: JUMPI 00002a28: DUP4 00002a29: DUP5 00002a2a: REVERT 00002a2b: JUMPDEST 00002a2c: DUP7 00002a2d: CALLDATALOAD 00002a2e: SWAP6 00002a2f: POP 00002a30: PUSH1 0x20 00002a32: DUP8 00002a33: ADD 00002a34: CALLDATALOAD 00002a35: SWAP5 00002a36: POP 00002a37: PUSH1 0x40 00002a39: DUP8 00002a3a: ADD 00002a3b: CALLDATALOAD 00002a3c: SWAP4 00002a3d: POP 00002a3e: PUSH1 0x60 00002a40: DUP8 00002a41: ADD 00002a42: CALLDATALOAD 00002a43: SWAP3 00002a44: POP 00002a45: PUSH1 0x80 00002a47: DUP8 00002a48: ADD 00002a49: CALLDATALOAD 00002a4a: SWAP2 00002a4b: POP 00002a4c: PUSH1 0xa0 00002a4e: DUP8 00002a4f: ADD 00002a50: CALLDATALOAD 00002a51: PUSH1 0x01 00002a53: PUSH1 0x01 00002a55: PUSH1 0x40 00002a57: SHL 00002a58: SUB 00002a59: DUP2 00002a5a: GT 00002a5b: ISZERO 00002a5c: PUSH2 0x2a63 00002a5f: JUMPI 00002a60: DUP2 00002a61: DUP3 00002a62: REVERT 00002a63: JUMPDEST 00002a64: PUSH2 0x2a6f 00002a67: DUP10 00002a68: DUP3 00002a69: DUP11 00002a6a: ADD 00002a6b: PUSH2 0x26b1 00002a6e: JUMP 00002a6f: JUMPDEST 00002a70: SWAP2 00002a71: POP 00002a72: POP 00002a73: SWAP3 00002a74: SWAP6 00002a75: POP 00002a76: SWAP3 00002a77: SWAP6 00002a78: POP 00002a79: SWAP3 00002a7a: SWAP6 00002a7b: JUMP 00002a7c: JUMPDEST 00002a7d: PUSH1 0x00 00002a7f: DUP2 00002a80: MLOAD 00002a81: DUP1 00002a82: DUP5 00002a83: MSTORE 00002a84: PUSH2 0x2a94 00002a87: DUP2 00002a88: PUSH1 0x20 00002a8a: DUP7 00002a8b: ADD 00002a8c: PUSH1 0x20 00002a8e: DUP7 00002a8f: ADD 00002a90: PUSH2 0x2d11 00002a93: JUMP 00002a94: JUMPDEST 00002a95: PUSH1 0x1f 00002a97: ADD 00002a98: PUSH1 0x1f 00002a9a: NOT 00002a9b: AND 00002a9c: SWAP3 00002a9d: SWAP1 00002a9e: SWAP3 00002a9f: ADD 00002aa0: PUSH1 0x20 00002aa2: ADD 00002aa3: SWAP3 00002aa4: SWAP2 00002aa5: POP 00002aa6: POP 00002aa7: JUMP 00002aa8: JUMPDEST 00002aa9: DUP1 00002aaa: MLOAD 00002aab: PUSH1 0x01 00002aad: PUSH1 0x01 00002aaf: PUSH1 0xa0 00002ab1: SHL 00002ab2: SUB 00002ab3: AND 00002ab4: DUP3 00002ab5: MSTORE 00002ab6: PUSH1 0x20 00002ab8: DUP1 00002ab9: DUP3 00002aba: ADD 00002abb: MLOAD 00002abc: PUSH1 0x01 00002abe: PUSH1 0x01 00002ac0: PUSH1 0x40 00002ac2: SHL 00002ac3: SUB 00002ac4: AND 00002ac5: SWAP1 00002ac6: DUP4 00002ac7: ADD 00002ac8: MSTORE 00002ac9: PUSH1 0x40 00002acb: DUP1 00002acc: DUP3 00002acd: ADD 00002ace: MLOAD 00002acf: ISZERO 00002ad0: ISZERO 00002ad1: SWAP1 00002ad2: DUP4 00002ad3: ADD 00002ad4: MSTORE 00002ad5: PUSH1 0x60 00002ad7: SWAP1 00002ad8: DUP2 00002ad9: ADD 00002ada: MLOAD 00002adb: PUSH3 0xffffff 00002adf: AND 00002ae0: SWAP2 00002ae1: ADD 00002ae2: MSTORE 00002ae3: JUMP 00002ae4: JUMPDEST 00002ae5: PUSH1 0x00 00002ae7: DUP3 00002ae8: MLOAD 00002ae9: PUSH2 0x2af6 00002aec: DUP2 00002aed: DUP5 00002aee: PUSH1 0x20 00002af0: DUP8 00002af1: ADD 00002af2: PUSH2 0x2d11 00002af5: JUMP 00002af6: JUMPDEST 00002af7: SWAP2 00002af8: SWAP1 00002af9: SWAP2 00002afa: ADD 00002afb: SWAP3 00002afc: SWAP2 00002afd: POP 00002afe: POP 00002aff: JUMP 00002b00: JUMPDEST 00002b01: PUSH1 0x00 00002b03: DUP4 00002b04: MLOAD 00002b05: PUSH2 0x2b12 00002b08: DUP2 00002b09: DUP5 00002b0a: PUSH1 0x20 00002b0c: DUP9 00002b0d: ADD 00002b0e: PUSH2 0x2d11 00002b11: JUMP 00002b12: JUMPDEST 00002b13: DUP4 00002b14: MLOAD 00002b15: SWAP1 00002b16: DUP4 00002b17: ADD 00002b18: SWAP1 00002b19: PUSH2 0x2b26 00002b1c: DUP2 00002b1d: DUP4 00002b1e: PUSH1 0x20 00002b20: DUP9 00002b21: ADD 00002b22: PUSH2 0x2d11 00002b25: JUMP 00002b26: JUMPDEST 00002b27: ADD 00002b28: SWAP5 00002b29: SWAP4 00002b2a: POP 00002b2b: POP 00002b2c: POP 00002b2d: POP 00002b2e: JUMP 00002b2f: JUMPDEST 00002b30: PUSH1 0x01 00002b32: PUSH1 0x01 00002b34: PUSH1 0xa0 00002b36: SHL 00002b37: SUB 00002b38: DUP6 00002b39: DUP2 00002b3a: AND 00002b3b: DUP3 00002b3c: MSTORE 00002b3d: DUP5 00002b3e: AND 00002b3f: PUSH1 0x20 00002b41: DUP3 00002b42: ADD 00002b43: MSTORE 00002b44: PUSH1 0x40 00002b46: DUP2 00002b47: ADD 00002b48: DUP4 00002b49: SWAP1 00002b4a: MSTORE 00002b4b: PUSH1 0x80 00002b4d: PUSH1 0x60 00002b4f: DUP3 00002b50: ADD 00002b51: DUP2 00002b52: SWAP1 00002b53: MSTORE 00002b54: PUSH1 0x00 00002b56: SWAP1 00002b57: PUSH2 0x2b62 00002b5a: SWAP1 00002b5b: DUP4 00002b5c: ADD 00002b5d: DUP5 00002b5e: PUSH2 0x2a7c 00002b61: JUMP 00002b62: JUMPDEST 00002b63: SWAP7 00002b64: SWAP6 00002b65: POP 00002b66: POP 00002b67: POP 00002b68: POP 00002b69: POP 00002b6a: POP 00002b6b: JUMP 00002b6c: JUMPDEST 00002b6d: PUSH1 0x00 00002b6f: PUSH1 0x80 00002b71: DUP3 00002b72: ADD 00002b73: PUSH1 0x01 00002b75: DUP1 00002b76: PUSH1 0xa0 00002b78: SHL 00002b79: SUB 00002b7a: DUP8 00002b7b: AND 00002b7c: DUP4 00002b7d: MSTORE 00002b7e: PUSH1 0x20 00002b80: DUP7 00002b81: DUP2 00002b82: DUP6 00002b83: ADD 00002b84: MSTORE 00002b85: DUP6 00002b86: PUSH1 0x40 00002b88: DUP6 00002b89: ADD 00002b8a: MSTORE 00002b8b: PUSH1 0x80 00002b8d: PUSH1 0x60 00002b8f: DUP6 00002b90: ADD 00002b91: MSTORE 00002b92: DUP2 00002b93: DUP6 00002b94: SLOAD 00002b95: DUP1 00002b96: DUP5 00002b97: MSTORE 00002b98: PUSH1 0xa0 00002b9a: DUP7 00002b9b: ADD 00002b9c: SWAP2 00002b9d: POP 00002b9e: DUP7 00002b9f: DUP6 00002ba0: MSTORE 00002ba1: DUP3 00002ba2: DUP6 00002ba3: KECCAK256 00002ba4: SWAP4 00002ba5: POP 00002ba6: DUP5 00002ba7: JUMPDEST 00002ba8: DUP2 00002ba9: DUP2 00002baa: LT 00002bab: ISZERO 00002bac: PUSH2 0x2bc3 00002baf: JUMPI 00002bb0: DUP5 00002bb1: SLOAD 00002bb2: DUP4 00002bb3: MSTORE 00002bb4: PUSH1 0x01 00002bb6: SWAP5 00002bb7: DUP6 00002bb8: ADD 00002bb9: SWAP5 00002bba: SWAP3 00002bbb: DUP5 00002bbc: ADD 00002bbd: SWAP3 00002bbe: ADD 00002bbf: PUSH2 0x2ba7 00002bc2: JUMP 00002bc3: JUMPDEST 00002bc4: POP 00002bc5: SWAP1 00002bc6: SWAP10 00002bc7: SWAP9 00002bc8: POP 00002bc9: POP 00002bca: POP 00002bcb: POP 00002bcc: POP 00002bcd: POP 00002bce: POP 00002bcf: POP 00002bd0: POP 00002bd1: JUMP 00002bd2: JUMPDEST 00002bd3: PUSH1 0x20 00002bd5: DUP1 00002bd6: DUP3 00002bd7: MSTORE 00002bd8: DUP3 00002bd9: MLOAD 00002bda: DUP3 00002bdb: DUP3 00002bdc: ADD 00002bdd: DUP2 00002bde: SWAP1 00002bdf: MSTORE 00002be0: PUSH1 0x00 00002be2: SWAP2 00002be3: SWAP1 00002be4: DUP5 00002be5: DUP3 00002be6: ADD 00002be7: SWAP1 00002be8: PUSH1 0x40 00002bea: DUP6 00002beb: ADD 00002bec: SWAP1 00002bed: DUP5 00002bee: JUMPDEST 00002bef: DUP2 00002bf0: DUP2 00002bf1: LT 00002bf2: ISZERO 00002bf3: PUSH2 0x1248 00002bf6: JUMPI 00002bf7: PUSH2 0x2c01 00002bfa: DUP4 00002bfb: DUP6 00002bfc: MLOAD 00002bfd: PUSH2 0x2aa8 00002c00: JUMP 00002c01: JUMPDEST 00002c02: SWAP3 00002c03: DUP5 00002c04: ADD 00002c05: SWAP3 00002c06: PUSH1 0x80 00002c08: SWAP3 00002c09: SWAP1 00002c0a: SWAP3 00002c0b: ADD 00002c0c: SWAP2 00002c0d: PUSH1 0x01 00002c0f: ADD 00002c10: PUSH2 0x2bee 00002c13: JUMP 00002c14: JUMPDEST 00002c15: PUSH1 0x20 00002c17: DUP1 00002c18: DUP3 00002c19: MSTORE 00002c1a: DUP3 00002c1b: MLOAD 00002c1c: DUP3 00002c1d: DUP3 00002c1e: ADD 00002c1f: DUP2 00002c20: SWAP1 00002c21: MSTORE 00002c22: PUSH1 0x00 00002c24: SWAP2 00002c25: SWAP1 00002c26: DUP5 00002c27: DUP3 00002c28: ADD 00002c29: SWAP1 00002c2a: PUSH1 0x40 00002c2c: DUP6 00002c2d: ADD 00002c2e: SWAP1 00002c2f: DUP5 00002c30: JUMPDEST 00002c31: DUP2 00002c32: DUP2 00002c33: LT 00002c34: ISZERO 00002c35: PUSH2 0x1248 00002c38: JUMPI 00002c39: DUP4 00002c3a: MLOAD 00002c3b: DUP4 00002c3c: MSTORE 00002c3d: SWAP3 00002c3e: DUP5 00002c3f: ADD 00002c40: SWAP3 00002c41: SWAP2 00002c42: DUP5 00002c43: ADD 00002c44: SWAP2 00002c45: PUSH1 0x01 00002c47: ADD 00002c48: PUSH2 0x2c30 00002c4b: JUMP 00002c4c: JUMPDEST 00002c4d: PUSH1 0x20 00002c4f: DUP2 00002c50: MSTORE 00002c51: PUSH1 0x00 00002c53: PUSH2 0x1408 00002c56: PUSH1 0x20 00002c58: DUP4 00002c59: ADD 00002c5a: DUP5 00002c5b: PUSH2 0x2a7c 00002c5e: JUMP 00002c5f: JUMPDEST 00002c60: PUSH1 0x20 00002c62: DUP1 00002c63: DUP3 00002c64: MSTORE 00002c65: PUSH1 0x17 00002c67: SWAP1 00002c68: DUP3 00002c69: ADD 00002c6a: MSTORE 00002c6b: PUSH32 0x746f6b656e2068617665206265656e206c6f636b656421000000000000000000 00002c8c: PUSH1 0x40 00002c8e: DUP3 00002c8f: ADD 00002c90: MSTORE 00002c91: PUSH1 0x60 00002c93: ADD 00002c94: SWAP1 00002c95: JUMP 00002c96: JUMPDEST 00002c97: PUSH1 0x80 00002c99: DUP2 00002c9a: ADD 00002c9b: PUSH2 0x093a 00002c9e: DUP3 00002c9f: DUP5 00002ca0: PUSH2 0x2aa8 00002ca3: JUMP 00002ca4: JUMPDEST 00002ca5: PUSH1 0x40 00002ca7: MLOAD 00002ca8: PUSH1 0x1f 00002caa: DUP3 00002cab: ADD 00002cac: PUSH1 0x1f 00002cae: NOT 00002caf: AND 00002cb0: DUP2 00002cb1: ADD 00002cb2: PUSH1 0x01 00002cb4: PUSH1 0x01 00002cb6: PUSH1 0x40 00002cb8: SHL 00002cb9: SUB 00002cba: DUP2 00002cbb: GT 00002cbc: DUP3 00002cbd: DUP3 00002cbe: LT 00002cbf: OR 00002cc0: ISZERO 00002cc1: PUSH2 0x2ccc 00002cc4: JUMPI 00002cc5: PUSH2 0x2ccc 00002cc8: PUSH2 0x2dc3 00002ccb: JUMP 00002ccc: JUMPDEST 00002ccd: PUSH1 0x40 00002ccf: MSTORE 00002cd0: SWAP2 00002cd1: SWAP1 00002cd2: POP 00002cd3: JUMP 00002cd4: JUMPDEST 00002cd5: PUSH1 0x00 00002cd7: DUP3 00002cd8: NOT 00002cd9: DUP3 00002cda: GT 00002cdb: ISZERO 00002cdc: PUSH2 0x2ce7 00002cdf: JUMPI 00002ce0: PUSH2 0x2ce7 00002ce3: PUSH2 0x2dad 00002ce6: JUMP 00002ce7: JUMPDEST 00002ce8: POP 00002ce9: ADD 00002cea: SWAP1 00002ceb: JUMP 00002cec: JUMPDEST 00002ced: PUSH1 0x00 00002cef: PUSH1 0xff 00002cf1: DUP3 00002cf2: AND 00002cf3: PUSH1 0xff 00002cf5: DUP5 00002cf6: AND 00002cf7: DUP1 00002cf8: PUSH1 0xff 00002cfa: SUB 00002cfb: DUP3 00002cfc: GT 00002cfd: ISZERO 00002cfe: PUSH2 0x2d09 00002d01: JUMPI 00002d02: PUSH2 0x2d09 00002d05: PUSH2 0x2dad 00002d08: JUMP 00002d09: JUMPDEST 00002d0a: ADD 00002d0b: SWAP4 00002d0c: SWAP3 00002d0d: POP 00002d0e: POP 00002d0f: POP 00002d10: JUMP 00002d11: JUMPDEST 00002d12: PUSH1 0x00 00002d14: JUMPDEST 00002d15: DUP4 00002d16: DUP2 00002d17: LT 00002d18: ISZERO 00002d19: PUSH2 0x2d2c 00002d1c: JUMPI 00002d1d: DUP2 00002d1e: DUP2 00002d1f: ADD 00002d20: MLOAD 00002d21: DUP4 00002d22: DUP3 00002d23: ADD 00002d24: MSTORE 00002d25: PUSH1 0x20 00002d27: ADD 00002d28: PUSH2 0x2d14 00002d2b: JUMP 00002d2c: JUMPDEST 00002d2d: DUP4 00002d2e: DUP2 00002d2f: GT 00002d30: ISZERO 00002d31: PUSH2 0x1619 00002d34: JUMPI 00002d35: POP 00002d36: POP 00002d37: PUSH1 0x00 00002d39: SWAP2 00002d3a: ADD 00002d3b: MSTORE 00002d3c: JUMP 00002d3d: JUMPDEST 00002d3e: PUSH1 0x01 00002d40: DUP2 00002d41: DUP2 00002d42: SHR 00002d43: SWAP1 00002d44: DUP3 00002d45: AND 00002d46: DUP1 00002d47: PUSH2 0x2d51 00002d4a: JUMPI 00002d4b: PUSH1 0x7f 00002d4d: DUP3 00002d4e: AND 00002d4f: SWAP2 00002d50: POP 00002d51: JUMPDEST 00002d52: PUSH1 0x20 00002d54: DUP3 00002d55: LT 00002d56: DUP2 00002d57: EQ 00002d58: ISZERO 00002d59: PUSH2 0x1cfc 00002d5c: JUMPI 00002d5d: PUSH4 0x4e487b71 00002d62: PUSH1 0xe0 00002d64: SHL 00002d65: PUSH1 0x00 00002d67: MSTORE 00002d68: PUSH1 0x22 00002d6a: PUSH1 0x04 00002d6c: MSTORE 00002d6d: PUSH1 0x24 00002d6f: PUSH1 0x00 00002d71: REVERT 00002d72: JUMPDEST 00002d73: PUSH1 0x00 00002d75: PUSH1 0x00 00002d77: NOT 00002d78: DUP3 00002d79: EQ 00002d7a: ISZERO 00002d7b: PUSH2 0x2d86 00002d7e: JUMPI 00002d7f: PUSH2 0x2d86 00002d82: PUSH2 0x2dad 00002d85: JUMP 00002d86: JUMPDEST 00002d87: POP 00002d88: PUSH1 0x01 00002d8a: ADD 00002d8b: SWAP1 00002d8c: JUMP 00002d8d: JUMPDEST 00002d8e: PUSH1 0x00 00002d90: DUP3 00002d91: PUSH2 0x2da8 00002d94: JUMPI 00002d95: PUSH4 0x4e487b71 00002d9a: PUSH1 0xe0 00002d9c: SHL 00002d9d: DUP2 00002d9e: MSTORE 00002d9f: PUSH1 0x12 00002da1: PUSH1 0x04 00002da3: MSTORE 00002da4: PUSH1 0x24 00002da6: DUP2 00002da7: REVERT 00002da8: JUMPDEST 00002da9: POP 00002daa: MOD 00002dab: SWAP1 00002dac: JUMP 00002dad: JUMPDEST 00002dae: PUSH4 0x4e487b71 00002db3: PUSH1 0xe0 00002db5: SHL 00002db6: PUSH1 0x00 00002db8: MSTORE 00002db9: PUSH1 0x11 00002dbb: PUSH1 0x04 00002dbd: MSTORE 00002dbe: PUSH1 0x24 00002dc0: PUSH1 0x00 00002dc2: REVERT 00002dc3: JUMPDEST 00002dc4: PUSH4 0x4e487b71 00002dc9: PUSH1 0xe0 00002dcb: SHL 00002dcc: PUSH1 0x00 00002dce: MSTORE 00002dcf: PUSH1 0x41 00002dd1: PUSH1 0x04 00002dd3: MSTORE 00002dd4: PUSH1 0x24 00002dd6: PUSH1 0x00 00002dd8: REVERT 00002dd9: JUMPDEST 00002dda: PUSH1 0x01 00002ddc: PUSH1 0x01 00002dde: PUSH1 0xe0 00002de0: SHL 00002de1: SUB 00002de2: NOT 00002de3: DUP2 00002de4: AND 00002de5: DUP2 00002de6: EQ 00002de7: PUSH2 0x0f38 00002dea: JUMPI 00002deb: PUSH1 0x00 00002ded: DUP1 00002dee: REVERT 00002def: INVALID 00002df0: UNKNOWN(0xDD) 00002df1: CALLCODE 00002df2: MSTORE 00002df3: UNKNOWN(0xAD) 00002df4: SHL 00002df5: UNKNOWN(0xE2) 00002df6: UNKNOWN(0xC8) 00002df7: SWAP12 00002df8: PUSH10 0xc2b068fc378daa952ba7 00002e03: CALL 00002e04: PUSH4 0xc4a11628 00002e09: CREATE2 00002e0a: GAS 00002e0b: UNKNOWN(0x4D) 00002e0c: CREATE2 00002e0d: UNKNOWN(0x23) 00002e0e: UNKNOWN(0xB3) 00002e0f: UNKNOWN(0xEF) 00002e10: LOG2 00002e11: PUSH5 0x6970667358 00002e17: UNKNOWN(0x22) 00002e18: SLT 00002e19: KECCAK256 00002e1a: UNKNOWN(0xB6) 00002e1b: CODESIZE 00002e1c: UNKNOWN(0xDC) 00002e1d: CALLER 00002e1e: OR 00002e1f: DUP5 00002e20: SWAP3 00002e21: PUSH22 0xf8a96cd2c03c064347c5ed5d536a76025b5d377515df 00002e38: UNKNOWN(0x22) 00002e39: UNKNOWN(0xA8) 00002e3a: PUSH5 0x736f6c6343 00002e40: STOP 00002e41: ADDMOD 00002e42: DIV 00002e43: STOP 00002e44: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x4cdd8c7f0b31565aee800a5bf77e374565ab16fc524add0448df5bea799e9083
call_targets:
0x69bcb93d13d1063335269e8602b009485abd3e87
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x4cdd8c7f0b31565aee800a5bf77e374565ab16fc524add0448df5bea799e9083",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x69bcb93d13d1063335269e8602b009485abd3e87"
],
"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": "0xdd467064",
"selector": "0xdd467064",
"calldata_variants": [
"0xdd467064",
"0xdd4670640000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe985e9c5",
"selector": "0xe985e9c5",
"calldata_variants": [
"0xe985e9c5",
"0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2523633",
"selector": "0xf2523633",
"calldata_variants": [
"0xf2523633",
"0xf25236330000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd09ef241",
"selector": "0xd09ef241",
"calldata_variants": [
"0xd09ef241",
"0xd09ef2410000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd89135cd",
"selector": "0xd89135cd",
"calldata_variants": [
"0xd89135cd",
"0xd89135cd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdc33e681",
"selector": "0xdc33e681",
"calldata_variants": [
"0xdc33e681",
"0xdc33e6810000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb863bd37",
"selector": "0xb863bd37",
"calldata_variants": [
"0xb863bd37",
"0xb863bd370000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3614,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 8727,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 9163,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 5,
"guards_detected": []
}
|
| high | auth | codex | Signed mint does not bind payment amount, enabling free or underpriced mints | 85 | no | — |
viewevidence_json{
"evidence": "verifySignature hashes only msg.sender, nonce, orderId, quantity; userMint accepts a caller-supplied eth and only checks msg.value >= eth.",
"locations": [
"contracts/Contract.sol:2131",
"contracts/Contract.sol:2195"
],
"recommendation": "Bind the price to the signed payload (or store pricing on-chain). For example, include eth (or price * quantity) in the signed message and require msg.value to equal the signed amount.",
"exploit_scenario": "Owner signs a mint authorization for a user (msg.sender, nonce, orderId, quantity). The user calls userMint with eth=0 (or any lower amount) and msg.value=0, passes verifySignature (since eth is not signed) and the payment check (msg.value >= eth), and receives tokens without paying the intended price."
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x4cdd8c7f0b31565aee800a5bf77e374565ab16fc524add0448df5bea799e9083
call_targets:
0x69bcb93d13d1063335269e8602b009485abd3e87
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x4cdd8c7f0b31565aee800a5bf77e374565ab16fc524add0448df5bea799e9083",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x69bcb93d13d1063335269e8602b009485abd3e87"
],
"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": "0xdd467064",
"selector": "0xdd467064",
"calldata_variants": [
"0xdd467064",
"0xdd4670640000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe985e9c5",
"selector": "0xe985e9c5",
"calldata_variants": [
"0xe985e9c5",
"0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2523633",
"selector": "0xf2523633",
"calldata_variants": [
"0xf2523633",
"0xf25236330000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd09ef241",
"selector": "0xd09ef241",
"calldata_variants": [
"0xd09ef241",
"0xd09ef2410000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd89135cd",
"selector": "0xd89135cd",
"calldata_variants": [
"0xd89135cd",
"0xd89135cd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdc33e681",
"selector": "0xdc33e681",
"calldata_variants": [
"0xdc33e681",
"0xdc33e6810000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb863bd37",
"selector": "0xb863bd37",
"calldata_variants": [
"0xb863bd37",
"0xb863bd370000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3614,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 8727,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 9163,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 5,
"guards_detected": [],
"untrusted_call_count": 5
}
|
| medium | reentrancy | slither | Reentrancy in NFTEntry.userMint(uint256,uint256,uint256,uint256,uint256,bytes) (contracts/Contract.sol#2124-2152): | 75 | no | — |
viewevidence_json{
"impact": "Medium",
"detector": "reentrancy-no-eth",
"elements": [
{
"name": "userMint",
"type": "function",
"source_mapping": {
"lines": [
2124,
2125,
2126,
2127,
2128,
2129,
2130,
2131,
2132,
2133,
2134,
2135,
2136,
2137,
2138,
2139,
2140,
2141,
2142,
2143,
2144,
2145,
2146,
2147,
2148,
2149,
2150,
2151,
2152
],
"start": 67714,
"length": 1024,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-36h7uohj/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "NFTEntry",
"type": "contract",
"source_mapping": {
"lines": [
2039,
2040,
2041,
2042,
2043,
2044,
2045,
2046,
2047,
2048,
2049,
2050,
2051,
2052,
2053,
2054,
2055,
2056,
2057,
2058,
2059,
2060,
2061,
2062,
2063,
2064,
2065,
2066,
2067,
2068,
2069,
2070,
2071,
2072,
2073,
2074,
2075,
2076,
2077,
2078,
2079,
2080,
2081,
2082,
2083,
2084,
2085,
2086,
2087,
2088,
2089,
2090,
2091,
2092,
2093,
2094,
2095,
2096,
2097,
2098,
2099,
2100,
2101,
2102,
2103,
2104,
2105,
2106,
2107,
2108,
2109,
2110,
2111,
2112,
2113,
2114,
2115,
2116,
2117,
2118,
2119,
2120,
2121,
2122,
2123,
2124,
2125,
2126,
2127,
2128,
2129,
2130,
2131,
2132,
2133,
2134,
2135,
2136,
2137,
2138,
2139,
2140,
2141,
2142,
2143,
2144,
2145,
2146,
2147,
2148,
2149,
2150,
2151,
2152,
2153,
2154,
2155,
2156,
2157,
2158,
2159,
2160,
2161,
2162,
2163,
2164,
2165,
2166,
2167,
2168,
2169,
2170,
2171,
2172,
2173,
2174,
2175,
2176,
2177,
2178,
2179,
2180,
2181,
2182,
2183,
2184,
2185,
2186,
2187,
2188,
2189,
2190,
2191,
2192,
2193,
2194,
2195,
2196,
2197,
2198,
2199,
2200,
2201,
2202,
2203,
2204,
2205,
2206,
2207,
2208,
2209,
2210,
2211,
2212,
2213,
2214,
2215,
2216,
2217,
2218,
2219,
2220,
2221,
2222,
2223,
2224,
2225,
2226,
2227,
2228,
2229,
2230,
2231,
2232,
2233,
2234,
2235,
2236,
2237,
2238,
2239,
2240,
2241,
2242,
2243,
2244,
2245,
2246,
2247,
2248,
2249,
2250,
2251,
2252,
2253,
2254,
2255,
2256,
2257,
2258,
2259,
2260,
2261,
2262,
2263,
2264,
2265,
2266,
2267,
2268,
2269,
2270,
2271,
2272,
2273,
2274,
2275,
2276,
2277,
2278,
2279,
2280,
2281,
2282,
2283,
2284,
2285,
2286,
2287,
2288,
2289,
2290,
2291,
2292,
2293,
2294,
2295,
2296,
2297,
2298,
2299,
2300,
2301,
2302,
2303,
2304,
2305,
2306,
2307,
2308,
2309,
2310
],
"start": 64818,
"length": 8609,
"ending_column": 56,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 30,
"filename_absolute": "/tmp/slither-36h7uohj/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "userMint(uint256,uint256,uint256,uint256,uint256,bytes)"
}
},
{
"name": "TransferHelper.safeTransferETH(address(this),eth)",
"type": "node",
"source_mapping": {
"lines": [
2138,
2139
],
"start": 68295,
"length": 84,
"ending_column": 24,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 4,
"filename_absolute": "/tmp/slither-36h7uohj/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "userMint",
"type": "function",
"source_mapping": {
"lines": [
2124,
2125,
2126,
2127,
2128,
2129,
2130,
2131,
2132,
2133,
2134,
2135,
2136,
2137,
2138,
2139,
2140,
2141,
2142,
2143,
2144,
2145,
2146,
2147,
2148,
2149,
2150,
2151,
2152
],
"start": 67714,
"length": 1024,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-36h7uohj/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "NFTEntry",
"type": "contract",
"source_mapping": {
"lines": [
2039,
2040,
2041,
2042,
2043,
2044,
2045,
2046,
2047,
2048,
2049,
2050,
2051,
2052,
2053,
2054,
2055,
2056,
2057,
2058,
2059,
2060,
2061,
2062,
2063,
2064,
2065,
2066,
2067,
2068,
2069,
2070,
2071,
2072,
2073,
2074,
2075,
2076,
2077,
2078,
2079,
2080,
2081,
2082,
2083,
2084,
2085,
2086,
2087,
2088,
2089,
2090,
2091,
2092,
2093,
2094,
2095,
2096,
2097,
2098,
2099,
2100,
2101,
2102,
2103,
2104,
2105,
2106,
2107,
2108,
2109,
2110,
2111,
2112,
2113,
2114,
2115,
2116,
2117,
2118,
2119,
2120,
2121,
2122,
2123,
2124,
2125,
2126,
2127,
2128,
2129,
2130,
2131,
2132,
2133,
2134,
2135,
2136,
2137,
2138,
2139,
2140,
2141,
2142,
2143,
2144,
2145,
2146,
2147,
2148,
2149,
2150,
2151,
2152,
2153,
2154,
2155,
2156,
2157,
2158,
2159,
2160,
2161,
2162,
2163,
2164,
2165,
2166,
2167,
2168,
2169,
2170,
2171,
2172,
2173,
2174,
2175,
2176,
2177,
2178,
2179,
2180,
2181,
2182,
2183,
2184,
2185,
2186,
2187,
2188,
2189,
2190,
2191,
2192,
2193,
2194,
2195,
2196,
2197,
2198,
2199,
2200,
2201,
2202,
2203,
2204,
2205,
2206,
2207,
2208,
2209,
2210,
2211,
2212,
2213,
2214,
2215,
2216,
2217,
2218,
2219,
2220,
2221,
2222,
2223,
2224,
2225,
2226,
2227,
2228,
2229,
2230,
2231,
2232,
2233,
2234,
2235,
2236,
2237,
2238,
2239,
2240,
2241,
2242,
2243,
2244,
2245,
2246,
2247,
2248,
2249,
2250,
2251,
2252,
2253,
2254,
2255,
2256,
2257,
2258,
2259,
2260,
2261,
2262,
2263,
2264,
2265,
2266,
2267,
2268,
2269,
2270,
2271,
2272,
2273,
2274,
2275,
2276,
2277,
2278,
2279,
2280,
2281,
2282,
2283,
2284,
2285,
2286,
2287,
2288,
2289,
2290,
2291,
2292,
2293,
2294,
2295,
2296,
2297,
2298,
2299,
2300,
2301,
2302,
2303,
2304,
2305,
2306,
2307,
2308,
2309,
2310
],
"start": 64818,
"length": 8609,
"ending_column": 56,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 30,
"filename_absolute": "/tmp/slither-36h7uohj/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "userMint(uint256,uint256,uint256,uint256,uint256,bytes)"
}
}
}
},
{
"name": "transferToken(address(this),msg.sender,i)",
"type": "node",
"source_mapping": {
"lines": [
2144,
2145
],
"start": 68529,
"length": 43,
"ending_column": 12,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 37,
"filename_absolute": "/tmp/slither-36h7uohj/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"variable_name": "_packedAddressData",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "userMint",
"type": "function",
"source_mapping": {
"lines": [
2124,
2125,
2126,
2127,
2128,
2129,
2130,
2131,
2132,
2133,
2134,
2135,
2136,
2137,
2138,
2139,
2140,
2141,
2142,
2143,
2144,
2145,
2146,
2147,
2148,
2149,
2150,
2151,
2152
],
"start": 67714,
"length": 1024,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-36h7uohj/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "NFTEntry",
"type": "contract",
"source_mapping": {
"lines": [
2039,
2040,
2041,
2042,
2043,
2044,
2045,
2046,
2047,
2048,
2049,
2050,
2051,
2052,
2053,
2054,
2055,
2056,
2057,
2058,
2059,
2060,
2061,
2062,
2063,
2064,
2065,
2066,
2067,
2068,
2069,
2070,
2071,
2072,
2073,
2074,
2075,
2076,
2077,
2078,
2079,
2080,
2081,
2082,
2083,
2084,
2085,
2086,
2087,
2088,
2089,
2090,
2091,
2092,
2093,
2094,
2095,
2096,
2097,
2098,
2099,
2100,
2101,
2102,
2103,
2104,
2105,
2106,
2107,
2108,
2109,
2110,
2111,
2112,
2113,
2114,
2115,
2116,
2117,
2118,
2119,
2120,
2121,
2122,
2123,
2124,
2125,
2126,
2127,
2128,
2129,
2130,
2131,
2132,
2133,
2134,
2135,
2136,
2137,
2138,
2139,
2140,
2141,
2142,
2143,
2144,
2145,
2146,
2147,
2148,
2149,
2150,
2151,
2152,
2153,
2154,
2155,
2156,
2157,
2158,
2159,
2160,
2161,
2162,
2163,
2164,
2165,
2166,
2167,
2168,
2169,
2170,
2171,
2172,
2173,
2174,
2175,
2176,
2177,
2178,
2179,
2180,
2181,
2182,
2183,
2184,
2185,
2186,
2187,
2188,
2189,
2190,
2191,
2192,
2193,
2194,
2195,
2196,
2197,
2198,
2199,
2200,
2201,
2202,
2203,
2204,
2205,
2206,
2207,
2208,
2209,
2210,
2211,
2212,
2213,
2214,
2215,
2216,
2217,
2218,
2219,
2220,
2221,
2222,
2223,
2224,
2225,
2226,
2227,
2228,
2229,
2230,
2231,
2232,
2233,
2234,
2235,
2236,
2237,
2238,
2239,
2240,
2241,
2242,
2243,
2244,
2245,
2246,
2247,
2248,
2249,
2250,
2251,
2252,
2253,
2254,
2255,
2256,
2257,
2258,
2259,
2260,
2261,
2262,
2263,
2264,
2265,
2266,
2267,
2268,
2269,
2270,
2271,
2272,
2273,
2274,
2275,
2276,
2277,
2278,
2279,
2280,
2281,
2282,
2283,
2284,
2285,
2286,
2287,
2288,
2289,
2290,
2291,
2292,
2293,
2294,
2295,
2296,
2297,
2298,
2299,
2300,
2301,
2302,
2303,
2304,
2305,
2306,
2307,
2308,
2309,
2310
],
"start": 64818,
"length": 8609,
"ending_column": 56,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 30,
"filename_absolute": "/tmp/slither-36h7uohj/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "userMint(uint256,uint256,uint256,uint256,uint256,bytes)"
}
}
}
},
{
"name": "-- _packedAddressData[from]",
"type": "node",
"source_mapping": {
"lines": [
2266,
2267
],
"start": 72036,
"length": 26,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 59,
"filename_absolute": "/tmp/slither-36h7uohj/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"variable_name": "_packedAddressData",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "transferToken",
"type": "function",
"source_mapping": {
"lines": [
2230,
2231,
2232,
2233,
2234,
2235,
2236,
2237,
2238,
2239,
2240,
2241,
2242,
2243,
2244,
2245,
2246,
2247,
2248,
2249,
2250,
2251,
2252,
2253,
2254,
2255,
2256,
2257,
2258,
2259,
2260,
2261,
2262,
2263,
2264,
2265,
2266,
2267,
2268,
2269,
2270,
2271,
2272,
2273,
2274,
2275,
2276,
2277,
2278,
2279,
2280,
2281,
2282,
2283,
2284,
2285,
2286,
2287,
2288,
2289,
2290,
2291,
2292,
2293,
2294,
2295,
2296,
2297,
2298,
2299,
2300,
2301,
2302,
2303,
2304,
2305,
2306,
2307,
2308,
2309,
2310
],
"start": 70853,
"length": 2572,
"ending_column": 54,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 3,
"filename_absolute": "/tmp/slither-36h7uohj/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "NFTEntry",
"type": "contract",
"source_mapping": {
"lines": [
2039,
2040,
2041,
2042,
2043,
2044,
2045,
2046,
2047,
2048,
2049,
2050,
2051,
2052,
2053,
2054,
2055,
2056,
2057,
2058,
2059,
2060,
2061,
2062,
2063,
2064,
2065,
2066,
2067,
2068,
2069,
2070,
2071,
2072,
2073,
2074,
2075,
2076,
2077,
2078,
2079,
2080,
2081,
2082,
2083,
2084,
2085,
2086,
2087,
2088,
2089,
2090,
2091,
2092,
2093,
2094,
2095,
2096,
2097,
2098,
2099,
2100,
2101,
2102,
2103,
2104,
2105,
2106,
2107,
2108,
2109,
2110,
2111,
2112,
2113,
2114,
2115,
2116,
2117,
2118,
2119,
2120,
2121,
2122,
2123,
2124,
2125,
2126,
2127,
2128,
2129,
2130,
2131,
2132,
2133,
2134,
2135,
2136,
2137,
2138,
2139,
2140,
2141,
2142,
2143,
2144,
2145,
2146,
2147,
2148,
2149,
2150,
2151,
2152,
2153,
2154,
2155,
2156,
2157,
2158,
2159,
2160,
2161,
2162,
2163,
2164,
2165,
2166,
2167,
2168,
2169,
2170,
2171,
2172,
2173,
2174,
2175,
2176,
2177,
2178,
2179,
2180,
2181,
2182,
2183,
2184,
2185,
2186,
2187,
2188,
2189,
2190,
2191,
2192,
2193,
2194,
2195,
2196,
2197,
2198,
2199,
2200,
2201,
2202,
2203,
2204,
2205,
2206,
2207,
2208,
2209,
2210,
2211,
2212,
2213,
2214,
2215,
2216,
2217,
2218,
2219,
2220,
2221,
2222,
2223,
2224,
2225,
2226,
2227,
2228,
2229,
2230,
2231,
2232,
2233,
2234,
2235,
2236,
2237,
2238,
2239,
2240,
2241,
2242,
2243,
2244,
2245,
2246,
2247,
2248,
2249,
2250,
2251,
2252,
2253,
2254,
2255,
2256,
2257,
2258,
2259,
2260,
2261,
2262,
2263,
2264,
2265,
2266,
2267,
2268,
2269,
2270,
2271,
2272,
2273,
2274,
2275,
2276,
2277,
2278,
2279,
2280,
2281,
2282,
2283,
2284,
2285,
2286,
2287,
2288,
2289,
2290,
2291,
2292,
2293,
2294,
2295,
2296,
2297,
2298,
2299,
2300,
2301,
2302,
2303,
2304,
2305,
2306,
2307,
2308,
2309,
2310
],
"start": 64818,
"length": 8609,
"ending_column": 56,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 30,
"filename_absolute": "/tmp/slither-36h7uohj/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "transferToken(address,address,uint256)"
}
}
}
},
{
"name": "++ _packedAddressData[to]",
"type": "node",
"source_mapping": {
"lines": [
2270
],
"start": 72104,
"length": 24,
"ending_column": 33,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-36h7uohj/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"variable_name": "_packedAddressData",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "transferToken",
"type": "function",
"source_mapping": {
"lines": [
2230,
2231,
2232,
2233,
2234,
2235,
2236,
2237,
2238,
2239,
2240,
2241,
2242,
2243,
2244,
2245,
2246,
2247,
2248,
2249,
2250,
2251,
2252,
2253,
2254,
2255,
2256,
2257,
2258,
2259,
2260,
2261,
2262,
2263,
2264,
2265,
2266,
2267,
2268,
2269,
2270,
2271,
2272,
2273,
2274,
2275,
2276,
2277,
2278,
2279,
2280,
2281,
2282,
2283,
2284,
2285,
2286,
2287,
2288,
2289,
2290,
2291,
2292,
2293,
2294,
2295,
2296,
2297,
2298,
2299,
2300,
2301,
2302,
2303,
2304,
2305,
2306,
2307,
2308,
2309,
2310
],
"start": 70853,
"length": 2572,
"ending_column": 54,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 3,
"filename_absolute": "/tmp/slither-36h7uohj/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "NFTEntry",
"type": "contract",
"source_mapping": {
"lines": [
2039,
2040,
2041,
2042,
2043,
2044,
2045,
2046,
2047,
2048,
2049,
2050,
2051,
2052,
2053,
2054,
2055,
2056,
2057,
2058,
2059,
2060,
2061,
2062,
2063,
2064,
2065,
2066,
2067,
2068,
2069,
2070,
2071,
2072,
2073,
2074,
2075,
2076,
2077,
2078,
2079,
2080,
2081,
2082,
2083,
2084,
2085,
2086,
2087,
2088,
2089,
2090,
2091,
2092,
2093,
2094,
2095,
2096,
2097,
2098,
2099,
2100,
2101,
2102,
2103,
2104,
2105,
2106,
2107,
2108,
2109,
2110,
2111,
2112,
2113,
2114,
2115,
2116,
2117,
2118,
2119,
2120,
2121,
2122,
2123,
2124,
2125,
2126,
2127,
2128,
2129,
2130,
2131,
2132,
2133,
2134,
2135,
2136,
2137,
2138,
2139,
2140,
2141,
2142,
2143,
2144,
2145,
2146,
2147,
2148,
2149,
2150,
2151,
2152,
2153,
2154,
2155,
2156,
2157,
2158,
2159,
2160,
2161,
2162,
2163,
2164,
2165,
2166,
2167,
2168,
2169,
2170,
2171,
2172,
2173,
2174,
2175,
2176,
2177,
2178,
2179,
2180,
2181,
2182,
2183,
2184,
2185,
2186,
2187,
2188,
2189,
2190,
2191,
2192,
2193,
2194,
2195,
2196,
2197,
2198,
2199,
2200,
2201,
2202,
2203,
2204,
2205,
2206,
2207,
2208,
2209,
2210,
2211,
2212,
2213,
2214,
2215,
2216,
2217,
2218,
2219,
2220,
2221,
2222,
2223,
2224,
2225,
2226,
2227,
2228,
2229,
2230,
2231,
2232,
2233,
2234,
2235,
2236,
2237,
2238,
2239,
2240,
2241,
2242,
2243,
2244,
2245,
2246,
2247,
2248,
2249,
2250,
2251,
2252,
2253,
2254,
2255,
2256,
2257,
2258,
2259,
2260,
2261,
2262,
2263,
2264,
2265,
2266,
2267,
2268,
2269,
2270,
2271,
2272,
2273,
2274,
2275,
2276,
2277,
2278,
2279,
2280,
2281,
2282,
2283,
2284,
2285,
2286,
2287,
2288,
2289,
2290,
2291,
2292,
2293,
2294,
2295,
2296,
2297,
2298,
2299,
2300,
2301,
2302,
2303,
2304,
2305,
2306,
2307,
2308,
2309,
2310
],
"start": 64818,
"length": 8609,
"ending_column": 56,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 30,
"filename_absolute": "/tmp/slither-36h7uohj/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "transferToken(address,address,uint256)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "userMint",
"type": "function",
"lines": [
2124,
2125,
2126,
2127,
2128,
2129,
2130,
2131,
2132,
2133,
2134,
2135,
2136,
2137,
2138,
2139,
2140,
2141,
2142,
2143,
2144,
2145,
2146,
2147,
2148,
2149,
2150,
2151,
2152
]
},
{
"file": "contracts/Contract.sol",
"name": "TransferHelper.safeTransferETH(address(this),eth)",
"type": "node",
"lines": [
2138,
2139
]
},
{
"file": "contracts/Contract.sol",
"name": "transferToken(address(this),msg.sender,i)",
"type": "node",
"lines": [
2144,
2145
]
},
{
"file": "contracts/Contract.sol",
"name": "-- _packedAddressData[from]",
"type": "node",
"lines": [
2266,
2267
]
},
{
"file": "contracts/Contract.sol",
"name": "++ _packedAddressData[to]",
"type": "node",
"lines": [
2270
]
}
],
"description": "Reentrancy in NFTEntry.userMint(uint256,uint256,uint256,uint256,uint256,bytes) (contracts/Contract.sol#2124-2152):\n\tExternal calls:\n\t- TransferHelper.safeTransferETH(address(this),eth) (contracts/Contract.sol#2138-2139)\n\tState variables written after the call(s):\n\t- transferToken(address(this),msg.sender,i) (contracts/Contract.sol#2144-2145)\n\t\t- -- _packedAddressData[from] (contracts/Contract.sol#2266-2267)\n\t\t- ++ _packedAddressData[to] (contracts/Contract.sol#2270)\n\tERC721A._packedAddressData (contracts/Contract.sol#691-695) can be used in cross function reentrancies:\n\t- ERC721A._burn(uint256,bool) (contracts/Contract.sol#1582-1673)\n\t- ERC721A._mint(address,uint256) (contracts/Contract.sol#1408-1478)\n\t- ERC721A._numberBurned(address) (contracts/Contract.sol#813-818)\n\t- ERC721A._numberMinted(address) (contracts/Contract.sol#801-809)\n\t- ERC721A.balanceOf(address) (contracts/Contract.sol#791-799)\n\t- ERC721A.transferFrom(address,address,uint256) (contracts/Contract.sol#1212-1285)\n\t- NFTEntry.transferToken(address,address,uint256) (contracts/Contract.sol#2230-2310)"
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0x7c52506680f9e5ba9dd8bbf2bf1417540a8fd00d3235f41c2aa0b3a5e8e08c26
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0x7c52506680f9e5ba9dd8bbf2bf1417540a8fd00d3235f41c2aa0b3a5e8e08c26",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xdd467064",
"selector": "0xdd467064",
"calldata_variants": [
"0xdd467064",
"0xdd4670640000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe985e9c5",
"selector": "0xe985e9c5",
"calldata_variants": [
"0xe985e9c5",
"0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2523633",
"selector": "0xf2523633",
"calldata_variants": [
"0xf2523633",
"0xf25236330000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd09ef241",
"selector": "0xd09ef241",
"calldata_variants": [
"0xd09ef241",
"0xd09ef2410000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd89135cd",
"selector": "0xd89135cd",
"calldata_variants": [
"0xd89135cd",
"0xd89135cd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdc33e681",
"selector": "0xdc33e681",
"calldata_variants": [
"0xdc33e681",
"0xdc33e6810000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb863bd37",
"selector": "0xb863bd37",
"calldata_variants": [
"0xb863bd37",
"0xb863bd370000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 0,
"create2_count": 2
}
|
| medium | auth | codex | Signature expiry and domain separation are ineffective | 75 | no | — |
viewevidence_json{
"evidence": "The signed hash omits timestamp and any domain separator; timestamp is only checked as a user-supplied parameter.",
"locations": [
"contracts/Contract.sol:2131",
"contracts/Contract.sol:2139"
],
"recommendation": "Include timestamp, address(this), and block.chainid in the signed message (preferably EIP-712 typed data) and enforce block.timestamp <= timestamp.",
"exploit_scenario": "Because timestamp is not part of the signed data, the caller can set timestamp to any future value and bypass the intended expiry. Additionally, the signature does not include address(this) or chainid, so a signature intended for another deployment/chain using the same signer key can be replayed here."
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 0,
"create2_count": 2
}
|