019bab3b-ab92-73e3-a078-3ec5304af404
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 |
|---|---|---|---|---|
| 38583 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 38584 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 38585 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 38586 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 38587 | capability.graph | complete | 1 / 3 | 3 months ago |
| 38588 | detector.run | complete | 1 / 3 | 3 months ago |
| 38589 | validation.fork | complete | 1 / 3 | 3 months ago |
| 39081 | report.consolidate | complete | 1 / 6 | 3 months ago |
| 39082 | tool.slither | complete | 1 / 2 | 3 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-56kd38pa)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-56kd38pa)
DragonCurve.refund(uint256) (src/DragonCurve.sol#156-161) sends eth to arbitrary user
Dangerous calls:
- (success,None) = msg.sender.call{value: publicPrice}() (src/DragonCurve.sol#157-158)
DragonCurve.refundFrom(address,uint256) (src/DragonCurve.sol#162-172) sends eth to arbitrary user
Dangerous calls:
- (success,None) = msg.sender.call{value: publicPrice}() (src/DragonCurve.sol#168-169)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations
ERC721AB._initializeOwnershipAt(uint256) (src/ERC721AB.sol#355-360) uses a dangerous strict equality:
- _packedOwnerships[index] == 0 (src/ERC721AB.sol#357-358)
ERC721AB._setExtraDataAt(uint256,uint64) (src/ERC721AB.sol#1061-1072) uses a dangerous strict equality:
- packed == 0 (src/ERC721AB.sol#1062)
DragonCurve.getRandSourceBlock(uint256) (src/DragonCurve.sol#101-121) uses a dangerous strict equality:
- extra == uint64(0) (src/DragonCurve.sol#116)
DragonCurve.reroll(uint256) (src/DragonCurve.sol#188-208) uses a dangerous strict equality:
- nextOwn.extraData == 0 (src/DragonCurve.sol#205)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities
ERC721ABQueryable.tokensOfOwner(address).tokenIdsIdx (src/ERC721ABQueryable.sol#165) is a local variable never initialized
ERC721ABQueryable.tokensOfOwner(address).currOwnershipAddr (src/ERC721ABQueryable.sol#166) is a local variable never initialized
ERC721ABQueryable.explicitOwnershipOf(uint256).ownership (src/ERC721ABQueryable.sol#44) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
OperatorFilterer._registerForOperatorFiltering(address,bool).functionSelector__registerForOperatorFiltering_asm_0 (lib/closedsea/src/OperatorFilterer.sol#30-31) is written in both
functionSelector__registerForOperatorFiltering_asm_0 = 0x4420e486 (lib/closedsea/src/OperatorFilterer.sol#37-38)
functionSelector__registerForOperatorFiltering_asm_0 = 0xa0af2903 (lib/closedsea/src/OperatorFilterer.sol#39-41)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#write-after-write
ERC721Refund.refundDeadlineOf(uint256).block (src/IERC721R.sol#49) (local variable) shadows built-in symbol"
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#builtin-symbol-shadowing
DragonCurve.setRerollPrice(uint256) (src/DragonCurve.sol#232-234) should emit an event for:
- rerollPrice = price (src/DragonCurve.sol#234)
DragonCurve.setRerollStatus(uint256) (src/DragonCurve.sol#234-237) should emit an event for:
- rerollStatus = status (src/DragonCurve.sol#237)
DragonCurve.setBlockOffset(uint256) (src/DragonCurve.sol#257-258) should emit an event for:
- _offset = val (src/DragonCurve.sol#258)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-arithmetic
Reentrancy in DragonCurve.refund(uint256) (src/DragonCurve.sol#156-161):
External calls:
- (success,None) = msg.sender.call{value: publicPrice}() (src/DragonCurve.sol#157-158)
Event emitted after the call(s):
- Refund(msg.sender,tokenId) (src/DragonCurve.sol#160-161)
Reentrancy in DragonCurve.refundFrom(address,uint256) (src/DragonCurve.sol#162-172):
External calls:
- (success,None) = msg.sender.call{value: publicPrice}() (src/DragonCurve.sol#168-169)
Event emitted after the call(s):
- Refund(msg.sender,tokenId) (src/DragonCurve.sol#171-172)
Reentrancy in DragonCurve.reroll(uint256) (src/DragonCurve.sol#188-208):
External calls:
- refundIfOver(rerollPrice) (src/DragonCurve.sol#207-208)
- (success,None) = address(msg.sender).call{value: msg.value - price}() (src/DragonCurve.sol#142-145)
Event emitted after the call(s):
- Reroll(tokenId,newBlock) (src/DragonCurve.sol#208)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
OperatorFilterer._registerForOperatorFiltering(address,bool) (lib/closedsea/src/OperatorFilterer.sol#24-60) uses assembly
- INLINE ASM (lib/closedsea/src/OperatorFilterer.sol#29-60)
OperatorFilterer._revertIfBlocked(address) (lib/closedsea/src/OperatorFilterer.sol#83-108) uses assembly
- INLINE ASM (lib/closedsea/src/OperatorFilterer.sol#84-108)
ERC721AB._setAux(address,uint64) (src/ERC721AB.sol#240-250) uses assembly
- INLINE ASM (src/ERC721AB.sol#245-247)
ERC721AB._packOwnershipData(address,uint256) (src/ERC721AB.sol#409-418) uses assembly
- INLINE ASM (src/ERC721AB.sol#412-418)
ERC721AB._nextInitializedFlag(uint256) (src/ERC721AB.sol#421-430) uses assembly
- INLINE ASM (src/ERC721AB.sol#425-429)
ERC721AB._isSenderApprovedOrOwner(address,address,address) (src/ERC721AB.sol#527-544) uses assembly
- INLINE ASM (src/ERC721AB.sol#531-544)
ERC721AB._getApprovedSlotAndAddress(uint256) (src/ERC721AB.sol#547-557) uses assembly
- INLINE ASM (src/ERC721AB.sol#552-557)
ERC721AB.transferFrom(address,address,uint256) (src/ERC721AB.sol#574-649) uses assembly
- INLINE ASM (src/ERC721AB.sol#603-608)
ERC721AB._checkContractOnERC721Received(address,address,uint256,bytes) (src/ERC721AB.sol#739-761) uses assembly
- INLINE ASM (src/ERC721AB.sol#758-760)
ERC721AB._mint(address,uint256) (src/ERC721AB.sol#776-848) uses assembly
- INLINE ASM (src/ERC721AB.sol#819-844)
ERC721AB._burn(uint256,bool) (src/ERC721AB.sol#966-1055) uses assembly
- INLINE ASM (src/ERC721AB.sol#998-1004)
ERC721AB._setExtraDataAt(uint256,uint64) (src/ERC721AB.sol#1061-1072) uses assembly
- INLINE ASM (src/ERC721AB.sol#1065)
ERC721AB._toString(uint256) (src/ERC721AB.sol#1118-1160) uses assembly
- INLINE ASM (src/ERC721AB.sol#1122-1160)
ERC721ABQueryable.tokensOfOwnerIn(address,uint256,uint256) (src/ERC721ABQueryable.sol#86-149) uses assembly
- INLINE ASM (src/ERC721ABQueryable.sol#144-146)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
3 different versions of Solidity are used:
- Version constraint ^0.8.4 is used by:
-^0.8.4 (lib/closedsea/src/OperatorFilterer.sol#1-2)
-^0.8.4 (src/ERC721AB.sol#4-6)
-^0.8.4 (src/ERC721ABQueryable.sol#5)
-^0.8.4 (src/IERC721AB.sol#5)
-^0.8.4 (src/IERC721ABQueryable.sol#5)
- Version constraint ^0.8.0 is used by:
-^0.8.0 (lib/openzeppelin-contracts/contracts/access/Ownable.sol#2-4)
-^0.8.0 (lib/openzeppelin-contracts/contracts/interfaces/IERC2981.sol#2-4)
-^0.8.0 (lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol#2-4)
-^0.8.0 (lib/openzeppelin-contracts/contracts/token/common/ERC2981.sol#2-4)
-^0.8.0 (lib/openzeppelin-contracts/contracts/utils/Context.sol#2-4)
-^0.8.0 (lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol#2-4)
-^0.8.0 (lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol#2-4)
- Version constraint ^0.8.19 is used by:
-^0.8.19 (src/DragonCurve.sol#3-5)
-^0.8.19 (src/IERC721R.sol#2-4)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used
ERC721AB._baseURI() (src/ERC721AB.sol#314-319) is never used and should be removed
ERC721AB._burn(uint256) (src/ERC721AB.sol#958-960) is never used and should be removed
ERC721AB._extraData(address,address,uint64) (src/ERC721AB.sol#1088-1090) is never used and should be removed
ERC721AB._getAux(address) (src/ERC721AB.sol#231-237) is never used and should be removed
ERC721AB._mintERC2309(address,uint256) (src/ERC721AB.sol#867-904) is never used and should be removed
ERC721AB._numberBurned(address) (src/ERC721AB.sol#222-228) is never used and should be removed
ERC721AB._safeMint(address,uint256) (src/ERC721AB.sol#945-950) is never used and should be removed
ERC721AB._safeMint(address,uint256,bytes) (src/ERC721AB.sol#915-941) is never used and should be removed
ERC721AB._setAux(address,uint64) (src/ERC721AB.sol#240-250) 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 (lib/closedsea/src/OperatorFilterer.sol#1-2)
- ^0.8.4 (src/ERC721AB.sol#4-6)
- ^0.8.4 (src/ERC721ABQueryable.sol#5)
- ^0.8.4 (src/IERC721AB.sol#5)
- ^0.8.4 (src/IERC721ABQueryable.sol#5)
Version constraint ^0.8.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess
- AbiReencodingHeadOverflowWithStaticArrayCleanup
- DirtyBytesArrayToStorage
- DataLocationChangeInInternalOverride
- NestedCalldataArrayAbiReencodingSizeValidation
- SignedImmutables
- ABIDecodeTwoDimensionalArrayMemory
- KeccakCaching.
It is used by:
- ^0.8.0 (lib/openzeppelin-contracts/contracts/access/Ownable.sol#2-4)
- ^0.8.0 (lib/openzeppelin-contracts/contracts/interfaces/IERC2981.sol#2-4)
- ^0.8.0 (lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol#2-4)
- ^0.8.0 (lib/openzeppelin-contracts/contracts/token/common/ERC2981.sol#2-4)
- ^0.8.0 (lib/openzeppelin-contracts/contracts/utils/Context.sol#2-4)
- ^0.8.0 (lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol#2-4)
- ^0.8.0 (lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol#2-4)
Version constraint ^0.8.19 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- VerbatimInvalidDeduplication
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess.
It is used by:
- ^0.8.19 (src/DragonCurve.sol#3-5)
- ^0.8.19 (src/IERC721R.sol#2-4)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity
Low level call in DragonCurve.refundIfOver(uint256) (src/DragonCurve.sol#135-147):
- (success,None) = address(msg.sender).call{value: msg.value - price}() (src/DragonCurve.sol#142-145)
Low level call in DragonCurve.refund(uint256) (src/DragonCurve.sol#156-161):
- (success,None) = msg.sender.call{value: publicPrice}() (src/DragonCurve.sol#157-158)
Low level call in DragonCurve.refundFrom(address,uint256) (src/DragonCurve.sol#162-172):
- (success,None) = msg.sender.call{value: publicPrice}() (src/DragonCurve.sol#168-169)
Low level call in DragonCurve.withdrawMoney() (src/DragonCurve.sol#227-232):
- (success,None) = msg.sender.call{value: address(this).balance - publicPrice * totalSupply()}() (src/DragonCurve.sol#228-231)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
Variable DragonCurve._image_generation_js (src/DragonCurve.sol#39) is not in mixedCase
Contract ERC721A__IERC721Receiver (src/ERC721AB.sol#13-21) is not in CapWords
Parameter ERC721AB.safeTransferFrom(address,address,uint256,bytes)._data (src/ERC721AB.sol#676-677) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
DragonCurve._image_generation_js (src/DragonCurve.sol#39) should be constant
DragonCurve.dragoncurvejsVersion (src/DragonCurve.sol#35-36) should be constant
DragonCurve.p5jsVersion (src/DragonCurve.sol#36-37) should be constant
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#state-variables-that-could-be-declared-constant
. analyzed (16 contracts with 100 detectors), 54 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.8.19",
"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.19",
"install_stderr": null,
"install_stdout": "Version '0.8.19' is already installed, skipping..."
},
"solc_args": "--base-path /tmp/slither-56kd38pa --include-path /tmp/slither-56kd38pa/lib --include-path /tmp/slither-56kd38pa/lib/closedsea --include-path /tmp/slither-56kd38pa/lib/openzeppelin-contracts --allow-paths /tmp/slither-56kd38pa,/tmp/slither-56kd38pa/lib,/tmp/slither-56kd38pa/lib/closedsea,/tmp/slither-56kd38pa/lib/openzeppelin-contracts,/tmp/slither-56kd38pa/src",
"remappings": [
"0xsequence/sstore2/=/lib/sstore2/",
"closedsea/=lib/closedsea/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"erc721a-upgradeable/=lib/closedsea/lib/erc721a-upgradeable/contracts/",
"erc721a/=lib/closedsea/lib/erc721a/contracts/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"operator-filter-registry/=lib/closedsea/lib/operator-filter-registry/",
"solady/=lib/closedsea/lib/solady/",
"sstore2/=lib/sstore2/contracts/",
"lib/closedsea:ds-test/=lib/closedsea/lib/forge-std/lib/ds-test/src/",
"lib/closedsea:erc4626-tests/=lib/closedsea/lib/openzeppelin-contracts/lib/erc4626-tests/",
"lib/closedsea:erc721a-upgradeable/=lib/closedsea/lib/erc721a-upgradeable/contracts/",
"lib/closedsea:erc721a/=lib/closedsea/lib/erc721a/contracts/",
"lib/closedsea:forge-std/=lib/closedsea/lib/forge-std/src/",
"lib/closedsea:openzeppelin-contracts-upgradeable/=lib/closedsea/lib/openzeppelin-contracts-upgradeable/contracts/",
"lib/closedsea:openzeppelin-contracts/=lib/closedsea/lib/openzeppelin-contracts/contracts/",
"lib/closedsea:operator-filter-registry/=lib/closedsea/lib/operator-filter-registry/src/",
"lib/closedsea:solady/=lib/closedsea/lib/solady/src/",
"lib/forge-std:ds-test/=lib/forge-std/lib/ds-test/src/",
"lib/openzeppelin-contracts:ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/",
"lib/openzeppelin-contracts:erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"lib/openzeppelin-contracts:forge-std/=lib/openzeppelin-contracts/lib/forge-std/src/",
"lib/openzeppelin-contracts:openzeppelin/=lib/openzeppelin-contracts/contracts/",
"lib/openzeppelin-contracts-upgradeable:ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/",
"lib/openzeppelin-contracts-upgradeable:erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"lib/openzeppelin-contracts-upgradeable:forge-std/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/src/",
"lib/openzeppelin-contracts-upgradeable:openzeppelin/=lib/openzeppelin-contracts-upgradeable/contracts/",
"src/=src/"
],
"source_files": [
"src/DragonCurve.sol",
"src/ERC721ABQueryable.sol",
"src/IERC721R.sol",
"lib/openzeppelin-contracts/contracts/access/Ownable.sol",
"lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol",
"lib/openzeppelin-contracts/contracts/token/common/ERC2981.sol",
"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol",
"lib/closedsea/src/OperatorFilterer.sol",
"src/IERC721ABQueryable.sol",
"src/ERC721AB.sol",
"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol",
"lib/openzeppelin-contracts/contracts/utils/Context.sol",
"lib/openzeppelin-contracts/contracts/interfaces/IERC2981.sol",
"src/IERC721AB.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 54,
"workspace_hash": "094577ca94863f8b5f628dae90df9bb589878730b51df60d7bb7677490841dd7",
"duration_seconds": 2.015181064605713,
"solc_version_requested": "0.8.21"
}
{"no_findings":true,"summary":"Reviewed first-party Solidity sources in AUDIT_BUNDLE.txt; no exploitable vulnerabilities found in the requested categories.","findings":[]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-i0htvhu9
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019babb6-5052-7152-899d-c90116905838
--------
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
**Listing files for audit investigation**
exec
/bin/bash -lc ls in /tmp/codex-i0htvhu9 succeeded in 11ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
lib
src
thinking
**Reading AUDIT_BUNDLE.txt**
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-i0htvhu9 succeeded in 7ms:
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: src/DragonCurve.sol
================================================================================
// SPDX-License-Identifier: MIT
// DragonCurve Contract v1.0.0
// Creator: LiemNFT
pragma solidity ^0.8.19;
import "./ERC721ABQueryable.sol";
import "./IERC721R.sol";
import "openzeppelin-contracts/contracts/access/Ownable.sol";
import "openzeppelin-contracts/contracts/security/ReentrancyGuard.sol";
import "openzeppelin-contracts/contracts/token/common/ERC2981.sol";
import "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol";
import "closedsea/src/OperatorFilterer.sol";
thinking
**Analyzing contract refund and reentrancy risks**
I'm auditing the DragonCurve contract with a focus on refund functions and reentrancy vulnerabilities. I'm carefully examining how refund and refundFrom handle ownership, approvals, and external calls, noting that refundFrom ignores its ‘from’ parameter but relies on approval checks from _burn. There’s potential for approved operators to claim refunds, which might be intended but could surprise users. I'm also inspecting whether reentrancy in refund or withdrawMoney could cause issues, considering the sequence of state changes and external calls, and reviewing randomness and access control patterns for subtle risks.
exec
/bin/bash -lc "rg -n \"delegatecall|call\\{|call\\s*\\(|transfer\\(|send\\(\" -S AUDIT_BUNDLE.txt" in /tmp/codex-i0htvhu9 succeeded in 40ms:
54: error RefundFailedToTransfer();
55: error WithdrawFailedToTransfer();
152: (bool success, ) = payable(msg.sender).call{
167: (bool success, ) = msg.sender.call{value: publicPrice}("");
169: revert RefundFailedToTransfer();
178: (bool success, ) = msg.sender.call{value: publicPrice}("");
180: revert RefundFailedToTransfer();
239: (bool success, ) = msg.sender.call{
243: revert WithdrawFailedToTransfer();
451: // `keccak256(bytes("Transfer(address,address,uint256)"))`.
1020: emit Transfer(from, to, tokenId);
1280: emit ConsecutiveTransfer(
1431: emit Transfer(from, address(0), tokenId);
1869: event Transfer(
2043: event ConsecutiveTransfer(
thinking
**Checking for _burn usage**
exec
/bin/bash -lc "rg -n \"function _burn|_burn\\(\" -n src/ERC721AB.sol" in /tmp/codex-i0htvhu9 succeeded in 10ms:
987: * @dev Equivalent to `_burn(tokenId, false)`.
989: function _burn(uint256 tokenId) internal virtual {
990: _burn(tokenId, false);
1003: function _burn(uint256 tokenId, bool approvalCheck) internal virtual {
exec
/bin/bash -lc "sed -n '1000,1060p' src/ERC721AB.sol" in /tmp/codex-i0htvhu9 succeeded in 5ms:
*
* Emits a {Transfer} event.
*/
function _burn(uint256 tokenId, bool approvalCheck) internal virtual {
uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);
address from = address(uint160(prevOwnershipPacked));
(
uint256 approvedAddressSlot,
address approvedAddress
) = _getApprovedSlotAndAddress(tokenId);
if (approvalCheck) {
// The nested ifs save around 20+ gas over a compound boolean condition.
if (
!_isSenderApprovedOrOwner(
approvedAddress,
from,
_msgSenderERC721A()
thinking
**Reviewing refund and reentrancy logic**
I’m carefully analyzing refund, burn, and withdrawal mechanics, focusing on access control and potential reentrancy concerns. Although some minor issues like event naming inconsistencies and use of tx.origin for caller checks are noted, I find no exploitable vulnerabilities or breakdowns in accounting invariants. The refund and reroll flows appear safe given current constraints, and the owner’s withdrawal logic aligns with token supply changes. My best conclusion is to report no significant findings while documenting the considered nuances.
codex
{"no_findings":true,"summary":"Reviewed first-party Solidity sources in AUDIT_BUNDLE.txt; no exploitable vulnerabilities found in the requested categories.","findings":[]}
tokens used
20,043
{
"codex": {
"ran_at": "2026-01-11T06:21:42.899978+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 14,
"import_count": 18,
"first_party_contracts_count": 6
},
"summary": "Reviewed first-party Solidity sources in AUDIT_BUNDLE.txt; no exploitable vulnerabilities found in the requested categories.",
"raw_final": {
"summary": "Reviewed first-party Solidity sources in AUDIT_BUNDLE.txt; no exploitable vulnerabilities found in the requested categories.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x0293 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x8462151c 00000019: GT 0000001a: PUSH2 0x015a 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xb55cd04b 00000024: GT 00000025: PUSH2 0x00c1 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xc87b56dd 0000002f: GT 00000030: PUSH2 0x007a 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xc87b56dd 0000003a: EQ 0000003b: PUSH2 0x07b4 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xe985e9c5 00000045: EQ 00000046: PUSH2 0x07d4 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf2fde38b 00000050: EQ 00000051: PUSH2 0x081d 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf489e496 0000005b: EQ 0000005c: PUSH2 0x083d 0000005f: JUMPI 00000060: DUP1 00000061: PUSH4 0xfb796e6c 00000066: EQ 00000067: PUSH2 0x085d 0000006a: JUMPI 0000006b: DUP1 0000006c: PUSH4 0xfc776f6d 00000071: EQ 00000072: PUSH2 0x0877 00000075: JUMPI 00000076: PUSH1 0x00 00000078: DUP1 00000079: REVERT 0000007a: JUMPDEST 0000007b: DUP1 0000007c: PUSH4 0xb55cd04b 00000081: EQ 00000082: PUSH2 0x06ff 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0xb7c0b8e8 0000008c: EQ 0000008d: PUSH2 0x0714 00000090: JUMPI 00000091: DUP1 00000092: PUSH4 0xb88d4fde 00000097: EQ 00000098: PUSH2 0x0734 0000009b: JUMPI 0000009c: DUP1 0000009d: PUSH4 0xbdde6dc6 000000a2: EQ 000000a3: PUSH2 0x0747 000000a6: JUMPI 000000a7: DUP1 000000a8: PUSH4 0xc0b507c3 000000ad: EQ 000000ae: PUSH2 0x0767 000000b1: JUMPI 000000b2: DUP1 000000b3: PUSH4 0xc23dc68f 000000b8: EQ 000000b9: PUSH2 0x0787 000000bc: JUMPI 000000bd: PUSH1 0x00 000000bf: DUP1 000000c0: REVERT 000000c1: JUMPDEST 000000c2: DUP1 000000c3: PUSH4 0x99c7bb49 000000c8: GT 000000c9: PUSH2 0x0113 000000cc: JUMPI 000000cd: DUP1 000000ce: PUSH4 0x99c7bb49 000000d3: EQ 000000d4: PUSH2 0x064d 000000d7: JUMPI 000000d8: DUP1 000000d9: PUSH4 0x9d980bd2 000000de: EQ 000000df: PUSH2 0x0685 000000e2: JUMPI 000000e3: DUP1 000000e4: PUSH4 0xa0712d68 000000e9: EQ 000000ea: PUSH2 0x069b 000000ed: JUMPI 000000ee: DUP1 000000ef: PUSH4 0xa22cb465 000000f4: EQ 000000f5: PUSH2 0x06ae 000000f8: JUMPI 000000f9: DUP1 000000fa: PUSH4 0xa945bf80 000000ff: EQ 00000100: PUSH2 0x06ce 00000103: JUMPI 00000104: DUP1 00000105: PUSH4 0xac446002 0000010a: EQ 0000010b: PUSH2 0x06ea 0000010e: JUMPI 0000010f: PUSH1 0x00 00000111: DUP1 00000112: REVERT 00000113: JUMPDEST 00000114: DUP1 00000115: PUSH4 0x8462151c 0000011a: EQ 0000011b: PUSH2 0x05a3 0000011e: JUMPI 0000011f: DUP1 00000120: PUSH4 0x884b67a5 00000125: EQ 00000126: PUSH2 0x05d0 00000129: JUMPI 0000012a: DUP1 0000012b: PUSH4 0x8da5cb5b 00000130: EQ 00000131: PUSH2 0x05e5 00000134: JUMPI 00000135: DUP1 00000136: PUSH4 0x924f4208 0000013b: EQ 0000013c: PUSH2 0x0603 0000013f: JUMPI 00000140: DUP1 00000141: PUSH4 0x95d89b41 00000146: EQ 00000147: PUSH2 0x0618 0000014a: JUMPI 0000014b: DUP1 0000014c: PUSH4 0x99a2557a 00000151: EQ 00000152: PUSH2 0x062d 00000155: JUMPI 00000156: PUSH1 0x00 00000158: DUP1 00000159: REVERT 0000015a: JUMPDEST 0000015b: DUP1 0000015c: PUSH4 0x498143d3 00000161: GT 00000162: PUSH2 0x01fe 00000165: JUMPI 00000166: DUP1 00000167: PUSH4 0x6276e5e7 0000016c: GT 0000016d: PUSH2 0x01b7 00000170: JUMPI 00000171: DUP1 00000172: PUSH4 0x6276e5e7 00000177: EQ 00000178: PUSH2 0x04fb 0000017b: JUMPI 0000017c: DUP1 0000017d: PUSH4 0x62fe9602 00000182: EQ 00000183: PUSH2 0x0510 00000186: JUMPI 00000187: DUP1 00000188: PUSH4 0x6352211e 0000018d: EQ 0000018e: PUSH2 0x0526 00000191: JUMPI 00000192: DUP1 00000193: PUSH4 0x70a08231 00000198: EQ 00000199: PUSH2 0x0546 0000019c: JUMPI 0000019d: DUP1 0000019e: PUSH4 0x715018a6 000001a3: EQ 000001a4: PUSH2 0x0566 000001a7: JUMPI 000001a8: DUP1 000001a9: PUSH4 0x81a49174 000001ae: EQ 000001af: PUSH2 0x057b 000001b2: JUMPI 000001b3: PUSH1 0x00 000001b5: DUP1 000001b6: REVERT 000001b7: JUMPDEST 000001b8: DUP1 000001b9: PUSH4 0x498143d3 000001be: EQ 000001bf: PUSH2 0x0437 000001c2: JUMPI 000001c3: DUP1 000001c4: PUSH4 0x4ea0d2fa 000001c9: EQ 000001ca: PUSH2 0x044c 000001cd: JUMPI 000001ce: DUP1 000001cf: PUSH4 0x4f556016 000001d4: EQ 000001d5: PUSH2 0x046c 000001d8: JUMPI 000001d9: DUP1 000001da: PUSH4 0x55f804b3 000001df: EQ 000001e0: PUSH2 0x048e 000001e3: JUMPI 000001e4: DUP1 000001e5: PUSH4 0x56ef2ac9 000001ea: EQ 000001eb: PUSH2 0x04ae 000001ee: JUMPI 000001ef: DUP1 000001f0: PUSH4 0x5bbb2177 000001f5: EQ 000001f6: PUSH2 0x04ce 000001f9: JUMPI 000001fa: PUSH1 0x00 000001fc: DUP1 000001fd: REVERT 000001fe: JUMPDEST 000001ff: DUP1 00000200: PUSH4 0x1c19c215 00000205: GT 00000206: PUSH2 0x0250 00000209: JUMPI 0000020a: DUP1 0000020b: PUSH4 0x1c19c215 00000210: EQ 00000211: PUSH2 0x037f 00000214: JUMPI 00000215: DUP1 00000216: PUSH4 0x23b872dd 0000021b: EQ 0000021c: PUSH2 0x0392 0000021f: JUMPI 00000220: DUP1 00000221: PUSH4 0x278ecde1 00000226: EQ 00000227: PUSH2 0x03a5 0000022a: JUMPI 0000022b: DUP1 0000022c: PUSH4 0x2a55205a 00000231: EQ 00000232: PUSH2 0x03c5 00000235: JUMPI 00000236: DUP1 00000237: PUSH4 0x33ab5d05 0000023c: EQ 0000023d: PUSH2 0x0404 00000240: JUMPI 00000241: DUP1 00000242: PUSH4 0x42842e0e 00000247: EQ 00000248: PUSH2 0x0424 0000024b: JUMPI 0000024c: PUSH1 0x00 0000024e: DUP1 0000024f: REVERT 00000250: JUMPDEST 00000251: DUP1 00000252: PUSH4 0x01ffc9a7 00000257: EQ 00000258: PUSH2 0x0298 0000025b: JUMPI 0000025c: DUP1 0000025d: PUSH4 0x04634d8d 00000262: EQ 00000263: PUSH2 0x02cd 00000266: JUMPI 00000267: DUP1 00000268: PUSH4 0x06fdde03 0000026d: EQ 0000026e: PUSH2 0x02ef 00000271: JUMPI 00000272: DUP1 00000273: PUSH4 0x081812fc 00000278: EQ 00000279: PUSH2 0x0311 0000027c: JUMPI 0000027d: DUP1 0000027e: PUSH4 0x095ea7b3 00000283: EQ 00000284: PUSH2 0x0349 00000287: JUMPI 00000288: DUP1 00000289: PUSH4 0x18160ddd 0000028e: EQ 0000028f: PUSH2 0x035c 00000292: JUMPI 00000293: JUMPDEST 00000294: PUSH1 0x00 00000296: DUP1 00000297: REVERT 00000298: JUMPDEST 00000299: CALLVALUE 0000029a: DUP1 0000029b: ISZERO 0000029c: PUSH2 0x02a4 0000029f: JUMPI 000002a0: PUSH1 0x00 000002a2: DUP1 000002a3: REVERT 000002a4: JUMPDEST 000002a5: POP 000002a6: PUSH2 0x02b8 000002a9: PUSH2 0x02b3 000002ac: CALLDATASIZE 000002ad: PUSH1 0x04 000002af: PUSH2 0x22f3 000002b2: JUMP 000002b3: JUMPDEST 000002b4: PUSH2 0x088c 000002b7: JUMP 000002b8: JUMPDEST 000002b9: PUSH1 0x40 000002bb: MLOAD 000002bc: SWAP1 000002bd: ISZERO 000002be: ISZERO 000002bf: DUP2 000002c0: MSTORE 000002c1: PUSH1 0x20 000002c3: ADD 000002c4: JUMPDEST 000002c5: PUSH1 0x40 000002c7: MLOAD 000002c8: DUP1 000002c9: SWAP2 000002ca: SUB 000002cb: SWAP1 000002cc: RETURN 000002cd: JUMPDEST 000002ce: CALLVALUE 000002cf: DUP1 000002d0: ISZERO 000002d1: PUSH2 0x02d9 000002d4: JUMPI 000002d5: PUSH1 0x00 000002d7: DUP1 000002d8: REVERT 000002d9: JUMPDEST 000002da: POP 000002db: PUSH2 0x02ed 000002de: PUSH2 0x02e8 000002e1: CALLDATASIZE 000002e2: PUSH1 0x04 000002e4: PUSH2 0x232c 000002e7: JUMP 000002e8: JUMPDEST 000002e9: PUSH2 0x08c7 000002ec: JUMP 000002ed: JUMPDEST 000002ee: STOP 000002ef: JUMPDEST 000002f0: CALLVALUE 000002f1: DUP1 000002f2: ISZERO 000002f3: PUSH2 0x02fb 000002f6: JUMPI 000002f7: PUSH1 0x00 000002f9: DUP1 000002fa: REVERT 000002fb: JUMPDEST 000002fc: POP 000002fd: PUSH2 0x0304 00000300: PUSH2 0x08dd 00000303: JUMP 00000304: JUMPDEST 00000305: PUSH1 0x40 00000307: MLOAD 00000308: PUSH2 0x02c4 0000030b: SWAP2 0000030c: SWAP1 0000030d: PUSH2 0x23bf 00000310: JUMP 00000311: JUMPDEST 00000312: CALLVALUE 00000313: DUP1 00000314: ISZERO 00000315: PUSH2 0x031d 00000318: JUMPI 00000319: PUSH1 0x00 0000031b: DUP1 0000031c: REVERT 0000031d: JUMPDEST 0000031e: POP 0000031f: PUSH2 0x0331 00000322: PUSH2 0x032c 00000325: CALLDATASIZE 00000326: PUSH1 0x04 00000328: PUSH2 0x23d2 0000032b: JUMP 0000032c: JUMPDEST 0000032d: PUSH2 0x096f 00000330: JUMP 00000331: JUMPDEST 00000332: PUSH1 0x40 00000334: MLOAD 00000335: PUSH1 0x01 00000337: PUSH1 0x01 00000339: PUSH1 0xa0 0000033b: SHL 0000033c: SUB 0000033d: SWAP1 0000033e: SWAP2 0000033f: AND 00000340: DUP2 00000341: MSTORE 00000342: PUSH1 0x20 00000344: ADD 00000345: PUSH2 0x02c4 00000348: JUMP 00000349: JUMPDEST 0000034a: PUSH2 0x02ed 0000034d: PUSH2 0x0357 00000350: CALLDATASIZE 00000351: PUSH1 0x04 00000353: PUSH2 0x23eb 00000356: JUMP 00000357: JUMPDEST 00000358: PUSH2 0x09b3 0000035b: JUMP 0000035c: JUMPDEST 0000035d: CALLVALUE 0000035e: DUP1 0000035f: ISZERO 00000360: PUSH2 0x0368 00000363: JUMPI 00000364: PUSH1 0x00 00000366: DUP1 00000367: REVERT 00000368: JUMPDEST 00000369: POP 0000036a: PUSH1 0x05 0000036c: SLOAD 0000036d: PUSH1 0x04 0000036f: SLOAD 00000370: SUB 00000371: JUMPDEST 00000372: PUSH1 0x40 00000374: MLOAD 00000375: SWAP1 00000376: DUP2 00000377: MSTORE 00000378: PUSH1 0x20 0000037a: ADD 0000037b: PUSH2 0x02c4 0000037e: JUMP 0000037f: JUMPDEST 00000380: PUSH2 0x02ed 00000383: PUSH2 0x038d 00000386: CALLDATASIZE 00000387: PUSH1 0x04 00000389: PUSH2 0x23d2 0000038c: JUMP 0000038d: JUMPDEST 0000038e: PUSH2 0x09fb 00000391: JUMP 00000392: JUMPDEST 00000393: PUSH2 0x02ed 00000396: PUSH2 0x03a0 00000399: CALLDATASIZE 0000039a: PUSH1 0x04 0000039c: PUSH2 0x2415 0000039f: JUMP 000003a0: JUMPDEST 000003a1: PUSH2 0x0b3e 000003a4: JUMP 000003a5: JUMPDEST 000003a6: CALLVALUE 000003a7: DUP1 000003a8: ISZERO 000003a9: PUSH2 0x03b1 000003ac: JUMPI 000003ad: PUSH1 0x00 000003af: DUP1 000003b0: REVERT 000003b1: JUMPDEST 000003b2: POP 000003b3: PUSH2 0x02ed 000003b6: PUSH2 0x03c0 000003b9: CALLDATASIZE 000003ba: PUSH1 0x04 000003bc: PUSH2 0x23d2 000003bf: JUMP 000003c0: JUMPDEST 000003c1: PUSH2 0x0b8f 000003c4: JUMP 000003c5: JUMPDEST 000003c6: CALLVALUE 000003c7: DUP1 000003c8: ISZERO 000003c9: PUSH2 0x03d1 000003cc: JUMPI 000003cd: PUSH1 0x00 000003cf: DUP1 000003d0: REVERT 000003d1: JUMPDEST 000003d2: POP 000003d3: PUSH2 0x03e5 000003d6: PUSH2 0x03e0 000003d9: CALLDATASIZE 000003da: PUSH1 0x04 000003dc: PUSH2 0x2451 000003df: JUMP 000003e0: JUMPDEST 000003e1: PUSH2 0x0c3c 000003e4: JUMP 000003e5: JUMPDEST 000003e6: PUSH1 0x40 000003e8: DUP1 000003e9: MLOAD 000003ea: PUSH1 0x01 000003ec: PUSH1 0x01 000003ee: PUSH1 0xa0 000003f0: SHL 000003f1: SUB 000003f2: SWAP1 000003f3: SWAP4 000003f4: AND 000003f5: DUP4 000003f6: MSTORE 000003f7: PUSH1 0x20 000003f9: DUP4 000003fa: ADD 000003fb: SWAP2 000003fc: SWAP1 000003fd: SWAP2 000003fe: MSTORE 000003ff: ADD 00000400: PUSH2 0x02c4 00000403: JUMP 00000404: JUMPDEST 00000405: CALLVALUE 00000406: DUP1 00000407: ISZERO 00000408: PUSH2 0x0410 0000040b: JUMPI 0000040c: PUSH1 0x00 0000040e: DUP1 0000040f: REVERT 00000410: JUMPDEST 00000411: POP 00000412: PUSH2 0x02ed 00000415: PUSH2 0x041f 00000418: CALLDATASIZE 00000419: PUSH1 0x04 0000041b: PUSH2 0x2473 0000041e: JUMP 0000041f: JUMPDEST 00000420: PUSH2 0x0ce8 00000423: JUMP 00000424: JUMPDEST 00000425: PUSH2 0x02ed 00000428: PUSH2 0x0432 0000042b: CALLDATASIZE 0000042c: PUSH1 0x04 0000042e: PUSH2 0x2415 00000431: JUMP 00000432: JUMPDEST 00000433: PUSH2 0x0d12 00000436: JUMP 00000437: JUMPDEST 00000438: CALLVALUE 00000439: DUP1 0000043a: ISZERO 0000043b: PUSH2 0x0443 0000043e: JUMPI 0000043f: PUSH1 0x00 00000441: DUP1 00000442: REVERT 00000443: JUMPDEST 00000444: POP 00000445: PUSH2 0x0304 00000448: PUSH2 0x0d2d 0000044b: JUMP 0000044c: JUMPDEST 0000044d: CALLVALUE 0000044e: DUP1 0000044f: ISZERO 00000450: PUSH2 0x0458 00000453: JUMPI 00000454: PUSH1 0x00 00000456: DUP1 00000457: REVERT 00000458: JUMPDEST 00000459: POP 0000045a: PUSH2 0x02ed 0000045d: PUSH2 0x0467 00000460: CALLDATASIZE 00000461: PUSH1 0x04 00000463: PUSH2 0x2473 00000466: JUMP 00000467: JUMPDEST 00000468: PUSH2 0x0da9 0000046b: JUMP 0000046c: JUMPDEST 0000046d: CALLVALUE 0000046e: DUP1 0000046f: ISZERO 00000470: PUSH2 0x0478 00000473: JUMPI 00000474: PUSH1 0x00 00000476: DUP1 00000477: REVERT 00000478: JUMPDEST 00000479: POP 0000047a: PUSH2 0x0371 0000047d: PUSH2 0x0487 00000480: CALLDATASIZE 00000481: PUSH1 0x04 00000483: PUSH2 0x23d2 00000486: JUMP 00000487: JUMPDEST 00000488: POP 00000489: PUSH1 0x00 0000048b: NOT 0000048c: SWAP1 0000048d: JUMP 0000048e: JUMPDEST 0000048f: CALLVALUE 00000490: DUP1 00000491: ISZERO 00000492: PUSH2 0x049a 00000495: JUMPI 00000496: PUSH1 0x00 00000498: DUP1 00000499: REVERT 0000049a: JUMPDEST 0000049b: POP 0000049c: PUSH2 0x02ed 0000049f: PUSH2 0x04a9 000004a2: CALLDATASIZE 000004a3: PUSH1 0x04 000004a5: PUSH2 0x248e 000004a8: JUMP 000004a9: JUMPDEST 000004aa: PUSH2 0x0dd3 000004ad: JUMP 000004ae: JUMPDEST 000004af: CALLVALUE 000004b0: DUP1 000004b1: ISZERO 000004b2: PUSH2 0x04ba 000004b5: JUMPI 000004b6: PUSH1 0x00 000004b8: DUP1 000004b9: REVERT 000004ba: JUMPDEST 000004bb: POP 000004bc: PUSH2 0x02ed 000004bf: PUSH2 0x04c9 000004c2: CALLDATASIZE 000004c3: PUSH1 0x04 000004c5: PUSH2 0x23d2 000004c8: JUMP 000004c9: JUMPDEST 000004ca: PUSH2 0x0de8 000004cd: JUMP 000004ce: JUMPDEST 000004cf: CALLVALUE 000004d0: DUP1 000004d1: ISZERO 000004d2: PUSH2 0x04da 000004d5: JUMPI 000004d6: PUSH1 0x00 000004d8: DUP1 000004d9: REVERT 000004da: JUMPDEST 000004db: POP 000004dc: PUSH2 0x04ee 000004df: PUSH2 0x04e9 000004e2: CALLDATASIZE 000004e3: PUSH1 0x04 000004e5: PUSH2 0x24ff 000004e8: JUMP 000004e9: JUMPDEST 000004ea: PUSH2 0x0df5 000004ed: JUMP 000004ee: JUMPDEST 000004ef: PUSH1 0x40 000004f1: MLOAD 000004f2: PUSH2 0x02c4 000004f5: SWAP2 000004f6: SWAP1 000004f7: PUSH2 0x2561 000004fa: JUMP 000004fb: JUMPDEST 000004fc: CALLVALUE 000004fd: DUP1 000004fe: ISZERO 000004ff: PUSH2 0x0507 00000502: JUMPI 00000503: PUSH1 0x00 00000505: DUP1 00000506: REVERT 00000507: JUMPDEST 00000508: POP 00000509: PUSH2 0x0304 0000050c: PUSH2 0x0eb9 0000050f: JUMP 00000510: JUMPDEST 00000511: CALLVALUE 00000512: DUP1 00000513: ISZERO 00000514: PUSH2 0x051c 00000517: JUMPI 00000518: PUSH1 0x00 0000051a: DUP1 0000051b: REVERT 0000051c: JUMPDEST 0000051d: POP 0000051e: PUSH2 0x0371 00000521: PUSH1 0x0d 00000523: SLOAD 00000524: DUP2 00000525: JUMP 00000526: JUMPDEST 00000527: CALLVALUE 00000528: DUP1 00000529: ISZERO 0000052a: PUSH2 0x0532 0000052d: JUMPI 0000052e: PUSH1 0x00 00000530: DUP1 00000531: REVERT 00000532: JUMPDEST 00000533: POP 00000534: PUSH2 0x0331 00000537: PUSH2 0x0541 0000053a: CALLDATASIZE 0000053b: PUSH1 0x04 0000053d: PUSH2 0x23d2 00000540: JUMP 00000541: JUMPDEST 00000542: PUSH2 0x0eeb 00000545: JUMP 00000546: JUMPDEST 00000547: CALLVALUE 00000548: DUP1 00000549: ISZERO 0000054a: PUSH2 0x0552 0000054d: JUMPI 0000054e: PUSH1 0x00 00000550: DUP1 00000551: REVERT 00000552: JUMPDEST 00000553: POP 00000554: PUSH2 0x0371 00000557: PUSH2 0x0561 0000055a: CALLDATASIZE 0000055b: PUSH1 0x04 0000055d: PUSH2 0x2473 00000560: JUMP 00000561: JUMPDEST 00000562: PUSH2 0x0ef6 00000565: JUMP 00000566: JUMPDEST 00000567: CALLVALUE 00000568: DUP1 00000569: ISZERO 0000056a: PUSH2 0x0572 0000056d: JUMPI 0000056e: PUSH1 0x00 00000570: DUP1 00000571: REVERT 00000572: JUMPDEST 00000573: POP 00000574: PUSH2 0x02ed 00000577: PUSH2 0x0f44 0000057a: JUMP 0000057b: JUMPDEST 0000057c: CALLVALUE 0000057d: DUP1 0000057e: ISZERO 0000057f: PUSH2 0x0587 00000582: JUMPI 00000583: PUSH1 0x00 00000585: DUP1 00000586: REVERT 00000587: JUMPDEST 00000588: POP 00000589: PUSH2 0x0371 0000058c: PUSH2 0x0596 0000058f: CALLDATASIZE 00000590: PUSH1 0x04 00000592: PUSH2 0x23d2 00000595: JUMP 00000596: JUMPDEST 00000597: POP 00000598: PUSH8 0x038d7ea4c6800000 000005a1: SWAP1 000005a2: JUMP 000005a3: JUMPDEST 000005a4: CALLVALUE 000005a5: DUP1 000005a6: ISZERO 000005a7: PUSH2 0x05af 000005aa: JUMPI 000005ab: PUSH1 0x00 000005ad: DUP1 000005ae: REVERT 000005af: JUMPDEST 000005b0: POP 000005b1: PUSH2 0x05c3 000005b4: PUSH2 0x05be 000005b7: CALLDATASIZE 000005b8: PUSH1 0x04 000005ba: PUSH2 0x2473 000005bd: JUMP 000005be: JUMPDEST 000005bf: PUSH2 0x0f58 000005c2: JUMP 000005c3: JUMPDEST 000005c4: PUSH1 0x40 000005c6: MLOAD 000005c7: PUSH2 0x02c4 000005ca: SWAP2 000005cb: SWAP1 000005cc: PUSH2 0x25cb 000005cf: JUMP 000005d0: JUMPDEST 000005d1: CALLVALUE 000005d2: DUP1 000005d3: ISZERO 000005d4: PUSH2 0x05dc 000005d7: JUMPI 000005d8: PUSH1 0x00 000005da: DUP1 000005db: REVERT 000005dc: JUMPDEST 000005dd: POP 000005de: PUSH2 0x0304 000005e1: PUSH2 0x1059 000005e4: JUMP 000005e5: JUMPDEST 000005e6: CALLVALUE 000005e7: DUP1 000005e8: ISZERO 000005e9: PUSH2 0x05f1 000005ec: JUMPI 000005ed: PUSH1 0x00 000005ef: DUP1 000005f0: REVERT 000005f1: JUMPDEST 000005f2: POP 000005f3: PUSH1 0x00 000005f5: SLOAD 000005f6: PUSH1 0x01 000005f8: PUSH1 0x01 000005fa: PUSH1 0xa0 000005fc: SHL 000005fd: SUB 000005fe: AND 000005ff: PUSH2 0x0331 00000602: JUMP 00000603: JUMPDEST 00000604: CALLVALUE 00000605: DUP1 00000606: ISZERO 00000607: PUSH2 0x060f 0000060a: JUMPI 0000060b: PUSH1 0x00 0000060d: DUP1 0000060e: REVERT 0000060f: JUMPDEST 00000610: POP 00000611: PUSH2 0x0304 00000614: PUSH2 0x10e7 00000617: JUMP 00000618: JUMPDEST 00000619: CALLVALUE 0000061a: DUP1 0000061b: ISZERO 0000061c: PUSH2 0x0624 0000061f: JUMPI 00000620: PUSH1 0x00 00000622: DUP1 00000623: REVERT 00000624: JUMPDEST 00000625: POP 00000626: PUSH2 0x0304 00000629: PUSH2 0x10f4 0000062c: JUMP 0000062d: JUMPDEST 0000062e: CALLVALUE 0000062f: DUP1 00000630: ISZERO 00000631: PUSH2 0x0639 00000634: JUMPI 00000635: PUSH1 0x00 00000637: DUP1 00000638: REVERT 00000639: JUMPDEST 0000063a: POP 0000063b: PUSH2 0x05c3 0000063e: PUSH2 0x0648 00000641: CALLDATASIZE 00000642: PUSH1 0x04 00000644: PUSH2 0x2603 00000647: JUMP 00000648: JUMPDEST 00000649: PUSH2 0x1103 0000064c: JUMP 0000064d: JUMPDEST 0000064e: CALLVALUE 0000064f: DUP1 00000650: ISZERO 00000651: PUSH2 0x0659 00000654: JUMPI 00000655: PUSH1 0x00 00000657: DUP1 00000658: REVERT 00000659: JUMPDEST 0000065a: POP 0000065b: PUSH2 0x066d 0000065e: PUSH2 0x0668 00000661: CALLDATASIZE 00000662: PUSH1 0x04 00000664: PUSH2 0x23d2 00000667: JUMP 00000668: JUMPDEST 00000669: PUSH2 0x127c 0000066c: JUMP 0000066d: JUMPDEST 0000066e: PUSH1 0x40 00000670: MLOAD 00000671: PUSH1 0x01 00000673: PUSH1 0x01 00000675: PUSH1 0x40 00000677: SHL 00000678: SUB 00000679: SWAP1 0000067a: SWAP2 0000067b: AND 0000067c: DUP2 0000067d: MSTORE 0000067e: PUSH1 0x20 00000680: ADD 00000681: PUSH2 0x02c4 00000684: JUMP 00000685: JUMPDEST 00000686: CALLVALUE 00000687: DUP1 00000688: ISZERO 00000689: PUSH2 0x0691 0000068c: JUMPI 0000068d: PUSH1 0x00 0000068f: DUP1 00000690: REVERT 00000691: JUMPDEST 00000692: POP 00000693: PUSH2 0x0371 00000696: PUSH1 0x0c 00000698: SLOAD 00000699: DUP2 0000069a: JUMP 0000069b: JUMPDEST 0000069c: PUSH2 0x02ed 0000069f: PUSH2 0x06a9 000006a2: CALLDATASIZE 000006a3: PUSH1 0x04 000006a5: PUSH2 0x23d2 000006a8: JUMP 000006a9: JUMPDEST 000006aa: PUSH2 0x12dd 000006ad: JUMP 000006ae: JUMPDEST 000006af: CALLVALUE 000006b0: DUP1 000006b1: ISZERO 000006b2: PUSH2 0x06ba 000006b5: JUMPI 000006b6: PUSH1 0x00 000006b8: DUP1 000006b9: REVERT 000006ba: JUMPDEST 000006bb: POP 000006bc: PUSH2 0x02ed 000006bf: PUSH2 0x06c9 000006c2: CALLDATASIZE 000006c3: PUSH1 0x04 000006c5: PUSH2 0x2646 000006c8: JUMP 000006c9: JUMPDEST 000006ca: PUSH2 0x13f9 000006cd: JUMP 000006ce: JUMPDEST 000006cf: CALLVALUE 000006d0: DUP1 000006d1: ISZERO 000006d2: PUSH2 0x06da 000006d5: JUMPI 000006d6: PUSH1 0x00 000006d8: DUP1 000006d9: REVERT 000006da: JUMPDEST 000006db: POP 000006dc: PUSH2 0x0371 000006df: PUSH8 0x038d7ea4c6800000 000006e8: DUP2 000006e9: JUMP 000006ea: JUMPDEST 000006eb: CALLVALUE 000006ec: DUP1 000006ed: ISZERO 000006ee: PUSH2 0x06f6 000006f1: JUMPI 000006f2: PUSH1 0x00 000006f4: DUP1 000006f5: REVERT 000006f6: JUMPDEST 000006f7: POP 000006f8: PUSH2 0x02ed 000006fb: PUSH2 0x143c 000006fe: JUMP 000006ff: JUMPDEST 00000700: CALLVALUE 00000701: DUP1 00000702: ISZERO 00000703: PUSH2 0x070b 00000706: JUMPI 00000707: PUSH1 0x00 00000709: DUP1 0000070a: REVERT 0000070b: JUMPDEST 0000070c: POP 0000070d: PUSH2 0x0371 00000710: PUSH2 0x14e5 00000713: JUMP 00000714: JUMPDEST 00000715: CALLVALUE 00000716: DUP1 00000717: ISZERO 00000718: PUSH2 0x0720 0000071b: JUMPI 0000071c: PUSH1 0x00 0000071e: DUP1 0000071f: REVERT 00000720: JUMPDEST 00000721: POP 00000722: PUSH2 0x02ed 00000725: PUSH2 0x072f 00000728: CALLDATASIZE 00000729: PUSH1 0x04 0000072b: PUSH2 0x2679 0000072e: JUMP 0000072f: JUMPDEST 00000730: PUSH2 0x14f0 00000733: JUMP 00000734: JUMPDEST 00000735: PUSH2 0x02ed 00000738: PUSH2 0x0742 0000073b: CALLDATASIZE 0000073c: PUSH1 0x04 0000073e: PUSH2 0x2701 00000741: JUMP 00000742: JUMPDEST 00000743: PUSH2 0x150b 00000746: JUMP 00000747: JUMPDEST 00000748: CALLVALUE 00000749: DUP1 0000074a: ISZERO 0000074b: PUSH2 0x0753 0000074e: JUMPI 0000074f: PUSH1 0x00 00000751: DUP1 00000752: REVERT 00000753: JUMPDEST 00000754: POP 00000755: PUSH2 0x02ed 00000758: PUSH2 0x0762 0000075b: CALLDATASIZE 0000075c: PUSH1 0x04 0000075e: PUSH2 0x23eb 00000761: JUMP 00000762: JUMPDEST 00000763: PUSH2 0x154f 00000766: JUMP 00000767: JUMPDEST 00000768: CALLVALUE 00000769: DUP1 0000076a: ISZERO 0000076b: PUSH2 0x0773 0000076e: JUMPI 0000076f: PUSH1 0x00 00000771: DUP1 00000772: REVERT 00000773: JUMPDEST 00000774: POP 00000775: PUSH2 0x02ed 00000778: PUSH2 0x0782 0000077b: CALLDATASIZE 0000077c: PUSH1 0x04 0000077e: PUSH2 0x23d2 00000781: JUMP 00000782: JUMPDEST 00000783: PUSH2 0x15fd 00000786: JUMP 00000787: JUMPDEST 00000788: CALLVALUE 00000789: DUP1 0000078a: ISZERO 0000078b: PUSH2 0x0793 0000078e: JUMPI 0000078f: PUSH1 0x00 00000791: DUP1 00000792: REVERT 00000793: JUMPDEST 00000794: POP 00000795: PUSH2 0x07a7 00000798: PUSH2 0x07a2 0000079b: CALLDATASIZE 0000079c: PUSH1 0x04 0000079e: PUSH2 0x23d2 000007a1: JUMP 000007a2: JUMPDEST 000007a3: PUSH2 0x160a 000007a6: JUMP 000007a7: JUMPDEST 000007a8: PUSH1 0x40 000007aa: MLOAD 000007ab: PUSH2 0x02c4 000007ae: SWAP2 000007af: SWAP1 000007b0: PUSH2 0x27ab 000007b3: JUMP 000007b4: JUMPDEST 000007b5: CALLVALUE 000007b6: DUP1 000007b7: ISZERO 000007b8: PUSH2 0x07c0 000007bb: JUMPI 000007bc: PUSH1 0x00 000007be: DUP1 000007bf: REVERT 000007c0: JUMPDEST 000007c1: POP 000007c2: PUSH2 0x0304 000007c5: PUSH2 0x07cf 000007c8: CALLDATASIZE 000007c9: PUSH1 0x04 000007cb: PUSH2 0x23d2 000007ce: JUMP 000007cf: JUMPDEST 000007d0: PUSH2 0x1673 000007d3: JUMP 000007d4: JUMPDEST 000007d5: CALLVALUE 000007d6: DUP1 000007d7: ISZERO 000007d8: PUSH2 0x07e0 000007db: JUMPI 000007dc: PUSH1 0x00 000007de: DUP1 000007df: REVERT 000007e0: JUMPDEST 000007e1: POP 000007e2: PUSH2 0x02b8 000007e5: PUSH2 0x07ef 000007e8: CALLDATASIZE 000007e9: PUSH1 0x04 000007eb: PUSH2 0x27e0 000007ee: JUMP 000007ef: JUMPDEST 000007f0: PUSH1 0x01 000007f2: PUSH1 0x01 000007f4: PUSH1 0xa0 000007f6: SHL 000007f7: SUB 000007f8: SWAP2 000007f9: DUP3 000007fa: AND 000007fb: PUSH1 0x00 000007fd: SWAP1 000007fe: DUP2 000007ff: MSTORE 00000800: PUSH1 0x0b 00000802: PUSH1 0x20 00000804: SWAP1 00000805: DUP2 00000806: MSTORE 00000807: PUSH1 0x40 00000809: DUP1 0000080a: DUP4 0000080b: KECCAK256 0000080c: SWAP4 0000080d: SWAP1 0000080e: SWAP5 0000080f: AND 00000810: DUP3 00000811: MSTORE 00000812: SWAP2 00000813: SWAP1 00000814: SWAP2 00000815: MSTORE 00000816: KECCAK256 00000817: SLOAD 00000818: PUSH1 0xff 0000081a: AND 0000081b: SWAP1 0000081c: JUMP 0000081d: JUMPDEST 0000081e: CALLVALUE 0000081f: DUP1 00000820: ISZERO 00000821: PUSH2 0x0829 00000824: JUMPI 00000825: PUSH1 0x00 00000827: DUP1 00000828: REVERT 00000829: JUMPDEST 0000082a: POP 0000082b: PUSH2 0x02ed 0000082e: PUSH2 0x0838 00000831: CALLDATASIZE 00000832: PUSH1 0x04 00000834: PUSH2 0x2473 00000837: JUMP 00000838: JUMPDEST 00000839: PUSH2 0x16f6 0000083c: JUMP 0000083d: JUMPDEST 0000083e: CALLVALUE 0000083f: DUP1 00000840: ISZERO 00000841: PUSH2 0x0849 00000844: JUMPI 00000845: PUSH1 0x00 00000847: DUP1 00000848: REVERT 00000849: JUMPDEST 0000084a: POP 0000084b: PUSH2 0x02ed 0000084e: PUSH2 0x0858 00000851: CALLDATASIZE 00000852: PUSH1 0x04 00000854: PUSH2 0x23d2 00000857: JUMP 00000858: JUMPDEST 00000859: PUSH2 0x1774 0000085c: JUMP 0000085d: JUMPDEST 0000085e: CALLVALUE 0000085f: DUP1 00000860: ISZERO 00000861: PUSH2 0x0869 00000864: JUMPI 00000865: PUSH1 0x00 00000867: DUP1 00000868: REVERT 00000869: JUMPDEST 0000086a: POP 0000086b: PUSH1 0x14 0000086d: SLOAD 0000086e: PUSH2 0x02b8 00000871: SWAP1 00000872: PUSH1 0xff 00000874: AND 00000875: DUP2 00000876: JUMP 00000877: JUMPDEST 00000878: CALLVALUE 00000879: DUP1 0000087a: ISZERO 0000087b: PUSH2 0x0883 0000087e: JUMPI 0000087f: PUSH1 0x00 00000881: DUP1 00000882: REVERT 00000883: JUMPDEST 00000884: POP 00000885: PUSH2 0x0304 00000888: PUSH2 0x1781 0000088b: JUMP 0000088c: JUMPDEST 0000088d: PUSH1 0x00 0000088f: PUSH2 0x0897 00000892: DUP3 00000893: PUSH2 0x178e 00000896: JUMP 00000897: JUMPDEST 00000898: DUP1 00000899: PUSH2 0x08b2 0000089c: JUMPI 0000089d: POP 0000089e: PUSH1 0x01 000008a0: PUSH1 0x01 000008a2: PUSH1 0xe0 000008a4: SHL 000008a5: SUB 000008a6: NOT 000008a7: DUP3 000008a8: AND 000008a9: PUSH4 0x54a15145 000008ae: PUSH1 0xe0 000008b0: SHL 000008b1: EQ 000008b2: JUMPDEST 000008b3: DUP1 000008b4: PUSH2 0x08c1 000008b7: JUMPI 000008b8: POP 000008b9: PUSH2 0x08c1 000008bc: DUP3 000008bd: PUSH2 0x17c3 000008c0: JUMP 000008c1: JUMPDEST 000008c2: SWAP3 000008c3: SWAP2 000008c4: POP 000008c5: POP 000008c6: JUMP 000008c7: JUMPDEST 000008c8: PUSH2 0x08cf 000008cb: PUSH2 0x1811 000008ce: JUMP 000008cf: JUMPDEST 000008d0: PUSH2 0x08d9 000008d3: DUP3 000008d4: DUP3 000008d5: PUSH2 0x186b 000008d8: JUMP 000008d9: JUMPDEST 000008da: POP 000008db: POP 000008dc: JUMP 000008dd: JUMPDEST 000008de: PUSH1 0x60 000008e0: PUSH1 0x06 000008e2: DUP1 000008e3: SLOAD 000008e4: PUSH2 0x08ec 000008e7: SWAP1 000008e8: PUSH2 0x280a 000008eb: JUMP 000008ec: JUMPDEST 000008ed: DUP1 000008ee: PUSH1 0x1f 000008f0: ADD 000008f1: PUSH1 0x20 000008f3: DUP1 000008f4: SWAP2 000008f5: DIV 000008f6: MUL 000008f7: PUSH1 0x20 000008f9: ADD 000008fa: PUSH1 0x40 000008fc: MLOAD 000008fd: SWAP1 000008fe: DUP2 000008ff: ADD 00000900: PUSH1 0x40 00000902: MSTORE 00000903: DUP1 00000904: SWAP3 00000905: SWAP2 00000906: SWAP1 00000907: DUP2 00000908: DUP2 00000909: MSTORE 0000090a: PUSH1 0x20 0000090c: ADD 0000090d: DUP3 0000090e: DUP1 0000090f: SLOAD 00000910: PUSH2 0x0918 00000913: SWAP1 00000914: PUSH2 0x280a 00000917: JUMP 00000918: JUMPDEST 00000919: DUP1 0000091a: ISZERO 0000091b: PUSH2 0x0965 0000091e: JUMPI 0000091f: DUP1 00000920: PUSH1 0x1f 00000922: LT 00000923: PUSH2 0x093a 00000926: JUMPI 00000927: PUSH2 0x0100 0000092a: DUP1 0000092b: DUP4 0000092c: SLOAD 0000092d: DIV 0000092e: MUL 0000092f: DUP4 00000930: MSTORE 00000931: SWAP2 00000932: PUSH1 0x20 00000934: ADD 00000935: SWAP2 00000936: PUSH2 0x0965 00000939: JUMP 0000093a: JUMPDEST 0000093b: DUP3 0000093c: ADD 0000093d: SWAP2 0000093e: SWAP1 0000093f: PUSH1 0x00 00000941: MSTORE 00000942: PUSH1 0x20 00000944: PUSH1 0x00 00000946: KECCAK256 00000947: SWAP1 00000948: JUMPDEST 00000949: DUP2 0000094a: SLOAD 0000094b: DUP2 0000094c: MSTORE 0000094d: SWAP1 0000094e: PUSH1 0x01 00000950: ADD 00000951: SWAP1 00000952: PUSH1 0x20 00000954: ADD 00000955: DUP1 00000956: DUP4 00000957: GT 00000958: PUSH2 0x0948 0000095b: JUMPI 0000095c: DUP3 0000095d: SWAP1 0000095e: SUB 0000095f: PUSH1 0x1f 00000961: AND 00000962: DUP3 00000963: ADD 00000964: SWAP2 00000965: JUMPDEST 00000966: POP 00000967: POP 00000968: POP 00000969: POP 0000096a: POP 0000096b: SWAP1 0000096c: POP 0000096d: SWAP1 0000096e: JUMP 0000096f: JUMPDEST 00000970: PUSH1 0x00 00000972: PUSH2 0x097a 00000975: DUP3 00000976: PUSH2 0x1968 00000979: JUMP 0000097a: JUMPDEST 0000097b: PUSH2 0x0997 0000097e: JUMPI 0000097f: PUSH1 0x40 00000981: MLOAD 00000982: PUSH4 0x33d1c039 00000987: PUSH1 0xe2 00000989: SHL 0000098a: DUP2 0000098b: MSTORE 0000098c: PUSH1 0x04 0000098e: ADD 0000098f: PUSH1 0x40 00000991: MLOAD 00000992: DUP1 00000993: SWAP2 00000994: SUB 00000995: SWAP1 00000996: REVERT 00000997: JUMPDEST 00000998: POP 00000999: PUSH1 0x00 0000099b: SWAP1 0000099c: DUP2 0000099d: MSTORE 0000099e: PUSH1 0x0a 000009a0: PUSH1 0x20 000009a2: MSTORE 000009a3: PUSH1 0x40 000009a5: SWAP1 000009a6: KECCAK256 000009a7: SLOAD 000009a8: PUSH1 0x01 000009aa: PUSH1 0x01 000009ac: PUSH1 0xa0 000009ae: SHL 000009af: SUB 000009b0: AND 000009b1: SWAP1 000009b2: JUMP 000009b3: JUMPDEST 000009b4: DUP2 000009b5: PUSH20 0x1e0049783f008a0085193e00003d00cd54003c71 000009ca: PUSH1 0x01 000009cc: PUSH1 0x01 000009ce: PUSH1 0xa0 000009d0: SHL 000009d1: SUB 000009d2: DUP3 000009d3: AND 000009d4: EQ 000009d5: PUSH2 0x09ec 000009d8: JUMPI 000009d9: PUSH1 0x14 000009db: SLOAD 000009dc: PUSH1 0xff 000009de: AND 000009df: ISZERO 000009e0: PUSH2 0x09ec 000009e3: JUMPI 000009e4: PUSH2 0x09ec 000009e7: DUP2 000009e8: PUSH2 0x1990 000009eb: JUMP 000009ec: JUMPDEST 000009ed: PUSH2 0x09f6 000009f0: DUP4 000009f1: DUP4 000009f2: PUSH2 0x19d4 000009f5: JUMP 000009f6: JUMPDEST 000009f7: POP 000009f8: POP 000009f9: POP 000009fa: JUMP 000009fb: JUMPDEST 000009fc: PUSH1 0x00 000009fe: PUSH2 0x0a06 00000a01: DUP3 00000a02: PUSH2 0x0eeb 00000a05: JUMP 00000a06: JUMPDEST 00000a07: SWAP1 00000a08: POP 00000a09: PUSH1 0x00 00000a0b: CALLER 00000a0c: PUSH1 0x01 00000a0e: PUSH1 0x01 00000a10: PUSH1 0xa0 00000a12: SHL 00000a13: SUB 00000a14: DUP4 00000a15: AND 00000a16: EQ 00000a17: DUP1 00000a18: PUSH2 0x0a31 00000a1b: JUMPI 00000a1c: POP 00000a1d: CALLER 00000a1e: PUSH2 0x0a26 00000a21: DUP5 00000a22: PUSH2 0x096f 00000a25: JUMP 00000a26: JUMPDEST 00000a27: PUSH1 0x01 00000a29: PUSH1 0x01 00000a2b: PUSH1 0xa0 00000a2d: SHL 00000a2e: SUB 00000a2f: AND 00000a30: EQ 00000a31: JUMPDEST 00000a32: DUP1 00000a33: PUSH2 0x0a41 00000a36: JUMPI 00000a37: POP 00000a38: PUSH2 0x0a41 00000a3b: DUP3 00000a3c: CALLER 00000a3d: PUSH2 0x07ef 00000a40: JUMP 00000a41: JUMPDEST 00000a42: SWAP1 00000a43: POP 00000a44: DUP1 00000a45: PUSH2 0x0a61 00000a48: JUMPI 00000a49: PUSH1 0x40 00000a4b: MLOAD 00000a4c: PUSH4 0x0edefebd 00000a51: PUSH1 0xe4 00000a53: SHL 00000a54: DUP2 00000a55: MSTORE 00000a56: PUSH1 0x04 00000a58: ADD 00000a59: PUSH1 0x40 00000a5b: MLOAD 00000a5c: DUP1 00000a5d: SWAP2 00000a5e: SUB 00000a5f: SWAP1 00000a60: REVERT 00000a61: JUMPDEST 00000a62: PUSH1 0x01 00000a64: PUSH1 0x0d 00000a66: SLOAD 00000a67: EQ 00000a68: PUSH2 0x0a84 00000a6b: JUMPI 00000a6c: PUSH1 0x40 00000a6e: MLOAD 00000a6f: PUSH4 0xeb021a09 00000a74: PUSH1 0xe0 00000a76: SHL 00000a77: DUP2 00000a78: MSTORE 00000a79: PUSH1 0x04 00000a7b: ADD 00000a7c: PUSH1 0x40 00000a7e: MLOAD 00000a7f: DUP1 00000a80: SWAP2 00000a81: SUB 00000a82: SWAP1 00000a83: REVERT 00000a84: JUMPDEST 00000a85: PUSH1 0x00 00000a87: PUSH2 0x0a8f 00000a8a: DUP5 00000a8b: PUSH2 0x127c 00000a8e: JUMP 00000a8f: JUMPDEST 00000a90: SWAP1 00000a91: POP 00000a92: PUSH1 0x00 00000a94: PUSH2 0x0a9c 00000a97: DUP6 00000a98: PUSH2 0x1a74 00000a9b: JUMP 00000a9c: JUMPDEST 00000a9d: SWAP1 00000a9e: POP 00000a9f: PUSH1 0x00 00000aa1: PUSH2 0x0aab 00000aa4: DUP7 00000aa5: PUSH1 0x01 00000aa7: PUSH2 0x2854 00000aaa: JUMP 00000aab: JUMPDEST 00000aac: SWAP1 00000aad: POP 00000aae: PUSH2 0x0ab6 00000ab1: PUSH1 0x04 00000ab3: SLOAD 00000ab4: SWAP1 00000ab5: JUMP 00000ab6: JUMPDEST 00000ab7: DUP2 00000ab8: LT 00000ab9: ISZERO 00000aba: PUSH2 0x0aed 00000abd: JUMPI 00000abe: PUSH1 0x00 00000ac0: PUSH2 0x0ac8 00000ac3: DUP3 00000ac4: PUSH2 0x1a91 00000ac7: JUMP 00000ac8: JUMPDEST 00000ac9: SWAP1 00000aca: POP 00000acb: DUP1 00000acc: PUSH1 0x40 00000ace: ADD 00000acf: MLOAD 00000ad0: PUSH1 0x01 00000ad2: PUSH1 0x01 00000ad4: PUSH1 0x40 00000ad6: SHL 00000ad7: SUB 00000ad8: AND 00000ad9: PUSH1 0x00 00000adb: SUB 00000adc: PUSH2 0x0aeb 00000adf: JUMPI 00000ae0: PUSH2 0x0ae9 00000ae3: DUP3 00000ae4: DUP6 00000ae5: PUSH2 0x1ac6 00000ae8: JUMP 00000ae9: JUMPDEST 00000aea: POP 00000aeb: JUMPDEST 00000aec: POP 00000aed: JUMPDEST 00000aee: PUSH2 0x0af8 00000af1: PUSH1 0x0c 00000af3: SLOAD 00000af4: PUSH2 0x1ae1 00000af7: JUMP 00000af8: JUMPDEST 00000af9: PUSH1 0x40 00000afb: MLOAD 00000afc: PUSH1 0x01 00000afe: PUSH1 0x01 00000b00: PUSH1 0x40 00000b02: SHL 00000b03: SUB 00000b04: DUP4 00000b05: AND 00000b06: DUP2 00000b07: MSTORE 00000b08: DUP7 00000b09: SWAP1 00000b0a: PUSH32 0xd49929b567bcaca6fae0329912961a4872c232438a2d478bb94c0775ff1e1f62 00000b2b: SWAP1 00000b2c: PUSH1 0x20 00000b2e: ADD 00000b2f: PUSH1 0x40 00000b31: MLOAD 00000b32: DUP1 00000b33: SWAP2 00000b34: SUB 00000b35: SWAP1 00000b36: LOG2 00000b37: POP 00000b38: POP 00000b39: POP 00000b3a: POP 00000b3b: POP 00000b3c: POP 00000b3d: JUMP 00000b3e: JUMPDEST 00000b3f: DUP3 00000b40: PUSH1 0x01 00000b42: PUSH1 0x01 00000b44: PUSH1 0xa0 00000b46: SHL 00000b47: SUB 00000b48: DUP2 00000b49: AND 00000b4a: CALLER 00000b4b: EQ 00000b4c: PUSH2 0x0b7e 00000b4f: JUMPI 00000b50: PUSH20 0x1e0049783f008a0085193e00003d00cd54003c71 00000b65: CALLER 00000b66: EQ 00000b67: PUSH2 0x0b7e 00000b6a: JUMPI 00000b6b: PUSH1 0x14 00000b6d: SLOAD 00000b6e: PUSH1 0xff 00000b70: AND 00000b71: ISZERO 00000b72: PUSH2 0x0b7e 00000b75: JUMPI 00000b76: PUSH2 0x0b7e 00000b79: CALLER 00000b7a: PUSH2 0x1990 00000b7d: JUMP 00000b7e: JUMPDEST 00000b7f: PUSH2 0x0b89 00000b82: DUP5 00000b83: DUP5 00000b84: DUP5 00000b85: PUSH2 0x1b83 00000b88: JUMP 00000b89: JUMPDEST 00000b8a: POP 00000b8b: POP 00000b8c: POP 00000b8d: POP 00000b8e: JUMP 00000b8f: JUMPDEST 00000b90: PUSH2 0x0b9a 00000b93: DUP2 00000b94: PUSH1 0x01 00000b96: PUSH2 0x1d1e 00000b99: JUMP 00000b9a: JUMPDEST 00000b9b: PUSH1 0x40 00000b9d: MLOAD 00000b9e: PUSH1 0x00 00000ba0: SWAP1 00000ba1: CALLER 00000ba2: SWAP1 00000ba3: PUSH8 0x038d7ea4c6800000 00000bac: SWAP1 00000bad: DUP4 00000bae: DUP2 00000baf: DUP2 00000bb0: DUP2 00000bb1: DUP6 00000bb2: DUP8 00000bb3: GAS 00000bb4: CALL 00000bb5: SWAP3 00000bb6: POP 00000bb7: POP 00000bb8: POP 00000bb9: RETURNDATASIZE 00000bba: DUP1 00000bbb: PUSH1 0x00 00000bbd: DUP2 00000bbe: EQ 00000bbf: PUSH2 0x0be4 00000bc2: JUMPI 00000bc3: PUSH1 0x40 00000bc5: MLOAD 00000bc6: SWAP2 00000bc7: POP 00000bc8: PUSH1 0x1f 00000bca: NOT 00000bcb: PUSH1 0x3f 00000bcd: RETURNDATASIZE 00000bce: ADD 00000bcf: AND 00000bd0: DUP3 00000bd1: ADD 00000bd2: PUSH1 0x40 00000bd4: MSTORE 00000bd5: RETURNDATASIZE 00000bd6: DUP3 00000bd7: MSTORE 00000bd8: RETURNDATASIZE 00000bd9: PUSH1 0x00 00000bdb: PUSH1 0x20 00000bdd: DUP5 00000bde: ADD 00000bdf: RETURNDATACOPY 00000be0: PUSH2 0x0be9 00000be3: JUMP 00000be4: JUMPDEST 00000be5: PUSH1 0x60 00000be7: SWAP2 00000be8: POP 00000be9: JUMPDEST 00000bea: POP 00000beb: POP 00000bec: SWAP1 00000bed: POP 00000bee: DUP1 00000bef: PUSH2 0x0c0b 00000bf2: JUMPI 00000bf3: PUSH1 0x40 00000bf5: MLOAD 00000bf6: PUSH4 0x1183bf77 00000bfb: PUSH1 0xe2 00000bfd: SHL 00000bfe: DUP2 00000bff: MSTORE 00000c00: PUSH1 0x04 00000c02: ADD 00000c03: PUSH1 0x40 00000c05: MLOAD 00000c06: DUP1 00000c07: SWAP2 00000c08: SUB 00000c09: SWAP1 00000c0a: REVERT 00000c0b: JUMPDEST 00000c0c: PUSH1 0x40 00000c0e: MLOAD 00000c0f: DUP3 00000c10: SWAP1 00000c11: CALLER 00000c12: SWAP1 00000c13: PUSH32 0xbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d 00000c34: SWAP1 00000c35: PUSH1 0x00 00000c37: SWAP1 00000c38: LOG3 00000c39: POP 00000c3a: POP 00000c3b: JUMP 00000c3c: JUMPDEST 00000c3d: PUSH1 0x00 00000c3f: DUP3 00000c40: DUP2 00000c41: MSTORE 00000c42: PUSH1 0x03 00000c44: PUSH1 0x20 00000c46: SWAP1 00000c47: DUP2 00000c48: MSTORE 00000c49: PUSH1 0x40 00000c4b: DUP1 00000c4c: DUP4 00000c4d: KECCAK256 00000c4e: DUP2 00000c4f: MLOAD 00000c50: DUP1 00000c51: DUP4 00000c52: ADD 00000c53: SWAP1 00000c54: SWAP3 00000c55: MSTORE 00000c56: SLOAD 00000c57: PUSH1 0x01 00000c59: PUSH1 0x01 00000c5b: PUSH1 0xa0 00000c5d: SHL 00000c5e: SUB 00000c5f: DUP2 00000c60: AND 00000c61: DUP1 00000c62: DUP4 00000c63: MSTORE 00000c64: PUSH1 0x01 00000c66: PUSH1 0xa0 00000c68: SHL 00000c69: SWAP1 00000c6a: SWAP2 00000c6b: DIV 00000c6c: PUSH1 0x01 00000c6e: PUSH1 0x01 00000c70: PUSH1 0x60 00000c72: SHL 00000c73: SUB 00000c74: AND 00000c75: SWAP3 00000c76: DUP3 00000c77: ADD 00000c78: SWAP3 00000c79: SWAP1 00000c7a: SWAP3 00000c7b: MSTORE 00000c7c: DUP3 00000c7d: SWAP2 00000c7e: PUSH2 0x0cb1 00000c81: JUMPI 00000c82: POP 00000c83: PUSH1 0x40 00000c85: DUP1 00000c86: MLOAD 00000c87: DUP1 00000c88: DUP3 00000c89: ADD 00000c8a: SWAP1 00000c8b: SWAP2 00000c8c: MSTORE 00000c8d: PUSH1 0x02 00000c8f: SLOAD 00000c90: PUSH1 0x01 00000c92: PUSH1 0x01 00000c94: PUSH1 0xa0 00000c96: SHL 00000c97: SUB 00000c98: DUP2 00000c99: AND 00000c9a: DUP3 00000c9b: MSTORE 00000c9c: PUSH1 0x01 00000c9e: PUSH1 0xa0 00000ca0: SHL 00000ca1: SWAP1 00000ca2: DIV 00000ca3: PUSH1 0x01 00000ca5: PUSH1 0x01 00000ca7: PUSH1 0x60 00000ca9: SHL 00000caa: SUB 00000cab: AND 00000cac: PUSH1 0x20 00000cae: DUP3 00000caf: ADD 00000cb0: MSTORE 00000cb1: JUMPDEST 00000cb2: PUSH1 0x20 00000cb4: DUP2 00000cb5: ADD 00000cb6: MLOAD 00000cb7: PUSH1 0x00 00000cb9: SWAP1 00000cba: PUSH2 0x2710 00000cbd: SWAP1 00000cbe: PUSH2 0x0cd0 00000cc1: SWAP1 00000cc2: PUSH1 0x01 00000cc4: PUSH1 0x01 00000cc6: PUSH1 0x60 00000cc8: SHL 00000cc9: SUB 00000cca: AND 00000ccb: DUP8 00000ccc: PUSH2 0x2867 00000ccf: JUMP 00000cd0: JUMPDEST 00000cd1: PUSH2 0x0cda 00000cd4: SWAP2 00000cd5: SWAP1 00000cd6: PUSH2 0x287e 00000cd9: JUMP 00000cda: JUMPDEST 00000cdb: SWAP2 00000cdc: MLOAD 00000cdd: SWAP7 00000cde: SWAP2 00000cdf: SWAP6 00000ce0: POP 00000ce1: SWAP1 00000ce2: SWAP4 00000ce3: POP 00000ce4: POP 00000ce5: POP 00000ce6: POP 00000ce7: JUMP 00000ce8: JUMPDEST 00000ce9: PUSH2 0x0cf0 00000cec: PUSH2 0x1811 00000cef: JUMP 00000cf0: JUMPDEST 00000cf1: PUSH1 0x0f 00000cf3: DUP1 00000cf4: SLOAD 00000cf5: PUSH1 0x01 00000cf7: PUSH1 0x01 00000cf9: PUSH1 0xa0 00000cfb: SHL 00000cfc: SUB 00000cfd: NOT 00000cfe: AND 00000cff: PUSH1 0x01 00000d01: PUSH1 0x01 00000d03: PUSH1 0xa0 00000d05: SHL 00000d06: SUB 00000d07: SWAP3 00000d08: SWAP1 00000d09: SWAP3 00000d0a: AND 00000d0b: SWAP2 00000d0c: SWAP1 00000d0d: SWAP2 00000d0e: OR 00000d0f: SWAP1 00000d10: SSTORE 00000d11: JUMP 00000d12: JUMPDEST 00000d13: PUSH2 0x09f6 00000d16: DUP4 00000d17: DUP4 00000d18: DUP4 00000d19: PUSH1 0x40 00000d1b: MLOAD 00000d1c: DUP1 00000d1d: PUSH1 0x20 00000d1f: ADD 00000d20: PUSH1 0x40 00000d22: MSTORE 00000d23: DUP1 00000d24: PUSH1 0x00 00000d26: DUP2 00000d27: MSTORE 00000d28: POP 00000d29: PUSH2 0x150b 00000d2c: JUMP 00000d2d: JUMPDEST 00000d2e: PUSH1 0x10 00000d30: SLOAD 00000d31: PUSH1 0x40 00000d33: MLOAD 00000d34: PUSH4 0x43920d7d 00000d39: PUSH1 0xe0 00000d3b: SHL 00000d3c: DUP2 00000d3d: MSTORE 00000d3e: PUSH1 0x60 00000d40: SWAP2 00000d41: PUSH1 0x01 00000d43: PUSH1 0x01 00000d45: PUSH1 0xa0 00000d47: SHL 00000d48: SUB 00000d49: AND 00000d4a: SWAP1 00000d4b: PUSH4 0x43920d7d 00000d50: SWAP1 00000d51: PUSH2 0x0d5f 00000d54: SWAP1 00000d55: PUSH1 0x12 00000d57: SWAP1 00000d58: PUSH1 0x04 00000d5a: ADD 00000d5b: PUSH2 0x28a0 00000d5e: JUMP 00000d5f: JUMPDEST 00000d60: PUSH1 0x00 00000d62: PUSH1 0x40 00000d64: MLOAD 00000d65: DUP1 00000d66: DUP4 00000d67: SUB 00000d68: DUP2 00000d69: DUP7 00000d6a: GAS 00000d6b: STATICCALL 00000d6c: ISZERO 00000d6d: DUP1 00000d6e: ISZERO 00000d6f: PUSH2 0x0d7c 00000d72: JUMPI 00000d73: RETURNDATASIZE 00000d74: PUSH1 0x00 00000d76: DUP1 00000d77: RETURNDATACOPY 00000d78: RETURNDATASIZE 00000d79: PUSH1 0x00 00000d7b: REVERT 00000d7c: JUMPDEST 00000d7d: POP 00000d7e: POP 00000d7f: POP 00000d80: POP 00000d81: PUSH1 0x40 00000d83: MLOAD 00000d84: RETURNDATASIZE 00000d85: PUSH1 0x00 00000d87: DUP3 00000d88: RETURNDATACOPY 00000d89: PUSH1 0x1f 00000d8b: RETURNDATASIZE 00000d8c: SWAP1 00000d8d: DUP2 00000d8e: ADD 00000d8f: PUSH1 0x1f 00000d91: NOT 00000d92: AND 00000d93: DUP3 00000d94: ADD 00000d95: PUSH1 0x40 00000d97: MSTORE 00000d98: PUSH2 0x0da4 00000d9b: SWAP2 00000d9c: SWAP1 00000d9d: DUP2 00000d9e: ADD 00000d9f: SWAP1 00000da0: PUSH2 0x292b 00000da3: JUMP 00000da4: JUMPDEST 00000da5: SWAP1 00000da6: POP 00000da7: SWAP1 00000da8: JUMP 00000da9: JUMPDEST 00000daa: PUSH2 0x0db1 00000dad: PUSH2 0x1811 00000db0: JUMP 00000db1: JUMPDEST 00000db2: PUSH1 0x10 00000db4: DUP1 00000db5: SLOAD 00000db6: PUSH1 0x01 00000db8: PUSH1 0x01 00000dba: PUSH1 0xa0 00000dbc: SHL 00000dbd: SUB 00000dbe: NOT 00000dbf: AND 00000dc0: PUSH1 0x01 00000dc2: PUSH1 0x01 00000dc4: PUSH1 0xa0 00000dc6: SHL 00000dc7: SUB 00000dc8: SWAP3 00000dc9: SWAP1 00000dca: SWAP3 00000dcb: AND 00000dcc: SWAP2 00000dcd: SWAP1 00000dce: SWAP2 00000dcf: OR 00000dd0: SWAP1 00000dd1: SSTORE 00000dd2: JUMP 00000dd3: JUMPDEST 00000dd4: PUSH2 0x0ddb 00000dd7: PUSH2 0x1811 00000dda: JUMP 00000ddb: JUMPDEST 00000ddc: PUSH1 0x13 00000dde: PUSH2 0x09f6 00000de1: DUP3 00000de2: DUP5 00000de3: DUP4 00000de4: PUSH2 0x29e7 00000de7: JUMP 00000de8: JUMPDEST 00000de9: PUSH2 0x0df0 00000dec: PUSH2 0x1811 00000def: JUMP 00000df0: JUMPDEST 00000df1: PUSH1 0x0e 00000df3: SSTORE 00000df4: JUMP 00000df5: JUMPDEST 00000df6: PUSH1 0x60 00000df8: DUP2 00000df9: PUSH1 0x00 00000dfb: DUP2 00000dfc: PUSH1 0x01 00000dfe: PUSH1 0x01 00000e00: PUSH1 0x40 00000e02: SHL 00000e03: SUB 00000e04: DUP2 00000e05: GT 00000e06: ISZERO 00000e07: PUSH2 0x0e12 00000e0a: JUMPI 00000e0b: PUSH2 0x0e12 00000e0e: PUSH2 0x2694 00000e11: JUMP 00000e12: JUMPDEST 00000e13: PUSH1 0x40 00000e15: MLOAD 00000e16: SWAP1 00000e17: DUP1 00000e18: DUP3 00000e19: MSTORE 00000e1a: DUP1 00000e1b: PUSH1 0x20 00000e1d: MUL 00000e1e: PUSH1 0x20 00000e20: ADD 00000e21: DUP3 00000e22: ADD 00000e23: PUSH1 0x40 00000e25: MSTORE 00000e26: DUP1 00000e27: ISZERO 00000e28: PUSH2 0x0e5d 00000e2b: JUMPI 00000e2c: DUP2 00000e2d: PUSH1 0x20 00000e2f: ADD 00000e30: JUMPDEST 00000e31: PUSH1 0x40 00000e33: DUP1 00000e34: MLOAD 00000e35: PUSH1 0x60 00000e37: DUP2 00000e38: ADD 00000e39: DUP3 00000e3a: MSTORE 00000e3b: PUSH1 0x00 00000e3d: DUP1 00000e3e: DUP3 00000e3f: MSTORE 00000e40: PUSH1 0x20 00000e42: DUP1 00000e43: DUP4 00000e44: ADD 00000e45: DUP3 00000e46: SWAP1 00000e47: MSTORE 00000e48: SWAP3 00000e49: DUP3 00000e4a: ADD 00000e4b: MSTORE 00000e4c: DUP3 00000e4d: MSTORE 00000e4e: PUSH1 0x00 00000e50: NOT 00000e51: SWAP1 00000e52: SWAP3 00000e53: ADD 00000e54: SWAP2 00000e55: ADD 00000e56: DUP2 00000e57: PUSH2 0x0e30 00000e5a: JUMPI 00000e5b: SWAP1 00000e5c: POP 00000e5d: JUMPDEST 00000e5e: POP 00000e5f: SWAP1 00000e60: POP 00000e61: PUSH1 0x00 00000e63: JUMPDEST 00000e64: DUP3 00000e65: DUP2 00000e66: EQ 00000e67: PUSH2 0x0eb0 00000e6a: JUMPI 00000e6b: PUSH2 0x0e8b 00000e6e: DUP7 00000e6f: DUP7 00000e70: DUP4 00000e71: DUP2 00000e72: DUP2 00000e73: LT 00000e74: PUSH2 0x0e7f 00000e77: JUMPI 00000e78: PUSH2 0x0e7f 00000e7b: PUSH2 0x2aa7 00000e7e: JUMP 00000e7f: JUMPDEST 00000e80: SWAP1 00000e81: POP 00000e82: PUSH1 0x20 00000e84: MUL 00000e85: ADD 00000e86: CALLDATALOAD 00000e87: PUSH2 0x160a 00000e8a: JUMP 00000e8b: JUMPDEST 00000e8c: DUP3 00000e8d: DUP3 00000e8e: DUP2 00000e8f: MLOAD 00000e90: DUP2 00000e91: LT 00000e92: PUSH2 0x0e9d 00000e95: JUMPI 00000e96: PUSH2 0x0e9d 00000e99: PUSH2 0x2aa7 00000e9c: JUMP 00000e9d: JUMPDEST 00000e9e: PUSH1 0x20 00000ea0: SWAP1 00000ea1: DUP2 00000ea2: MUL 00000ea3: SWAP2 00000ea4: SWAP1 00000ea5: SWAP2 00000ea6: ADD 00000ea7: ADD 00000ea8: MSTORE 00000ea9: PUSH1 0x01 00000eab: ADD 00000eac: PUSH2 0x0e63 00000eaf: JUMP 00000eb0: JUMPDEST 00000eb1: POP 00000eb2: SWAP5 00000eb3: SWAP4 00000eb4: POP 00000eb5: POP 00000eb6: POP 00000eb7: POP 00000eb8: JUMP 00000eb9: JUMPDEST 00000eba: PUSH1 0x10 00000ebc: SLOAD 00000ebd: PUSH1 0x40 00000ebf: MLOAD 00000ec0: PUSH4 0x43920d7d 00000ec5: PUSH1 0xe0 00000ec7: SHL 00000ec8: DUP2 00000ec9: MSTORE 00000eca: PUSH1 0x60 00000ecc: SWAP2 00000ecd: PUSH1 0x01 00000ecf: PUSH1 0x01 00000ed1: PUSH1 0xa0 00000ed3: SHL 00000ed4: SUB 00000ed5: AND 00000ed6: SWAP1 00000ed7: PUSH4 0x43920d7d 00000edc: SWAP1 00000edd: PUSH2 0x0d5f 00000ee0: SWAP1 00000ee1: PUSH1 0x11 00000ee3: SWAP1 00000ee4: PUSH1 0x04 00000ee6: ADD 00000ee7: PUSH2 0x28a0 00000eea: JUMP 00000eeb: JUMPDEST 00000eec: PUSH1 0x00 00000eee: PUSH2 0x08c1 00000ef1: DUP3 00000ef2: PUSH2 0x1e61 00000ef5: JUMP 00000ef6: JUMPDEST 00000ef7: PUSH1 0x00 00000ef9: PUSH1 0x01 00000efb: PUSH1 0x01 00000efd: PUSH1 0xa0 00000eff: SHL 00000f00: SUB 00000f01: DUP3 00000f02: AND 00000f03: PUSH2 0x0f1f 00000f06: JUMPI 00000f07: PUSH1 0x40 00000f09: MLOAD 00000f0a: PUSH4 0x23d3ad81 00000f0f: PUSH1 0xe2 00000f11: SHL 00000f12: DUP2 00000f13: MSTORE 00000f14: PUSH1 0x04 00000f16: ADD 00000f17: PUSH1 0x40 00000f19: MLOAD 00000f1a: DUP1 00000f1b: SWAP2 00000f1c: SUB 00000f1d: SWAP1 00000f1e: REVERT 00000f1f: JUMPDEST 00000f20: POP 00000f21: PUSH1 0x01 00000f23: PUSH1 0x01 00000f25: PUSH1 0xa0 00000f27: SHL 00000f28: SUB 00000f29: AND 00000f2a: PUSH1 0x00 00000f2c: SWAP1 00000f2d: DUP2 00000f2e: MSTORE 00000f2f: PUSH1 0x09 00000f31: PUSH1 0x20 00000f33: MSTORE 00000f34: PUSH1 0x40 00000f36: SWAP1 00000f37: KECCAK256 00000f38: SLOAD 00000f39: PUSH1 0x01 00000f3b: PUSH1 0x01 00000f3d: PUSH1 0x40 00000f3f: SHL 00000f40: SUB 00000f41: AND 00000f42: SWAP1 00000f43: JUMP 00000f44: JUMPDEST 00000f45: PUSH2 0x0f4c 00000f48: PUSH2 0x1811 00000f4b: JUMP 00000f4c: JUMPDEST 00000f4d: PUSH2 0x0f56 00000f50: PUSH1 0x00 00000f52: PUSH2 0x1ec8 00000f55: JUMP 00000f56: JUMPDEST 00000f57: JUMP 00000f58: JUMPDEST 00000f59: PUSH1 0x60 00000f5b: PUSH1 0x00 00000f5d: DUP1 00000f5e: PUSH1 0x00 00000f60: PUSH2 0x0f68 00000f63: DUP6 00000f64: PUSH2 0x0ef6 00000f67: JUMP 00000f68: JUMPDEST 00000f69: SWAP1 00000f6a: POP 00000f6b: PUSH1 0x00 00000f6d: DUP2 00000f6e: PUSH1 0x01 00000f70: PUSH1 0x01 00000f72: PUSH1 0x40 00000f74: SHL 00000f75: SUB 00000f76: DUP2 00000f77: GT 00000f78: ISZERO 00000f79: PUSH2 0x0f84 00000f7c: JUMPI 00000f7d: PUSH2 0x0f84 00000f80: PUSH2 0x2694 00000f83: JUMP 00000f84: JUMPDEST 00000f85: PUSH1 0x40 00000f87: MLOAD 00000f88: SWAP1 00000f89: DUP1 00000f8a: DUP3 00000f8b: MSTORE 00000f8c: DUP1 00000f8d: PUSH1 0x20 00000f8f: MUL 00000f90: PUSH1 0x20 00000f92: ADD 00000f93: DUP3 00000f94: ADD 00000f95: PUSH1 0x40 00000f97: MSTORE 00000f98: DUP1 00000f99: ISZERO 00000f9a: PUSH2 0x0fad 00000f9d: JUMPI 00000f9e: DUP2 00000f9f: PUSH1 0x20 00000fa1: ADD 00000fa2: PUSH1 0x20 00000fa4: DUP3 00000fa5: MUL 00000fa6: DUP1 00000fa7: CALLDATASIZE 00000fa8: DUP4 00000fa9: CALLDATACOPY 00000faa: ADD 00000fab: SWAP1 00000fac: POP 00000fad: JUMPDEST 00000fae: POP 00000faf: SWAP1 00000fb0: POP 00000fb1: PUSH2 0x0fd3 00000fb4: PUSH1 0x40 00000fb6: DUP1 00000fb7: MLOAD 00000fb8: PUSH1 0x60 00000fba: DUP2 00000fbb: ADD 00000fbc: DUP3 00000fbd: MSTORE 00000fbe: PUSH1 0x00 00000fc0: DUP1 00000fc1: DUP3 00000fc2: MSTORE 00000fc3: PUSH1 0x20 00000fc5: DUP3 00000fc6: ADD 00000fc7: DUP2 00000fc8: SWAP1 00000fc9: MSTORE 00000fca: SWAP2 00000fcb: DUP2 00000fcc: ADD 00000fcd: SWAP2 00000fce: SWAP1 00000fcf: SWAP2 00000fd0: MSTORE 00000fd1: SWAP1 00000fd2: JUMP 00000fd3: JUMPDEST 00000fd4: PUSH1 0x00 00000fd6: JUMPDEST 00000fd7: DUP4 00000fd8: DUP7 00000fd9: EQ 00000fda: PUSH2 0x104d 00000fdd: JUMPI 00000fde: PUSH2 0x0fe6 00000fe1: DUP2 00000fe2: PUSH2 0x1a91 00000fe5: JUMP 00000fe6: JUMPDEST 00000fe7: SWAP2 00000fe8: POP 00000fe9: DUP2 00000fea: PUSH1 0x20 00000fec: ADD 00000fed: MLOAD 00000fee: PUSH2 0x1045 00000ff1: JUMPI 00000ff2: DUP2 00000ff3: MLOAD 00000ff4: PUSH1 0x01 00000ff6: PUSH1 0x01 00000ff8: PUSH1 0xa0 00000ffa: SHL 00000ffb: SUB 00000ffc: AND 00000ffd: ISZERO 00000ffe: PUSH2 0x1006 00001001: JUMPI 00001002: DUP2 00001003: MLOAD 00001004: SWAP5 00001005: POP 00001006: JUMPDEST 00001007: DUP8 00001008: PUSH1 0x01 0000100a: PUSH1 0x01 0000100c: PUSH1 0xa0 0000100e: SHL 0000100f: SUB 00001010: AND 00001011: DUP6 00001012: PUSH1 0x01 00001014: PUSH1 0x01 00001016: PUSH1 0xa0 00001018: SHL 00001019: SUB 0000101a: AND 0000101b: SUB 0000101c: PUSH2 0x1045 0000101f: JUMPI 00001020: DUP1 00001021: DUP4 00001022: DUP8 00001023: DUP1 00001024: PUSH1 0x01 00001026: ADD 00001027: SWAP9 00001028: POP 00001029: DUP2 0000102a: MLOAD 0000102b: DUP2 0000102c: LT 0000102d: PUSH2 0x1038 00001030: JUMPI 00001031: PUSH2 0x1038 00001034: PUSH2 0x2aa7 00001037: JUMP 00001038: JUMPDEST 00001039: PUSH1 0x20 0000103b: MUL 0000103c: PUSH1 0x20 0000103e: ADD 0000103f: ADD 00001040: DUP2 00001041: DUP2 00001042: MSTORE 00001043: POP 00001044: POP 00001045: JUMPDEST 00001046: PUSH1 0x01 00001048: ADD 00001049: PUSH2 0x0fd6 0000104c: JUMP 0000104d: JUMPDEST 0000104e: POP 0000104f: SWAP1 00001050: SWAP7 00001051: SWAP6 00001052: POP 00001053: POP 00001054: POP 00001055: POP 00001056: POP 00001057: POP 00001058: JUMP 00001059: JUMPDEST 0000105a: PUSH1 0x11 0000105c: DUP1 0000105d: SLOAD 0000105e: PUSH2 0x1066 00001061: SWAP1 00001062: PUSH2 0x280a 00001065: JUMP 00001066: JUMPDEST 00001067: DUP1 00001068: PUSH1 0x1f 0000106a: ADD 0000106b: PUSH1 0x20 0000106d: DUP1 0000106e: SWAP2 0000106f: DIV 00001070: MUL 00001071: PUSH1 0x20 00001073: ADD 00001074: PUSH1 0x40 00001076: MLOAD 00001077: SWAP1 00001078: DUP2 00001079: ADD 0000107a: PUSH1 0x40 0000107c: MSTORE 0000107d: DUP1 0000107e: SWAP3 0000107f: SWAP2 00001080: SWAP1 00001081: DUP2 00001082: DUP2 00001083: MSTORE 00001084: PUSH1 0x20 00001086: ADD 00001087: DUP3 00001088: DUP1 00001089: SLOAD 0000108a: PUSH2 0x1092 0000108d: SWAP1 0000108e: PUSH2 0x280a 00001091: JUMP 00001092: JUMPDEST 00001093: DUP1 00001094: ISZERO 00001095: PUSH2 0x10df 00001098: JUMPI 00001099: DUP1 0000109a: PUSH1 0x1f 0000109c: LT 0000109d: PUSH2 0x10b4 000010a0: JUMPI 000010a1: PUSH2 0x0100 000010a4: DUP1 000010a5: DUP4 000010a6: SLOAD 000010a7: DIV 000010a8: MUL 000010a9: DUP4 000010aa: MSTORE 000010ab: SWAP2 000010ac: PUSH1 0x20 000010ae: ADD 000010af: SWAP2 000010b0: PUSH2 0x10df 000010b3: JUMP 000010b4: JUMPDEST 000010b5: DUP3 000010b6: ADD 000010b7: SWAP2 000010b8: SWAP1 000010b9: PUSH1 0x00 000010bb: MSTORE 000010bc: PUSH1 0x20 000010be: PUSH1 0x00 000010c0: KECCAK256 000010c1: SWAP1 000010c2: JUMPDEST 000010c3: DUP2 000010c4: SLOAD 000010c5: DUP2 000010c6: MSTORE 000010c7: SWAP1 000010c8: PUSH1 0x01 000010ca: ADD 000010cb: SWAP1 000010cc: PUSH1 0x20 000010ce: ADD 000010cf: DUP1 000010d0: DUP4 000010d1: GT 000010d2: PUSH2 0x10c2 000010d5: JUMPI 000010d6: DUP3 000010d7: SWAP1 000010d8: SUB 000010d9: PUSH1 0x1f 000010db: AND 000010dc: DUP3 000010dd: ADD 000010de: SWAP2 000010df: JUMPDEST 000010e0: POP 000010e1: POP 000010e2: POP 000010e3: POP 000010e4: POP 000010e5: DUP2 000010e6: JUMP 000010e7: JUMPDEST 000010e8: PUSH1 0x12 000010ea: DUP1 000010eb: SLOAD 000010ec: PUSH2 0x1066 000010ef: SWAP1 000010f0: PUSH2 0x280a 000010f3: JUMP 000010f4: JUMPDEST 000010f5: PUSH1 0x60 000010f7: PUSH1 0x07 000010f9: DUP1 000010fa: SLOAD 000010fb: PUSH2 0x08ec 000010fe: SWAP1 000010ff: PUSH2 0x280a 00001102: JUMP 00001103: JUMPDEST 00001104: PUSH1 0x60 00001106: DUP2 00001107: DUP4 00001108: LT 00001109: PUSH2 0x1125 0000110c: JUMPI 0000110d: PUSH1 0x40 0000110f: MLOAD 00001110: PUSH4 0x1960ccad 00001115: PUSH1 0xe1 00001117: SHL 00001118: DUP2 00001119: MSTORE 0000111a: PUSH1 0x04 0000111c: ADD 0000111d: PUSH1 0x40 0000111f: MLOAD 00001120: DUP1 00001121: SWAP2 00001122: SUB 00001123: SWAP1 00001124: REVERT 00001125: JUMPDEST 00001126: PUSH1 0x00 00001128: DUP1 00001129: PUSH2 0x1131 0000112c: PUSH1 0x04 0000112e: SLOAD 0000112f: SWAP1 00001130: JUMP 00001131: JUMPDEST 00001132: SWAP1 00001133: POP 00001134: DUP1 00001135: DUP5 00001136: GT 00001137: ISZERO 00001138: PUSH2 0x113f 0000113b: JUMPI 0000113c: DUP1 0000113d: SWAP4 0000113e: POP 0000113f: JUMPDEST 00001140: PUSH1 0x00 00001142: PUSH2 0x114a 00001145: DUP8 00001146: PUSH2 0x0ef6 00001149: JUMP 0000114a: JUMPDEST 0000114b: SWAP1 0000114c: POP 0000114d: DUP5 0000114e: DUP7 0000114f: LT 00001150: ISZERO 00001151: PUSH2 0x1169 00001154: JUMPI 00001155: DUP6 00001156: DUP6 00001157: SUB 00001158: DUP2 00001159: DUP2 0000115a: LT 0000115b: ISZERO 0000115c: PUSH2 0x1163 0000115f: JUMPI 00001160: DUP1 00001161: SWAP2 00001162: POP 00001163: JUMPDEST 00001164: POP 00001165: PUSH2 0x116d 00001168: JUMP 00001169: JUMPDEST 0000116a: POP 0000116b: PUSH1 0x00 0000116d: JUMPDEST 0000116e: PUSH1 0x00 00001170: DUP2 00001171: PUSH1 0x01 00001173: PUSH1 0x01 00001175: PUSH1 0x40 00001177: SHL 00001178: SUB 00001179: DUP2 0000117a: GT 0000117b: ISZERO 0000117c: PUSH2 0x1187 0000117f: JUMPI 00001180: PUSH2 0x1187 00001183: PUSH2 0x2694 00001186: JUMP 00001187: JUMPDEST 00001188: PUSH1 0x40 0000118a: MLOAD 0000118b: SWAP1 0000118c: DUP1 0000118d: DUP3 0000118e: MSTORE 0000118f: DUP1 00001190: PUSH1 0x20 00001192: MUL 00001193: PUSH1 0x20 00001195: ADD 00001196: DUP3 00001197: ADD 00001198: PUSH1 0x40 0000119a: MSTORE 0000119b: DUP1 0000119c: ISZERO 0000119d: PUSH2 0x11b0 000011a0: JUMPI 000011a1: DUP2 000011a2: PUSH1 0x20 000011a4: ADD 000011a5: PUSH1 0x20 000011a7: DUP3 000011a8: MUL 000011a9: DUP1 000011aa: CALLDATASIZE 000011ab: DUP4 000011ac: CALLDATACOPY 000011ad: ADD 000011ae: SWAP1 000011af: POP 000011b0: JUMPDEST 000011b1: POP 000011b2: SWAP1 000011b3: POP 000011b4: DUP2 000011b5: PUSH1 0x00 000011b7: SUB 000011b8: PUSH2 0x11c6 000011bb: JUMPI 000011bc: SWAP4 000011bd: POP 000011be: PUSH2 0x1275 000011c1: SWAP3 000011c2: POP 000011c3: POP 000011c4: POP 000011c5: JUMP 000011c6: JUMPDEST 000011c7: PUSH1 0x00 000011c9: PUSH2 0x11d1 000011cc: DUP9 000011cd: PUSH2 0x160a 000011d0: JUMP 000011d1: JUMPDEST 000011d2: SWAP1 000011d3: POP 000011d4: PUSH1 0x00 000011d6: DUP2 000011d7: PUSH1 0x20 000011d9: ADD 000011da: MLOAD 000011db: PUSH2 0x11e2 000011de: JUMPI 000011df: POP 000011e0: DUP1 000011e1: MLOAD 000011e2: JUMPDEST 000011e3: DUP9 000011e4: JUMPDEST 000011e5: DUP9 000011e6: DUP2 000011e7: EQ 000011e8: ISZERO 000011e9: DUP1 000011ea: ISZERO 000011eb: PUSH2 0x11f4 000011ee: JUMPI 000011ef: POP 000011f0: DUP5 000011f1: DUP8 000011f2: EQ 000011f3: ISZERO 000011f4: JUMPDEST 000011f5: ISZERO 000011f6: PUSH2 0x1269 000011f9: JUMPI 000011fa: PUSH2 0x1202 000011fd: DUP2 000011fe: PUSH2 0x1a91 00001201: JUMP 00001202: JUMPDEST 00001203: SWAP3 00001204: POP 00001205: DUP3 00001206: PUSH1 0x20 00001208: ADD 00001209: MLOAD 0000120a: PUSH2 0x1261 0000120d: JUMPI 0000120e: DUP3 0000120f: MLOAD 00001210: PUSH1 0x01 00001212: PUSH1 0x01 00001214: PUSH1 0xa0 00001216: SHL 00001217: SUB 00001218: AND 00001219: ISZERO 0000121a: PUSH2 0x1222 0000121d: JUMPI 0000121e: DUP3 0000121f: MLOAD 00001220: SWAP2 00001221: POP 00001222: JUMPDEST 00001223: DUP11 00001224: PUSH1 0x01 00001226: PUSH1 0x01 00001228: PUSH1 0xa0 0000122a: SHL 0000122b: SUB 0000122c: AND 0000122d: DUP3 0000122e: PUSH1 0x01 00001230: PUSH1 0x01 00001232: PUSH1 0xa0 00001234: SHL 00001235: SUB 00001236: AND 00001237: SUB 00001238: PUSH2 0x1261 0000123b: JUMPI 0000123c: DUP1 0000123d: DUP5 0000123e: DUP9 0000123f: DUP1 00001240: PUSH1 0x01 00001242: ADD 00001243: SWAP10 00001244: POP 00001245: DUP2 00001246: MLOAD 00001247: DUP2 00001248: LT 00001249: PUSH2 0x1254 0000124c: JUMPI 0000124d: PUSH2 0x1254 00001250: PUSH2 0x2aa7 00001253: JUMP 00001254: JUMPDEST 00001255: PUSH1 0x20 00001257: MUL 00001258: PUSH1 0x20 0000125a: ADD 0000125b: ADD 0000125c: DUP2 0000125d: DUP2 0000125e: MSTORE 0000125f: POP 00001260: POP 00001261: JUMPDEST 00001262: PUSH1 0x01 00001264: ADD 00001265: PUSH2 0x11e4 00001268: JUMP 00001269: JUMPDEST 0000126a: POP 0000126b: POP 0000126c: POP 0000126d: SWAP3 0000126e: DUP4 0000126f: MSTORE 00001270: POP 00001271: SWAP1 00001272: SWAP2 00001273: POP 00001274: POP 00001275: JUMPDEST 00001276: SWAP4 00001277: SWAP3 00001278: POP 00001279: POP 0000127a: POP 0000127b: JUMP 0000127c: JUMPDEST 0000127d: PUSH1 0x00 0000127f: DUP2 00001280: PUSH1 0x04 00001282: SLOAD 00001283: DUP2 00001284: LT 00001285: ISZERO 00001286: PUSH2 0x12c4 00001289: JUMPI 0000128a: PUSH1 0x00 0000128c: PUSH2 0x1294 0000128f: DUP3 00001290: PUSH2 0x1a91 00001293: JUMP 00001294: JUMPDEST 00001295: PUSH1 0x40 00001297: ADD 00001298: MLOAD 00001299: SWAP1 0000129a: POP 0000129b: JUMPDEST 0000129c: PUSH1 0x01 0000129e: PUSH1 0x01 000012a0: PUSH1 0x40 000012a2: SHL 000012a3: SUB 000012a4: DUP2 000012a5: AND 000012a6: PUSH2 0x1275 000012a9: JUMPI 000012aa: PUSH1 0x00 000012ac: NOT 000012ad: SWAP1 000012ae: SWAP2 000012af: ADD 000012b0: SWAP1 000012b1: PUSH2 0x12b9 000012b4: DUP3 000012b5: PUSH2 0x1a91 000012b8: JUMP 000012b9: JUMPDEST 000012ba: PUSH1 0x40 000012bc: ADD 000012bd: MLOAD 000012be: SWAP1 000012bf: POP 000012c0: PUSH2 0x129b 000012c3: JUMP 000012c4: JUMPDEST 000012c5: PUSH1 0x40 000012c7: MLOAD 000012c8: PUSH4 0x6506b19f 000012cd: PUSH1 0xe1 000012cf: SHL 000012d0: DUP2 000012d1: MSTORE 000012d2: PUSH1 0x04 000012d4: ADD 000012d5: PUSH1 0x40 000012d7: MLOAD 000012d8: DUP1 000012d9: SWAP2 000012da: SUB 000012db: SWAP1 000012dc: REVERT 000012dd: JUMPDEST 000012de: ORIGIN 000012df: CALLER 000012e0: EQ 000012e1: PUSH2 0x12fd 000012e4: JUMPI 000012e5: PUSH1 0x40 000012e7: MLOAD 000012e8: PUSH4 0x28130ef1 000012ed: PUSH1 0xe1 000012ef: SHL 000012f0: DUP2 000012f1: MSTORE 000012f2: PUSH1 0x04 000012f4: ADD 000012f5: PUSH1 0x40 000012f7: MLOAD 000012f8: DUP1 000012f9: SWAP2 000012fa: SUB 000012fb: SWAP1 000012fc: REVERT 000012fd: JUMPDEST 000012fe: PUSH32 0x0000000000000000000000000000000000000000000000000000000000004000 0000131f: DUP2 00001320: PUSH2 0x1328 00001323: PUSH1 0x04 00001325: SLOAD 00001326: SWAP1 00001327: JUMP 00001328: JUMPDEST 00001329: PUSH2 0x1332 0000132c: SWAP2 0000132d: SWAP1 0000132e: PUSH2 0x2854 00001331: JUMP 00001332: JUMPDEST 00001333: GT 00001334: ISZERO 00001335: PUSH2 0x1351 00001338: JUMPI 00001339: PUSH1 0x40 0000133b: MLOAD 0000133c: PUSH4 0x0f3ebdcd 00001341: PUSH1 0xe4 00001343: SHL 00001344: DUP2 00001345: MSTORE 00001346: PUSH1 0x04 00001348: ADD 00001349: PUSH1 0x40 0000134b: MLOAD 0000134c: DUP1 0000134d: SWAP2 0000134e: SUB 0000134f: SWAP1 00001350: REVERT 00001351: JUMPDEST 00001352: CALLER 00001353: PUSH1 0x00 00001355: SWAP1 00001356: DUP2 00001357: MSTORE 00001358: PUSH1 0x09 0000135a: PUSH1 0x20 0000135c: MSTORE 0000135d: PUSH1 0x40 0000135f: SWAP1 00001360: DUP2 00001361: SWAP1 00001362: KECCAK256 00001363: SLOAD 00001364: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000008 00001385: SWAP2 00001386: PUSH2 0x139a 00001389: SWAP2 0000138a: DUP5 0000138b: SWAP2 0000138c: SHR 0000138d: PUSH1 0x01 0000138f: PUSH1 0x01 00001391: PUSH1 0x40 00001393: SHL 00001394: SUB 00001395: AND 00001396: PUSH2 0x2854 00001399: JUMP 0000139a: JUMPDEST 0000139b: GT 0000139c: ISZERO 0000139d: PUSH2 0x13b9 000013a0: JUMPI 000013a1: PUSH1 0x40 000013a3: MLOAD 000013a4: PUSH4 0x9e9da8d5 000013a9: PUSH1 0xe0 000013ab: SHL 000013ac: DUP2 000013ad: MSTORE 000013ae: PUSH1 0x04 000013b0: ADD 000013b1: PUSH1 0x40 000013b3: MLOAD 000013b4: DUP1 000013b5: SWAP2 000013b6: SUB 000013b7: SWAP1 000013b8: REVERT 000013b9: JUMPDEST 000013ba: PUSH1 0x00 000013bc: PUSH2 0x13cd 000013bf: DUP3 000013c0: PUSH8 0x038d7ea4c6800000 000013c9: PUSH2 0x2867 000013cc: JUMP 000013cd: JUMPDEST 000013ce: SWAP1 000013cf: POP 000013d0: PUSH1 0x00 000013d2: PUSH2 0x13da 000013d5: PUSH1 0x04 000013d7: SLOAD 000013d8: SWAP1 000013d9: JUMP 000013da: JUMPDEST 000013db: SWAP1 000013dc: POP 000013dd: PUSH2 0x13e6 000013e0: CALLER 000013e1: DUP5 000013e2: PUSH2 0x1f18 000013e5: JUMP 000013e6: JUMPDEST 000013e7: PUSH2 0x13ef 000013ea: DUP2 000013eb: PUSH2 0x1a74 000013ee: JUMP 000013ef: JUMPDEST 000013f0: POP 000013f1: PUSH2 0x09f6 000013f4: DUP3 000013f5: PUSH2 0x1ae1 000013f8: JUMP 000013f9: JUMPDEST 000013fa: DUP2 000013fb: PUSH20 0x1e0049783f008a0085193e00003d00cd54003c71 00001410: PUSH1 0x01 00001412: PUSH1 0x01 00001414: PUSH1 0xa0 00001416: SHL 00001417: SUB 00001418: DUP3 00001419: AND 0000141a: EQ 0000141b: PUSH2 0x1432 0000141e: JUMPI 0000141f: PUSH1 0x14 00001421: SLOAD 00001422: PUSH1 0xff 00001424: AND 00001425: ISZERO 00001426: PUSH2 0x1432 00001429: JUMPI 0000142a: PUSH2 0x1432 0000142d: DUP2 0000142e: PUSH2 0x1990 00001431: JUMP 00001432: JUMPDEST 00001433: PUSH2 0x09f6 00001436: DUP4 00001437: DUP4 00001438: PUSH2 0x1fed 0000143b: JUMP 0000143c: JUMPDEST 0000143d: PUSH2 0x1444 00001440: PUSH2 0x1811 00001443: JUMP 00001444: JUMPDEST 00001445: PUSH2 0x144c 00001448: PUSH2 0x2059 0000144b: JUMP 0000144c: JUMPDEST 0000144d: PUSH1 0x00 0000144f: CALLER 00001450: PUSH2 0x145c 00001453: PUSH1 0x05 00001455: SLOAD 00001456: PUSH1 0x04 00001458: SLOAD 00001459: SUB 0000145a: SWAP1 0000145b: JUMP 0000145c: JUMPDEST 0000145d: PUSH2 0x146e 00001460: SWAP1 00001461: PUSH8 0x038d7ea4c6800000 0000146a: PUSH2 0x2867 0000146d: JUMP 0000146e: JUMPDEST 0000146f: PUSH2 0x1478 00001472: SWAP1 00001473: SELFBALANCE 00001474: PUSH2 0x2abd 00001477: JUMP 00001478: JUMPDEST 00001479: PUSH1 0x40 0000147b: MLOAD 0000147c: PUSH1 0x00 0000147e: DUP2 0000147f: DUP2 00001480: DUP2 00001481: DUP6 00001482: DUP8 00001483: GAS 00001484: CALL 00001485: SWAP3 00001486: POP 00001487: POP 00001488: POP 00001489: RETURNDATASIZE 0000148a: DUP1 0000148b: PUSH1 0x00 0000148d: DUP2 0000148e: EQ 0000148f: PUSH2 0x14b4 00001492: JUMPI 00001493: PUSH1 0x40 00001495: MLOAD 00001496: SWAP2 00001497: POP 00001498: PUSH1 0x1f 0000149a: NOT 0000149b: PUSH1 0x3f 0000149d: RETURNDATASIZE 0000149e: ADD 0000149f: AND 000014a0: DUP3 000014a1: ADD 000014a2: PUSH1 0x40 000014a4: MSTORE 000014a5: RETURNDATASIZE 000014a6: DUP3 000014a7: MSTORE 000014a8: RETURNDATASIZE 000014a9: PUSH1 0x00 000014ab: PUSH1 0x20 000014ad: DUP5 000014ae: ADD 000014af: RETURNDATACOPY 000014b0: PUSH2 0x14b9 000014b3: JUMP 000014b4: JUMPDEST 000014b5: PUSH1 0x60 000014b7: SWAP2 000014b8: POP 000014b9: JUMPDEST 000014ba: POP 000014bb: POP 000014bc: SWAP1 000014bd: POP 000014be: DUP1 000014bf: PUSH2 0x14db 000014c2: JUMPI 000014c3: PUSH1 0x40 000014c5: MLOAD 000014c6: PUSH4 0x0c97cbfb 000014cb: PUSH1 0xe4 000014cd: SHL 000014ce: DUP2 000014cf: MSTORE 000014d0: PUSH1 0x04 000014d2: ADD 000014d3: PUSH1 0x40 000014d5: MLOAD 000014d6: DUP1 000014d7: SWAP2 000014d8: SUB 000014d9: SWAP1 000014da: REVERT 000014db: JUMPDEST 000014dc: POP 000014dd: PUSH2 0x0f56 000014e0: PUSH1 0x01 000014e2: DUP1 000014e3: SSTORE 000014e4: JUMP 000014e5: JUMPDEST 000014e6: PUSH1 0x00 000014e8: PUSH2 0x0da4 000014eb: PUSH1 0x05 000014ed: SLOAD 000014ee: SWAP1 000014ef: JUMP 000014f0: JUMPDEST 000014f1: PUSH2 0x14f8 000014f4: PUSH2 0x1811 000014f7: JUMP 000014f8: JUMPDEST 000014f9: PUSH1 0x14 000014fb: DUP1 000014fc: SLOAD 000014fd: PUSH1 0xff 000014ff: NOT 00001500: AND 00001501: SWAP2 00001502: ISZERO 00001503: ISZERO 00001504: SWAP2 00001505: SWAP1 00001506: SWAP2 00001507: OR 00001508: SWAP1 00001509: SSTORE 0000150a: JUMP 0000150b: JUMPDEST 0000150c: PUSH2 0x1516 0000150f: DUP5 00001510: DUP5 00001511: DUP5 00001512: PUSH2 0x0b3e 00001515: JUMP 00001516: JUMPDEST 00001517: PUSH1 0x01 00001519: PUSH1 0x01 0000151b: PUSH1 0xa0 0000151d: SHL 0000151e: SUB 0000151f: DUP4 00001520: AND 00001521: EXTCODESIZE 00001522: ISZERO 00001523: PUSH2 0x0b89 00001526: JUMPI 00001527: PUSH2 0x1532 0000152a: DUP5 0000152b: DUP5 0000152c: DUP5 0000152d: DUP5 0000152e: PUSH2 0x20b2 00001531: JUMP 00001532: JUMPDEST 00001533: PUSH2 0x0b89 00001536: JUMPI 00001537: PUSH1 0x40 00001539: MLOAD 0000153a: PUSH4 0x68d2bf6b 0000153f: PUSH1 0xe1 00001541: SHL 00001542: DUP2 00001543: MSTORE 00001544: PUSH1 0x04 00001546: ADD 00001547: PUSH1 0x40 00001549: MLOAD 0000154a: DUP1 0000154b: SWAP2 0000154c: SUB 0000154d: SWAP1 0000154e: REVERT 0000154f: JUMPDEST 00001550: PUSH2 0x155a 00001553: DUP2 00001554: PUSH1 0x01 00001556: PUSH2 0x1d1e 00001559: JUMP 0000155a: JUMPDEST 0000155b: PUSH1 0x40 0000155d: MLOAD 0000155e: PUSH1 0x00 00001560: SWAP1 00001561: CALLER 00001562: SWAP1 00001563: PUSH8 0x038d7ea4c6800000 0000156c: SWAP1 0000156d: DUP4 0000156e: DUP2 0000156f: DUP2 00001570: DUP2 00001571: DUP6 00001572: DUP8 00001573: GAS 00001574: CALL 00001575: SWAP3 00001576: POP 00001577: POP 00001578: POP 00001579: RETURNDATASIZE 0000157a: DUP1 0000157b: PUSH1 0x00 0000157d: DUP2 0000157e: EQ 0000157f: PUSH2 0x15a4 00001582: JUMPI 00001583: PUSH1 0x40 00001585: MLOAD 00001586: SWAP2 00001587: POP 00001588: PUSH1 0x1f 0000158a: NOT 0000158b: PUSH1 0x3f 0000158d: RETURNDATASIZE 0000158e: ADD 0000158f: AND 00001590: DUP3 00001591: ADD 00001592: PUSH1 0x40 00001594: MSTORE 00001595: RETURNDATASIZE 00001596: DUP3 00001597: MSTORE 00001598: RETURNDATASIZE 00001599: PUSH1 0x00 0000159b: PUSH1 0x20 0000159d: DUP5 0000159e: ADD 0000159f: RETURNDATACOPY 000015a0: PUSH2 0x15a9 000015a3: JUMP 000015a4: JUMPDEST 000015a5: PUSH1 0x60 000015a7: SWAP2 000015a8: POP 000015a9: JUMPDEST 000015aa: POP 000015ab: POP 000015ac: SWAP1 000015ad: POP 000015ae: DUP1 000015af: PUSH2 0x15cb 000015b2: JUMPI 000015b3: PUSH1 0x40 000015b5: MLOAD 000015b6: PUSH4 0x1183bf77 000015bb: PUSH1 0xe2 000015bd: SHL 000015be: DUP2 000015bf: MSTORE 000015c0: PUSH1 0x04 000015c2: ADD 000015c3: PUSH1 0x40 000015c5: MLOAD 000015c6: DUP1 000015c7: SWAP2 000015c8: SUB 000015c9: SWAP1 000015ca: REVERT 000015cb: JUMPDEST 000015cc: PUSH1 0x40 000015ce: MLOAD 000015cf: DUP3 000015d0: SWAP1 000015d1: CALLER 000015d2: SWAP1 000015d3: PUSH32 0xbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d 000015f4: SWAP1 000015f5: PUSH1 0x00 000015f7: SWAP1 000015f8: LOG3 000015f9: POP 000015fa: POP 000015fb: POP 000015fc: JUMP 000015fd: JUMPDEST 000015fe: PUSH2 0x1605 00001601: PUSH2 0x1811 00001604: JUMP 00001605: JUMPDEST 00001606: PUSH1 0x0d 00001608: SSTORE 00001609: JUMP 0000160a: JUMPDEST 0000160b: PUSH1 0x40 0000160d: DUP1 0000160e: MLOAD 0000160f: PUSH1 0x60 00001611: DUP1 00001612: DUP3 00001613: ADD 00001614: DUP4 00001615: MSTORE 00001616: PUSH1 0x00 00001618: DUP1 00001619: DUP4 0000161a: MSTORE 0000161b: PUSH1 0x20 0000161d: DUP1 0000161e: DUP5 0000161f: ADD 00001620: DUP3 00001621: SWAP1 00001622: MSTORE 00001623: DUP4 00001624: DUP6 00001625: ADD 00001626: DUP3 00001627: SWAP1 00001628: MSTORE 00001629: DUP5 0000162a: MLOAD 0000162b: SWAP3 0000162c: DUP4 0000162d: ADD 0000162e: DUP6 0000162f: MSTORE 00001630: DUP2 00001631: DUP4 00001632: MSTORE 00001633: DUP3 00001634: ADD 00001635: DUP2 00001636: SWAP1 00001637: MSTORE 00001638: SWAP3 00001639: DUP2 0000163a: ADD 0000163b: DUP4 0000163c: SWAP1 0000163d: MSTORE 0000163e: SWAP1 0000163f: SWAP2 00001640: POP 00001641: PUSH1 0x04 00001643: SLOAD 00001644: DUP4 00001645: LT 00001646: PUSH2 0x164f 00001649: JUMPI 0000164a: SWAP3 0000164b: SWAP2 0000164c: POP 0000164d: POP 0000164e: JUMP 0000164f: JUMPDEST 00001650: PUSH2 0x1658 00001653: DUP4 00001654: PUSH2 0x1a91 00001657: JUMP 00001658: JUMPDEST 00001659: SWAP1 0000165a: POP 0000165b: DUP1 0000165c: PUSH1 0x20 0000165e: ADD 0000165f: MLOAD 00001660: ISZERO 00001661: PUSH2 0x166a 00001664: JUMPI 00001665: SWAP3 00001666: SWAP2 00001667: POP 00001668: POP 00001669: JUMP 0000166a: JUMPDEST 0000166b: PUSH2 0x1275 0000166e: DUP4 0000166f: PUSH2 0x219d 00001672: JUMP 00001673: JUMPDEST 00001674: PUSH1 0x60 00001676: PUSH2 0x167e 00001679: DUP3 0000167a: PUSH2 0x1968 0000167d: JUMP 0000167e: JUMPDEST 0000167f: PUSH2 0x169b 00001682: JUMPI 00001683: PUSH1 0x40 00001685: MLOAD 00001686: PUSH4 0x0a14c4b5 0000168b: PUSH1 0xe4 0000168d: SHL 0000168e: DUP2 0000168f: MSTORE 00001690: PUSH1 0x04 00001692: ADD 00001693: PUSH1 0x40 00001695: MLOAD 00001696: DUP1 00001697: SWAP2 00001698: SUB 00001699: SWAP1 0000169a: REVERT 0000169b: JUMPDEST 0000169c: PUSH1 0x00 0000169e: PUSH2 0x16a5 000016a1: PUSH2 0x21cb 000016a4: JUMP 000016a5: JUMPDEST 000016a6: SWAP1 000016a7: POP 000016a8: DUP1 000016a9: MLOAD 000016aa: PUSH1 0x00 000016ac: SUB 000016ad: PUSH2 0x16c5 000016b0: JUMPI 000016b1: PUSH1 0x40 000016b3: MLOAD 000016b4: DUP1 000016b5: PUSH1 0x20 000016b7: ADD 000016b8: PUSH1 0x40 000016ba: MSTORE 000016bb: DUP1 000016bc: PUSH1 0x00 000016be: DUP2 000016bf: MSTORE 000016c0: POP 000016c1: PUSH2 0x1275 000016c4: JUMP 000016c5: JUMPDEST 000016c6: DUP1 000016c7: PUSH2 0x16cf 000016ca: DUP5 000016cb: PUSH2 0x21da 000016ce: JUMP 000016cf: JUMPDEST 000016d0: PUSH1 0x40 000016d2: MLOAD 000016d3: PUSH1 0x20 000016d5: ADD 000016d6: PUSH2 0x16e0 000016d9: SWAP3 000016da: SWAP2 000016db: SWAP1 000016dc: PUSH2 0x2ad0 000016df: JUMP 000016e0: JUMPDEST 000016e1: PUSH1 0x40 000016e3: MLOAD 000016e4: PUSH1 0x20 000016e6: DUP2 000016e7: DUP4 000016e8: SUB 000016e9: SUB 000016ea: DUP2 000016eb: MSTORE 000016ec: SWAP1 000016ed: PUSH1 0x40 000016ef: MSTORE 000016f0: SWAP4 000016f1: SWAP3 000016f2: POP 000016f3: POP 000016f4: POP 000016f5: JUMP 000016f6: JUMPDEST 000016f7: PUSH2 0x16fe 000016fa: PUSH2 0x1811 000016fd: JUMP 000016fe: JUMPDEST 000016ff: PUSH1 0x01 00001701: PUSH1 0x01 00001703: PUSH1 0xa0 00001705: SHL 00001706: SUB 00001707: DUP2 00001708: AND 00001709: PUSH2 0x1768 0000170c: JUMPI 0000170d: PUSH1 0x40 0000170f: MLOAD 00001710: PUSH3 0x461bcd 00001714: PUSH1 0xe5 00001716: SHL 00001717: DUP2 00001718: MSTORE 00001719: PUSH1 0x20 0000171b: PUSH1 0x04 0000171d: DUP3 0000171e: ADD 0000171f: MSTORE 00001720: PUSH1 0x26 00001722: PUSH1 0x24 00001724: DUP3 00001725: ADD 00001726: MSTORE 00001727: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061 00001748: PUSH1 0x44 0000174a: DUP3 0000174b: ADD 0000174c: MSTORE 0000174d: PUSH6 0x646472657373 00001754: PUSH1 0xd0 00001756: SHL 00001757: PUSH1 0x64 00001759: DUP3 0000175a: ADD 0000175b: MSTORE 0000175c: PUSH1 0x84 0000175e: ADD 0000175f: JUMPDEST 00001760: PUSH1 0x40 00001762: MLOAD 00001763: DUP1 00001764: SWAP2 00001765: SUB 00001766: SWAP1 00001767: REVERT 00001768: JUMPDEST 00001769: PUSH2 0x1771 0000176c: DUP2 0000176d: PUSH2 0x1ec8 00001770: JUMP 00001771: JUMPDEST 00001772: POP 00001773: JUMP 00001774: JUMPDEST 00001775: PUSH2 0x177c 00001778: PUSH2 0x1811 0000177b: JUMP 0000177c: JUMPDEST 0000177d: PUSH1 0x0c 0000177f: SSTORE 00001780: JUMP 00001781: JUMPDEST 00001782: PUSH1 0x15 00001784: DUP1 00001785: SLOAD 00001786: PUSH2 0x1066 00001789: SWAP1 0000178a: PUSH2 0x280a 0000178d: JUMP 0000178e: JUMPDEST 0000178f: PUSH1 0x00 00001791: PUSH1 0x01 00001793: PUSH1 0x01 00001795: PUSH1 0xe0 00001797: SHL 00001798: SUB 00001799: NOT 0000179a: DUP3 0000179b: AND 0000179c: PUSH4 0x152a902d 000017a1: PUSH1 0xe1 000017a3: SHL 000017a4: EQ 000017a5: DUP1 000017a6: PUSH2 0x08c1 000017a9: JUMPI 000017aa: POP 000017ab: PUSH4 0x01ffc9a7 000017b0: PUSH1 0xe0 000017b2: SHL 000017b3: PUSH1 0x01 000017b5: PUSH1 0x01 000017b7: PUSH1 0xe0 000017b9: SHL 000017ba: SUB 000017bb: NOT 000017bc: DUP4 000017bd: AND 000017be: EQ 000017bf: PUSH2 0x08c1 000017c2: JUMP 000017c3: JUMPDEST 000017c4: PUSH1 0x00 000017c6: PUSH4 0x01ffc9a7 000017cb: PUSH1 0xe0 000017cd: SHL 000017ce: PUSH1 0x01 000017d0: PUSH1 0x01 000017d2: PUSH1 0xe0 000017d4: SHL 000017d5: SUB 000017d6: NOT 000017d7: DUP4 000017d8: AND 000017d9: EQ 000017da: DUP1 000017db: PUSH2 0x17f4 000017de: JUMPI 000017df: POP 000017e0: PUSH4 0x80ac58cd 000017e5: PUSH1 0xe0 000017e7: SHL 000017e8: PUSH1 0x01 000017ea: PUSH1 0x01 000017ec: PUSH1 0xe0 000017ee: SHL 000017ef: SUB 000017f0: NOT 000017f1: DUP4 000017f2: AND 000017f3: EQ 000017f4: JUMPDEST 000017f5: DUP1 000017f6: PUSH2 0x08c1 000017f9: JUMPI 000017fa: POP 000017fb: POP 000017fc: PUSH1 0x01 000017fe: PUSH1 0x01 00001800: PUSH1 0xe0 00001802: SHL 00001803: SUB 00001804: NOT 00001805: AND 00001806: PUSH4 0x5b5e139f 0000180b: PUSH1 0xe0 0000180d: SHL 0000180e: EQ 0000180f: SWAP1 00001810: JUMP 00001811: JUMPDEST 00001812: PUSH1 0x00 00001814: SLOAD 00001815: PUSH1 0x01 00001817: PUSH1 0x01 00001819: PUSH1 0xa0 0000181b: SHL 0000181c: SUB 0000181d: AND 0000181e: CALLER 0000181f: EQ 00001820: PUSH2 0x0f56 00001823: JUMPI 00001824: PUSH1 0x40 00001826: MLOAD 00001827: PUSH3 0x461bcd 0000182b: PUSH1 0xe5 0000182d: SHL 0000182e: DUP2 0000182f: MSTORE 00001830: PUSH1 0x20 00001832: PUSH1 0x04 00001834: DUP3 00001835: ADD 00001836: DUP2 00001837: SWAP1 00001838: MSTORE 00001839: PUSH1 0x24 0000183b: DUP3 0000183c: ADD 0000183d: MSTORE 0000183e: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 0000185f: PUSH1 0x44 00001861: DUP3 00001862: ADD 00001863: MSTORE 00001864: PUSH1 0x64 00001866: ADD 00001867: PUSH2 0x175f 0000186a: JUMP 0000186b: JUMPDEST 0000186c: PUSH2 0x2710 0000186f: PUSH1 0x01 00001871: PUSH1 0x01 00001873: PUSH1 0x60 00001875: SHL 00001876: SUB 00001877: DUP3 00001878: AND 00001879: GT 0000187a: ISZERO 0000187b: PUSH2 0x18d9 0000187e: JUMPI 0000187f: PUSH1 0x40 00001881: MLOAD 00001882: PUSH3 0x461bcd 00001886: PUSH1 0xe5 00001888: SHL 00001889: DUP2 0000188a: MSTORE 0000188b: PUSH1 0x20 0000188d: PUSH1 0x04 0000188f: DUP3 00001890: ADD 00001891: MSTORE 00001892: PUSH1 0x2a 00001894: PUSH1 0x24 00001896: DUP3 00001897: ADD 00001898: MSTORE 00001899: PUSH32 0x455243323938313a20726f79616c7479206665652077696c6c20657863656564 000018ba: PUSH1 0x44 000018bc: DUP3 000018bd: ADD 000018be: MSTORE 000018bf: PUSH10 0x2073616c655072696365 000018ca: PUSH1 0xb0 000018cc: SHL 000018cd: PUSH1 0x64 000018cf: DUP3 000018d0: ADD 000018d1: MSTORE 000018d2: PUSH1 0x84 000018d4: ADD 000018d5: PUSH2 0x175f 000018d8: JUMP 000018d9: JUMPDEST 000018da: PUSH1 0x01 000018dc: PUSH1 0x01 000018de: PUSH1 0xa0 000018e0: SHL 000018e1: SUB 000018e2: DUP3 000018e3: AND 000018e4: PUSH2 0x192f 000018e7: JUMPI 000018e8: PUSH1 0x40 000018ea: MLOAD 000018eb: PUSH3 0x461bcd 000018ef: PUSH1 0xe5 000018f1: SHL 000018f2: DUP2 000018f3: MSTORE 000018f4: PUSH1 0x20 000018f6: PUSH1 0x04 000018f8: DUP3 000018f9: ADD 000018fa: MSTORE 000018fb: PUSH1 0x19 000018fd: PUSH1 0x24 000018ff: DUP3 00001900: ADD 00001901: MSTORE 00001902: PUSH32 0x455243323938313a20696e76616c696420726563656976657200000000000000 00001923: PUSH1 0x44 00001925: DUP3 00001926: ADD 00001927: MSTORE 00001928: PUSH1 0x64 0000192a: ADD 0000192b: PUSH2 0x175f 0000192e: JUMP 0000192f: JUMPDEST 00001930: PUSH1 0x40 00001932: DUP1 00001933: MLOAD 00001934: DUP1 00001935: DUP3 00001936: ADD 00001937: SWAP1 00001938: SWAP2 00001939: MSTORE 0000193a: PUSH1 0x01 0000193c: PUSH1 0x01 0000193e: PUSH1 0xa0 00001940: SHL 00001941: SUB 00001942: SWAP1 00001943: SWAP3 00001944: AND 00001945: DUP1 00001946: DUP4 00001947: MSTORE 00001948: PUSH1 0x01 0000194a: PUSH1 0x01 0000194c: PUSH1 0x60 0000194e: SHL 0000194f: SUB 00001950: SWAP1 00001951: SWAP2 00001952: AND 00001953: PUSH1 0x20 00001955: SWAP1 00001956: SWAP3 00001957: ADD 00001958: DUP3 00001959: SWAP1 0000195a: MSTORE 0000195b: PUSH1 0x01 0000195d: PUSH1 0xa0 0000195f: SHL 00001960: SWAP1 00001961: SWAP2 00001962: MUL 00001963: OR 00001964: PUSH1 0x02 00001966: SSTORE 00001967: JUMP 00001968: JUMPDEST 00001969: PUSH1 0x00 0000196b: PUSH1 0x04 0000196d: SLOAD 0000196e: DUP3 0000196f: LT 00001970: DUP1 00001971: ISZERO 00001972: PUSH2 0x08c1 00001975: JUMPI 00001976: POP 00001977: POP 00001978: PUSH1 0x00 0000197a: SWAP1 0000197b: DUP2 0000197c: MSTORE 0000197d: PUSH1 0x08 0000197f: PUSH1 0x20 00001981: MSTORE 00001982: PUSH1 0x40 00001984: SWAP1 00001985: KECCAK256 00001986: SLOAD 00001987: PUSH1 0x01 00001989: PUSH1 0xa0 0000198b: SHL 0000198c: AND 0000198d: ISZERO 0000198e: SWAP1 0000198f: JUMP 00001990: JUMPDEST 00001991: PUSH10 0xc6171134001122334455 0000199c: PUSH1 0x00 0000199e: MSTORE 0000199f: ADDRESS 000019a0: PUSH1 0x1a 000019a2: MSTORE 000019a3: DUP1 000019a4: PUSH1 0x3a 000019a6: MSTORE 000019a7: PUSH1 0x00 000019a9: DUP1 000019aa: PUSH1 0x44 000019ac: PUSH1 0x16 000019ae: PUSH14 0xaaeb6d7670e522a718067333cd4e 000019bd: GAS 000019be: STATICCALL 000019bf: PUSH2 0x19cc 000019c2: JUMPI 000019c3: RETURNDATASIZE 000019c4: PUSH1 0x00 000019c6: DUP1 000019c7: RETURNDATACOPY 000019c8: RETURNDATASIZE 000019c9: PUSH1 0x00 000019cb: REVERT 000019cc: JUMPDEST 000019cd: PUSH1 0x00 000019cf: PUSH1 0x3a 000019d1: MSTORE 000019d2: POP 000019d3: JUMP 000019d4: JUMPDEST 000019d5: PUSH1 0x00 000019d7: PUSH2 0x19df 000019da: DUP3 000019db: PUSH2 0x0eeb 000019de: JUMP 000019df: JUMPDEST 000019e0: SWAP1 000019e1: POP 000019e2: CALLER 000019e3: PUSH1 0x01 000019e5: PUSH1 0x01 000019e7: PUSH1 0xa0 000019e9: SHL 000019ea: SUB 000019eb: DUP3 000019ec: AND 000019ed: EQ 000019ee: PUSH2 0x1a18 000019f1: JUMPI 000019f2: PUSH2 0x19fb 000019f5: DUP2 000019f6: CALLER 000019f7: PUSH2 0x07ef 000019fa: JUMP 000019fb: JUMPDEST 000019fc: PUSH2 0x1a18 000019ff: JUMPI 00001a00: PUSH1 0x40 00001a02: MLOAD 00001a03: PUSH4 0x67d9dca1 00001a08: PUSH1 0xe1 00001a0a: SHL 00001a0b: DUP2 00001a0c: MSTORE 00001a0d: PUSH1 0x04 00001a0f: ADD 00001a10: PUSH1 0x40 00001a12: MLOAD 00001a13: DUP1 00001a14: SWAP2 00001a15: SUB 00001a16: SWAP1 00001a17: REVERT 00001a18: JUMPDEST 00001a19: PUSH1 0x00 00001a1b: DUP3 00001a1c: DUP2 00001a1d: MSTORE 00001a1e: PUSH1 0x0a 00001a20: PUSH1 0x20 00001a22: MSTORE 00001a23: PUSH1 0x40 00001a25: DUP1 00001a26: DUP3 00001a27: KECCAK256 00001a28: DUP1 00001a29: SLOAD 00001a2a: PUSH1 0x01 00001a2c: PUSH1 0x01 00001a2e: PUSH1 0xa0 00001a30: SHL 00001a31: SUB 00001a32: NOT 00001a33: AND 00001a34: PUSH1 0x01 00001a36: PUSH1 0x01 00001a38: PUSH1 0xa0 00001a3a: SHL 00001a3b: SUB 00001a3c: DUP8 00001a3d: DUP2 00001a3e: AND 00001a3f: SWAP2 00001a40: DUP3 00001a41: OR 00001a42: SWAP1 00001a43: SWAP3 00001a44: SSTORE 00001a45: SWAP2 00001a46: MLOAD 00001a47: DUP6 00001a48: SWAP4 00001a49: SWAP2 00001a4a: DUP6 00001a4b: AND 00001a4c: SWAP2 00001a4d: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00001a6e: SWAP2 00001a6f: LOG4 00001a70: POP 00001a71: POP 00001a72: POP 00001a73: JUMP 00001a74: JUMPDEST 00001a75: PUSH1 0x00 00001a77: DUP1 00001a78: PUSH1 0x0e 00001a7a: SLOAD 00001a7b: NUMBER 00001a7c: PUSH2 0x1a85 00001a7f: SWAP2 00001a80: SWAP1 00001a81: PUSH2 0x2854 00001a84: JUMP 00001a85: JUMPDEST 00001a86: SWAP1 00001a87: POP 00001a88: PUSH2 0x1275 00001a8b: DUP4 00001a8c: DUP3 00001a8d: PUSH2 0x1ac6 00001a90: JUMP 00001a91: JUMPDEST 00001a92: PUSH1 0x40 00001a94: DUP1 00001a95: MLOAD 00001a96: PUSH1 0x60 00001a98: DUP2 00001a99: ADD 00001a9a: DUP3 00001a9b: MSTORE 00001a9c: PUSH1 0x00 00001a9e: DUP1 00001a9f: DUP3 00001aa0: MSTORE 00001aa1: PUSH1 0x20 00001aa3: DUP3 00001aa4: ADD 00001aa5: DUP2 00001aa6: SWAP1 00001aa7: MSTORE 00001aa8: SWAP2 00001aa9: DUP2 00001aaa: ADD 00001aab: SWAP2 00001aac: SWAP1 00001aad: SWAP2 00001aae: MSTORE 00001aaf: PUSH1 0x00 00001ab1: DUP3 00001ab2: DUP2 00001ab3: MSTORE 00001ab4: PUSH1 0x08 00001ab6: PUSH1 0x20 00001ab8: MSTORE 00001ab9: PUSH1 0x40 00001abb: SWAP1 00001abc: KECCAK256 00001abd: SLOAD 00001abe: PUSH2 0x08c1 00001ac1: SWAP1 00001ac2: PUSH2 0x221e 00001ac5: JUMP 00001ac6: JUMPDEST 00001ac7: PUSH1 0x00 00001ac9: PUSH2 0x1ad1 00001acc: DUP4 00001acd: PUSH2 0x2258 00001ad0: JUMP 00001ad1: JUMPDEST 00001ad2: PUSH2 0x1adb 00001ad5: DUP4 00001ad6: DUP4 00001ad7: PUSH2 0x2288 00001ada: JUMP 00001adb: JUMPDEST 00001adc: POP 00001add: SWAP2 00001ade: SWAP1 00001adf: POP 00001ae0: JUMP 00001ae1: JUMPDEST 00001ae2: DUP1 00001ae3: CALLVALUE 00001ae4: LT 00001ae5: ISZERO 00001ae6: PUSH2 0x1b0b 00001ae9: JUMPI 00001aea: PUSH1 0x40 00001aec: MLOAD 00001aed: PUSH4 0x142f3d01 00001af2: PUSH1 0xe0 00001af4: SHL 00001af5: DUP2 00001af6: MSTORE 00001af7: CALLVALUE 00001af8: PUSH1 0x04 00001afa: DUP3 00001afb: ADD 00001afc: MSTORE 00001afd: PUSH1 0x24 00001aff: DUP2 00001b00: ADD 00001b01: DUP3 00001b02: SWAP1 00001b03: MSTORE 00001b04: PUSH1 0x44 00001b06: ADD 00001b07: PUSH2 0x175f 00001b0a: JUMP 00001b0b: JUMPDEST 00001b0c: DUP1 00001b0d: CALLVALUE 00001b0e: GT 00001b0f: ISZERO 00001b10: PUSH2 0x1771 00001b13: JUMPI 00001b14: PUSH1 0x00 00001b16: CALLER 00001b17: PUSH2 0x1b20 00001b1a: DUP4 00001b1b: CALLVALUE 00001b1c: PUSH2 0x2abd 00001b1f: JUMP 00001b20: JUMPDEST 00001b21: PUSH1 0x40 00001b23: MLOAD 00001b24: PUSH1 0x00 00001b26: DUP2 00001b27: DUP2 00001b28: DUP2 00001b29: DUP6 00001b2a: DUP8 00001b2b: GAS 00001b2c: CALL 00001b2d: SWAP3 00001b2e: POP 00001b2f: POP 00001b30: POP 00001b31: RETURNDATASIZE 00001b32: DUP1 00001b33: PUSH1 0x00 00001b35: DUP2 00001b36: EQ 00001b37: PUSH2 0x1b5c 00001b3a: JUMPI 00001b3b: PUSH1 0x40 00001b3d: MLOAD 00001b3e: SWAP2 00001b3f: POP 00001b40: PUSH1 0x1f 00001b42: NOT 00001b43: PUSH1 0x3f 00001b45: RETURNDATASIZE 00001b46: ADD 00001b47: AND 00001b48: DUP3 00001b49: ADD 00001b4a: PUSH1 0x40 00001b4c: MSTORE 00001b4d: RETURNDATASIZE 00001b4e: DUP3 00001b4f: MSTORE 00001b50: RETURNDATASIZE 00001b51: PUSH1 0x00 00001b53: PUSH1 0x20 00001b55: DUP5 00001b56: ADD 00001b57: RETURNDATACOPY 00001b58: PUSH2 0x1b61 00001b5b: JUMP 00001b5c: JUMPDEST 00001b5d: PUSH1 0x60 00001b5f: SWAP2 00001b60: POP 00001b61: JUMPDEST 00001b62: POP 00001b63: POP 00001b64: SWAP1 00001b65: POP 00001b66: DUP1 00001b67: PUSH2 0x08d9 00001b6a: JUMPI 00001b6b: PUSH1 0x40 00001b6d: MLOAD 00001b6e: PUSH4 0xafd2fd57 00001b73: PUSH1 0xe0 00001b75: SHL 00001b76: DUP2 00001b77: MSTORE 00001b78: PUSH1 0x04 00001b7a: ADD 00001b7b: PUSH1 0x40 00001b7d: MLOAD 00001b7e: DUP1 00001b7f: SWAP2 00001b80: SUB 00001b81: SWAP1 00001b82: REVERT 00001b83: JUMPDEST 00001b84: PUSH1 0x00 00001b86: PUSH2 0x1b8e 00001b89: DUP3 00001b8a: PUSH2 0x1e61 00001b8d: JUMP 00001b8e: JUMPDEST 00001b8f: SWAP1 00001b90: POP 00001b91: DUP4 00001b92: PUSH1 0x01 00001b94: PUSH1 0x01 00001b96: PUSH1 0xa0 00001b98: SHL 00001b99: SUB 00001b9a: AND 00001b9b: DUP2 00001b9c: PUSH1 0x01 00001b9e: PUSH1 0x01 00001ba0: PUSH1 0xa0 00001ba2: SHL 00001ba3: SUB 00001ba4: AND 00001ba5: EQ 00001ba6: PUSH2 0x1bc1 00001ba9: JUMPI 00001baa: PUSH1 0x40 00001bac: MLOAD 00001bad: PUSH3 0xa11481 00001bb1: PUSH1 0xe8 00001bb3: SHL 00001bb4: DUP2 00001bb5: MSTORE 00001bb6: PUSH1 0x04 00001bb8: ADD 00001bb9: PUSH1 0x40 00001bbb: MLOAD 00001bbc: DUP1 00001bbd: SWAP2 00001bbe: SUB 00001bbf: SWAP1 00001bc0: REVERT 00001bc1: JUMPDEST 00001bc2: PUSH1 0x00 00001bc4: DUP3 00001bc5: DUP2 00001bc6: MSTORE 00001bc7: PUSH1 0x0a 00001bc9: PUSH1 0x20 00001bcb: MSTORE 00001bcc: PUSH1 0x40 00001bce: SWAP1 00001bcf: KECCAK256 00001bd0: DUP1 00001bd1: SLOAD 00001bd2: PUSH2 0x1bed 00001bd5: DUP2 00001bd6: DUP8 00001bd7: CALLER 00001bd8: JUMPDEST 00001bd9: PUSH1 0x01 00001bdb: PUSH1 0x01 00001bdd: PUSH1 0xa0 00001bdf: SHL 00001be0: SUB 00001be1: SWAP1 00001be2: DUP2 00001be3: AND 00001be4: SWAP2 00001be5: AND 00001be6: DUP2 00001be7: EQ 00001be8: SWAP2 00001be9: EQ 00001bea: OR 00001beb: SWAP1 00001bec: JUMP 00001bed: JUMPDEST 00001bee: PUSH2 0x1c18 00001bf1: JUMPI 00001bf2: PUSH2 0x1bfb 00001bf5: DUP7 00001bf6: CALLER 00001bf7: PUSH2 0x07ef 00001bfa: JUMP 00001bfb: JUMPDEST 00001bfc: PUSH2 0x1c18 00001bff: JUMPI 00001c00: PUSH1 0x40 00001c02: MLOAD 00001c03: PUSH4 0x2ce44b5f 00001c08: PUSH1 0xe1 00001c0a: SHL 00001c0b: DUP2 00001c0c: MSTORE 00001c0d: PUSH1 0x04 00001c0f: ADD 00001c10: PUSH1 0x40 00001c12: MLOAD 00001c13: DUP1 00001c14: SWAP2 00001c15: SUB 00001c16: SWAP1 00001c17: REVERT 00001c18: JUMPDEST 00001c19: PUSH1 0x01 00001c1b: PUSH1 0x01 00001c1d: PUSH1 0xa0 00001c1f: SHL 00001c20: SUB 00001c21: DUP6 00001c22: AND 00001c23: PUSH2 0x1c3f 00001c26: JUMPI 00001c27: PUSH1 0x40 00001c29: MLOAD 00001c2a: PUSH4 0x3a954ecd 00001c2f: PUSH1 0xe2 00001c31: SHL 00001c32: DUP2 00001c33: MSTORE 00001c34: PUSH1 0x04 00001c36: ADD 00001c37: PUSH1 0x40 00001c39: MLOAD 00001c3a: DUP1 00001c3b: SWAP2 00001c3c: SUB 00001c3d: SWAP1 00001c3e: REVERT 00001c3f: JUMPDEST 00001c40: DUP1 00001c41: ISZERO 00001c42: PUSH2 0x1c4a 00001c45: JUMPI 00001c46: PUSH1 0x00 00001c48: DUP3 00001c49: SSTORE 00001c4a: JUMPDEST 00001c4b: PUSH1 0x01 00001c4d: PUSH1 0x01 00001c4f: PUSH1 0xa0 00001c51: SHL 00001c52: SUB 00001c53: DUP7 00001c54: DUP2 00001c55: AND 00001c56: PUSH1 0x00 00001c58: SWAP1 00001c59: DUP2 00001c5a: MSTORE 00001c5b: PUSH1 0x09 00001c5d: PUSH1 0x20 00001c5f: MSTORE 00001c60: PUSH1 0x40 00001c62: DUP1 00001c63: DUP3 00001c64: KECCAK256 00001c65: DUP1 00001c66: SLOAD 00001c67: PUSH1 0x00 00001c69: NOT 00001c6a: ADD 00001c6b: SWAP1 00001c6c: SSTORE 00001c6d: SWAP2 00001c6e: DUP8 00001c6f: AND 00001c70: DUP1 00001c71: DUP3 00001c72: MSTORE 00001c73: SWAP2 00001c74: SWAP1 00001c75: KECCAK256 00001c76: DUP1 00001c77: SLOAD 00001c78: PUSH1 0x01 00001c7a: ADD 00001c7b: SWAP1 00001c7c: SSTORE 00001c7d: PUSH8 0xffffffffffffffff 00001c86: PUSH1 0xa2 00001c88: SHL 00001c89: DUP5 00001c8a: AND 00001c8b: OR 00001c8c: PUSH1 0x01 00001c8e: PUSH1 0xa1 00001c90: SHL 00001c91: OR 00001c92: PUSH1 0x00 00001c94: DUP6 00001c95: DUP2 00001c96: MSTORE 00001c97: PUSH1 0x08 00001c99: PUSH1 0x20 00001c9b: MSTORE 00001c9c: PUSH1 0x40 00001c9e: DUP2 00001c9f: KECCAK256 00001ca0: SWAP2 00001ca1: SWAP1 00001ca2: SWAP2 00001ca3: SSTORE 00001ca4: PUSH1 0x01 00001ca6: PUSH1 0xa1 00001ca8: SHL 00001ca9: DUP5 00001caa: AND 00001cab: SWAP1 00001cac: SUB 00001cad: PUSH2 0x1ce6 00001cb0: JUMPI 00001cb1: PUSH1 0x01 00001cb3: DUP5 00001cb4: ADD 00001cb5: PUSH1 0x00 00001cb7: DUP2 00001cb8: DUP2 00001cb9: MSTORE 00001cba: PUSH1 0x08 00001cbc: PUSH1 0x20 00001cbe: MSTORE 00001cbf: PUSH1 0x40 00001cc1: DUP2 00001cc2: KECCAK256 00001cc3: SLOAD 00001cc4: SWAP1 00001cc5: SUB 00001cc6: PUSH2 0x1ce4 00001cc9: JUMPI 00001cca: PUSH1 0x04 00001ccc: SLOAD 00001ccd: DUP2 00001cce: EQ 00001ccf: PUSH2 0x1ce4 00001cd2: JUMPI 00001cd3: PUSH1 0x00 00001cd5: DUP2 00001cd6: DUP2 00001cd7: MSTORE 00001cd8: PUSH1 0x08 00001cda: PUSH1 0x20 00001cdc: MSTORE 00001cdd: PUSH1 0x40 00001cdf: SWAP1 00001ce0: KECCAK256 00001ce1: DUP5 00001ce2: SWAP1 00001ce3: SSTORE 00001ce4: JUMPDEST 00001ce5: POP 00001ce6: JUMPDEST 00001ce7: DUP4 00001ce8: DUP6 00001ce9: PUSH1 0x01 00001ceb: PUSH1 0x01 00001ced: PUSH1 0xa0 00001cef: SHL 00001cf0: SUB 00001cf1: AND 00001cf2: DUP8 00001cf3: PUSH1 0x01 00001cf5: PUSH1 0x01 00001cf7: PUSH1 0xa0 00001cf9: SHL 00001cfa: SUB 00001cfb: AND 00001cfc: PUSH1 0x00 00001cfe: DUP1 00001cff: MLOAD 00001d00: PUSH1 0x20 00001d02: PUSH2 0x2b5a 00001d05: DUP4 00001d06: CODECOPY 00001d07: DUP2 00001d08: MLOAD 00001d09: SWAP2 00001d0a: MSTORE 00001d0b: PUSH1 0x40 00001d0d: MLOAD 00001d0e: PUSH1 0x40 00001d10: MLOAD 00001d11: DUP1 00001d12: SWAP2 00001d13: SUB 00001d14: SWAP1 00001d15: LOG4 00001d16: JUMPDEST 00001d17: POP 00001d18: POP 00001d19: POP 00001d1a: POP 00001d1b: POP 00001d1c: POP 00001d1d: JUMP 00001d1e: JUMPDEST 00001d1f: PUSH1 0x00 00001d21: PUSH2 0x1d29 00001d24: DUP4 00001d25: PUSH2 0x1e61 00001d28: JUMP 00001d29: JUMPDEST 00001d2a: SWAP1 00001d2b: POP 00001d2c: DUP1 00001d2d: PUSH1 0x00 00001d2f: DUP1 00001d30: PUSH2 0x1d47 00001d33: DUP7 00001d34: PUSH1 0x00 00001d36: SWAP1 00001d37: DUP2 00001d38: MSTORE 00001d39: PUSH1 0x0a 00001d3b: PUSH1 0x20 00001d3d: MSTORE 00001d3e: PUSH1 0x40 00001d40: SWAP1 00001d41: KECCAK256 00001d42: DUP1 00001d43: SLOAD 00001d44: SWAP1 00001d45: SWAP2 00001d46: JUMP 00001d47: JUMPDEST 00001d48: SWAP2 00001d49: POP 00001d4a: SWAP2 00001d4b: POP 00001d4c: DUP5 00001d4d: ISZERO 00001d4e: PUSH2 0x1d87 00001d51: JUMPI 00001d52: PUSH2 0x1d5c 00001d55: DUP2 00001d56: DUP5 00001d57: CALLER 00001d58: PUSH2 0x1bd8 00001d5b: JUMP 00001d5c: JUMPDEST 00001d5d: PUSH2 0x1d87 00001d60: JUMPI 00001d61: PUSH2 0x1d6a 00001d64: DUP4 00001d65: CALLER 00001d66: PUSH2 0x07ef 00001d69: JUMP 00001d6a: JUMPDEST 00001d6b: PUSH2 0x1d87 00001d6e: JUMPI 00001d6f: PUSH1 0x40 00001d71: MLOAD 00001d72: PUSH4 0x2ce44b5f 00001d77: PUSH1 0xe1 00001d79: SHL 00001d7a: DUP2 00001d7b: MSTORE 00001d7c: PUSH1 0x04 00001d7e: ADD 00001d7f: PUSH1 0x40 00001d81: MLOAD 00001d82: DUP1 00001d83: SWAP2 00001d84: SUB 00001d85: SWAP1 00001d86: REVERT 00001d87: JUMPDEST 00001d88: DUP1 00001d89: ISZERO 00001d8a: PUSH2 0x1d92 00001d8d: JUMPI 00001d8e: PUSH1 0x00 00001d90: DUP3 00001d91: SSTORE 00001d92: JUMPDEST 00001d93: PUSH1 0x01 00001d95: PUSH1 0x01 00001d97: PUSH1 0xa0 00001d99: SHL 00001d9a: SUB 00001d9b: DUP4 00001d9c: AND 00001d9d: PUSH1 0x00 00001d9f: DUP2 00001da0: DUP2 00001da1: MSTORE 00001da2: PUSH1 0x09 00001da4: PUSH1 0x20 00001da6: MSTORE 00001da7: PUSH1 0x40 00001da9: SWAP1 00001daa: KECCAK256 00001dab: DUP1 00001dac: SLOAD 00001dad: PUSH16 0xffffffffffffffffffffffffffffffff 00001dbe: ADD 00001dbf: SWAP1 00001dc0: SSTORE 00001dc1: PUSH8 0xffffffffffffffff 00001dca: PUSH1 0xa2 00001dcc: SHL 00001dcd: DUP6 00001dce: AND 00001dcf: OR 00001dd0: PUSH1 0x03 00001dd2: PUSH1 0xa0 00001dd4: SHL 00001dd5: OR 00001dd6: PUSH1 0x00 00001dd8: DUP8 00001dd9: DUP2 00001dda: MSTORE 00001ddb: PUSH1 0x08 00001ddd: PUSH1 0x20 00001ddf: MSTORE 00001de0: PUSH1 0x40 00001de2: DUP2 00001de3: KECCAK256 00001de4: SWAP2 00001de5: SWAP1 00001de6: SWAP2 00001de7: SSTORE 00001de8: PUSH1 0x01 00001dea: PUSH1 0xa1 00001dec: SHL 00001ded: DUP6 00001dee: AND 00001def: SWAP1 00001df0: SUB 00001df1: PUSH2 0x1e2a 00001df4: JUMPI 00001df5: PUSH1 0x01 00001df7: DUP7 00001df8: ADD 00001df9: PUSH1 0x00 00001dfb: DUP2 00001dfc: DUP2 00001dfd: MSTORE 00001dfe: PUSH1 0x08 00001e00: PUSH1 0x20 00001e02: MSTORE 00001e03: PUSH1 0x40 00001e05: DUP2 00001e06: KECCAK256 00001e07: SLOAD 00001e08: SWAP1 00001e09: SUB 00001e0a: PUSH2 0x1e28 00001e0d: JUMPI 00001e0e: PUSH1 0x04 00001e10: SLOAD 00001e11: DUP2 00001e12: EQ 00001e13: PUSH2 0x1e28 00001e16: JUMPI 00001e17: PUSH1 0x00 00001e19: DUP2 00001e1a: DUP2 00001e1b: MSTORE 00001e1c: PUSH1 0x08 00001e1e: PUSH1 0x20 00001e20: MSTORE 00001e21: PUSH1 0x40 00001e23: SWAP1 00001e24: KECCAK256 00001e25: DUP6 00001e26: SWAP1 00001e27: SSTORE 00001e28: JUMPDEST 00001e29: POP 00001e2a: JUMPDEST 00001e2b: PUSH1 0x40 00001e2d: MLOAD 00001e2e: DUP7 00001e2f: SWAP1 00001e30: PUSH1 0x00 00001e32: SWAP1 00001e33: PUSH1 0x01 00001e35: PUSH1 0x01 00001e37: PUSH1 0xa0 00001e39: SHL 00001e3a: SUB 00001e3b: DUP7 00001e3c: AND 00001e3d: SWAP1 00001e3e: PUSH1 0x00 00001e40: DUP1 00001e41: MLOAD 00001e42: PUSH1 0x20 00001e44: PUSH2 0x2b5a 00001e47: DUP4 00001e48: CODECOPY 00001e49: DUP2 00001e4a: MLOAD 00001e4b: SWAP2 00001e4c: MSTORE 00001e4d: SWAP1 00001e4e: DUP4 00001e4f: SWAP1 00001e50: LOG4 00001e51: POP 00001e52: POP 00001e53: PUSH1 0x05 00001e55: DUP1 00001e56: SLOAD 00001e57: PUSH1 0x01 00001e59: ADD 00001e5a: SWAP1 00001e5b: SSTORE 00001e5c: POP 00001e5d: POP 00001e5e: POP 00001e5f: POP 00001e60: JUMP 00001e61: JUMPDEST 00001e62: PUSH1 0x00 00001e64: DUP2 00001e65: PUSH1 0x04 00001e67: SLOAD 00001e68: DUP2 00001e69: LT 00001e6a: ISZERO 00001e6b: PUSH2 0x1eaf 00001e6e: JUMPI 00001e6f: PUSH1 0x00 00001e71: DUP2 00001e72: DUP2 00001e73: MSTORE 00001e74: PUSH1 0x08 00001e76: PUSH1 0x20 00001e78: MSTORE 00001e79: PUSH1 0x40 00001e7b: DUP2 00001e7c: KECCAK256 00001e7d: SLOAD 00001e7e: SWAP1 00001e7f: PUSH1 0x01 00001e81: PUSH1 0xa0 00001e83: SHL 00001e84: DUP3 00001e85: AND 00001e86: SWAP1 00001e87: SUB 00001e88: PUSH2 0x1ead 00001e8b: JUMPI 00001e8c: JUMPDEST 00001e8d: DUP1 00001e8e: PUSH1 0x00 00001e90: SUB 00001e91: PUSH2 0x1275 00001e94: JUMPI 00001e95: POP 00001e96: PUSH1 0x00 00001e98: NOT 00001e99: ADD 00001e9a: PUSH1 0x00 00001e9c: DUP2 00001e9d: DUP2 00001e9e: MSTORE 00001e9f: PUSH1 0x08 00001ea1: PUSH1 0x20 00001ea3: MSTORE 00001ea4: PUSH1 0x40 00001ea6: SWAP1 00001ea7: KECCAK256 00001ea8: SLOAD 00001ea9: PUSH2 0x1e8c 00001eac: JUMP 00001ead: JUMPDEST 00001eae: POP 00001eaf: JUMPDEST 00001eb0: PUSH1 0x40 00001eb2: MLOAD 00001eb3: PUSH4 0x6f96cda1 00001eb8: PUSH1 0xe1 00001eba: SHL 00001ebb: DUP2 00001ebc: MSTORE 00001ebd: PUSH1 0x04 00001ebf: ADD 00001ec0: PUSH1 0x40 00001ec2: MLOAD 00001ec3: DUP1 00001ec4: SWAP2 00001ec5: SUB 00001ec6: SWAP1 00001ec7: REVERT 00001ec8: JUMPDEST 00001ec9: PUSH1 0x00 00001ecb: DUP1 00001ecc: SLOAD 00001ecd: PUSH1 0x01 00001ecf: PUSH1 0x01 00001ed1: PUSH1 0xa0 00001ed3: SHL 00001ed4: SUB 00001ed5: DUP4 00001ed6: DUP2 00001ed7: AND 00001ed8: PUSH1 0x01 00001eda: PUSH1 0x01 00001edc: PUSH1 0xa0 00001ede: SHL 00001edf: SUB 00001ee0: NOT 00001ee1: DUP4 00001ee2: AND 00001ee3: DUP2 00001ee4: OR 00001ee5: DUP5 00001ee6: SSTORE 00001ee7: PUSH1 0x40 00001ee9: MLOAD 00001eea: SWAP2 00001eeb: SWAP1 00001eec: SWAP3 00001eed: AND 00001eee: SWAP3 00001eef: DUP4 00001ef0: SWAP2 00001ef1: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00001f12: SWAP2 00001f13: SWAP1 00001f14: LOG3 00001f15: POP 00001f16: POP 00001f17: JUMP 00001f18: JUMPDEST 00001f19: PUSH1 0x04 00001f1b: SLOAD 00001f1c: PUSH1 0x00 00001f1e: DUP3 00001f1f: SWAP1 00001f20: SUB 00001f21: PUSH2 0x1f3d 00001f24: JUMPI 00001f25: PUSH1 0x40 00001f27: MLOAD 00001f28: PUSH4 0xb562e8dd 00001f2d: PUSH1 0xe0 00001f2f: SHL 00001f30: DUP2 00001f31: MSTORE 00001f32: PUSH1 0x04 00001f34: ADD 00001f35: PUSH1 0x40 00001f37: MLOAD 00001f38: DUP1 00001f39: SWAP2 00001f3a: SUB 00001f3b: SWAP1 00001f3c: REVERT 00001f3d: JUMPDEST 00001f3e: PUSH1 0x01 00001f40: PUSH1 0x01 00001f42: PUSH1 0xa0 00001f44: SHL 00001f45: SUB 00001f46: DUP4 00001f47: AND 00001f48: PUSH1 0x00 00001f4a: DUP2 00001f4b: DUP2 00001f4c: MSTORE 00001f4d: PUSH1 0x09 00001f4f: PUSH1 0x20 00001f51: SWAP1 00001f52: DUP2 00001f53: MSTORE 00001f54: PUSH1 0x40 00001f56: DUP1 00001f57: DUP4 00001f58: KECCAK256 00001f59: DUP1 00001f5a: SLOAD 00001f5b: PUSH9 0x010000000000000001 00001f65: DUP9 00001f66: MUL 00001f67: ADD 00001f68: SWAP1 00001f69: SSTORE 00001f6a: DUP5 00001f6b: DUP4 00001f6c: MSTORE 00001f6d: PUSH1 0x08 00001f6f: SWAP1 00001f70: SWAP2 00001f71: MSTORE 00001f72: DUP2 00001f73: KECCAK256 00001f74: PUSH1 0x01 00001f76: DUP6 00001f77: EQ 00001f78: PUSH1 0xa1 00001f7a: SHL 00001f7b: DUP4 00001f7c: OR 00001f7d: SWAP1 00001f7e: SSTORE 00001f7f: DUP3 00001f80: DUP5 00001f81: ADD 00001f82: SWAP1 00001f83: DUP4 00001f84: SWAP1 00001f85: DUP4 00001f86: SWAP1 00001f87: PUSH1 0x00 00001f89: DUP1 00001f8a: MLOAD 00001f8b: PUSH1 0x20 00001f8d: PUSH2 0x2b5a 00001f90: DUP4 00001f91: CODECOPY 00001f92: DUP2 00001f93: MLOAD 00001f94: SWAP2 00001f95: MSTORE 00001f96: DUP2 00001f97: DUP1 00001f98: LOG4 00001f99: PUSH1 0x01 00001f9b: DUP4 00001f9c: ADD 00001f9d: JUMPDEST 00001f9e: DUP2 00001f9f: DUP2 00001fa0: EQ 00001fa1: PUSH2 0x1fc3 00001fa4: JUMPI 00001fa5: DUP1 00001fa6: DUP4 00001fa7: PUSH1 0x00 00001fa9: PUSH1 0x00 00001fab: DUP1 00001fac: MLOAD 00001fad: PUSH1 0x20 00001faf: PUSH2 0x2b5a 00001fb2: DUP4 00001fb3: CODECOPY 00001fb4: DUP2 00001fb5: MLOAD 00001fb6: SWAP2 00001fb7: MSTORE 00001fb8: PUSH1 0x00 00001fba: DUP1 00001fbb: LOG4 00001fbc: PUSH1 0x01 00001fbe: ADD 00001fbf: PUSH2 0x1f9d 00001fc2: JUMP 00001fc3: JUMPDEST 00001fc4: POP 00001fc5: DUP2 00001fc6: PUSH1 0x00 00001fc8: SUB 00001fc9: PUSH2 0x1fe4 00001fcc: JUMPI 00001fcd: PUSH1 0x40 00001fcf: MLOAD 00001fd0: PUSH3 0x2e0763 00001fd4: PUSH1 0xe8 00001fd6: SHL 00001fd7: DUP2 00001fd8: MSTORE 00001fd9: PUSH1 0x04 00001fdb: ADD 00001fdc: PUSH1 0x40 00001fde: MLOAD 00001fdf: DUP1 00001fe0: SWAP2 00001fe1: SUB 00001fe2: SWAP1 00001fe3: REVERT 00001fe4: JUMPDEST 00001fe5: PUSH1 0x04 00001fe7: SSTORE 00001fe8: POP 00001fe9: POP 00001fea: POP 00001feb: POP 00001fec: JUMP 00001fed: JUMPDEST 00001fee: CALLER 00001fef: PUSH1 0x00 00001ff1: DUP2 00001ff2: DUP2 00001ff3: MSTORE 00001ff4: PUSH1 0x0b 00001ff6: PUSH1 0x20 00001ff8: SWAP1 00001ff9: DUP2 00001ffa: MSTORE 00001ffb: PUSH1 0x40 00001ffd: DUP1 00001ffe: DUP4 00001fff: KECCAK256 00002000: PUSH1 0x01 00002002: PUSH1 0x01 00002004: PUSH1 0xa0 00002006: SHL 00002007: SUB 00002008: DUP8 00002009: AND 0000200a: DUP1 0000200b: DUP6 0000200c: MSTORE 0000200d: SWAP1 0000200e: DUP4 0000200f: MSTORE 00002010: SWAP3 00002011: DUP2 00002012: SWAP1 00002013: KECCAK256 00002014: DUP1 00002015: SLOAD 00002016: PUSH1 0xff 00002018: NOT 00002019: AND 0000201a: DUP7 0000201b: ISZERO 0000201c: ISZERO 0000201d: SWAP1 0000201e: DUP2 0000201f: OR 00002020: SWAP1 00002021: SWAP2 00002022: SSTORE 00002023: SWAP1 00002024: MLOAD 00002025: SWAP1 00002026: DUP2 00002027: MSTORE 00002028: SWAP2 00002029: SWAP3 0000202a: SWAP2 0000202b: PUSH32 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31 0000204c: SWAP2 0000204d: ADD 0000204e: PUSH1 0x40 00002050: MLOAD 00002051: DUP1 00002052: SWAP2 00002053: SUB 00002054: SWAP1 00002055: LOG3 00002056: POP 00002057: POP 00002058: JUMP 00002059: JUMPDEST 0000205a: PUSH1 0x02 0000205c: PUSH1 0x01 0000205e: SLOAD 0000205f: SUB 00002060: PUSH2 0x20ab 00002063: JUMPI 00002064: PUSH1 0x40 00002066: MLOAD 00002067: PUSH3 0x461bcd 0000206b: PUSH1 0xe5 0000206d: SHL 0000206e: DUP2 0000206f: MSTORE 00002070: PUSH1 0x20 00002072: PUSH1 0x04 00002074: DUP3 00002075: ADD 00002076: MSTORE 00002077: PUSH1 0x1f 00002079: PUSH1 0x24 0000207b: DUP3 0000207c: ADD 0000207d: MSTORE 0000207e: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 0000209f: PUSH1 0x44 000020a1: DUP3 000020a2: ADD 000020a3: MSTORE 000020a4: PUSH1 0x64 000020a6: ADD 000020a7: PUSH2 0x175f 000020aa: JUMP 000020ab: JUMPDEST 000020ac: PUSH1 0x02 000020ae: PUSH1 0x01 000020b0: SSTORE 000020b1: JUMP 000020b2: JUMPDEST 000020b3: PUSH1 0x40 000020b5: MLOAD 000020b6: PUSH4 0x0a85bd01 000020bb: PUSH1 0xe1 000020bd: SHL 000020be: DUP2 000020bf: MSTORE 000020c0: PUSH1 0x00 000020c2: SWAP1 000020c3: PUSH1 0x01 000020c5: PUSH1 0x01 000020c7: PUSH1 0xa0 000020c9: SHL 000020ca: SUB 000020cb: DUP6 000020cc: AND 000020cd: SWAP1 000020ce: PUSH4 0x150b7a02 000020d3: SWAP1 000020d4: PUSH2 0x20e7 000020d7: SWAP1 000020d8: CALLER 000020d9: SWAP1 000020da: DUP10 000020db: SWAP1 000020dc: DUP9 000020dd: SWAP1 000020de: DUP9 000020df: SWAP1 000020e0: PUSH1 0x04 000020e2: ADD 000020e3: PUSH2 0x2aff 000020e6: JUMP 000020e7: JUMPDEST 000020e8: PUSH1 0x20 000020ea: PUSH1 0x40 000020ec: MLOAD 000020ed: DUP1 000020ee: DUP4 000020ef: SUB 000020f0: DUP2 000020f1: PUSH1 0x00 000020f3: DUP8 000020f4: GAS 000020f5: CALL 000020f6: SWAP3 000020f7: POP 000020f8: POP 000020f9: POP 000020fa: DUP1 000020fb: ISZERO 000020fc: PUSH2 0x2122 000020ff: JUMPI 00002100: POP 00002101: PUSH1 0x40 00002103: DUP1 00002104: MLOAD 00002105: PUSH1 0x1f 00002107: RETURNDATASIZE 00002108: SWAP1 00002109: DUP2 0000210a: ADD 0000210b: PUSH1 0x1f 0000210d: NOT 0000210e: AND 0000210f: DUP3 00002110: ADD 00002111: SWAP1 00002112: SWAP3 00002113: MSTORE 00002114: PUSH2 0x211f 00002117: SWAP2 00002118: DUP2 00002119: ADD 0000211a: SWAP1 0000211b: PUSH2 0x2b3c 0000211e: JUMP 0000211f: JUMPDEST 00002120: PUSH1 0x01 00002122: JUMPDEST 00002123: PUSH2 0x2180 00002126: JUMPI 00002127: RETURNDATASIZE 00002128: DUP1 00002129: DUP1 0000212a: ISZERO 0000212b: PUSH2 0x2150 0000212e: JUMPI 0000212f: PUSH1 0x40 00002131: MLOAD 00002132: SWAP2 00002133: POP 00002134: PUSH1 0x1f 00002136: NOT 00002137: PUSH1 0x3f 00002139: RETURNDATASIZE 0000213a: ADD 0000213b: AND 0000213c: DUP3 0000213d: ADD 0000213e: PUSH1 0x40 00002140: MSTORE 00002141: RETURNDATASIZE 00002142: DUP3 00002143: MSTORE 00002144: RETURNDATASIZE 00002145: PUSH1 0x00 00002147: PUSH1 0x20 00002149: DUP5 0000214a: ADD 0000214b: RETURNDATACOPY 0000214c: PUSH2 0x2155 0000214f: JUMP 00002150: JUMPDEST 00002151: PUSH1 0x60 00002153: SWAP2 00002154: POP 00002155: JUMPDEST 00002156: POP 00002157: DUP1 00002158: MLOAD 00002159: PUSH1 0x00 0000215b: SUB 0000215c: PUSH2 0x2178 0000215f: JUMPI 00002160: PUSH1 0x40 00002162: MLOAD 00002163: PUSH4 0x68d2bf6b 00002168: PUSH1 0xe1 0000216a: SHL 0000216b: DUP2 0000216c: MSTORE 0000216d: PUSH1 0x04 0000216f: ADD 00002170: PUSH1 0x40 00002172: MLOAD 00002173: DUP1 00002174: SWAP2 00002175: SUB 00002176: SWAP1 00002177: REVERT 00002178: JUMPDEST 00002179: DUP1 0000217a: MLOAD 0000217b: DUP2 0000217c: PUSH1 0x20 0000217e: ADD 0000217f: REVERT 00002180: JUMPDEST 00002181: PUSH1 0x01 00002183: PUSH1 0x01 00002185: PUSH1 0xe0 00002187: SHL 00002188: SUB 00002189: NOT 0000218a: AND 0000218b: PUSH4 0x0a85bd01 00002190: PUSH1 0xe1 00002192: SHL 00002193: EQ 00002194: SWAP1 00002195: POP 00002196: SWAP5 00002197: SWAP4 00002198: POP 00002199: POP 0000219a: POP 0000219b: POP 0000219c: JUMP 0000219d: JUMPDEST 0000219e: PUSH1 0x40 000021a0: DUP1 000021a1: MLOAD 000021a2: PUSH1 0x60 000021a4: DUP2 000021a5: ADD 000021a6: DUP3 000021a7: MSTORE 000021a8: PUSH1 0x00 000021aa: DUP1 000021ab: DUP3 000021ac: MSTORE 000021ad: PUSH1 0x20 000021af: DUP3 000021b0: ADD 000021b1: DUP2 000021b2: SWAP1 000021b3: MSTORE 000021b4: SWAP2 000021b5: DUP2 000021b6: ADD 000021b7: SWAP2 000021b8: SWAP1 000021b9: SWAP2 000021ba: MSTORE 000021bb: PUSH2 0x08c1 000021be: PUSH2 0x21c6 000021c1: DUP4 000021c2: PUSH2 0x1e61 000021c5: JUMP 000021c6: JUMPDEST 000021c7: PUSH2 0x221e 000021ca: JUMP 000021cb: JUMPDEST 000021cc: PUSH1 0x60 000021ce: PUSH1 0x13 000021d0: DUP1 000021d1: SLOAD 000021d2: PUSH2 0x08ec 000021d5: SWAP1 000021d6: PUSH2 0x280a 000021d9: JUMP 000021da: JUMPDEST 000021db: PUSH1 0x60 000021dd: PUSH1 0xa0 000021df: PUSH1 0x40 000021e1: MLOAD 000021e2: ADD 000021e3: DUP1 000021e4: PUSH1 0x40 000021e6: MSTORE 000021e7: PUSH1 0x20 000021e9: DUP2 000021ea: SUB 000021eb: SWAP2 000021ec: POP 000021ed: POP 000021ee: PUSH1 0x00 000021f0: DUP2 000021f1: MSTORE 000021f2: DUP1 000021f3: DUP3 000021f4: JUMPDEST 000021f5: PUSH1 0x01 000021f7: DUP4 000021f8: SUB 000021f9: SWAP3 000021fa: POP 000021fb: PUSH1 0x0a 000021fd: DUP2 000021fe: MOD 000021ff: PUSH1 0x30 00002201: ADD 00002202: DUP4 00002203: MSTORE8 00002204: PUSH1 0x0a 00002206: SWAP1 00002207: DIV 00002208: DUP1 00002209: PUSH2 0x21f4 0000220c: JUMPI 0000220d: POP 0000220e: DUP2 0000220f: SWAP1 00002210: SUB 00002211: PUSH1 0x1f 00002213: NOT 00002214: SWAP1 00002215: SWAP2 00002216: ADD 00002217: SWAP1 00002218: DUP2 00002219: MSTORE 0000221a: SWAP2 0000221b: SWAP1 0000221c: POP 0000221d: JUMP 0000221e: JUMPDEST 0000221f: PUSH1 0x40 00002221: DUP1 00002222: MLOAD 00002223: PUSH1 0x60 00002225: DUP2 00002226: ADD 00002227: DUP3 00002228: MSTORE 00002229: PUSH1 0x01 0000222b: PUSH1 0x01 0000222d: PUSH1 0xa0 0000222f: SHL 00002230: SUB 00002231: DUP4 00002232: AND 00002233: DUP2 00002234: MSTORE 00002235: PUSH1 0x01 00002237: PUSH1 0xa0 00002239: SHL 0000223a: DUP4 0000223b: AND 0000223c: ISZERO 0000223d: ISZERO 0000223e: PUSH1 0x20 00002240: DUP3 00002241: ADD 00002242: MSTORE 00002243: PUSH1 0xa2 00002245: SWAP3 00002246: SWAP1 00002247: SWAP3 00002248: SHR 00002249: PUSH1 0x01 0000224b: PUSH1 0x01 0000224d: PUSH1 0x40 0000224f: SHL 00002250: SUB 00002251: AND 00002252: SWAP1 00002253: DUP3 00002254: ADD 00002255: MSTORE 00002256: SWAP1 00002257: JUMP 00002258: JUMPDEST 00002259: PUSH1 0x00 0000225b: DUP2 0000225c: DUP2 0000225d: MSTORE 0000225e: PUSH1 0x08 00002260: PUSH1 0x20 00002262: MSTORE 00002263: PUSH1 0x40 00002265: DUP2 00002266: KECCAK256 00002267: SLOAD 00002268: SWAP1 00002269: SUB 0000226a: PUSH2 0x1771 0000226d: JUMPI 0000226e: PUSH2 0x2276 00002271: DUP2 00002272: PUSH2 0x1e61 00002275: JUMP 00002276: JUMPDEST 00002277: PUSH1 0x00 00002279: DUP3 0000227a: DUP2 0000227b: MSTORE 0000227c: PUSH1 0x08 0000227e: PUSH1 0x20 00002280: MSTORE 00002281: PUSH1 0x40 00002283: SWAP1 00002284: KECCAK256 00002285: SSTORE 00002286: POP 00002287: JUMP 00002288: JUMPDEST 00002289: PUSH1 0x00 0000228b: DUP3 0000228c: DUP2 0000228d: MSTORE 0000228e: PUSH1 0x08 00002290: PUSH1 0x20 00002292: MSTORE 00002293: PUSH1 0x40 00002295: DUP2 00002296: KECCAK256 00002297: SLOAD 00002298: SWAP1 00002299: DUP2 0000229a: SWAP1 0000229b: SUB 0000229c: PUSH2 0x22b7 0000229f: JUMPI 000022a0: PUSH1 0x40 000022a2: MLOAD 000022a3: PUSH3 0xd58153 000022a7: PUSH1 0xe0 000022a9: SHL 000022aa: DUP2 000022ab: MSTORE 000022ac: PUSH1 0x04 000022ae: ADD 000022af: PUSH1 0x40 000022b1: MLOAD 000022b2: DUP1 000022b3: SWAP2 000022b4: SUB 000022b5: SWAP1 000022b6: REVERT 000022b7: JUMPDEST 000022b8: PUSH1 0x00 000022ba: SWAP3 000022bb: DUP4 000022bc: MSTORE 000022bd: PUSH1 0x08 000022bf: PUSH1 0x20 000022c1: MSTORE 000022c2: PUSH1 0x40 000022c4: SWAP1 000022c5: SWAP3 000022c6: KECCAK256 000022c7: PUSH1 0x01 000022c9: PUSH1 0x01 000022cb: PUSH1 0xa2 000022cd: SHL 000022ce: SUB 000022cf: SWAP3 000022d0: SWAP1 000022d1: SWAP3 000022d2: AND 000022d3: PUSH1 0xa2 000022d5: SWAP2 000022d6: SWAP1 000022d7: SWAP2 000022d8: SHL 000022d9: OR 000022da: SWAP1 000022db: SSTORE 000022dc: JUMP 000022dd: JUMPDEST 000022de: PUSH1 0x01 000022e0: PUSH1 0x01 000022e2: PUSH1 0xe0 000022e4: SHL 000022e5: SUB 000022e6: NOT 000022e7: DUP2 000022e8: AND 000022e9: DUP2 000022ea: EQ 000022eb: PUSH2 0x1771 000022ee: JUMPI 000022ef: PUSH1 0x00 000022f1: DUP1 000022f2: REVERT 000022f3: JUMPDEST 000022f4: PUSH1 0x00 000022f6: PUSH1 0x20 000022f8: DUP3 000022f9: DUP5 000022fa: SUB 000022fb: SLT 000022fc: ISZERO 000022fd: PUSH2 0x2305 00002300: JUMPI 00002301: PUSH1 0x00 00002303: DUP1 00002304: REVERT 00002305: JUMPDEST 00002306: DUP2 00002307: CALLDATALOAD 00002308: PUSH2 0x1275 0000230b: DUP2 0000230c: PUSH2 0x22dd 0000230f: JUMP 00002310: JUMPDEST 00002311: DUP1 00002312: CALLDATALOAD 00002313: PUSH1 0x01 00002315: PUSH1 0x01 00002317: PUSH1 0xa0 00002319: SHL 0000231a: SUB 0000231b: DUP2 0000231c: AND 0000231d: DUP2 0000231e: EQ 0000231f: PUSH2 0x2327 00002322: JUMPI 00002323: PUSH1 0x00 00002325: DUP1 00002326: REVERT 00002327: JUMPDEST 00002328: SWAP2 00002329: SWAP1 0000232a: POP 0000232b: JUMP 0000232c: JUMPDEST 0000232d: PUSH1 0x00 0000232f: DUP1 00002330: PUSH1 0x40 00002332: DUP4 00002333: DUP6 00002334: SUB 00002335: SLT 00002336: ISZERO 00002337: PUSH2 0x233f 0000233a: JUMPI 0000233b: PUSH1 0x00 0000233d: DUP1 0000233e: REVERT 0000233f: JUMPDEST 00002340: PUSH2 0x2348 00002343: DUP4 00002344: PUSH2 0x2310 00002347: JUMP 00002348: JUMPDEST 00002349: SWAP2 0000234a: POP 0000234b: PUSH1 0x20 0000234d: DUP4 0000234e: ADD 0000234f: CALLDATALOAD 00002350: PUSH1 0x01 00002352: PUSH1 0x01 00002354: PUSH1 0x60 00002356: SHL 00002357: SUB 00002358: DUP2 00002359: AND 0000235a: DUP2 0000235b: EQ 0000235c: PUSH2 0x2364 0000235f: JUMPI 00002360: PUSH1 0x00 00002362: DUP1 00002363: REVERT 00002364: JUMPDEST 00002365: DUP1 00002366: SWAP2 00002367: POP 00002368: POP 00002369: SWAP3 0000236a: POP 0000236b: SWAP3 0000236c: SWAP1 0000236d: POP 0000236e: JUMP 0000236f: JUMPDEST 00002370: PUSH1 0x00 00002372: JUMPDEST 00002373: DUP4 00002374: DUP2 00002375: LT 00002376: ISZERO 00002377: PUSH2 0x238a 0000237a: JUMPI 0000237b: DUP2 0000237c: DUP2 0000237d: ADD 0000237e: MLOAD 0000237f: DUP4 00002380: DUP3 00002381: ADD 00002382: MSTORE 00002383: PUSH1 0x20 00002385: ADD 00002386: PUSH2 0x2372 00002389: JUMP 0000238a: JUMPDEST 0000238b: POP 0000238c: POP 0000238d: PUSH1 0x00 0000238f: SWAP2 00002390: ADD 00002391: MSTORE 00002392: JUMP 00002393: JUMPDEST 00002394: PUSH1 0x00 00002396: DUP2 00002397: MLOAD 00002398: DUP1 00002399: DUP5 0000239a: MSTORE 0000239b: PUSH2 0x23ab 0000239e: DUP2 0000239f: PUSH1 0x20 000023a1: DUP7 000023a2: ADD 000023a3: PUSH1 0x20 000023a5: DUP7 000023a6: ADD 000023a7: PUSH2 0x236f 000023aa: JUMP 000023ab: JUMPDEST 000023ac: PUSH1 0x1f 000023ae: ADD 000023af: PUSH1 0x1f 000023b1: NOT 000023b2: AND 000023b3: SWAP3 000023b4: SWAP1 000023b5: SWAP3 000023b6: ADD 000023b7: PUSH1 0x20 000023b9: ADD 000023ba: SWAP3 000023bb: SWAP2 000023bc: POP 000023bd: POP 000023be: JUMP 000023bf: JUMPDEST 000023c0: PUSH1 0x20 000023c2: DUP2 000023c3: MSTORE 000023c4: PUSH1 0x00 000023c6: PUSH2 0x1275 000023c9: PUSH1 0x20 000023cb: DUP4 000023cc: ADD 000023cd: DUP5 000023ce: PUSH2 0x2393 000023d1: JUMP 000023d2: JUMPDEST 000023d3: PUSH1 0x00 000023d5: PUSH1 0x20 000023d7: DUP3 000023d8: DUP5 000023d9: SUB 000023da: SLT 000023db: ISZERO 000023dc: PUSH2 0x23e4 000023df: JUMPI 000023e0: PUSH1 0x00 000023e2: DUP1 000023e3: REVERT 000023e4: JUMPDEST 000023e5: POP 000023e6: CALLDATALOAD 000023e7: SWAP2 000023e8: SWAP1 000023e9: POP 000023ea: JUMP 000023eb: JUMPDEST 000023ec: PUSH1 0x00 000023ee: DUP1 000023ef: PUSH1 0x40 000023f1: DUP4 000023f2: DUP6 000023f3: SUB 000023f4: SLT 000023f5: ISZERO 000023f6: PUSH2 0x23fe 000023f9: JUMPI 000023fa: PUSH1 0x00 000023fc: DUP1 000023fd: REVERT 000023fe: JUMPDEST 000023ff: PUSH2 0x2407 00002402: DUP4 00002403: PUSH2 0x2310 00002406: JUMP 00002407: JUMPDEST 00002408: SWAP5 00002409: PUSH1 0x20 0000240b: SWAP4 0000240c: SWAP1 0000240d: SWAP4 0000240e: ADD 0000240f: CALLDATALOAD 00002410: SWAP4 00002411: POP 00002412: POP 00002413: POP 00002414: JUMP 00002415: JUMPDEST 00002416: PUSH1 0x00 00002418: DUP1 00002419: PUSH1 0x00 0000241b: PUSH1 0x60 0000241d: DUP5 0000241e: DUP7 0000241f: SUB 00002420: SLT 00002421: ISZERO 00002422: PUSH2 0x242a 00002425: JUMPI 00002426: PUSH1 0x00 00002428: DUP1 00002429: REVERT 0000242a: JUMPDEST 0000242b: PUSH2 0x2433 0000242e: DUP5 0000242f: PUSH2 0x2310 00002432: JUMP 00002433: JUMPDEST 00002434: SWAP3 00002435: POP 00002436: PUSH2 0x2441 00002439: PUSH1 0x20 0000243b: DUP6 0000243c: ADD 0000243d: PUSH2 0x2310 00002440: JUMP 00002441: JUMPDEST 00002442: SWAP2 00002443: POP 00002444: PUSH1 0x40 00002446: DUP5 00002447: ADD 00002448: CALLDATALOAD 00002449: SWAP1 0000244a: POP 0000244b: SWAP3 0000244c: POP 0000244d: SWAP3 0000244e: POP 0000244f: SWAP3 00002450: JUMP 00002451: JUMPDEST 00002452: PUSH1 0x00 00002454: DUP1 00002455: PUSH1 0x40 00002457: DUP4 00002458: DUP6 00002459: SUB 0000245a: SLT 0000245b: ISZERO 0000245c: PUSH2 0x2464 0000245f: JUMPI 00002460: PUSH1 0x00 00002462: DUP1 00002463: REVERT 00002464: JUMPDEST 00002465: POP 00002466: POP 00002467: DUP1 00002468: CALLDATALOAD 00002469: SWAP3 0000246a: PUSH1 0x20 0000246c: SWAP1 0000246d: SWAP2 0000246e: ADD 0000246f: CALLDATALOAD 00002470: SWAP2 00002471: POP 00002472: JUMP 00002473: JUMPDEST 00002474: PUSH1 0x00 00002476: PUSH1 0x20 00002478: DUP3 00002479: DUP5 0000247a: SUB 0000247b: SLT 0000247c: ISZERO 0000247d: PUSH2 0x2485 00002480: JUMPI 00002481: PUSH1 0x00 00002483: DUP1 00002484: REVERT 00002485: JUMPDEST 00002486: PUSH2 0x1275 00002489: DUP3 0000248a: PUSH2 0x2310 0000248d: JUMP 0000248e: JUMPDEST 0000248f: PUSH1 0x00 00002491: DUP1 00002492: PUSH1 0x20 00002494: DUP4 00002495: DUP6 00002496: SUB 00002497: SLT 00002498: ISZERO 00002499: PUSH2 0x24a1 0000249c: JUMPI 0000249d: PUSH1 0x00 0000249f: DUP1 000024a0: REVERT 000024a1: JUMPDEST 000024a2: DUP3 000024a3: CALLDATALOAD 000024a4: PUSH1 0x01 000024a6: PUSH1 0x01 000024a8: PUSH1 0x40 000024aa: SHL 000024ab: SUB 000024ac: DUP1 000024ad: DUP3 000024ae: GT 000024af: ISZERO 000024b0: PUSH2 0x24b8 000024b3: JUMPI 000024b4: PUSH1 0x00 000024b6: DUP1 000024b7: REVERT 000024b8: JUMPDEST 000024b9: DUP2 000024ba: DUP6 000024bb: ADD 000024bc: SWAP2 000024bd: POP 000024be: DUP6 000024bf: PUSH1 0x1f 000024c1: DUP4 000024c2: ADD 000024c3: SLT 000024c4: PUSH2 0x24cc 000024c7: JUMPI 000024c8: PUSH1 0x00 000024ca: DUP1 000024cb: REVERT 000024cc: JUMPDEST 000024cd: DUP2 000024ce: CALLDATALOAD 000024cf: DUP2 000024d0: DUP2 000024d1: GT 000024d2: ISZERO 000024d3: PUSH2 0x24db 000024d6: JUMPI 000024d7: PUSH1 0x00 000024d9: DUP1 000024da: REVERT 000024db: JUMPDEST 000024dc: DUP7 000024dd: PUSH1 0x20 000024df: DUP3 000024e0: DUP6 000024e1: ADD 000024e2: ADD 000024e3: GT 000024e4: ISZERO 000024e5: PUSH2 0x24ed 000024e8: JUMPI 000024e9: PUSH1 0x00 000024eb: DUP1 000024ec: REVERT 000024ed: JUMPDEST 000024ee: PUSH1 0x20 000024f0: SWAP3 000024f1: SWAP1 000024f2: SWAP3 000024f3: ADD 000024f4: SWAP7 000024f5: SWAP2 000024f6: SWAP6 000024f7: POP 000024f8: SWAP1 000024f9: SWAP4 000024fa: POP 000024fb: POP 000024fc: POP 000024fd: POP 000024fe: JUMP 000024ff: JUMPDEST 00002500: PUSH1 0x00 00002502: DUP1 00002503: PUSH1 0x20 00002505: DUP4 00002506: DUP6 00002507: SUB 00002508: SLT 00002509: ISZERO 0000250a: PUSH2 0x2512 0000250d: JUMPI 0000250e: PUSH1 0x00 00002510: DUP1 00002511: REVERT 00002512: JUMPDEST 00002513: DUP3 00002514: CALLDATALOAD 00002515: PUSH1 0x01 00002517: PUSH1 0x01 00002519: PUSH1 0x40 0000251b: SHL 0000251c: SUB 0000251d: DUP1 0000251e: DUP3 0000251f: GT 00002520: ISZERO 00002521: PUSH2 0x2529 00002524: JUMPI 00002525: PUSH1 0x00 00002527: DUP1 00002528: REVERT 00002529: JUMPDEST 0000252a: DUP2 0000252b: DUP6 0000252c: ADD 0000252d: SWAP2 0000252e: POP 0000252f: DUP6 00002530: PUSH1 0x1f 00002532: DUP4 00002533: ADD 00002534: SLT 00002535: PUSH2 0x253d 00002538: JUMPI 00002539: PUSH1 0x00 0000253b: DUP1 0000253c: REVERT 0000253d: JUMPDEST 0000253e: DUP2 0000253f: CALLDATALOAD 00002540: DUP2 00002541: DUP2 00002542: GT 00002543: ISZERO 00002544: PUSH2 0x254c 00002547: JUMPI 00002548: PUSH1 0x00 0000254a: DUP1 0000254b: REVERT 0000254c: JUMPDEST 0000254d: DUP7 0000254e: PUSH1 0x20 00002550: DUP3 00002551: PUSH1 0x05 00002553: SHL 00002554: DUP6 00002555: ADD 00002556: ADD 00002557: GT 00002558: ISZERO 00002559: PUSH2 0x24ed 0000255c: JUMPI 0000255d: PUSH1 0x00 0000255f: DUP1 00002560: REVERT 00002561: JUMPDEST 00002562: PUSH1 0x20 00002564: DUP1 00002565: DUP3 00002566: MSTORE 00002567: DUP3 00002568: MLOAD 00002569: DUP3 0000256a: DUP3 0000256b: ADD 0000256c: DUP2 0000256d: SWAP1 0000256e: MSTORE 0000256f: PUSH1 0x00 00002571: SWAP2 00002572: SWAP1 00002573: DUP5 00002574: DUP3 00002575: ADD 00002576: SWAP1 00002577: PUSH1 0x40 00002579: DUP6 0000257a: ADD 0000257b: SWAP1 0000257c: DUP5 0000257d: JUMPDEST 0000257e: DUP2 0000257f: DUP2 00002580: LT 00002581: ISZERO 00002582: PUSH2 0x104d 00002585: JUMPI 00002586: PUSH2 0x25b8 00002589: DUP4 0000258a: DUP6 0000258b: MLOAD 0000258c: DUP1 0000258d: MLOAD 0000258e: PUSH1 0x01 00002590: PUSH1 0x01 00002592: PUSH1 0xa0 00002594: SHL 00002595: SUB 00002596: AND 00002597: DUP3 00002598: MSTORE 00002599: PUSH1 0x20 0000259b: DUP1 0000259c: DUP3 0000259d: ADD 0000259e: MLOAD 0000259f: ISZERO 000025a0: ISZERO 000025a1: SWAP1 000025a2: DUP4 000025a3: ADD 000025a4: MSTORE 000025a5: PUSH1 0x40 000025a7: SWAP1 000025a8: DUP2 000025a9: ADD 000025aa: MLOAD 000025ab: PUSH1 0x01 000025ad: PUSH1 0x01 000025af: PUSH1 0x40 000025b1: SHL 000025b2: SUB 000025b3: AND 000025b4: SWAP2 000025b5: ADD 000025b6: MSTORE 000025b7: JUMP 000025b8: JUMPDEST 000025b9: SWAP3 000025ba: DUP5 000025bb: ADD 000025bc: SWAP3 000025bd: PUSH1 0x60 000025bf: SWAP3 000025c0: SWAP1 000025c1: SWAP3 000025c2: ADD 000025c3: SWAP2 000025c4: PUSH1 0x01 000025c6: ADD 000025c7: PUSH2 0x257d 000025ca: JUMP 000025cb: JUMPDEST 000025cc: PUSH1 0x20 000025ce: DUP1 000025cf: DUP3 000025d0: MSTORE 000025d1: DUP3 000025d2: MLOAD 000025d3: DUP3 000025d4: DUP3 000025d5: ADD 000025d6: DUP2 000025d7: SWAP1 000025d8: MSTORE 000025d9: PUSH1 0x00 000025db: SWAP2 000025dc: SWAP1 000025dd: DUP5 000025de: DUP3 000025df: ADD 000025e0: SWAP1 000025e1: PUSH1 0x40 000025e3: DUP6 000025e4: ADD 000025e5: SWAP1 000025e6: DUP5 000025e7: JUMPDEST 000025e8: DUP2 000025e9: DUP2 000025ea: LT 000025eb: ISZERO 000025ec: PUSH2 0x104d 000025ef: JUMPI 000025f0: DUP4 000025f1: MLOAD 000025f2: DUP4 000025f3: MSTORE 000025f4: SWAP3 000025f5: DUP5 000025f6: ADD 000025f7: SWAP3 000025f8: SWAP2 000025f9: DUP5 000025fa: ADD 000025fb: SWAP2 000025fc: PUSH1 0x01 000025fe: ADD 000025ff: PUSH2 0x25e7 00002602: JUMP 00002603: JUMPDEST 00002604: PUSH1 0x00 00002606: DUP1 00002607: PUSH1 0x00 00002609: PUSH1 0x60 0000260b: DUP5 0000260c: DUP7 0000260d: SUB 0000260e: SLT 0000260f: ISZERO 00002610: PUSH2 0x2618 00002613: JUMPI 00002614: PUSH1 0x00 00002616: DUP1 00002617: REVERT 00002618: JUMPDEST 00002619: PUSH2 0x2621 0000261c: DUP5 0000261d: PUSH2 0x2310 00002620: JUMP 00002621: JUMPDEST 00002622: SWAP6 00002623: PUSH1 0x20 00002625: DUP6 00002626: ADD 00002627: CALLDATALOAD 00002628: SWAP6 00002629: POP 0000262a: PUSH1 0x40 0000262c: SWAP1 0000262d: SWAP5 0000262e: ADD 0000262f: CALLDATALOAD 00002630: SWAP4 00002631: SWAP3 00002632: POP 00002633: POP 00002634: POP 00002635: JUMP 00002636: JUMPDEST 00002637: DUP1 00002638: CALLDATALOAD 00002639: DUP1 0000263a: ISZERO 0000263b: ISZERO 0000263c: DUP2 0000263d: EQ 0000263e: PUSH2 0x2327 00002641: JUMPI 00002642: PUSH1 0x00 00002644: DUP1 00002645: REVERT 00002646: JUMPDEST 00002647: PUSH1 0x00 00002649: DUP1 0000264a: PUSH1 0x40 0000264c: DUP4 0000264d: DUP6 0000264e: SUB 0000264f: SLT 00002650: ISZERO 00002651: PUSH2 0x2659 00002654: JUMPI 00002655: PUSH1 0x00 00002657: DUP1 00002658: REVERT 00002659: JUMPDEST 0000265a: PUSH2 0x2662 0000265d: DUP4 0000265e: PUSH2 0x2310 00002661: JUMP 00002662: JUMPDEST 00002663: SWAP2 00002664: POP 00002665: PUSH2 0x2670 00002668: PUSH1 0x20 0000266a: DUP5 0000266b: ADD 0000266c: PUSH2 0x2636 0000266f: JUMP 00002670: JUMPDEST 00002671: SWAP1 00002672: POP 00002673: SWAP3 00002674: POP 00002675: SWAP3 00002676: SWAP1 00002677: POP 00002678: JUMP 00002679: JUMPDEST 0000267a: PUSH1 0x00 0000267c: PUSH1 0x20 0000267e: DUP3 0000267f: DUP5 00002680: SUB 00002681: SLT 00002682: ISZERO 00002683: PUSH2 0x268b 00002686: JUMPI 00002687: PUSH1 0x00 00002689: DUP1 0000268a: REVERT 0000268b: JUMPDEST 0000268c: PUSH2 0x1275 0000268f: DUP3 00002690: PUSH2 0x2636 00002693: JUMP 00002694: JUMPDEST 00002695: PUSH4 0x4e487b71 0000269a: PUSH1 0xe0 0000269c: SHL 0000269d: PUSH1 0x00 0000269f: MSTORE 000026a0: PUSH1 0x41 000026a2: PUSH1 0x04 000026a4: MSTORE 000026a5: PUSH1 0x24 000026a7: PUSH1 0x00 000026a9: REVERT 000026aa: JUMPDEST 000026ab: PUSH1 0x40 000026ad: MLOAD 000026ae: PUSH1 0x1f 000026b0: DUP3 000026b1: ADD 000026b2: PUSH1 0x1f 000026b4: NOT 000026b5: AND 000026b6: DUP2 000026b7: ADD 000026b8: PUSH1 0x01 000026ba: PUSH1 0x01 000026bc: PUSH1 0x40 000026be: SHL 000026bf: SUB 000026c0: DUP2 000026c1: GT 000026c2: DUP3 000026c3: DUP3 000026c4: LT 000026c5: OR 000026c6: ISZERO 000026c7: PUSH2 0x26d2 000026ca: JUMPI 000026cb: PUSH2 0x26d2 000026ce: PUSH2 0x2694 000026d1: JUMP 000026d2: JUMPDEST 000026d3: PUSH1 0x40 000026d5: MSTORE 000026d6: SWAP2 000026d7: SWAP1 000026d8: POP 000026d9: JUMP 000026da: JUMPDEST 000026db: PUSH1 0x00 000026dd: PUSH1 0x01 000026df: PUSH1 0x01 000026e1: PUSH1 0x40 000026e3: SHL 000026e4: SUB 000026e5: DUP3 000026e6: GT 000026e7: ISZERO 000026e8: PUSH2 0x26f3 000026eb: JUMPI 000026ec: PUSH2 0x26f3 000026ef: PUSH2 0x2694 000026f2: JUMP 000026f3: JUMPDEST 000026f4: POP 000026f5: PUSH1 0x1f 000026f7: ADD 000026f8: PUSH1 0x1f 000026fa: NOT 000026fb: AND 000026fc: PUSH1 0x20 000026fe: ADD 000026ff: SWAP1 00002700: JUMP 00002701: JUMPDEST 00002702: PUSH1 0x00 00002704: DUP1 00002705: PUSH1 0x00 00002707: DUP1 00002708: PUSH1 0x80 0000270a: DUP6 0000270b: DUP8 0000270c: SUB 0000270d: SLT 0000270e: ISZERO 0000270f: PUSH2 0x2717 00002712: JUMPI 00002713: PUSH1 0x00 00002715: DUP1 00002716: REVERT 00002717: JUMPDEST 00002718: PUSH2 0x2720 0000271b: DUP6 0000271c: PUSH2 0x2310 0000271f: JUMP 00002720: JUMPDEST 00002721: SWAP4 00002722: POP 00002723: PUSH2 0x272e 00002726: PUSH1 0x20 00002728: DUP7 00002729: ADD 0000272a: PUSH2 0x2310 0000272d: JUMP 0000272e: JUMPDEST 0000272f: SWAP3 00002730: POP 00002731: PUSH1 0x40 00002733: DUP6 00002734: ADD 00002735: CALLDATALOAD 00002736: SWAP2 00002737: POP 00002738: PUSH1 0x60 0000273a: DUP6 0000273b: ADD 0000273c: CALLDATALOAD 0000273d: PUSH1 0x01 0000273f: PUSH1 0x01 00002741: PUSH1 0x40 00002743: SHL 00002744: SUB 00002745: DUP2 00002746: GT 00002747: ISZERO 00002748: PUSH2 0x2750 0000274b: JUMPI 0000274c: PUSH1 0x00 0000274e: DUP1 0000274f: REVERT 00002750: JUMPDEST 00002751: DUP6 00002752: ADD 00002753: PUSH1 0x1f 00002755: DUP2 00002756: ADD 00002757: DUP8 00002758: SGT 00002759: PUSH2 0x2761 0000275c: JUMPI 0000275d: PUSH1 0x00 0000275f: DUP1 00002760: REVERT 00002761: JUMPDEST 00002762: DUP1 00002763: CALLDATALOAD 00002764: PUSH2 0x2774 00002767: PUSH2 0x276f 0000276a: DUP3 0000276b: PUSH2 0x26da 0000276e: JUMP 0000276f: JUMPDEST 00002770: PUSH2 0x26aa 00002773: JUMP 00002774: JUMPDEST 00002775: DUP2 00002776: DUP2 00002777: MSTORE 00002778: DUP9 00002779: PUSH1 0x20 0000277b: DUP4 0000277c: DUP6 0000277d: ADD 0000277e: ADD 0000277f: GT 00002780: ISZERO 00002781: PUSH2 0x2789 00002784: JUMPI 00002785: PUSH1 0x00 00002787: DUP1 00002788: REVERT 00002789: JUMPDEST 0000278a: DUP2 0000278b: PUSH1 0x20 0000278d: DUP5 0000278e: ADD 0000278f: PUSH1 0x20 00002791: DUP4 00002792: ADD 00002793: CALLDATACOPY 00002794: PUSH1 0x00 00002796: PUSH1 0x20 00002798: DUP4 00002799: DUP4 0000279a: ADD 0000279b: ADD 0000279c: MSTORE 0000279d: DUP1 0000279e: SWAP4 0000279f: POP 000027a0: POP 000027a1: POP 000027a2: POP 000027a3: SWAP3 000027a4: SWAP6 000027a5: SWAP2 000027a6: SWAP5 000027a7: POP 000027a8: SWAP3 000027a9: POP 000027aa: JUMP 000027ab: JUMPDEST 000027ac: DUP2 000027ad: MLOAD 000027ae: PUSH1 0x01 000027b0: PUSH1 0x01 000027b2: PUSH1 0xa0 000027b4: SHL 000027b5: SUB 000027b6: AND 000027b7: DUP2 000027b8: MSTORE 000027b9: PUSH1 0x20 000027bb: DUP1 000027bc: DUP4 000027bd: ADD 000027be: MLOAD 000027bf: ISZERO 000027c0: ISZERO 000027c1: SWAP1 000027c2: DUP3 000027c3: ADD 000027c4: MSTORE 000027c5: PUSH1 0x40 000027c7: DUP1 000027c8: DUP4 000027c9: ADD 000027ca: MLOAD 000027cb: PUSH1 0x01 000027cd: PUSH1 0x01 000027cf: PUSH1 0x40 000027d1: SHL 000027d2: SUB 000027d3: AND 000027d4: SWAP1 000027d5: DUP3 000027d6: ADD 000027d7: MSTORE 000027d8: PUSH1 0x60 000027da: DUP2 000027db: ADD 000027dc: PUSH2 0x08c1 000027df: JUMP 000027e0: JUMPDEST 000027e1: PUSH1 0x00 000027e3: DUP1 000027e4: PUSH1 0x40 000027e6: DUP4 000027e7: DUP6 000027e8: SUB 000027e9: SLT 000027ea: ISZERO 000027eb: PUSH2 0x27f3 000027ee: JUMPI 000027ef: PUSH1 0x00 000027f1: DUP1 000027f2: REVERT 000027f3: JUMPDEST 000027f4: PUSH2 0x27fc 000027f7: DUP4 000027f8: PUSH2 0x2310 000027fb: JUMP 000027fc: JUMPDEST 000027fd: SWAP2 000027fe: POP 000027ff: PUSH2 0x2670 00002802: PUSH1 0x20 00002804: DUP5 00002805: ADD 00002806: PUSH2 0x2310 00002809: JUMP 0000280a: JUMPDEST 0000280b: PUSH1 0x01 0000280d: DUP2 0000280e: DUP2 0000280f: SHR 00002810: SWAP1 00002811: DUP3 00002812: AND 00002813: DUP1 00002814: PUSH2 0x281e 00002817: JUMPI 00002818: PUSH1 0x7f 0000281a: DUP3 0000281b: AND 0000281c: SWAP2 0000281d: POP 0000281e: JUMPDEST 0000281f: PUSH1 0x20 00002821: DUP3 00002822: LT 00002823: DUP2 00002824: SUB 00002825: PUSH2 0x1adb 00002828: JUMPI 00002829: PUSH4 0x4e487b71 0000282e: PUSH1 0xe0 00002830: SHL 00002831: PUSH1 0x00 00002833: MSTORE 00002834: PUSH1 0x22 00002836: PUSH1 0x04 00002838: MSTORE 00002839: PUSH1 0x24 0000283b: PUSH1 0x00 0000283d: REVERT 0000283e: JUMPDEST 0000283f: PUSH4 0x4e487b71 00002844: PUSH1 0xe0 00002846: SHL 00002847: PUSH1 0x00 00002849: MSTORE 0000284a: PUSH1 0x11 0000284c: PUSH1 0x04 0000284e: MSTORE 0000284f: PUSH1 0x24 00002851: PUSH1 0x00 00002853: REVERT 00002854: JUMPDEST 00002855: DUP1 00002856: DUP3 00002857: ADD 00002858: DUP1 00002859: DUP3 0000285a: GT 0000285b: ISZERO 0000285c: PUSH2 0x08c1 0000285f: JUMPI 00002860: PUSH2 0x08c1 00002863: PUSH2 0x283e 00002866: JUMP 00002867: JUMPDEST 00002868: DUP1 00002869: DUP3 0000286a: MUL 0000286b: DUP2 0000286c: ISZERO 0000286d: DUP3 0000286e: DUP3 0000286f: DIV 00002870: DUP5 00002871: EQ 00002872: OR 00002873: PUSH2 0x08c1 00002876: JUMPI 00002877: PUSH2 0x08c1 0000287a: PUSH2 0x283e 0000287d: JUMP 0000287e: JUMPDEST 0000287f: PUSH1 0x00 00002881: DUP3 00002882: PUSH2 0x289b 00002885: JUMPI 00002886: PUSH4 0x4e487b71 0000288b: PUSH1 0xe0 0000288d: SHL 0000288e: PUSH1 0x00 00002890: MSTORE 00002891: PUSH1 0x12 00002893: PUSH1 0x04 00002895: MSTORE 00002896: PUSH1 0x24 00002898: PUSH1 0x00 0000289a: REVERT 0000289b: JUMPDEST 0000289c: POP 0000289d: DIV 0000289e: SWAP1 0000289f: JUMP 000028a0: JUMPDEST 000028a1: PUSH1 0x00 000028a3: PUSH1 0x20 000028a5: DUP1 000028a6: DUP4 000028a7: MSTORE 000028a8: PUSH1 0x00 000028aa: DUP5 000028ab: SLOAD 000028ac: PUSH2 0x28b4 000028af: DUP2 000028b0: PUSH2 0x280a 000028b3: JUMP 000028b4: JUMPDEST 000028b5: DUP1 000028b6: DUP5 000028b7: DUP8 000028b8: ADD 000028b9: MSTORE 000028ba: PUSH1 0x40 000028bc: PUSH1 0x01 000028be: DUP1 000028bf: DUP5 000028c0: AND 000028c1: PUSH1 0x00 000028c3: DUP2 000028c4: EQ 000028c5: PUSH2 0x28d5 000028c8: JUMPI 000028c9: PUSH1 0x01 000028cb: DUP2 000028cc: EQ 000028cd: PUSH2 0x28ef 000028d0: JUMPI 000028d1: PUSH2 0x291d 000028d4: JUMP 000028d5: JUMPDEST 000028d6: PUSH1 0xff 000028d8: NOT 000028d9: DUP6 000028da: AND 000028db: DUP10 000028dc: DUP5 000028dd: ADD 000028de: MSTORE 000028df: DUP4 000028e0: ISZERO 000028e1: ISZERO 000028e2: PUSH1 0x05 000028e4: SHL 000028e5: DUP10 000028e6: ADD 000028e7: DUP4 000028e8: ADD 000028e9: SWAP6 000028ea: POP 000028eb: PUSH2 0x291d 000028ee: JUMP 000028ef: JUMPDEST 000028f0: DUP10 000028f1: PUSH1 0x00 000028f3: MSTORE 000028f4: DUP7 000028f5: PUSH1 0x00 000028f7: KECCAK256 000028f8: PUSH1 0x00 000028fa: JUMPDEST 000028fb: DUP6 000028fc: DUP2 000028fd: LT 000028fe: ISZERO 000028ff: PUSH2 0x2915 00002902: JUMPI 00002903: DUP2 00002904: SLOAD 00002905: DUP12 00002906: DUP3 00002907: ADD 00002908: DUP7 00002909: ADD 0000290a: MSTORE 0000290b: SWAP1 0000290c: DUP4 0000290d: ADD 0000290e: SWAP1 0000290f: DUP9 00002910: ADD 00002911: PUSH2 0x28fa 00002914: JUMP 00002915: JUMPDEST 00002916: DUP11 00002917: ADD 00002918: DUP5 00002919: ADD 0000291a: SWAP7 0000291b: POP 0000291c: POP 0000291d: JUMPDEST 0000291e: POP 0000291f: SWAP4 00002920: SWAP9 00002921: SWAP8 00002922: POP 00002923: POP 00002924: POP 00002925: POP 00002926: POP 00002927: POP 00002928: POP 00002929: POP 0000292a: JUMP 0000292b: JUMPDEST 0000292c: PUSH1 0x00 0000292e: PUSH1 0x20 00002930: DUP3 00002931: DUP5 00002932: SUB 00002933: SLT 00002934: ISZERO 00002935: PUSH2 0x293d 00002938: JUMPI 00002939: PUSH1 0x00 0000293b: DUP1 0000293c: REVERT 0000293d: JUMPDEST 0000293e: DUP2 0000293f: MLOAD 00002940: PUSH1 0x01 00002942: PUSH1 0x01 00002944: PUSH1 0x40 00002946: SHL 00002947: SUB 00002948: DUP2 00002949: GT 0000294a: ISZERO 0000294b: PUSH2 0x2953 0000294e: JUMPI 0000294f: PUSH1 0x00 00002951: DUP1 00002952: REVERT 00002953: JUMPDEST 00002954: DUP3 00002955: ADD 00002956: PUSH1 0x1f 00002958: DUP2 00002959: ADD 0000295a: DUP5 0000295b: SGT 0000295c: PUSH2 0x2964 0000295f: JUMPI 00002960: PUSH1 0x00 00002962: DUP1 00002963: REVERT 00002964: JUMPDEST 00002965: DUP1 00002966: MLOAD 00002967: PUSH2 0x2972 0000296a: PUSH2 0x276f 0000296d: DUP3 0000296e: PUSH2 0x26da 00002971: JUMP 00002972: JUMPDEST 00002973: DUP2 00002974: DUP2 00002975: MSTORE 00002976: DUP6 00002977: PUSH1 0x20 00002979: DUP4 0000297a: DUP6 0000297b: ADD 0000297c: ADD 0000297d: GT 0000297e: ISZERO 0000297f: PUSH2 0x2987 00002982: JUMPI 00002983: PUSH1 0x00 00002985: DUP1 00002986: REVERT 00002987: JUMPDEST 00002988: PUSH2 0x2998 0000298b: DUP3 0000298c: PUSH1 0x20 0000298e: DUP4 0000298f: ADD 00002990: PUSH1 0x20 00002992: DUP7 00002993: ADD 00002994: PUSH2 0x236f 00002997: JUMP 00002998: JUMPDEST 00002999: SWAP6 0000299a: SWAP5 0000299b: POP 0000299c: POP 0000299d: POP 0000299e: POP 0000299f: POP 000029a0: JUMP 000029a1: JUMPDEST 000029a2: PUSH1 0x1f 000029a4: DUP3 000029a5: GT 000029a6: ISZERO 000029a7: PUSH2 0x09f6 000029aa: JUMPI 000029ab: PUSH1 0x00 000029ad: DUP2 000029ae: DUP2 000029af: MSTORE 000029b0: PUSH1 0x20 000029b2: DUP2 000029b3: KECCAK256 000029b4: PUSH1 0x1f 000029b6: DUP6 000029b7: ADD 000029b8: PUSH1 0x05 000029ba: SHR 000029bb: DUP2 000029bc: ADD 000029bd: PUSH1 0x20 000029bf: DUP7 000029c0: LT 000029c1: ISZERO 000029c2: PUSH2 0x29c8 000029c5: JUMPI 000029c6: POP 000029c7: DUP1 000029c8: JUMPDEST 000029c9: PUSH1 0x1f 000029cb: DUP6 000029cc: ADD 000029cd: PUSH1 0x05 000029cf: SHR 000029d0: DUP3 000029d1: ADD 000029d2: SWAP2 000029d3: POP 000029d4: JUMPDEST 000029d5: DUP2 000029d6: DUP2 000029d7: LT 000029d8: ISZERO 000029d9: PUSH2 0x1d16 000029dc: JUMPI 000029dd: DUP3 000029de: DUP2 000029df: SSTORE 000029e0: PUSH1 0x01 000029e2: ADD 000029e3: PUSH2 0x29d4 000029e6: JUMP 000029e7: JUMPDEST 000029e8: PUSH1 0x01 000029ea: PUSH1 0x01 000029ec: PUSH1 0x40 000029ee: SHL 000029ef: SUB 000029f0: DUP4 000029f1: GT 000029f2: ISZERO 000029f3: PUSH2 0x29fe 000029f6: JUMPI 000029f7: PUSH2 0x29fe 000029fa: PUSH2 0x2694 000029fd: JUMP 000029fe: JUMPDEST 000029ff: PUSH2 0x2a12 00002a02: DUP4 00002a03: PUSH2 0x2a0c 00002a06: DUP4 00002a07: SLOAD 00002a08: PUSH2 0x280a 00002a0b: JUMP 00002a0c: JUMPDEST 00002a0d: DUP4 00002a0e: PUSH2 0x29a1 00002a11: JUMP 00002a12: JUMPDEST 00002a13: PUSH1 0x00 00002a15: PUSH1 0x1f 00002a17: DUP5 00002a18: GT 00002a19: PUSH1 0x01 00002a1b: DUP2 00002a1c: EQ 00002a1d: PUSH2 0x2a46 00002a20: JUMPI 00002a21: PUSH1 0x00 00002a23: DUP6 00002a24: ISZERO 00002a25: PUSH2 0x2a2e 00002a28: JUMPI 00002a29: POP 00002a2a: DUP4 00002a2b: DUP3 00002a2c: ADD 00002a2d: CALLDATALOAD 00002a2e: JUMPDEST 00002a2f: PUSH1 0x00 00002a31: NOT 00002a32: PUSH1 0x03 00002a34: DUP8 00002a35: SWAP1 00002a36: SHL 00002a37: SHR 00002a38: NOT 00002a39: AND 00002a3a: PUSH1 0x01 00002a3c: DUP7 00002a3d: SWAP1 00002a3e: SHL 00002a3f: OR 00002a40: DUP4 00002a41: SSTORE 00002a42: PUSH2 0x2aa0 00002a45: JUMP 00002a46: JUMPDEST 00002a47: PUSH1 0x00 00002a49: DUP4 00002a4a: DUP2 00002a4b: MSTORE 00002a4c: PUSH1 0x20 00002a4e: SWAP1 00002a4f: KECCAK256 00002a50: PUSH1 0x1f 00002a52: NOT 00002a53: DUP7 00002a54: AND 00002a55: SWAP1 00002a56: DUP4 00002a57: JUMPDEST 00002a58: DUP3 00002a59: DUP2 00002a5a: LT 00002a5b: ISZERO 00002a5c: PUSH2 0x2a77 00002a5f: JUMPI 00002a60: DUP7 00002a61: DUP6 00002a62: ADD 00002a63: CALLDATALOAD 00002a64: DUP3 00002a65: SSTORE 00002a66: PUSH1 0x20 00002a68: SWAP5 00002a69: DUP6 00002a6a: ADD 00002a6b: SWAP5 00002a6c: PUSH1 0x01 00002a6e: SWAP1 00002a6f: SWAP3 00002a70: ADD 00002a71: SWAP2 00002a72: ADD 00002a73: PUSH2 0x2a57 00002a76: JUMP 00002a77: JUMPDEST 00002a78: POP 00002a79: DUP7 00002a7a: DUP3 00002a7b: LT 00002a7c: ISZERO 00002a7d: PUSH2 0x2a94 00002a80: JUMPI 00002a81: PUSH1 0x00 00002a83: NOT 00002a84: PUSH1 0xf8 00002a86: DUP9 00002a87: PUSH1 0x03 00002a89: SHL 00002a8a: AND 00002a8b: SHR 00002a8c: NOT 00002a8d: DUP5 00002a8e: DUP8 00002a8f: ADD 00002a90: CALLDATALOAD 00002a91: AND 00002a92: DUP2 00002a93: SSTORE 00002a94: JUMPDEST 00002a95: POP 00002a96: POP 00002a97: PUSH1 0x01 00002a99: DUP6 00002a9a: PUSH1 0x01 00002a9c: SHL 00002a9d: ADD 00002a9e: DUP4 00002a9f: SSTORE 00002aa0: JUMPDEST 00002aa1: POP 00002aa2: POP 00002aa3: POP 00002aa4: POP 00002aa5: POP 00002aa6: JUMP 00002aa7: JUMPDEST 00002aa8: PUSH4 0x4e487b71 00002aad: PUSH1 0xe0 00002aaf: SHL 00002ab0: PUSH1 0x00 00002ab2: MSTORE 00002ab3: PUSH1 0x32 00002ab5: PUSH1 0x04 00002ab7: MSTORE 00002ab8: PUSH1 0x24 00002aba: PUSH1 0x00 00002abc: REVERT 00002abd: JUMPDEST 00002abe: DUP2 00002abf: DUP2 00002ac0: SUB 00002ac1: DUP2 00002ac2: DUP2 00002ac3: GT 00002ac4: ISZERO 00002ac5: PUSH2 0x08c1 00002ac8: JUMPI 00002ac9: PUSH2 0x08c1 00002acc: PUSH2 0x283e 00002acf: JUMP 00002ad0: JUMPDEST 00002ad1: PUSH1 0x00 00002ad3: DUP4 00002ad4: MLOAD 00002ad5: PUSH2 0x2ae2 00002ad8: DUP2 00002ad9: DUP5 00002ada: PUSH1 0x20 00002adc: DUP9 00002add: ADD 00002ade: PUSH2 0x236f 00002ae1: JUMP 00002ae2: JUMPDEST 00002ae3: DUP4 00002ae4: MLOAD 00002ae5: SWAP1 00002ae6: DUP4 00002ae7: ADD 00002ae8: SWAP1 00002ae9: PUSH2 0x2af6 00002aec: DUP2 00002aed: DUP4 00002aee: PUSH1 0x20 00002af0: DUP9 00002af1: ADD 00002af2: PUSH2 0x236f 00002af5: JUMP 00002af6: JUMPDEST 00002af7: ADD 00002af8: SWAP5 00002af9: SWAP4 00002afa: POP 00002afb: POP 00002afc: POP 00002afd: POP 00002afe: JUMP 00002aff: JUMPDEST 00002b00: PUSH1 0x01 00002b02: PUSH1 0x01 00002b04: PUSH1 0xa0 00002b06: SHL 00002b07: SUB 00002b08: DUP6 00002b09: DUP2 00002b0a: AND 00002b0b: DUP3 00002b0c: MSTORE 00002b0d: DUP5 00002b0e: AND 00002b0f: PUSH1 0x20 00002b11: DUP3 00002b12: ADD 00002b13: MSTORE 00002b14: PUSH1 0x40 00002b16: DUP2 00002b17: ADD 00002b18: DUP4 00002b19: SWAP1 00002b1a: MSTORE 00002b1b: PUSH1 0x80 00002b1d: PUSH1 0x60 00002b1f: DUP3 00002b20: ADD 00002b21: DUP2 00002b22: SWAP1 00002b23: MSTORE 00002b24: PUSH1 0x00 00002b26: SWAP1 00002b27: PUSH2 0x2b32 00002b2a: SWAP1 00002b2b: DUP4 00002b2c: ADD 00002b2d: DUP5 00002b2e: PUSH2 0x2393 00002b31: JUMP 00002b32: JUMPDEST 00002b33: SWAP7 00002b34: SWAP6 00002b35: POP 00002b36: POP 00002b37: POP 00002b38: POP 00002b39: POP 00002b3a: POP 00002b3b: JUMP 00002b3c: JUMPDEST 00002b3d: PUSH1 0x00 00002b3f: PUSH1 0x20 00002b41: DUP3 00002b42: DUP5 00002b43: SUB 00002b44: SLT 00002b45: ISZERO 00002b46: PUSH2 0x2b4e 00002b49: JUMPI 00002b4a: PUSH1 0x00 00002b4c: DUP1 00002b4d: REVERT 00002b4e: JUMPDEST 00002b4f: DUP2 00002b50: MLOAD 00002b51: PUSH2 0x1275 00002b54: DUP2 00002b55: PUSH2 0x22dd 00002b58: JUMP 00002b59: INVALID 00002b5a: UNKNOWN(0xDD) 00002b5b: CALLCODE 00002b5c: MSTORE 00002b5d: UNKNOWN(0xAD) 00002b5e: SHL 00002b5f: UNKNOWN(0xE2) 00002b60: UNKNOWN(0xC8) 00002b61: SWAP12 00002b62: PUSH10 0xc2b068fc378daa952ba7 00002b6d: CALL 00002b6e: PUSH4 0xc4a11628 00002b73: CREATE2 00002b74: GAS 00002b75: UNKNOWN(0x4D) 00002b76: CREATE2 00002b77: UNKNOWN(0x23) 00002b78: UNKNOWN(0xB3) 00002b79: UNKNOWN(0xEF) 00002b7a: LOG2 00002b7b: PUSH5 0x6970667358 00002b81: UNKNOWN(0x22) 00002b82: SLT 00002b83: KECCAK256 00002b84: CODECOPY 00002b85: UNKNOWN(0xBD) 00002b86: UNKNOWN(0x4C) 00002b87: UNKNOWN(0x2A) 00002b88: UNKNOWN(0xBC) 00002b89: PUSH6 0xe9caefc6faab 00002b90: LOG2 00002b91: JUMPI 00002b92: DIV 00002b93: PUSH7 0x698f8fddf3dfee 00002b9b: UNKNOWN(0xB5) 00002b9c: MLOAD 00002b9d: UNKNOWN(0xDA) 00002b9e: AND 00002b9f: ADD 00002ba0: SHL 00002ba1: UNKNOWN(0xBE) 00002ba2: SWAP1 00002ba3: UNKNOWN(0x2A) 00002ba4: PUSH5 0x736f6c6343 00002baa: STOP 00002bab: ADDMOD 00002bac: ISZERO 00002bad: STOP 00002bae: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | slither | DragonCurve.refundFrom(address,uint256) (src/DragonCurve.sol#162-172) sends eth to arbitrary user | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "arbitrary-send-eth",
"elements": [
{
"name": "refundFrom",
"type": "function",
"source_mapping": {
"lines": [
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172
],
"start": 6123,
"length": 329,
"ending_column": 24,
"is_dependency": false,
"filename_short": "src/DragonCurve.sol",
"starting_column": 13,
"filename_absolute": "/tmp/slither-56kd38pa/src/DragonCurve.sol",
"filename_relative": "src/DragonCurve.sol"
},
"type_specific_fields": {
"parent": {
"name": "DragonCurve",
"type": "contract",
"source_mapping": {
"lines": [
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343
],
"start": 601,
"length": 11469,
"ending_column": 1,
"is_dependency": false,
"filename_short": "src/DragonCurve.sol",
"starting_column": 70,
"filename_absolute": "/tmp/slither-56kd38pa/src/DragonCurve.sol",
"filename_relative": "src/DragonCurve.sol"
}
},
"signature": "refundFrom(address,uint256)"
}
},
{
"name": "(success,None) = msg.sender.call{value: publicPrice}()",
"type": "node",
"source_mapping": {
"lines": [
168,
169
],
"start": 6266,
"length": 58,
"ending_column": 38,
"is_dependency": false,
"filename_short": "src/DragonCurve.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-56kd38pa/src/DragonCurve.sol",
"filename_relative": "src/DragonCurve.sol"
},
"type_specific_fields": {
"parent": {
"name": "refundFrom",
"type": "function",
"source_mapping": {
"lines": [
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172
],
"start": 6123,
"length": 329,
"ending_column": 24,
"is_dependency": false,
"filename_short": "src/DragonCurve.sol",
"starting_column": 13,
"filename_absolute": "/tmp/slither-56kd38pa/src/DragonCurve.sol",
"filename_relative": "src/DragonCurve.sol"
},
"type_specific_fields": {
"parent": {
"name": "DragonCurve",
"type": "contract",
"source_mapping": {
"lines": [
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343
],
"start": 601,
"length": 11469,
"ending_column": 1,
"is_dependency": false,
"filename_short": "src/DragonCurve.sol",
"starting_column": 70,
"filename_absolute": "/tmp/slither-56kd38pa/src/DragonCurve.sol",
"filename_relative": "src/DragonCurve.sol"
}
},
"signature": "refundFrom(address,uint256)"
}
}
}
}
],
"locations": [
{
"file": "src/DragonCurve.sol",
"name": "refundFrom",
"type": "function",
"lines": [
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172
]
},
{
"file": "src/DragonCurve.sol",
"name": "(success,None) = msg.sender.call{value: publicPrice}()",
"type": "node",
"lines": [
168,
169
]
}
],
"description": "DragonCurve.refundFrom(address,uint256) (src/DragonCurve.sol#162-172) sends eth to arbitrary user\n\tDangerous calls:\n\t- (success,None) = msg.sender.call{value: publicPrice}() (src/DragonCurve.sol#168-169)"
}
|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xc87b56dd",
"selector": "0xc87b56dd",
"calldata_variants": [
"0xc87b56dd",
"0xc87b56dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe985e9c5",
"selector": "0xe985e9c5",
"calldata_variants": [
"0xe985e9c5",
"0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf489e496",
"selector": "0xf489e496",
"calldata_variants": [
"0xf489e496",
"0xf489e4960000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfb796e6c",
"selector": "0xfb796e6c",
"calldata_variants": [
"0xfb796e6c",
"0xfb796e6c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc776f6d",
"selector": "0xfc776f6d",
"calldata_variants": [
"0xfc776f6d",
"0xfc776f6d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb55cd04b",
"selector": "0xb55cd04b",
"calldata_variants": [
"0xb55cd04b",
"0xb55cd04b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb7c0b8e8",
"selector": "0xb7c0b8e8",
"calldata_variants": [
"0xb7c0b8e8",
"0xb7c0b8e80000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 2918,
"type": "msg_sender_eq_const",
"value": 1.712761232392164e+47
},
{
"pc": 4832,
"type": "tx_origin_used"
},
{
"pc": 2890,
"type": "msg_sender_eq_const",
"value": "0x1e0049783f008a0085193e00003d00cd54003c71"
},
{
"pc": 4830,
"type": "tx_origin_used"
}
]
}
|
| high | other | slither | DragonCurve.refund(uint256) (src/DragonCurve.sol#156-161) sends eth to arbitrary user | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "arbitrary-send-eth",
"elements": [
{
"name": "refund",
"type": "function",
"source_mapping": {
"lines": [
156,
157,
158,
159,
160,
161
],
"start": 5760,
"length": 316,
"ending_column": 35,
"is_dependency": false,
"filename_short": "src/DragonCurve.sol",
"starting_column": 16,
"filename_absolute": "/tmp/slither-56kd38pa/src/DragonCurve.sol",
"filename_relative": "src/DragonCurve.sol"
},
"type_specific_fields": {
"parent": {
"name": "DragonCurve",
"type": "contract",
"source_mapping": {
"lines": [
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343
],
"start": 601,
"length": 11469,
"ending_column": 1,
"is_dependency": false,
"filename_short": "src/DragonCurve.sol",
"starting_column": 70,
"filename_absolute": "/tmp/slither-56kd38pa/src/DragonCurve.sol",
"filename_relative": "src/DragonCurve.sol"
}
},
"signature": "refund(uint256)"
}
},
{
"name": "(success,None) = msg.sender.call{value: publicPrice}()",
"type": "node",
"source_mapping": {
"lines": [
157,
158
],
"start": 5890,
"length": 58,
"ending_column": 36,
"is_dependency": false,
"filename_short": "src/DragonCurve.sol",
"starting_column": 27,
"filename_absolute": "/tmp/slither-56kd38pa/src/DragonCurve.sol",
"filename_relative": "src/DragonCurve.sol"
},
"type_specific_fields": {
"parent": {
"name": "refund",
"type": "function",
"source_mapping": {
"lines": [
156,
157,
158,
159,
160,
161
],
"start": 5760,
"length": 316,
"ending_column": 35,
"is_dependency": false,
"filename_short": "src/DragonCurve.sol",
"starting_column": 16,
"filename_absolute": "/tmp/slither-56kd38pa/src/DragonCurve.sol",
"filename_relative": "src/DragonCurve.sol"
},
"type_specific_fields": {
"parent": {
"name": "DragonCurve",
"type": "contract",
"source_mapping": {
"lines": [
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343
],
"start": 601,
"length": 11469,
"ending_column": 1,
"is_dependency": false,
"filename_short": "src/DragonCurve.sol",
"starting_column": 70,
"filename_absolute": "/tmp/slither-56kd38pa/src/DragonCurve.sol",
"filename_relative": "src/DragonCurve.sol"
}
},
"signature": "refund(uint256)"
}
}
}
}
],
"locations": [
{
"file": "src/DragonCurve.sol",
"name": "refund",
"type": "function",
"lines": [
156,
157,
158,
159,
160,
161
]
},
{
"file": "src/DragonCurve.sol",
"name": "(success,None) = msg.sender.call{value: publicPrice}()",
"type": "node",
"lines": [
157,
158
]
}
],
"description": "DragonCurve.refund(uint256) (src/DragonCurve.sol#156-161) sends eth to arbitrary user\n\tDangerous calls:\n\t- (success,None) = msg.sender.call{value: publicPrice}() (src/DragonCurve.sol#157-158)"
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0xb283fa5cf841128eeda6cbefebdef91a9322f5c7dabd9247be3d6198b185d931
call_targets:
0x000000000000c94ed90488d3ac687a2673c2b6fb
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xb283fa5cf841128eeda6cbefebdef91a9322f5c7dabd9247be3d6198b185d931",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x000000000000c94ed90488d3ac687a2673c2b6fb"
],
"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": "0xc87b56dd",
"selector": "0xc87b56dd",
"calldata_variants": [
"0xc87b56dd",
"0xc87b56dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe985e9c5",
"selector": "0xe985e9c5",
"calldata_variants": [
"0xe985e9c5",
"0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf489e496",
"selector": "0xf489e496",
"calldata_variants": [
"0xf489e496",
"0xf489e4960000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfb796e6c",
"selector": "0xfb796e6c",
"calldata_variants": [
"0xfb796e6c",
"0xfb796e6c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc776f6d",
"selector": "0xfc776f6d",
"calldata_variants": [
"0xfc776f6d",
"0xfc776f6d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb55cd04b",
"selector": "0xb55cd04b",
"calldata_variants": [
"0xb55cd04b",
"0xb55cd04b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb7c0b8e8",
"selector": "0xb7c0b8e8",
"calldata_variants": [
"0xb7c0b8e8",
"0xb7c0b8e80000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2996,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 5252,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 5492,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 7,
"guards_detected": [
{
"pc": 2918,
"type": "msg_sender_eq_const",
"value": 1.712761232392164e+47
},
{
"pc": 4832,
"type": "tx_origin_used"
},
{
"pc": 2890,
"type": "msg_sender_eq_const",
"value": "0x1e0049783f008a0085193e00003d00cd54003c71"
},
{
"pc": 4830,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0x5f5e517fefa19375d80828106a842c08c2eb92977267dd6c0b92474fd4e8eec3
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0x5f5e517fefa19375d80828106a842c08c2eb92977267dd6c0b92474fd4e8eec3",
"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": "0xc87b56dd",
"selector": "0xc87b56dd",
"calldata_variants": [
"0xc87b56dd",
"0xc87b56dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe985e9c5",
"selector": "0xe985e9c5",
"calldata_variants": [
"0xe985e9c5",
"0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf489e496",
"selector": "0xf489e496",
"calldata_variants": [
"0xf489e496",
"0xf489e4960000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfb796e6c",
"selector": "0xfb796e6c",
"calldata_variants": [
"0xfb796e6c",
"0xfb796e6c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc776f6d",
"selector": "0xfc776f6d",
"calldata_variants": [
"0xfc776f6d",
"0xfc776f6d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb55cd04b",
"selector": "0xb55cd04b",
"calldata_variants": [
"0xb55cd04b",
"0xb55cd04b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb7c0b8e8",
"selector": "0xb7c0b8e8",
"calldata_variants": [
"0xb7c0b8e8",
"0xb7c0b8e80000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 0,
"create2_count": 2
}
|
| medium | other | slither | OperatorFilterer._registerForOperatorFiltering(address,bool).functionSelector__registerForOperatorFiltering_asm_0 (lib/closedsea/src/OperatorFilterer.sol#30-31) is written in both | 75 | no | — |
viewevidence_json{
"impact": "Medium",
"detector": "write-after-write",
"elements": [
{
"name": "functionSelector__registerForOperatorFiltering_asm_0",
"type": "variable",
"source_mapping": {
"lines": [
30,
31
],
"start": 1425,
"length": 16,
"ending_column": 3,
"is_dependency": true,
"filename_short": "lib/closedsea/src/OperatorFilterer.sol",
"starting_column": 7,
"filename_absolute": "/tmp/slither-56kd38pa/lib/closedsea/src/OperatorFilterer.sol",
"filename_relative": "lib/closedsea/src/OperatorFilterer.sol"
},
"type_specific_fields": {
"parent": {
"name": "_registerForOperatorFiltering",
"type": "function",
"source_mapping": {
"lines": [
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60
],
"start": 1213,
"length": 1773,
"ending_column": 74,
"is_dependency": true,
"filename_short": "lib/closedsea/src/OperatorFilterer.sol",
"starting_column": 68,
"filename_absolute": "/tmp/slither-56kd38pa/lib/closedsea/src/OperatorFilterer.sol",
"filename_relative": "lib/closedsea/src/OperatorFilterer.sol"
},
"type_specific_fields": {
"parent": {
"name": "OperatorFilterer",
"type": "contract",
"source_mapping": {
"lines": [
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122
],
"start": 329,
"length": 5282,
"ending_column": 39,
"is_dependency": true,
"filename_short": "lib/closedsea/src/OperatorFilterer.sol",
"starting_column": 62,
"filename_absolute": "/tmp/slither-56kd38pa/lib/closedsea/src/OperatorFilterer.sol",
"filename_relative": "lib/closedsea/src/OperatorFilterer.sol"
}
},
"signature": "_registerForOperatorFiltering(address,bool)"
}
}
}
},
{
"name": "functionSelector__registerForOperatorFiltering_asm_0 = 0x4420e486",
"type": "node",
"source_mapping": {
"lines": [
37,
38
],
"start": 1818,
"length": 30,
"ending_column": 14,
"is_dependency": true,
"filename_short": "lib/closedsea/src/OperatorFilterer.sol",
"starting_column": 45,
"filename_absolute": "/tmp/slither-56kd38pa/lib/closedsea/src/OperatorFilterer.sol",
"filename_relative": "lib/closedsea/src/OperatorFilterer.sol"
},
"type_specific_fields": {
"parent": {
"name": "_registerForOperatorFiltering",
"type": "function",
"source_mapping": {
"lines": [
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60
],
"start": 1213,
"length": 1773,
"ending_column": 74,
"is_dependency": true,
"filename_short": "lib/closedsea/src/OperatorFilterer.sol",
"starting_column": 68,
"filename_absolute": "/tmp/slither-56kd38pa/lib/closedsea/src/OperatorFilterer.sol",
"filename_relative": "lib/closedsea/src/OperatorFilterer.sol"
},
"type_specific_fields": {
"parent": {
"name": "OperatorFilterer",
"type": "contract",
"source_mapping": {
"lines": [
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122
],
"start": 329,
"length": 5282,
"ending_column": 39,
"is_dependency": true,
"filename_short": "lib/closedsea/src/OperatorFilterer.sol",
"starting_column": 62,
"filename_absolute": "/tmp/slither-56kd38pa/lib/closedsea/src/OperatorFilterer.sol",
"filename_relative": "lib/closedsea/src/OperatorFilterer.sol"
}
},
"signature": "_registerForOperatorFiltering(address,bool)"
}
}
}
},
{
"name": "functionSelector__registerForOperatorFiltering_asm_0 = 0xa0af2903",
"type": "node",
"source_mapping": {
"lines": [
39,
40,
41
],
"start": 1933,
"length": 30,
"ending_column": 7,
"is_dependency": true,
"filename_short": "lib/closedsea/src/OperatorFilterer.sol",
"starting_column": 23,
"filename_absolute": "/tmp/slither-56kd38pa/lib/closedsea/src/OperatorFilterer.sol",
"filename_relative": "lib/closedsea/src/OperatorFilterer.sol"
},
"type_specific_fields": {
"parent": {
"name": "_registerForOperatorFiltering",
"type": "function",
"source_mapping": {
"lines": [
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60
],
"start": 1213,
"length": 1773,
"ending_column": 74,
"is_dependency": true,
"filename_short": "lib/closedsea/src/OperatorFilterer.sol",
"starting_column": 68,
"filename_absolute": "/tmp/slither-56kd38pa/lib/closedsea/src/OperatorFilterer.sol",
"filename_relative": "lib/closedsea/src/OperatorFilterer.sol"
},
"type_specific_fields": {
"parent": {
"name": "OperatorFilterer",
"type": "contract",
"source_mapping": {
"lines": [
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122
],
"start": 329,
"length": 5282,
"ending_column": 39,
"is_dependency": true,
"filename_short": "lib/closedsea/src/OperatorFilterer.sol",
"starting_column": 62,
"filename_absolute": "/tmp/slither-56kd38pa/lib/closedsea/src/OperatorFilterer.sol",
"filename_relative": "lib/closedsea/src/OperatorFilterer.sol"
}
},
"signature": "_registerForOperatorFiltering(address,bool)"
}
}
}
}
],
"locations": [
{
"file": "lib/closedsea/src/OperatorFilterer.sol",
"name": "functionSelector__registerForOperatorFiltering_asm_0",
"type": "variable",
"lines": [
30,
31
]
},
{
"file": "lib/closedsea/src/OperatorFilterer.sol",
"name": "functionSelector__registerForOperatorFiltering_asm_0 = 0x4420e486",
"type": "node",
"lines": [
37,
38
]
},
{
"file": "lib/closedsea/src/OperatorFilterer.sol",
"name": "functionSelector__registerForOperatorFiltering_asm_0 = 0xa0af2903",
"type": "node",
"lines": [
39,
40,
41
]
}
],
"description": "OperatorFilterer._registerForOperatorFiltering(address,bool).functionSelector__registerForOperatorFiltering_asm_0 (lib/closedsea/src/OperatorFilterer.sol#30-31) is written in both\n\tfunctionSelector__registerForOperatorFiltering_asm_0 = 0x4420e486 (lib/closedsea/src/OperatorFilterer.sol#37-38)\n\tfunctionSelector__registerForOperatorFiltering_asm_0 = 0xa0af2903 (lib/closedsea/src/OperatorFilterer.sol#39-41)"
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0xb283fa5cf841128eeda6cbefebdef91a9322f5c7dabd9247be3d6198b185d931
call_targets:
0x000000000000c94ed90488d3ac687a2673c2b6fb
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xb283fa5cf841128eeda6cbefebdef91a9322f5c7dabd9247be3d6198b185d931",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x000000000000c94ed90488d3ac687a2673c2b6fb"
],
"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": "0xc87b56dd",
"selector": "0xc87b56dd",
"calldata_variants": [
"0xc87b56dd",
"0xc87b56dd0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe985e9c5",
"selector": "0xe985e9c5",
"calldata_variants": [
"0xe985e9c5",
"0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf489e496",
"selector": "0xf489e496",
"calldata_variants": [
"0xf489e496",
"0xf489e4960000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfb796e6c",
"selector": "0xfb796e6c",
"calldata_variants": [
"0xfb796e6c",
"0xfb796e6c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc776f6d",
"selector": "0xfc776f6d",
"calldata_variants": [
"0xfc776f6d",
"0xfc776f6d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb55cd04b",
"selector": "0xb55cd04b",
"calldata_variants": [
"0xb55cd04b",
"0xb55cd04b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xb7c0b8e8",
"selector": "0xb7c0b8e8",
"calldata_variants": [
"0xb7c0b8e8",
"0xb7c0b8e80000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2996,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 5252,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 5492,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 7,
"guards_detected": [
{
"pc": 2918,
"type": "msg_sender_eq_const",
"value": 1.712761232392164e+47
},
{
"pc": 4832,
"type": "tx_origin_used"
},
{
"pc": 2890,
"type": "msg_sender_eq_const",
"value": "0x1e0049783f008a0085193e00003d00cd54003c71"
},
{
"pc": 4830,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 7
}
|
| 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
}
|