5ee92886-8335-43e3-bee9-4a7cb539a22c
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 |
|---|---|---|---|---|
| 30698 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 75184 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 75185 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 75186 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 75187 | capability.graph | complete | 1 / 3 | 1 week ago |
| 75188 | detector.run | complete | 1 / 3 | 1 week ago |
| 75189 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:461208] OpenAI Codex v0.77.0 (research preview)
[codex:461208] --------
[codex:461208] workdir: /tmp/codex-multi-15nlwm_3
[codex:461208] model: gpt-5.2-codex
[codex:461208] provider: openai
[codex:461208] approval: never
[codex:461208] sandbox: read-only
[codex:461208] reasoning effort: xhigh
[codex:461208] reasoning summaries: auto
[codex:461208] session id: 019b6f9a-8eb8-7303-98aa-f47eed7a986c
[codex:461208] --------
[codex:461208] user
[codex:461208] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:461208] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:461208] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:461208]
[codex:461208] Scope rules:
[codex:461208] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:461208] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:461208]
[codex:461208] Output MUST be valid JSON matching the provided schema.
[codex:461208] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:461208] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:461208]
[codex:461208] Output constraints (IMPORTANT):
[codex:461208] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:461208] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:461208] mcp startup: no servers
[codex:461208]
[codex:461208] thinking
[codex:461208] **Preparing to review audit instructions**
[codex:461208] exec
[codex:461208] /bin/bash -lc ls in /tmp/codex-multi-15nlwm_3 succeeded in 5ms:
[codex:461208] AUDIT_BUNDLE.txt
[codex:461208] codex-output-schema.json
[codex:461208] contracts
[codex:461208] exec
[codex:461208] /bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-15nlwm_3 succeeded in 5ms:
[codex:461208] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:461208]
[codex:461208] ================================================================================
[codex:461208] FILE: contracts/Address.sol
[codex:461208] ================================================================================
[codex:461208] pragma solidity ^0.5.0;
[codex:461208]
[codex:461208]
[codex:461208] library Address {
[codex:461208] function isContract(address account) internal view returns (bool) {
[codex:461208] uint256 size;
[codex:461208] assembly {
[codex:461208] size := extcodesize(account)
[codex:461208] }
[codex:461208] return size > 0;
[codex:461208] }
[codex:461208] }
[codex:461208]
[codex:461208] ================================================================================
[codex:461208] FILE: contracts/Common.sol
[codex:461208] exec
[codex:461208] /bin/bash -lc "sed -n '200,400p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-15nlwm_3 succeeded in 6ms:
[codex:461208] nfOwners[_id] = _to;
[codex:461208] // You could keep balance of NF type in base type id like so:
[codex:461208] uint256 baseType = getNonFungibleBaseType(_id);
[codex:461208] balances[baseType][_from] = balances[baseType][_from].sub(_value);
[codex:461208] balances[baseType][_to] = balances[baseType][_to].add(_value);
[codex:461208] } else {
[codex:461208] balances[_id][_from] = balances[_id][_from].sub(_value);
[codex:461208] balances[_id][_to] = balances[_id][_to].add(_value);
[codex:461208] }
[codex:461208]
[codex:461208] emit TransferSingle(msg.sender, _from, _to, _id, _value);
[codex:461208]
[codex:461208] if (_to.isContract()) {
[codex:461208] _doSafeTransferAcceptanceCheck(msg.sender, _from, _to, _id, _value, _data);
[codex:461208] }
[codex:461208] }
[codex:461208]
[codex:461208] function safeBatchTransferFrom(
[codex:461208] address _from,
[codex:461208] address _to,
[codex:461208] exec
[codex:461208] /bin/bash -lc "sed -n '400,800p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-15nlwm_3 succeeded in 5ms:
[codex:461208] "contract returned an unknown value from onERC1155BatchReceived"
[codex:461208] );
[codex:461208] }
[codex:461208]
[codex:461208] /////////////////////////////////////////// ERC1155 //////////////////////////////////////////////
[codex:461208]
[codex:461208] function batchAuthorizeCreators(address[] calldata _addresses) external ownerOnly {
[codex:461208] for (uint256 i = 0; i < _addresses.length; ++i) {
[codex:461208] emit Creator(_addresses[i]);
[codex:461208] creators[_addresses[i]] = true;
[codex:461208] }
[codex:461208] }
[codex:461208]
[codex:461208] function batchDeauthorizeCreators(address[] calldata _addresses) external ownerOnly {
[codex:461208] for (uint256 i = 0; i < _addresses.length; ++i) {
[codex:461208] delete creators[_addresses[i]];
[codex:461208] }
[codex:461208] }
[codex:461208]
[codex:461208] function allowance(
[codex:461208]
[codex:461208] thinking
[codex:461208] **Analyzing Gala contract vulnerabilities**
[codex:461208] exec
[codex:461208] /bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '300,520p'" in /tmp/codex-multi-15nlwm_3 succeeded in 6ms:
[codex:461208] 300 }
[codex:461208] 301 }
[codex:461208] 302
[codex:461208] 303 function approveBatch(
[codex:461208] 304 address _spender,
[codex:461208] 305 uint256[] calldata _ids,
[codex:461208] 306 uint256[] calldata _currentValues,
[codex:461208] 307 uint256[] calldata _values
[codex:461208] 308 ) external {
[codex:461208] 309 require(_ids.length == _currentValues.length, "Arrays must be same length");
[codex:461208] 310 require(_currentValues.length == _values.length, "Arrays must be same length");
[codex:461208] 311 for (uint256 i = 0; i < _values.length; i++) {
[codex:461208] 312 uint256 id = _ids[i];
[codex:461208] 313 uint256 currentValue = _currentValues[i];
[codex:461208] 314 uint256 value = _values[i];
[codex:461208] 315 require(allowances[msg.sender][_spender][id] == currentValue);
[codex:461208] 316 allowances[msg.sender][_spender][id] = value;
[codex:461208] 317 emit Approval(msg.sender, _spender, id, currentValue, value);
[codex:461208] 318 }
[codex:461208] 319 }
[codex:461208]
[codex:461208] thinking
[codex:461208] **Adding line numbers for functions**
[codex:461208] exec
[codex:461208] /bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '120,260p'" in /tmp/codex-multi-15nlwm_3 succeeded in 20ms:
[codex:461208] 120 emit TransferSingle(msg.sender, address(0x0), address(0x0), _type, 0);
[codex:461208] 121
[codex:461208] 122 if (bytes(_uri).length > 0) emit URI(_uri, _type);
[codex:461208] 123 return _type;
[codex:461208] 124 }
[codex:461208] 125
[codex:461208] 126 function mintNonFungible(
[codex:461208] 127 uint256 _type,
[codex:461208] 128 address[] calldata _to,
[codex:461208] 129 bytes calldata _data
[codex:461208] 130 ) external creatorOnly {
[codex:461208] 131 require(isNonFungible(_type));
[codex:461208] 132 uint256 index = maxIndex[_type] + 1;
[codex:461208] 133 maxIndex[_type] = _to.length.add(maxIndex[_type]);
[codex:461208] 134 for (uint256 i = 0; i < _to.length; ++i) {
[codex:461208] 135 address distributeTo = _to[i];
[codex:461208] 136 uint256 id = _type | (index + i);
[codex:461208] 137 require(
[codex:461208] 138 tokenSupplyLimit[_type] == 0 ||
[codex:461208] 139 tokenSupply[_type].add(1) <= tokenSupplyLimit[_type],
[codex:461208]
[codex:461208] thinking
[codex:461208] **Checking for line numbers in SignatureVerifier**
[codex:461208] exec
[codex:461208] /bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '560,700p'" in /tmp/codex-multi-15nlwm_3 succeeded in 6ms:
[codex:461208] 560
[codex:461208] 561 ================================================================================
[codex:461208] 562 FILE: contracts/SafeMath.sol
[codex:461208] 563 ================================================================================
[codex:461208] 564 pragma solidity ^0.5.0;
[codex:461208] 565
[codex:461208] 566
[codex:461208] 567 library SafeMath {
[codex:461208] 568 function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
[codex:461208] 569 if (a == 0) {
[codex:461208] 570 return 0;
[codex:461208] 571 }
[codex:461208] 572 c = a * b;
[codex:461208] 573 assert(c / a == b);
[codex:461208] 574 return c;
[codex:461208] 575 }
[codex:461208] 576
[codex:461208] 577 function div(uint256 a, uint256 b) internal pure returns (uint256) {
[codex:461208] 578 return a / b;
[codex:461208] 579 }
[codex:461208]
[codex:461208] thinking
[codex:461208] **Analyzing potential token handling issues**
[codex:461208] exec
[codex:461208] /bin/bash -lc "nl -ba contracts/Gala.sol | sed -n '150,260p'" in /tmp/codex-multi-15nlwm_3 succeeded in 7ms:
[codex:461208] 150 require(_to != address(0x0), "cannot send to zero address");
[codex:461208] 151 require(
[codex:461208] 152 _from == msg.sender || operatorApproval[_from][msg.sender] == true,
[codex:461208] 153 "Need operator approval for 3rd party transfers."
[codex:461208] 154 );
[codex:461208] 155
[codex:461208] 156 if (isNonFungible(_id)) {
[codex:461208] 157 require(nfOwners[_id] == _from);
[codex:461208] 158 nfOwners[_id] = _to;
[codex:461208] 159 // You could keep balance of NF type in base type id like so:
[codex:461208] 160 uint256 baseType = getNonFungibleBaseType(_id);
[codex:461208] 161 balances[baseType][_from] = balances[baseType][_from].sub(_value);
[codex:461208] 162 balances[baseType][_to] = balances[baseType][_to].add(_value);
[codex:461208] 163 } else {
[codex:461208] 164 balances[_id][_from] = balances[_id][_from].sub(_value);
[codex:461208] 165 balances[_id][_to] = balances[_id][_to].add(_value);
[codex:461208] 166 }
[codex:461208] 167
[codex:461208] 168 emit TransferSingle(msg.sender, _from, _to, _id, _value);
[codex:461208] 169
[codex:461208]
[codex:461208] thinking
[codex:461208] **Preparing for line number removal**
[codex:461208] exec
[codex:461208] /bin/bash -lc "nl -ba contracts/Gala.sol | sed -n '300,380p'" in /tmp/codex-multi-15nlwm_3 succeeded in 6ms:
[codex:461208] 300 function isNonFungibleItem(uint256 _id) public pure returns (bool) {
[codex:461208] 301 // A base type has the NF bit but does has an index.
[codex:461208] 302 return (_id & TYPE_NF_BIT == TYPE_NF_BIT) && (_id & NF_INDEX_MASK != 0);
[codex:461208] 303 }
[codex:461208] 304
[codex:461208] 305 function ownerOf(uint256 _id) public view returns (address) {
[codex:461208] 306 return nfOwners[_id];
[codex:461208] 307 }
[codex:461208] 308
[codex:461208] 309 /////////////////////////////////////////// ERC165 //////////////////////////////////////////////
[codex:461208] 310
[codex:461208] 311 bytes4 private constant INTERFACE_SIGNATURE_ERC165 = 0x01ffc9a7;
[codex:461208] 312 bytes4 private constant INTERFACE_SIGNATURE_ERC1155 = 0xd9b67a26;
[codex:461208] 313
[codex:461208] 314 function supportsInterface(bytes4 _interfaceId) public view returns (bool) {
[codex:461208] 315 if (
[codex:461208] 316 _interfaceId == INTERFACE_SIGNATURE_ERC165 ||
[codex:461208] 317 _interfaceId == INTERFACE_SIGNATURE_ERC1155
[codex:461208] 318 ) {
[codex:461208] 319 return true;
[codex:461208] exec
[codex:461208] /bin/bash -lc "nl -ba contracts/Gala.sol | sed -n '380,460p'" in /tmp/codex-multi-15nlwm_3 succeeded in 6ms:
[codex:461208] 380 uint256 _id
[codex:461208] 381 ) external view returns (uint256) {
[codex:461208] 382 return allowances[_owner][_spender][_id];
[codex:461208] 383 }
[codex:461208] 384
[codex:461208] 385 function burn(
[codex:461208] 386 address _from,
[codex:461208] 387 uint256[] calldata _ids,
[codex:461208] 388 uint256[] calldata _values
[codex:461208] 389 ) external {
[codex:461208] 390 require(
[codex:461208] 391 _from == msg.sender || operatorApproval[_from][msg.sender] == true,
[codex:461208] 392 "Need operator approval for 3rd party burn."
[codex:461208] 393 );
[codex:461208] 394 require(_ids.length > 0 && _ids.length == _values.length);
[codex:461208] 395 for (uint256 i = 0; i < _ids.length; i++) {
[codex:461208] 396 if (isFungible(_ids[i])) {
[codex:461208] 397 require(balances[_ids[i]][_from] >= _values[i]);
[codex:461208] 398 balances[_ids[i]][_from] = balances[_ids[i]][_from].sub(_values[i]);
[codex:461208] 399 } else {
[codex:461208]
[codex:461208] thinking
[codex:461208] **Checking file for SignatureVerifier details**
[codex:461208] exec
[codex:461208] /bin/bash -lc 'nl -ba contracts/SignatureVerifier.sol' in /tmp/codex-multi-15nlwm_3 succeeded in 5ms:
[codex:461208] 1 pragma solidity ^0.5.0;
[codex:461208] 2
[codex:461208] 3
[codex:461208] 4 contract SignatureVerifier {
[codex:461208] 5 function validateNodeSignature(
[codex:461208] 6 string memory nodeHardwareLicenseId,
[codex:461208] 7 uint256 sigNonce,
[codex:461208] 8 bytes memory signature
[codex:461208] 9 ) internal view returns (address signer) {
[codex:461208] 10 bytes32 r;
[codex:461208] 11 bytes32 s;
[codex:461208] 12 uint8 v;
[codex:461208] 13 (v, r, s) = splitSignature(signature);
[codex:461208] 14 bytes32 hash = keccak256(abi.encodePacked(nodeHardwareLicenseId, sigNonce, this));
[codex:461208] 15 bytes32 hashWithHeader = keccak256(
[codex:461208] 16 abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)
[codex:461208] 17 );
[codex:461208] 18
[codex:461208] 19 return ecrecover(hashWithHeader, v, r, s);
[codex:461208] 20 }
[codex:461208]
[codex:461208] thinking
[codex:461208] **Identifying signature malleability and hashing risks**
[codex:461208]
[codex:461208] I’m analyzing potential vulnerabilities in signature validation, focusing on malleable signatures due to missing checks on `v` and `s`, and collisions from using `abi.encodePacked` with dynamic strings and uints causing ambiguity in hashed messages. Though the functions aren't currently used for authorization, these issues could allow misuse if activated later, so I’m preparing detailed findings with severity and evidence for an audit report.
[codex:461208] codex
[codex:461208] {"no_findings":false,"summary":"Found 3 issues: unauthorized NFT burns, non‑fungible transfer accounting inconsistencies, and weak signature validation in the helper.","findings":[{"severity":"high","category":"access_control","title":"NFT burn lacks ownership check, enabling destruction of others’ tokens","exploit_scenario":"An attacker who owns any NFT of a base type T (or has approval for their own address) can call burn with _from=attacker and _ids containing a victim’s NFT of the same base type. The function only checks _from approval and then deletes nfOwners[_ids[i]] without verifying ownership, burning the victim’s token while merely decrementing the attacker’s base-type balance.","recommendation":"Require nfOwners[_id] == _from for non‑fungible burns (or require operator approval from the actual owner). Consider also updating tokenSupply when burning if supply tracking is intended.","evidence":"burn() deletes nfOwners[_ids[i]] for non‑fungibles without checking that _from owns the token.","locations":["contracts/Gala.sol:385","contracts/Gala.sol:399","contracts/Gala.sol:404","contracts/Gala.sol:405"]},{"severity":"medium","category":"other","title":"Non‑fungible transfers accept arbitrary _value, breaking base‑type accounting","exploit_scenario":"For non‑fungible IDs, safeTransferFrom and safeBatchTransferFrom update nfOwners but use the caller‑supplied _value to adjust base‑type balances. A sender can transfer an NFT with _value=0 to keep their base‑type balance while ownership moves, or otherwise desynchronize balances. If base‑type balances are relied on (e.g., for burns or supply accounting), this enables inconsistent state and potential abuse.","recommendation":"Require _value == 1 for non‑fungible items in both single and batch transfers (or ignore _value and force it to 1) to preserve invariants between nfOwners and base‑type balances.","evidence":"Non‑fungible transfers update balances using _value but never enforce _value == 1.","locations":["contracts/Gala.sol:156","contracts/Gala.sol:161","contracts/Gala.sol:175","contracts/Gala.sol:190","contracts/Gala.sol:196"]},{"severity":"low","category":"auth","title":"Signature verification allows malleable signatures and packed-encoding ambiguity","exploit_scenario":"If validateNodeSignature is used for authorization, an attacker could present malleable signatures (high‑s or non‑standard v) or craft (nodeHardwareLicenseId, sigNonce) pairs that hash to the same abi.encodePacked output, reusing signatures for different data. This can weaken signature‑based access controls.","recommendation":"Enforce v in {27,28} and s in the lower half‑order, reject signer == address(0), and switch to abi.encode with explicit domain separation and nonce management to prevent packed‑encoding collisions.","evidence":"validateNodeSignature uses splitSignature without v/s validation and hashes with abi.encodePacked over a dynamic string.","locations":["contracts/SignatureVerifier.sol:5","contracts/SignatureVerifier.sol:13","contracts/SignatureVerifier.sol:14","contracts/SignatureVerifier.sol:19"]}]}
[codex:461208] tokens used
[codex:461208] 23,888
[codex:461208] {"no_findings":false,"summary":"Found 3 issues: unauthorized NFT burns, non‑fungible transfer accounting inconsistencies, and weak signature validation in the helper.","findings":[{"severity":"high","category":"access_control","title":"NFT burn lacks ownership check, enabling destruction of others’ tokens","exploit_scenario":"An attacker who owns any NFT of a base type T (or has approval for their own address) can call burn with _from=attacker and _ids containing a victim’s NFT of the same base type. The function only checks _from approval and then deletes nfOwners[_ids[i]] without verifying ownership, burning the victim’s token while merely decrementing the attacker’s base-type balance.","recommendation":"Require nfOwners[_id] == _from for non‑fungible burns (or require operator approval from the actual owner). Consider also updating tokenSupply when burning if supply tracking is intended.","evidence":"burn() deletes nfOwners[_ids[i]] for non‑fungibles without checking that _from owns the token.","locations":["contracts/Gala.sol:385","contracts/Gala.sol:399","contracts/Gala.sol:404","contracts/Gala.sol:405"]},{"severity":"medium","category":"other","title":"Non‑fungible transfers accept arbitrary _value, breaking base‑type accounting","exploit_scenario":"For non‑fungible IDs, safeTransferFrom and safeBatchTransferFrom update nfOwners but use the caller‑supplied _value to adjust base‑type balances. A sender can transfer an NFT with _value=0 to keep their base‑type balance while ownership moves, or otherwise desynchronize balances. If base‑type balances are relied on (e.g., for burns or supply accounting), this enables inconsistent state and potential abuse.","recommendation":"Require _value == 1 for non‑fungible items in both single and batch transfers (or ignore _value and force it to 1) to preserve invariants between nfOwners and base‑type balances.","evidence":"Non‑fungible transfers update balances using _value but never enforce _value == 1.","locations":["contracts/Gala.sol:156","contracts/Gala.sol:161","contracts/Gala.sol:175","contracts/Gala.sol:190","contracts/Gala.sol:196"]},{"severity":"low","category":"auth","title":"Signature verification allows malleable signatures and packed-encoding ambiguity","exploit_scenario":"If validateNodeSignature is used for authorization, an attacker could present malleable signatures (high‑s or non‑standard v) or craft (nodeHardwareLicenseId, sigNonce) pairs that hash to the same abi.encodePacked output, reusing signatures for different data. This can weaken signature‑based access controls.","recommendation":"Enforce v in {27,28} and s in the lower half‑order, reject signer == address(0), and switch to abi.encode with explicit domain separation and nonce management to prevent packed‑encoding collisions.","evidence":"validateNodeSignature uses splitSignature without v/s validation and hashes with abi.encodePacked over a dynamic string.","locations":["contracts/SignatureVerifier.sol:5","contracts/SignatureVerifier.sol:13","contracts/SignatureVerifier.sol:14","contracts/SignatureVerifier.sol:19"]}]}
{
"codex": {
"ran_at": "2025-12-30T14:15:18.632483+00:00",
"returncode": 0
},
"summary": "Found 3 issues: unauthorized NFT burns, non\u2011fungible transfer accounting inconsistencies, and weak signature validation in the helper.",
"raw_final": {
"summary": "Found 3 issues: unauthorized NFT burns, non\u2011fungible transfer accounting inconsistencies, and weak signature validation in the helper.",
"findings": [
{
"title": "NFT burn lacks ownership check, enabling destruction of others\u2019 tokens",
"category": "access_control",
"evidence": "burn() deletes nfOwners[_ids[i]] for non\u2011fungibles without checking that _from owns the token.",
"severity": "high",
"locations": [
"contracts/Gala.sol:385",
"contracts/Gala.sol:399",
"contracts/Gala.sol:404",
"contracts/Gala.sol:405"
],
"recommendation": "Require nfOwners[_id] == _from for non\u2011fungible burns (or require operator approval from the actual owner). Consider also updating tokenSupply when burning if supply tracking is intended.",
"exploit_scenario": "An attacker who owns any NFT of a base type T (or has approval for their own address) can call burn with _from=attacker and _ids containing a victim\u2019s NFT of the same base type. The function only checks _from approval and then deletes nfOwners[_ids[i]] without verifying ownership, burning the victim\u2019s token while merely decrementing the attacker\u2019s base-type balance."
},
{
"title": "Non\u2011fungible transfers accept arbitrary _value, breaking base\u2011type accounting",
"category": "other",
"evidence": "Non\u2011fungible transfers update balances using _value but never enforce _value == 1.",
"severity": "medium",
"locations": [
"contracts/Gala.sol:156",
"contracts/Gala.sol:161",
"contracts/Gala.sol:175",
"contracts/Gala.sol:190",
"contracts/Gala.sol:196"
],
"recommendation": "Require _value == 1 for non\u2011fungible items in both single and batch transfers (or ignore _value and force it to 1) to preserve invariants between nfOwners and base\u2011type balances.",
"exploit_scenario": "For non\u2011fungible IDs, safeTransferFrom and safeBatchTransferFrom update nfOwners but use the caller\u2011supplied _value to adjust base\u2011type balances. A sender can transfer an NFT with _value=0 to keep their base\u2011type balance while ownership moves, or otherwise desynchronize balances. If base\u2011type balances are relied on (e.g., for burns or supply accounting), this enables inconsistent state and potential abuse."
},
{
"title": "Signature verification allows malleable signatures and packed-encoding ambiguity",
"category": "auth",
"evidence": "validateNodeSignature uses splitSignature without v/s validation and hashes with abi.encodePacked over a dynamic string.",
"severity": "low",
"locations": [
"contracts/SignatureVerifier.sol:5",
"contracts/SignatureVerifier.sol:13",
"contracts/SignatureVerifier.sol:14",
"contracts/SignatureVerifier.sol:19"
],
"recommendation": "Enforce v in {27,28} and s in the lower half\u2011order, reject signer == address(0), and switch to abi.encode with explicit domain separation and nonce management to prevent packed\u2011encoding collisions.",
"exploit_scenario": "If validateNodeSignature is used for authorization, an attacker could present malleable signatures (high\u2011s or non\u2011standard v) or craft (nodeHardwareLicenseId, sigNonce) pairs that hash to the same abi.encodePacked output, reusing signatures for different data. This can weaken signature\u2011based access controls."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: CALLVALUE 00000006: DUP1 00000007: ISZERO 00000008: PUSH2 0x0010 0000000b: JUMPI 0000000c: PUSH1 0x00 0000000e: DUP1 0000000f: REVERT 00000010: JUMPDEST 00000011: POP 00000012: PUSH1 0x04 00000014: CALLDATASIZE 00000015: LT 00000016: PUSH2 0x01c3 00000019: JUMPI 0000001a: PUSH1 0x00 0000001c: CALLDATALOAD 0000001d: PUSH1 0xe0 0000001f: SHR 00000020: DUP1 00000021: PUSH4 0x5e81b958 00000026: GT 00000027: PUSH2 0x00f9 0000002a: JUMPI 0000002b: DUP1 0000002c: PUSH4 0xa22cb465 00000031: GT 00000032: PUSH2 0x0097 00000035: JUMPI 00000036: DUP1 00000037: PUSH4 0xcc10e401 0000003c: GT 0000003d: PUSH2 0x0071 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0xcc10e401 00000047: EQ 00000048: PUSH2 0x0b38 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0xe44591f0 00000052: EQ 00000053: PUSH2 0x0ba8 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0xe985e9c5 0000005d: EQ 0000005e: PUSH2 0x0bc5 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0xf242432a 00000068: EQ 00000069: PUSH2 0x0bf3 0000006c: JUMPI 0000006d: PUSH2 0x01c3 00000070: JUMP 00000071: JUMPDEST 00000072: DUP1 00000073: PUSH4 0xa22cb465 00000078: EQ 00000079: PUSH2 0x0a7f 0000007c: JUMPI 0000007d: DUP1 0000007e: PUSH4 0xa9e7d531 00000083: EQ 00000084: PUSH2 0x0aad 00000087: JUMPI 00000088: DUP1 00000089: PUSH4 0xadebf6f2 0000008e: EQ 0000008f: PUSH2 0x0b1b 00000092: JUMPI 00000093: PUSH2 0x01c3 00000096: JUMP 00000097: JUMPDEST 00000098: DUP1 00000099: PUSH4 0x7269a327 0000009e: GT 0000009f: PUSH2 0x00d3 000000a2: JUMPI 000000a3: DUP1 000000a4: PUSH4 0x7269a327 000000a9: EQ 000000aa: PUSH2 0x0a1a 000000ad: JUMPI 000000ae: DUP1 000000af: PUSH4 0x8413e8b3 000000b4: EQ 000000b5: PUSH2 0x0a37 000000b8: JUMPI 000000b9: DUP1 000000ba: PUSH4 0x8da5cb5b 000000bf: EQ 000000c0: PUSH2 0x0a5a 000000c3: JUMPI 000000c4: DUP1 000000c5: PUSH4 0x9cca1c64 000000ca: EQ 000000cb: PUSH2 0x0a62 000000ce: JUMPI 000000cf: PUSH2 0x01c3 000000d2: JUMP 000000d3: JUMPDEST 000000d4: DUP1 000000d5: PUSH4 0x5e81b958 000000da: EQ 000000db: PUSH2 0x09a7 000000de: JUMPI 000000df: DUP1 000000e0: PUSH4 0x6352211e 000000e5: EQ 000000e6: PUSH2 0x09c4 000000e9: JUMPI 000000ea: DUP1 000000eb: PUSH4 0x6f969c2d 000000f0: EQ 000000f1: PUSH2 0x09fd 000000f4: JUMPI 000000f5: PUSH2 0x01c3 000000f8: JUMP 000000f9: JUMPDEST 000000fa: DUP1 000000fb: PUSH4 0x352949d3 00000100: GT 00000101: PUSH2 0x0166 00000104: JUMPI 00000105: DUP1 00000106: PUSH4 0x4e1273f4 0000010b: GT 0000010c: PUSH2 0x0140 0000010f: JUMPI 00000110: DUP1 00000111: PUSH4 0x4e1273f4 00000116: EQ 00000117: PUSH2 0x0680 0000011a: JUMPI 0000011b: DUP1 0000011c: PUSH4 0x54dbdbf4 00000121: EQ 00000122: PUSH2 0x078e 00000125: JUMPI 00000126: DUP1 00000127: PUSH4 0x598af9e7 0000012c: EQ 0000012d: PUSH2 0x0853 00000130: JUMPI 00000131: DUP1 00000132: PUSH4 0x5b286d4a 00000137: EQ 00000138: PUSH2 0x0889 0000013b: JUMPI 0000013c: PUSH2 0x01c3 0000013f: JUMP 00000140: JUMPDEST 00000141: DUP1 00000142: PUSH4 0x352949d3 00000147: EQ 00000148: PUSH2 0x04d6 0000014b: JUMPI 0000014c: DUP1 0000014d: PUSH4 0x36fc1079 00000152: EQ 00000153: PUSH2 0x0544 00000156: JUMPI 00000157: DUP1 00000158: PUSH4 0x3db0f8ab 0000015d: EQ 0000015e: PUSH2 0x05b2 00000161: JUMPI 00000162: PUSH2 0x01c3 00000165: JUMP 00000166: JUMPDEST 00000167: DUP1 00000168: PUSH4 0x183fb254 0000016d: GT 0000016e: PUSH2 0x01a2 00000171: JUMPI 00000172: DUP1 00000173: PUSH4 0x183fb254 00000178: EQ 00000179: PUSH2 0x025e 0000017c: JUMPI 0000017d: DUP1 0000017e: PUSH4 0x2693ebf2 00000183: EQ 00000184: PUSH2 0x0375 00000187: JUMPI 00000188: DUP1 00000189: PUSH4 0x28fd70ec 0000018e: EQ 0000018f: PUSH2 0x0392 00000192: JUMPI 00000193: DUP1 00000194: PUSH4 0x2eb2c2d6 00000199: EQ 0000019a: PUSH2 0x03af 0000019d: JUMPI 0000019e: PUSH2 0x01c3 000001a1: JUMP 000001a2: JUMPDEST 000001a3: DUP1 000001a4: PUSH3 0xfdd58e 000001a8: EQ 000001a9: PUSH2 0x01c8 000001ac: JUMPI 000001ad: DUP1 000001ae: PUSH4 0x01ffc9a7 000001b3: EQ 000001b4: PUSH2 0x0206 000001b7: JUMPI 000001b8: DUP1 000001b9: PUSH4 0x08d7d469 000001be: EQ 000001bf: PUSH2 0x0241 000001c2: JUMPI 000001c3: JUMPDEST 000001c4: PUSH1 0x00 000001c6: DUP1 000001c7: REVERT 000001c8: JUMPDEST 000001c9: PUSH2 0x01f4 000001cc: PUSH1 0x04 000001ce: DUP1 000001cf: CALLDATASIZE 000001d0: SUB 000001d1: PUSH1 0x40 000001d3: DUP2 000001d4: LT 000001d5: ISZERO 000001d6: PUSH2 0x01de 000001d9: JUMPI 000001da: PUSH1 0x00 000001dc: DUP1 000001dd: REVERT 000001de: JUMPDEST 000001df: POP 000001e0: PUSH1 0x01 000001e2: PUSH1 0x01 000001e4: PUSH1 0xa0 000001e6: SHL 000001e7: SUB 000001e8: DUP2 000001e9: CALLDATALOAD 000001ea: AND 000001eb: SWAP1 000001ec: PUSH1 0x20 000001ee: ADD 000001ef: CALLDATALOAD 000001f0: PUSH2 0x0c86 000001f3: JUMP 000001f4: JUMPDEST 000001f5: PUSH1 0x40 000001f7: DUP1 000001f8: MLOAD 000001f9: SWAP2 000001fa: DUP3 000001fb: MSTORE 000001fc: MLOAD 000001fd: SWAP1 000001fe: DUP2 000001ff: SWAP1 00000200: SUB 00000201: PUSH1 0x20 00000203: ADD 00000204: SWAP1 00000205: RETURN 00000206: JUMPDEST 00000207: PUSH2 0x022d 0000020a: PUSH1 0x04 0000020c: DUP1 0000020d: CALLDATASIZE 0000020e: SUB 0000020f: PUSH1 0x20 00000211: DUP2 00000212: LT 00000213: ISZERO 00000214: PUSH2 0x021c 00000217: JUMPI 00000218: PUSH1 0x00 0000021a: DUP1 0000021b: REVERT 0000021c: JUMPDEST 0000021d: POP 0000021e: CALLDATALOAD 0000021f: PUSH1 0x01 00000221: PUSH1 0x01 00000223: PUSH1 0xe0 00000225: SHL 00000226: SUB 00000227: NOT 00000228: AND 00000229: PUSH2 0x0cf6 0000022c: JUMP 0000022d: JUMPDEST 0000022e: PUSH1 0x40 00000230: DUP1 00000231: MLOAD 00000232: SWAP2 00000233: ISZERO 00000234: ISZERO 00000235: DUP3 00000236: MSTORE 00000237: MLOAD 00000238: SWAP1 00000239: DUP2 0000023a: SWAP1 0000023b: SUB 0000023c: PUSH1 0x20 0000023e: ADD 0000023f: SWAP1 00000240: RETURN 00000241: JUMPDEST 00000242: PUSH2 0x01f4 00000245: PUSH1 0x04 00000247: DUP1 00000248: CALLDATASIZE 00000249: SUB 0000024a: PUSH1 0x20 0000024c: DUP2 0000024d: LT 0000024e: ISZERO 0000024f: PUSH2 0x0257 00000252: JUMPI 00000253: PUSH1 0x00 00000255: DUP1 00000256: REVERT 00000257: JUMPDEST 00000258: POP 00000259: CALLDATALOAD 0000025a: PUSH2 0x0d3d 0000025d: JUMP 0000025e: JUMPDEST 0000025f: PUSH2 0x0373 00000262: PUSH1 0x04 00000264: DUP1 00000265: CALLDATASIZE 00000266: SUB 00000267: PUSH1 0x80 00000269: DUP2 0000026a: LT 0000026b: ISZERO 0000026c: PUSH2 0x0274 0000026f: JUMPI 00000270: PUSH1 0x00 00000272: DUP1 00000273: REVERT 00000274: JUMPDEST 00000275: DUP2 00000276: CALLDATALOAD 00000277: SWAP2 00000278: SWAP1 00000279: DUP2 0000027a: ADD 0000027b: SWAP1 0000027c: PUSH1 0x40 0000027e: DUP2 0000027f: ADD 00000280: PUSH1 0x20 00000282: DUP3 00000283: ADD 00000284: CALLDATALOAD 00000285: PUSH1 0x01 00000287: PUSH1 0x20 00000289: SHL 0000028a: DUP2 0000028b: GT 0000028c: ISZERO 0000028d: PUSH2 0x0295 00000290: JUMPI 00000291: PUSH1 0x00 00000293: DUP1 00000294: REVERT 00000295: JUMPDEST 00000296: DUP3 00000297: ADD 00000298: DUP4 00000299: PUSH1 0x20 0000029b: DUP3 0000029c: ADD 0000029d: GT 0000029e: ISZERO 0000029f: PUSH2 0x02a7 000002a2: JUMPI 000002a3: PUSH1 0x00 000002a5: DUP1 000002a6: REVERT 000002a7: JUMPDEST 000002a8: DUP1 000002a9: CALLDATALOAD 000002aa: SWAP1 000002ab: PUSH1 0x20 000002ad: ADD 000002ae: SWAP2 000002af: DUP5 000002b0: PUSH1 0x20 000002b2: DUP4 000002b3: MUL 000002b4: DUP5 000002b5: ADD 000002b6: GT 000002b7: PUSH1 0x01 000002b9: PUSH1 0x20 000002bb: SHL 000002bc: DUP4 000002bd: GT 000002be: OR 000002bf: ISZERO 000002c0: PUSH2 0x02c8 000002c3: JUMPI 000002c4: PUSH1 0x00 000002c6: DUP1 000002c7: REVERT 000002c8: JUMPDEST 000002c9: SWAP2 000002ca: SWAP4 000002cb: SWAP1 000002cc: SWAP3 000002cd: SWAP1 000002ce: SWAP2 000002cf: PUSH1 0x20 000002d1: DUP2 000002d2: ADD 000002d3: SWAP1 000002d4: CALLDATALOAD 000002d5: PUSH1 0x01 000002d7: PUSH1 0x20 000002d9: SHL 000002da: DUP2 000002db: GT 000002dc: ISZERO 000002dd: PUSH2 0x02e5 000002e0: JUMPI 000002e1: PUSH1 0x00 000002e3: DUP1 000002e4: REVERT 000002e5: JUMPDEST 000002e6: DUP3 000002e7: ADD 000002e8: DUP4 000002e9: PUSH1 0x20 000002eb: DUP3 000002ec: ADD 000002ed: GT 000002ee: ISZERO 000002ef: PUSH2 0x02f7 000002f2: JUMPI 000002f3: PUSH1 0x00 000002f5: DUP1 000002f6: REVERT 000002f7: JUMPDEST 000002f8: DUP1 000002f9: CALLDATALOAD 000002fa: SWAP1 000002fb: PUSH1 0x20 000002fd: ADD 000002fe: SWAP2 000002ff: DUP5 00000300: PUSH1 0x20 00000302: DUP4 00000303: MUL 00000304: DUP5 00000305: ADD 00000306: GT 00000307: PUSH1 0x01 00000309: PUSH1 0x20 0000030b: SHL 0000030c: DUP4 0000030d: GT 0000030e: OR 0000030f: ISZERO 00000310: PUSH2 0x0318 00000313: JUMPI 00000314: PUSH1 0x00 00000316: DUP1 00000317: REVERT 00000318: JUMPDEST 00000319: SWAP2 0000031a: SWAP4 0000031b: SWAP1 0000031c: SWAP3 0000031d: SWAP1 0000031e: SWAP2 0000031f: PUSH1 0x20 00000321: DUP2 00000322: ADD 00000323: SWAP1 00000324: CALLDATALOAD 00000325: PUSH1 0x01 00000327: PUSH1 0x20 00000329: SHL 0000032a: DUP2 0000032b: GT 0000032c: ISZERO 0000032d: PUSH2 0x0335 00000330: JUMPI 00000331: PUSH1 0x00 00000333: DUP1 00000334: REVERT 00000335: JUMPDEST 00000336: DUP3 00000337: ADD 00000338: DUP4 00000339: PUSH1 0x20 0000033b: DUP3 0000033c: ADD 0000033d: GT 0000033e: ISZERO 0000033f: PUSH2 0x0347 00000342: JUMPI 00000343: PUSH1 0x00 00000345: DUP1 00000346: REVERT 00000347: JUMPDEST 00000348: DUP1 00000349: CALLDATALOAD 0000034a: SWAP1 0000034b: PUSH1 0x20 0000034d: ADD 0000034e: SWAP2 0000034f: DUP5 00000350: PUSH1 0x01 00000352: DUP4 00000353: MUL 00000354: DUP5 00000355: ADD 00000356: GT 00000357: PUSH1 0x01 00000359: PUSH1 0x20 0000035b: SHL 0000035c: DUP4 0000035d: GT 0000035e: OR 0000035f: ISZERO 00000360: PUSH2 0x0368 00000363: JUMPI 00000364: PUSH1 0x00 00000366: DUP1 00000367: REVERT 00000368: JUMPDEST 00000369: POP 0000036a: SWAP1 0000036b: SWAP3 0000036c: POP 0000036d: SWAP1 0000036e: POP 0000036f: PUSH2 0x0d4f 00000372: JUMP 00000373: JUMPDEST 00000374: STOP 00000375: JUMPDEST 00000376: PUSH2 0x01f4 00000379: PUSH1 0x04 0000037b: DUP1 0000037c: CALLDATASIZE 0000037d: SUB 0000037e: PUSH1 0x20 00000380: DUP2 00000381: LT 00000382: ISZERO 00000383: PUSH2 0x038b 00000386: JUMPI 00000387: PUSH1 0x00 00000389: DUP1 0000038a: REVERT 0000038b: JUMPDEST 0000038c: POP 0000038d: CALLDATALOAD 0000038e: PUSH2 0x10dd 00000391: JUMP 00000392: JUMPDEST 00000393: PUSH2 0x01f4 00000396: PUSH1 0x04 00000398: DUP1 00000399: CALLDATASIZE 0000039a: SUB 0000039b: PUSH1 0x20 0000039d: DUP2 0000039e: LT 0000039f: ISZERO 000003a0: PUSH2 0x03a8 000003a3: JUMPI 000003a4: PUSH1 0x00 000003a6: DUP1 000003a7: REVERT 000003a8: JUMPDEST 000003a9: POP 000003aa: CALLDATALOAD 000003ab: PUSH2 0x10ef 000003ae: JUMP 000003af: JUMPDEST 000003b0: PUSH2 0x0373 000003b3: PUSH1 0x04 000003b5: DUP1 000003b6: CALLDATASIZE 000003b7: SUB 000003b8: PUSH1 0xa0 000003ba: DUP2 000003bb: LT 000003bc: ISZERO 000003bd: PUSH2 0x03c5 000003c0: JUMPI 000003c1: PUSH1 0x00 000003c3: DUP1 000003c4: REVERT 000003c5: JUMPDEST 000003c6: PUSH1 0x01 000003c8: PUSH1 0x01 000003ca: PUSH1 0xa0 000003cc: SHL 000003cd: SUB 000003ce: DUP3 000003cf: CALLDATALOAD 000003d0: DUP2 000003d1: AND 000003d2: SWAP3 000003d3: PUSH1 0x20 000003d5: DUP2 000003d6: ADD 000003d7: CALLDATALOAD 000003d8: SWAP1 000003d9: SWAP2 000003da: AND 000003db: SWAP2 000003dc: DUP2 000003dd: ADD 000003de: SWAP1 000003df: PUSH1 0x60 000003e1: DUP2 000003e2: ADD 000003e3: PUSH1 0x40 000003e5: DUP3 000003e6: ADD 000003e7: CALLDATALOAD 000003e8: PUSH1 0x01 000003ea: PUSH1 0x20 000003ec: SHL 000003ed: DUP2 000003ee: GT 000003ef: ISZERO 000003f0: PUSH2 0x03f8 000003f3: JUMPI 000003f4: PUSH1 0x00 000003f6: DUP1 000003f7: REVERT 000003f8: JUMPDEST 000003f9: DUP3 000003fa: ADD 000003fb: DUP4 000003fc: PUSH1 0x20 000003fe: DUP3 000003ff: ADD 00000400: GT 00000401: ISZERO 00000402: PUSH2 0x040a 00000405: JUMPI 00000406: PUSH1 0x00 00000408: DUP1 00000409: REVERT 0000040a: JUMPDEST 0000040b: DUP1 0000040c: CALLDATALOAD 0000040d: SWAP1 0000040e: PUSH1 0x20 00000410: ADD 00000411: SWAP2 00000412: DUP5 00000413: PUSH1 0x20 00000415: DUP4 00000416: MUL 00000417: DUP5 00000418: ADD 00000419: GT 0000041a: PUSH1 0x01 0000041c: PUSH1 0x20 0000041e: SHL 0000041f: DUP4 00000420: GT 00000421: OR 00000422: ISZERO 00000423: PUSH2 0x042b 00000426: JUMPI 00000427: PUSH1 0x00 00000429: DUP1 0000042a: REVERT 0000042b: JUMPDEST 0000042c: SWAP2 0000042d: SWAP4 0000042e: SWAP1 0000042f: SWAP3 00000430: SWAP1 00000431: SWAP2 00000432: PUSH1 0x20 00000434: DUP2 00000435: ADD 00000436: SWAP1 00000437: CALLDATALOAD 00000438: PUSH1 0x01 0000043a: PUSH1 0x20 0000043c: SHL 0000043d: DUP2 0000043e: GT 0000043f: ISZERO 00000440: PUSH2 0x0448 00000443: JUMPI 00000444: PUSH1 0x00 00000446: DUP1 00000447: REVERT 00000448: JUMPDEST 00000449: DUP3 0000044a: ADD 0000044b: DUP4 0000044c: PUSH1 0x20 0000044e: DUP3 0000044f: ADD 00000450: GT 00000451: ISZERO 00000452: PUSH2 0x045a 00000455: JUMPI 00000456: PUSH1 0x00 00000458: DUP1 00000459: REVERT 0000045a: JUMPDEST 0000045b: DUP1 0000045c: CALLDATALOAD 0000045d: SWAP1 0000045e: PUSH1 0x20 00000460: ADD 00000461: SWAP2 00000462: DUP5 00000463: PUSH1 0x20 00000465: DUP4 00000466: MUL 00000467: DUP5 00000468: ADD 00000469: GT 0000046a: PUSH1 0x01 0000046c: PUSH1 0x20 0000046e: SHL 0000046f: DUP4 00000470: GT 00000471: OR 00000472: ISZERO 00000473: PUSH2 0x047b 00000476: JUMPI 00000477: PUSH1 0x00 00000479: DUP1 0000047a: REVERT 0000047b: JUMPDEST 0000047c: SWAP2 0000047d: SWAP4 0000047e: SWAP1 0000047f: SWAP3 00000480: SWAP1 00000481: SWAP2 00000482: PUSH1 0x20 00000484: DUP2 00000485: ADD 00000486: SWAP1 00000487: CALLDATALOAD 00000488: PUSH1 0x01 0000048a: PUSH1 0x20 0000048c: SHL 0000048d: DUP2 0000048e: GT 0000048f: ISZERO 00000490: PUSH2 0x0498 00000493: JUMPI 00000494: PUSH1 0x00 00000496: DUP1 00000497: REVERT 00000498: JUMPDEST 00000499: DUP3 0000049a: ADD 0000049b: DUP4 0000049c: PUSH1 0x20 0000049e: DUP3 0000049f: ADD 000004a0: GT 000004a1: ISZERO 000004a2: PUSH2 0x04aa 000004a5: JUMPI 000004a6: PUSH1 0x00 000004a8: DUP1 000004a9: REVERT 000004aa: JUMPDEST 000004ab: DUP1 000004ac: CALLDATALOAD 000004ad: SWAP1 000004ae: PUSH1 0x20 000004b0: ADD 000004b1: SWAP2 000004b2: DUP5 000004b3: PUSH1 0x01 000004b5: DUP4 000004b6: MUL 000004b7: DUP5 000004b8: ADD 000004b9: GT 000004ba: PUSH1 0x01 000004bc: PUSH1 0x20 000004be: SHL 000004bf: DUP4 000004c0: GT 000004c1: OR 000004c2: ISZERO 000004c3: PUSH2 0x04cb 000004c6: JUMPI 000004c7: PUSH1 0x00 000004c9: DUP1 000004ca: REVERT 000004cb: JUMPDEST 000004cc: POP 000004cd: SWAP1 000004ce: SWAP3 000004cf: POP 000004d0: SWAP1 000004d1: POP 000004d2: PUSH2 0x1101 000004d5: JUMP 000004d6: JUMPDEST 000004d7: PUSH2 0x0373 000004da: PUSH1 0x04 000004dc: DUP1 000004dd: CALLDATASIZE 000004de: SUB 000004df: PUSH1 0x20 000004e1: DUP2 000004e2: LT 000004e3: ISZERO 000004e4: PUSH2 0x04ec 000004e7: JUMPI 000004e8: PUSH1 0x00 000004ea: DUP1 000004eb: REVERT 000004ec: JUMPDEST 000004ed: DUP2 000004ee: ADD 000004ef: SWAP1 000004f0: PUSH1 0x20 000004f2: DUP2 000004f3: ADD 000004f4: DUP2 000004f5: CALLDATALOAD 000004f6: PUSH1 0x01 000004f8: PUSH1 0x20 000004fa: SHL 000004fb: DUP2 000004fc: GT 000004fd: ISZERO 000004fe: PUSH2 0x0506 00000501: JUMPI 00000502: PUSH1 0x00 00000504: DUP1 00000505: REVERT 00000506: JUMPDEST 00000507: DUP3 00000508: ADD 00000509: DUP4 0000050a: PUSH1 0x20 0000050c: DUP3 0000050d: ADD 0000050e: GT 0000050f: ISZERO 00000510: PUSH2 0x0518 00000513: JUMPI 00000514: PUSH1 0x00 00000516: DUP1 00000517: REVERT 00000518: JUMPDEST 00000519: DUP1 0000051a: CALLDATALOAD 0000051b: SWAP1 0000051c: PUSH1 0x20 0000051e: ADD 0000051f: SWAP2 00000520: DUP5 00000521: PUSH1 0x20 00000523: DUP4 00000524: MUL 00000525: DUP5 00000526: ADD 00000527: GT 00000528: PUSH1 0x01 0000052a: PUSH1 0x20 0000052c: SHL 0000052d: DUP4 0000052e: GT 0000052f: OR 00000530: ISZERO 00000531: PUSH2 0x0539 00000534: JUMPI 00000535: PUSH1 0x00 00000537: DUP1 00000538: REVERT 00000539: JUMPDEST 0000053a: POP 0000053b: SWAP1 0000053c: SWAP3 0000053d: POP 0000053e: SWAP1 0000053f: POP 00000540: PUSH2 0x16f6 00000543: JUMP 00000544: JUMPDEST 00000545: PUSH2 0x0373 00000548: PUSH1 0x04 0000054a: DUP1 0000054b: CALLDATASIZE 0000054c: SUB 0000054d: PUSH1 0x40 0000054f: DUP2 00000550: LT 00000551: ISZERO 00000552: PUSH2 0x055a 00000555: JUMPI 00000556: PUSH1 0x00 00000558: DUP1 00000559: REVERT 0000055a: JUMPDEST 0000055b: DUP2 0000055c: ADD 0000055d: SWAP1 0000055e: PUSH1 0x20 00000560: DUP2 00000561: ADD 00000562: DUP2 00000563: CALLDATALOAD 00000564: PUSH1 0x01 00000566: PUSH1 0x20 00000568: SHL 00000569: DUP2 0000056a: GT 0000056b: ISZERO 0000056c: PUSH2 0x0574 0000056f: JUMPI 00000570: PUSH1 0x00 00000572: DUP1 00000573: REVERT 00000574: JUMPDEST 00000575: DUP3 00000576: ADD 00000577: DUP4 00000578: PUSH1 0x20 0000057a: DUP3 0000057b: ADD 0000057c: GT 0000057d: ISZERO 0000057e: PUSH2 0x0586 00000581: JUMPI 00000582: PUSH1 0x00 00000584: DUP1 00000585: REVERT 00000586: JUMPDEST 00000587: DUP1 00000588: CALLDATALOAD 00000589: SWAP1 0000058a: PUSH1 0x20 0000058c: ADD 0000058d: SWAP2 0000058e: DUP5 0000058f: PUSH1 0x01 00000591: DUP4 00000592: MUL 00000593: DUP5 00000594: ADD 00000595: GT 00000596: PUSH1 0x01 00000598: PUSH1 0x20 0000059a: SHL 0000059b: DUP4 0000059c: GT 0000059d: OR 0000059e: ISZERO 0000059f: PUSH2 0x05a7 000005a2: JUMPI 000005a3: PUSH1 0x00 000005a5: DUP1 000005a6: REVERT 000005a7: JUMPDEST 000005a8: SWAP2 000005a9: SWAP4 000005aa: POP 000005ab: SWAP2 000005ac: POP 000005ad: CALLDATALOAD 000005ae: PUSH2 0x175f 000005b1: JUMP 000005b2: JUMPDEST 000005b3: PUSH2 0x0373 000005b6: PUSH1 0x04 000005b8: DUP1 000005b9: CALLDATASIZE 000005ba: SUB 000005bb: PUSH1 0x60 000005bd: DUP2 000005be: LT 000005bf: ISZERO 000005c0: PUSH2 0x05c8 000005c3: JUMPI 000005c4: PUSH1 0x00 000005c6: DUP1 000005c7: REVERT 000005c8: JUMPDEST 000005c9: PUSH1 0x01 000005cb: PUSH1 0x01 000005cd: PUSH1 0xa0 000005cf: SHL 000005d0: SUB 000005d1: DUP3 000005d2: CALLDATALOAD 000005d3: AND 000005d4: SWAP2 000005d5: SWAP1 000005d6: DUP2 000005d7: ADD 000005d8: SWAP1 000005d9: PUSH1 0x40 000005db: DUP2 000005dc: ADD 000005dd: PUSH1 0x20 000005df: DUP3 000005e0: ADD 000005e1: CALLDATALOAD 000005e2: PUSH1 0x01 000005e4: PUSH1 0x20 000005e6: SHL 000005e7: DUP2 000005e8: GT 000005e9: ISZERO 000005ea: PUSH2 0x05f2 000005ed: JUMPI 000005ee: PUSH1 0x00 000005f0: DUP1 000005f1: REVERT 000005f2: JUMPDEST 000005f3: DUP3 000005f4: ADD 000005f5: DUP4 000005f6: PUSH1 0x20 000005f8: DUP3 000005f9: ADD 000005fa: GT 000005fb: ISZERO 000005fc: PUSH2 0x0604 000005ff: JUMPI 00000600: PUSH1 0x00 00000602: DUP1 00000603: REVERT 00000604: JUMPDEST 00000605: DUP1 00000606: CALLDATALOAD 00000607: SWAP1 00000608: PUSH1 0x20 0000060a: ADD 0000060b: SWAP2 0000060c: DUP5 0000060d: PUSH1 0x20 0000060f: DUP4 00000610: MUL 00000611: DUP5 00000612: ADD 00000613: GT 00000614: PUSH1 0x01 00000616: PUSH1 0x20 00000618: SHL 00000619: DUP4 0000061a: GT 0000061b: OR 0000061c: ISZERO 0000061d: PUSH2 0x0625 00000620: JUMPI 00000621: PUSH1 0x00 00000623: DUP1 00000624: REVERT 00000625: JUMPDEST 00000626: SWAP2 00000627: SWAP4 00000628: SWAP1 00000629: SWAP3 0000062a: SWAP1 0000062b: SWAP2 0000062c: PUSH1 0x20 0000062e: DUP2 0000062f: ADD 00000630: SWAP1 00000631: CALLDATALOAD 00000632: PUSH1 0x01 00000634: PUSH1 0x20 00000636: SHL 00000637: DUP2 00000638: GT 00000639: ISZERO 0000063a: PUSH2 0x0642 0000063d: JUMPI 0000063e: PUSH1 0x00 00000640: DUP1 00000641: REVERT 00000642: JUMPDEST 00000643: DUP3 00000644: ADD 00000645: DUP4 00000646: PUSH1 0x20 00000648: DUP3 00000649: ADD 0000064a: GT 0000064b: ISZERO 0000064c: PUSH2 0x0654 0000064f: JUMPI 00000650: PUSH1 0x00 00000652: DUP1 00000653: REVERT 00000654: JUMPDEST 00000655: DUP1 00000656: CALLDATALOAD 00000657: SWAP1 00000658: PUSH1 0x20 0000065a: ADD 0000065b: SWAP2 0000065c: DUP5 0000065d: PUSH1 0x20 0000065f: DUP4 00000660: MUL 00000661: DUP5 00000662: ADD 00000663: GT 00000664: PUSH1 0x01 00000666: PUSH1 0x20 00000668: SHL 00000669: DUP4 0000066a: GT 0000066b: OR 0000066c: ISZERO 0000066d: PUSH2 0x0675 00000670: JUMPI 00000671: PUSH1 0x00 00000673: DUP1 00000674: REVERT 00000675: JUMPDEST 00000676: POP 00000677: SWAP1 00000678: SWAP3 00000679: POP 0000067a: SWAP1 0000067b: POP 0000067c: PUSH2 0x1821 0000067f: JUMP 00000680: JUMPDEST 00000681: PUSH2 0x073e 00000684: PUSH1 0x04 00000686: DUP1 00000687: CALLDATASIZE 00000688: SUB 00000689: PUSH1 0x40 0000068b: DUP2 0000068c: LT 0000068d: ISZERO 0000068e: PUSH2 0x0696 00000691: JUMPI 00000692: PUSH1 0x00 00000694: DUP1 00000695: REVERT 00000696: JUMPDEST 00000697: DUP2 00000698: ADD 00000699: SWAP1 0000069a: PUSH1 0x20 0000069c: DUP2 0000069d: ADD 0000069e: DUP2 0000069f: CALLDATALOAD 000006a0: PUSH1 0x01 000006a2: PUSH1 0x20 000006a4: SHL 000006a5: DUP2 000006a6: GT 000006a7: ISZERO 000006a8: PUSH2 0x06b0 000006ab: JUMPI 000006ac: PUSH1 0x00 000006ae: DUP1 000006af: REVERT 000006b0: JUMPDEST 000006b1: DUP3 000006b2: ADD 000006b3: DUP4 000006b4: PUSH1 0x20 000006b6: DUP3 000006b7: ADD 000006b8: GT 000006b9: ISZERO 000006ba: PUSH2 0x06c2 000006bd: JUMPI 000006be: PUSH1 0x00 000006c0: DUP1 000006c1: REVERT 000006c2: JUMPDEST 000006c3: DUP1 000006c4: CALLDATALOAD 000006c5: SWAP1 000006c6: PUSH1 0x20 000006c8: ADD 000006c9: SWAP2 000006ca: DUP5 000006cb: PUSH1 0x20 000006cd: DUP4 000006ce: MUL 000006cf: DUP5 000006d0: ADD 000006d1: GT 000006d2: PUSH1 0x01 000006d4: PUSH1 0x20 000006d6: SHL 000006d7: DUP4 000006d8: GT 000006d9: OR 000006da: ISZERO 000006db: PUSH2 0x06e3 000006de: JUMPI 000006df: PUSH1 0x00 000006e1: DUP1 000006e2: REVERT 000006e3: JUMPDEST 000006e4: SWAP2 000006e5: SWAP4 000006e6: SWAP1 000006e7: SWAP3 000006e8: SWAP1 000006e9: SWAP2 000006ea: PUSH1 0x20 000006ec: DUP2 000006ed: ADD 000006ee: SWAP1 000006ef: CALLDATALOAD 000006f0: PUSH1 0x01 000006f2: PUSH1 0x20 000006f4: SHL 000006f5: DUP2 000006f6: GT 000006f7: ISZERO 000006f8: PUSH2 0x0700 000006fb: JUMPI 000006fc: PUSH1 0x00 000006fe: DUP1 000006ff: REVERT 00000700: JUMPDEST 00000701: DUP3 00000702: ADD 00000703: DUP4 00000704: PUSH1 0x20 00000706: DUP3 00000707: ADD 00000708: GT 00000709: ISZERO 0000070a: PUSH2 0x0712 0000070d: JUMPI 0000070e: PUSH1 0x00 00000710: DUP1 00000711: REVERT 00000712: JUMPDEST 00000713: DUP1 00000714: CALLDATALOAD 00000715: SWAP1 00000716: PUSH1 0x20 00000718: ADD 00000719: SWAP2 0000071a: DUP5 0000071b: PUSH1 0x20 0000071d: DUP4 0000071e: MUL 0000071f: DUP5 00000720: ADD 00000721: GT 00000722: PUSH1 0x01 00000724: PUSH1 0x20 00000726: SHL 00000727: DUP4 00000728: GT 00000729: OR 0000072a: ISZERO 0000072b: PUSH2 0x0733 0000072e: JUMPI 0000072f: PUSH1 0x00 00000731: DUP1 00000732: REVERT 00000733: JUMPDEST 00000734: POP 00000735: SWAP1 00000736: SWAP3 00000737: POP 00000738: SWAP1 00000739: POP 0000073a: PUSH2 0x1b49 0000073d: JUMP 0000073e: JUMPDEST 0000073f: PUSH1 0x40 00000741: DUP1 00000742: MLOAD 00000743: PUSH1 0x20 00000745: DUP1 00000746: DUP3 00000747: MSTORE 00000748: DUP4 00000749: MLOAD 0000074a: DUP2 0000074b: DUP4 0000074c: ADD 0000074d: MSTORE 0000074e: DUP4 0000074f: MLOAD 00000750: SWAP2 00000751: SWAP3 00000752: DUP4 00000753: SWAP3 00000754: SWAP1 00000755: DUP4 00000756: ADD 00000757: SWAP2 00000758: DUP6 00000759: DUP2 0000075a: ADD 0000075b: SWAP2 0000075c: MUL 0000075d: DUP1 0000075e: DUP4 0000075f: DUP4 00000760: PUSH1 0x00 00000762: JUMPDEST 00000763: DUP4 00000764: DUP2 00000765: LT 00000766: ISZERO 00000767: PUSH2 0x077a 0000076a: JUMPI 0000076b: DUP2 0000076c: DUP2 0000076d: ADD 0000076e: MLOAD 0000076f: DUP4 00000770: DUP3 00000771: ADD 00000772: MSTORE 00000773: PUSH1 0x20 00000775: ADD 00000776: PUSH2 0x0762 00000779: JUMP 0000077a: JUMPDEST 0000077b: POP 0000077c: POP 0000077d: POP 0000077e: POP 0000077f: SWAP1 00000780: POP 00000781: ADD 00000782: SWAP3 00000783: POP 00000784: POP 00000785: POP 00000786: PUSH1 0x40 00000788: MLOAD 00000789: DUP1 0000078a: SWAP2 0000078b: SUB 0000078c: SWAP1 0000078d: RETURN 0000078e: JUMPDEST 0000078f: PUSH2 0x0373 00000792: PUSH1 0x04 00000794: DUP1 00000795: CALLDATASIZE 00000796: SUB 00000797: PUSH1 0x60 00000799: DUP2 0000079a: LT 0000079b: ISZERO 0000079c: PUSH2 0x07a4 0000079f: JUMPI 000007a0: PUSH1 0x00 000007a2: DUP1 000007a3: REVERT 000007a4: JUMPDEST 000007a5: DUP2 000007a6: CALLDATALOAD 000007a7: SWAP2 000007a8: SWAP1 000007a9: DUP2 000007aa: ADD 000007ab: SWAP1 000007ac: PUSH1 0x40 000007ae: DUP2 000007af: ADD 000007b0: PUSH1 0x20 000007b2: DUP3 000007b3: ADD 000007b4: CALLDATALOAD 000007b5: PUSH1 0x01 000007b7: PUSH1 0x20 000007b9: SHL 000007ba: DUP2 000007bb: GT 000007bc: ISZERO 000007bd: PUSH2 0x07c5 000007c0: JUMPI 000007c1: PUSH1 0x00 000007c3: DUP1 000007c4: REVERT 000007c5: JUMPDEST 000007c6: DUP3 000007c7: ADD 000007c8: DUP4 000007c9: PUSH1 0x20 000007cb: DUP3 000007cc: ADD 000007cd: GT 000007ce: ISZERO 000007cf: PUSH2 0x07d7 000007d2: JUMPI 000007d3: PUSH1 0x00 000007d5: DUP1 000007d6: REVERT 000007d7: JUMPDEST 000007d8: DUP1 000007d9: CALLDATALOAD 000007da: SWAP1 000007db: PUSH1 0x20 000007dd: ADD 000007de: SWAP2 000007df: DUP5 000007e0: PUSH1 0x20 000007e2: DUP4 000007e3: MUL 000007e4: DUP5 000007e5: ADD 000007e6: GT 000007e7: PUSH1 0x01 000007e9: PUSH1 0x20 000007eb: SHL 000007ec: DUP4 000007ed: GT 000007ee: OR 000007ef: ISZERO 000007f0: PUSH2 0x07f8 000007f3: JUMPI 000007f4: PUSH1 0x00 000007f6: DUP1 000007f7: REVERT 000007f8: JUMPDEST 000007f9: SWAP2 000007fa: SWAP4 000007fb: SWAP1 000007fc: SWAP3 000007fd: SWAP1 000007fe: SWAP2 000007ff: PUSH1 0x20 00000801: DUP2 00000802: ADD 00000803: SWAP1 00000804: CALLDATALOAD 00000805: PUSH1 0x01 00000807: PUSH1 0x20 00000809: SHL 0000080a: DUP2 0000080b: GT 0000080c: ISZERO 0000080d: PUSH2 0x0815 00000810: JUMPI 00000811: PUSH1 0x00 00000813: DUP1 00000814: REVERT 00000815: JUMPDEST 00000816: DUP3 00000817: ADD 00000818: DUP4 00000819: PUSH1 0x20 0000081b: DUP3 0000081c: ADD 0000081d: GT 0000081e: ISZERO 0000081f: PUSH2 0x0827 00000822: JUMPI 00000823: PUSH1 0x00 00000825: DUP1 00000826: REVERT 00000827: JUMPDEST 00000828: DUP1 00000829: CALLDATALOAD 0000082a: SWAP1 0000082b: PUSH1 0x20 0000082d: ADD 0000082e: SWAP2 0000082f: DUP5 00000830: PUSH1 0x01 00000832: DUP4 00000833: MUL 00000834: DUP5 00000835: ADD 00000836: GT 00000837: PUSH1 0x01 00000839: PUSH1 0x20 0000083b: SHL 0000083c: DUP4 0000083d: GT 0000083e: OR 0000083f: ISZERO 00000840: PUSH2 0x0848 00000843: JUMPI 00000844: PUSH1 0x00 00000846: DUP1 00000847: REVERT 00000848: JUMPDEST 00000849: POP 0000084a: SWAP1 0000084b: SWAP3 0000084c: POP 0000084d: SWAP1 0000084e: POP 0000084f: PUSH2 0x1c94 00000852: JUMP 00000853: JUMPDEST 00000854: PUSH2 0x01f4 00000857: PUSH1 0x04 00000859: DUP1 0000085a: CALLDATASIZE 0000085b: SUB 0000085c: PUSH1 0x60 0000085e: DUP2 0000085f: LT 00000860: ISZERO 00000861: PUSH2 0x0869 00000864: JUMPI 00000865: PUSH1 0x00 00000867: DUP1 00000868: REVERT 00000869: JUMPDEST 0000086a: POP 0000086b: PUSH1 0x01 0000086d: PUSH1 0x01 0000086f: PUSH1 0xa0 00000871: SHL 00000872: SUB 00000873: DUP2 00000874: CALLDATALOAD 00000875: DUP2 00000876: AND 00000877: SWAP2 00000878: PUSH1 0x20 0000087a: DUP2 0000087b: ADD 0000087c: CALLDATALOAD 0000087d: SWAP1 0000087e: SWAP2 0000087f: AND 00000880: SWAP1 00000881: PUSH1 0x40 00000883: ADD 00000884: CALLDATALOAD 00000885: PUSH2 0x1f3b 00000888: JUMP 00000889: JUMPDEST 0000088a: PUSH2 0x0373 0000088d: PUSH1 0x04 0000088f: DUP1 00000890: CALLDATASIZE 00000891: SUB 00000892: PUSH1 0x80 00000894: DUP2 00000895: LT 00000896: ISZERO 00000897: PUSH2 0x089f 0000089a: JUMPI 0000089b: PUSH1 0x00 0000089d: DUP1 0000089e: REVERT 0000089f: JUMPDEST 000008a0: PUSH1 0x01 000008a2: PUSH1 0x01 000008a4: PUSH1 0xa0 000008a6: SHL 000008a7: SUB 000008a8: DUP3 000008a9: CALLDATALOAD 000008aa: AND 000008ab: SWAP2 000008ac: SWAP1 000008ad: DUP2 000008ae: ADD 000008af: SWAP1 000008b0: PUSH1 0x40 000008b2: DUP2 000008b3: ADD 000008b4: PUSH1 0x20 000008b6: DUP3 000008b7: ADD 000008b8: CALLDATALOAD 000008b9: PUSH1 0x01 000008bb: PUSH1 0x20 000008bd: SHL 000008be: DUP2 000008bf: GT 000008c0: ISZERO 000008c1: PUSH2 0x08c9 000008c4: JUMPI 000008c5: PUSH1 0x00 000008c7: DUP1 000008c8: REVERT 000008c9: JUMPDEST 000008ca: DUP3 000008cb: ADD 000008cc: DUP4 000008cd: PUSH1 0x20 000008cf: DUP3 000008d0: ADD 000008d1: GT 000008d2: ISZERO 000008d3: PUSH2 0x08db 000008d6: JUMPI 000008d7: PUSH1 0x00 000008d9: DUP1 000008da: REVERT 000008db: JUMPDEST 000008dc: DUP1 000008dd: CALLDATALOAD 000008de: SWAP1 000008df: PUSH1 0x20 000008e1: ADD 000008e2: SWAP2 000008e3: DUP5 000008e4: PUSH1 0x20 000008e6: DUP4 000008e7: MUL 000008e8: DUP5 000008e9: ADD 000008ea: GT 000008eb: PUSH1 0x01 000008ed: PUSH1 0x20 000008ef: SHL 000008f0: DUP4 000008f1: GT 000008f2: OR 000008f3: ISZERO 000008f4: PUSH2 0x08fc 000008f7: JUMPI 000008f8: PUSH1 0x00 000008fa: DUP1 000008fb: REVERT 000008fc: JUMPDEST 000008fd: SWAP2 000008fe: SWAP4 000008ff: SWAP1 00000900: SWAP3 00000901: SWAP1 00000902: SWAP2 00000903: PUSH1 0x20 00000905: DUP2 00000906: ADD 00000907: SWAP1 00000908: CALLDATALOAD 00000909: PUSH1 0x01 0000090b: PUSH1 0x20 0000090d: SHL 0000090e: DUP2 0000090f: GT 00000910: ISZERO 00000911: PUSH2 0x0919 00000914: JUMPI 00000915: PUSH1 0x00 00000917: DUP1 00000918: REVERT 00000919: JUMPDEST 0000091a: DUP3 0000091b: ADD 0000091c: DUP4 0000091d: PUSH1 0x20 0000091f: DUP3 00000920: ADD 00000921: GT 00000922: ISZERO 00000923: PUSH2 0x092b 00000926: JUMPI 00000927: PUSH1 0x00 00000929: DUP1 0000092a: REVERT 0000092b: JUMPDEST 0000092c: DUP1 0000092d: CALLDATALOAD 0000092e: SWAP1 0000092f: PUSH1 0x20 00000931: ADD 00000932: SWAP2 00000933: DUP5 00000934: PUSH1 0x20 00000936: DUP4 00000937: MUL 00000938: DUP5 00000939: ADD 0000093a: GT 0000093b: PUSH1 0x01 0000093d: PUSH1 0x20 0000093f: SHL 00000940: DUP4 00000941: GT 00000942: OR 00000943: ISZERO 00000944: PUSH2 0x094c 00000947: JUMPI 00000948: PUSH1 0x00 0000094a: DUP1 0000094b: REVERT 0000094c: JUMPDEST 0000094d: SWAP2 0000094e: SWAP4 0000094f: SWAP1 00000950: SWAP3 00000951: SWAP1 00000952: SWAP2 00000953: PUSH1 0x20 00000955: DUP2 00000956: ADD 00000957: SWAP1 00000958: CALLDATALOAD 00000959: PUSH1 0x01 0000095b: PUSH1 0x20 0000095d: SHL 0000095e: DUP2 0000095f: GT 00000960: ISZERO 00000961: PUSH2 0x0969 00000964: JUMPI 00000965: PUSH1 0x00 00000967: DUP1 00000968: REVERT 00000969: JUMPDEST 0000096a: DUP3 0000096b: ADD 0000096c: DUP4 0000096d: PUSH1 0x20 0000096f: DUP3 00000970: ADD 00000971: GT 00000972: ISZERO 00000973: PUSH2 0x097b 00000976: JUMPI 00000977: PUSH1 0x00 00000979: DUP1 0000097a: REVERT 0000097b: JUMPDEST 0000097c: DUP1 0000097d: CALLDATALOAD 0000097e: SWAP1 0000097f: PUSH1 0x20 00000981: ADD 00000982: SWAP2 00000983: DUP5 00000984: PUSH1 0x20 00000986: DUP4 00000987: MUL 00000988: DUP5 00000989: ADD 0000098a: GT 0000098b: PUSH1 0x01 0000098d: PUSH1 0x20 0000098f: SHL 00000990: DUP4 00000991: GT 00000992: OR 00000993: ISZERO 00000994: PUSH2 0x099c 00000997: JUMPI 00000998: PUSH1 0x00 0000099a: DUP1 0000099b: REVERT 0000099c: JUMPDEST 0000099d: POP 0000099e: SWAP1 0000099f: SWAP3 000009a0: POP 000009a1: SWAP1 000009a2: POP 000009a3: PUSH2 0x1f6d 000009a6: JUMP 000009a7: JUMPDEST 000009a8: PUSH2 0x022d 000009ab: PUSH1 0x04 000009ad: DUP1 000009ae: CALLDATASIZE 000009af: SUB 000009b0: PUSH1 0x20 000009b2: DUP2 000009b3: LT 000009b4: ISZERO 000009b5: PUSH2 0x09bd 000009b8: JUMPI 000009b9: PUSH1 0x00 000009bb: DUP1 000009bc: REVERT 000009bd: JUMPDEST 000009be: POP 000009bf: CALLDATALOAD 000009c0: PUSH2 0x2187 000009c3: JUMP 000009c4: JUMPDEST 000009c5: PUSH2 0x09e1 000009c8: PUSH1 0x04 000009ca: DUP1 000009cb: CALLDATASIZE 000009cc: SUB 000009cd: PUSH1 0x20 000009cf: DUP2 000009d0: LT 000009d1: ISZERO 000009d2: PUSH2 0x09da 000009d5: JUMPI 000009d6: PUSH1 0x00 000009d8: DUP1 000009d9: REVERT 000009da: JUMPDEST 000009db: POP 000009dc: CALLDATALOAD 000009dd: PUSH2 0x21a8 000009e0: JUMP 000009e1: JUMPDEST 000009e2: PUSH1 0x40 000009e4: DUP1 000009e5: MLOAD 000009e6: PUSH1 0x01 000009e8: PUSH1 0x01 000009ea: PUSH1 0xa0 000009ec: SHL 000009ed: SUB 000009ee: SWAP1 000009ef: SWAP3 000009f0: AND 000009f1: DUP3 000009f2: MSTORE 000009f3: MLOAD 000009f4: SWAP1 000009f5: DUP2 000009f6: SWAP1 000009f7: SUB 000009f8: PUSH1 0x20 000009fa: ADD 000009fb: SWAP1 000009fc: RETURN 000009fd: JUMPDEST 000009fe: PUSH2 0x01f4 00000a01: PUSH1 0x04 00000a03: DUP1 00000a04: CALLDATASIZE 00000a05: SUB 00000a06: PUSH1 0x20 00000a08: DUP2 00000a09: LT 00000a0a: ISZERO 00000a0b: PUSH2 0x0a13 00000a0e: JUMPI 00000a0f: PUSH1 0x00 00000a11: DUP1 00000a12: REVERT 00000a13: JUMPDEST 00000a14: POP 00000a15: CALLDATALOAD 00000a16: PUSH2 0x21c3 00000a19: JUMP 00000a1a: JUMPDEST 00000a1b: PUSH2 0x022d 00000a1e: PUSH1 0x04 00000a20: DUP1 00000a21: CALLDATASIZE 00000a22: SUB 00000a23: PUSH1 0x20 00000a25: DUP2 00000a26: LT 00000a27: ISZERO 00000a28: PUSH2 0x0a30 00000a2b: JUMPI 00000a2c: PUSH1 0x00 00000a2e: DUP1 00000a2f: REVERT 00000a30: JUMPDEST 00000a31: POP 00000a32: CALLDATALOAD 00000a33: PUSH2 0x21d9 00000a36: JUMP 00000a37: JUMPDEST 00000a38: PUSH2 0x0373 00000a3b: PUSH1 0x04 00000a3d: DUP1 00000a3e: CALLDATASIZE 00000a3f: SUB 00000a40: PUSH1 0x40 00000a42: DUP2 00000a43: LT 00000a44: ISZERO 00000a45: PUSH2 0x0a4d 00000a48: JUMPI 00000a49: PUSH1 0x00 00000a4b: DUP1 00000a4c: REVERT 00000a4d: JUMPDEST 00000a4e: POP 00000a4f: DUP1 00000a50: CALLDATALOAD 00000a51: SWAP1 00000a52: PUSH1 0x20 00000a54: ADD 00000a55: CALLDATALOAD 00000a56: PUSH2 0x21f9 00000a59: JUMP 00000a5a: JUMPDEST 00000a5b: PUSH2 0x09e1 00000a5e: PUSH2 0x233f 00000a61: JUMP 00000a62: JUMPDEST 00000a63: PUSH2 0x01f4 00000a66: PUSH1 0x04 00000a68: DUP1 00000a69: CALLDATASIZE 00000a6a: SUB 00000a6b: PUSH1 0x20 00000a6d: DUP2 00000a6e: LT 00000a6f: ISZERO 00000a70: PUSH2 0x0a78 00000a73: JUMPI 00000a74: PUSH1 0x00 00000a76: DUP1 00000a77: REVERT 00000a78: JUMPDEST 00000a79: POP 00000a7a: CALLDATALOAD 00000a7b: PUSH2 0x234e 00000a7e: JUMP 00000a7f: JUMPDEST 00000a80: PUSH2 0x0373 00000a83: PUSH1 0x04 00000a85: DUP1 00000a86: CALLDATASIZE 00000a87: SUB 00000a88: PUSH1 0x40 00000a8a: DUP2 00000a8b: LT 00000a8c: ISZERO 00000a8d: PUSH2 0x0a95 00000a90: JUMPI 00000a91: PUSH1 0x00 00000a93: DUP1 00000a94: REVERT 00000a95: JUMPDEST 00000a96: POP 00000a97: PUSH1 0x01 00000a99: PUSH1 0x01 00000a9b: PUSH1 0xa0 00000a9d: SHL 00000a9e: SUB 00000a9f: DUP2 00000aa0: CALLDATALOAD 00000aa1: AND 00000aa2: SWAP1 00000aa3: PUSH1 0x20 00000aa5: ADD 00000aa6: CALLDATALOAD 00000aa7: ISZERO 00000aa8: ISZERO 00000aa9: PUSH2 0x235a 00000aac: JUMP 00000aad: JUMPDEST 00000aae: PUSH2 0x0373 00000ab1: PUSH1 0x04 00000ab3: DUP1 00000ab4: CALLDATASIZE 00000ab5: SUB 00000ab6: PUSH1 0x20 00000ab8: DUP2 00000ab9: LT 00000aba: ISZERO 00000abb: PUSH2 0x0ac3 00000abe: JUMPI 00000abf: PUSH1 0x00 00000ac1: DUP1 00000ac2: REVERT 00000ac3: JUMPDEST 00000ac4: DUP2 00000ac5: ADD 00000ac6: SWAP1 00000ac7: PUSH1 0x20 00000ac9: DUP2 00000aca: ADD 00000acb: DUP2 00000acc: CALLDATALOAD 00000acd: PUSH1 0x01 00000acf: PUSH1 0x20 00000ad1: SHL 00000ad2: DUP2 00000ad3: GT 00000ad4: ISZERO 00000ad5: PUSH2 0x0add 00000ad8: JUMPI 00000ad9: PUSH1 0x00 00000adb: DUP1 00000adc: REVERT 00000add: JUMPDEST 00000ade: DUP3 00000adf: ADD 00000ae0: DUP4 00000ae1: PUSH1 0x20 00000ae3: DUP3 00000ae4: ADD 00000ae5: GT 00000ae6: ISZERO 00000ae7: PUSH2 0x0aef 00000aea: JUMPI 00000aeb: PUSH1 0x00 00000aed: DUP1 00000aee: REVERT 00000aef: JUMPDEST 00000af0: DUP1 00000af1: CALLDATALOAD 00000af2: SWAP1 00000af3: PUSH1 0x20 00000af5: ADD 00000af6: SWAP2 00000af7: DUP5 00000af8: PUSH1 0x20 00000afa: DUP4 00000afb: MUL 00000afc: DUP5 00000afd: ADD 00000afe: GT 00000aff: PUSH1 0x01 00000b01: PUSH1 0x20 00000b03: SHL 00000b04: DUP4 00000b05: GT 00000b06: OR 00000b07: ISZERO 00000b08: PUSH2 0x0b10 00000b0b: JUMPI 00000b0c: PUSH1 0x00 00000b0e: DUP1 00000b0f: REVERT 00000b10: JUMPDEST 00000b11: POP 00000b12: SWAP1 00000b13: SWAP3 00000b14: POP 00000b15: SWAP1 00000b16: POP 00000b17: PUSH2 0x23c8 00000b1a: JUMP 00000b1b: JUMPDEST 00000b1c: PUSH2 0x022d 00000b1f: PUSH1 0x04 00000b21: DUP1 00000b22: CALLDATASIZE 00000b23: SUB 00000b24: PUSH1 0x20 00000b26: DUP2 00000b27: LT 00000b28: ISZERO 00000b29: PUSH2 0x0b31 00000b2c: JUMPI 00000b2d: PUSH1 0x00 00000b2f: DUP1 00000b30: REVERT 00000b31: JUMPDEST 00000b32: POP 00000b33: CALLDATALOAD 00000b34: PUSH2 0x2485 00000b37: JUMP 00000b38: JUMPDEST 00000b39: PUSH2 0x01f4 00000b3c: PUSH1 0x04 00000b3e: DUP1 00000b3f: CALLDATASIZE 00000b40: SUB 00000b41: PUSH1 0x40 00000b43: DUP2 00000b44: LT 00000b45: ISZERO 00000b46: PUSH2 0x0b4e 00000b49: JUMPI 00000b4a: PUSH1 0x00 00000b4c: DUP1 00000b4d: REVERT 00000b4e: JUMPDEST 00000b4f: DUP2 00000b50: ADD 00000b51: SWAP1 00000b52: PUSH1 0x20 00000b54: DUP2 00000b55: ADD 00000b56: DUP2 00000b57: CALLDATALOAD 00000b58: PUSH1 0x01 00000b5a: PUSH1 0x20 00000b5c: SHL 00000b5d: DUP2 00000b5e: GT 00000b5f: ISZERO 00000b60: PUSH2 0x0b68 00000b63: JUMPI 00000b64: PUSH1 0x00 00000b66: DUP1 00000b67: REVERT 00000b68: JUMPDEST 00000b69: DUP3 00000b6a: ADD 00000b6b: DUP4 00000b6c: PUSH1 0x20 00000b6e: DUP3 00000b6f: ADD 00000b70: GT 00000b71: ISZERO 00000b72: PUSH2 0x0b7a 00000b75: JUMPI 00000b76: PUSH1 0x00 00000b78: DUP1 00000b79: REVERT 00000b7a: JUMPDEST 00000b7b: DUP1 00000b7c: CALLDATALOAD 00000b7d: SWAP1 00000b7e: PUSH1 0x20 00000b80: ADD 00000b81: SWAP2 00000b82: DUP5 00000b83: PUSH1 0x01 00000b85: DUP4 00000b86: MUL 00000b87: DUP5 00000b88: ADD 00000b89: GT 00000b8a: PUSH1 0x01 00000b8c: PUSH1 0x20 00000b8e: SHL 00000b8f: DUP4 00000b90: GT 00000b91: OR 00000b92: ISZERO 00000b93: PUSH2 0x0b9b 00000b96: JUMPI 00000b97: PUSH1 0x00 00000b99: DUP1 00000b9a: REVERT 00000b9b: JUMPDEST 00000b9c: SWAP2 00000b9d: SWAP4 00000b9e: POP 00000b9f: SWAP2 00000ba0: POP 00000ba1: CALLDATALOAD 00000ba2: ISZERO 00000ba3: ISZERO 00000ba4: PUSH2 0x248f 00000ba7: JUMP 00000ba8: JUMPDEST 00000ba9: PUSH2 0x022d 00000bac: PUSH1 0x04 00000bae: DUP1 00000baf: CALLDATASIZE 00000bb0: SUB 00000bb1: PUSH1 0x20 00000bb3: DUP2 00000bb4: LT 00000bb5: ISZERO 00000bb6: PUSH2 0x0bbe 00000bb9: JUMPI 00000bba: PUSH1 0x00 00000bbc: DUP1 00000bbd: REVERT 00000bbe: JUMPDEST 00000bbf: POP 00000bc0: CALLDATALOAD 00000bc1: PUSH2 0x259d 00000bc4: JUMP 00000bc5: JUMPDEST 00000bc6: PUSH2 0x022d 00000bc9: PUSH1 0x04 00000bcb: DUP1 00000bcc: CALLDATASIZE 00000bcd: SUB 00000bce: PUSH1 0x40 00000bd0: DUP2 00000bd1: LT 00000bd2: ISZERO 00000bd3: PUSH2 0x0bdb 00000bd6: JUMPI 00000bd7: PUSH1 0x00 00000bd9: DUP1 00000bda: REVERT 00000bdb: JUMPDEST 00000bdc: POP 00000bdd: PUSH1 0x01 00000bdf: PUSH1 0x01 00000be1: PUSH1 0xa0 00000be3: SHL 00000be4: SUB 00000be5: DUP2 00000be6: CALLDATALOAD 00000be7: DUP2 00000be8: AND 00000be9: SWAP2 00000bea: PUSH1 0x20 00000bec: ADD 00000bed: CALLDATALOAD 00000bee: AND 00000bef: PUSH2 0x25a9 00000bf2: JUMP 00000bf3: JUMPDEST 00000bf4: PUSH2 0x0373 00000bf7: PUSH1 0x04 00000bf9: DUP1 00000bfa: CALLDATASIZE 00000bfb: SUB 00000bfc: PUSH1 0xa0 00000bfe: DUP2 00000bff: LT 00000c00: ISZERO 00000c01: PUSH2 0x0c09 00000c04: JUMPI 00000c05: PUSH1 0x00 00000c07: DUP1 00000c08: REVERT 00000c09: JUMPDEST 00000c0a: PUSH1 0x01 00000c0c: PUSH1 0x01 00000c0e: PUSH1 0xa0 00000c10: SHL 00000c11: SUB 00000c12: DUP3 00000c13: CALLDATALOAD 00000c14: DUP2 00000c15: AND 00000c16: SWAP3 00000c17: PUSH1 0x20 00000c19: DUP2 00000c1a: ADD 00000c1b: CALLDATALOAD 00000c1c: SWAP1 00000c1d: SWAP2 00000c1e: AND 00000c1f: SWAP2 00000c20: PUSH1 0x40 00000c22: DUP3 00000c23: ADD 00000c24: CALLDATALOAD 00000c25: SWAP2 00000c26: PUSH1 0x60 00000c28: DUP2 00000c29: ADD 00000c2a: CALLDATALOAD 00000c2b: SWAP2 00000c2c: DUP2 00000c2d: ADD 00000c2e: SWAP1 00000c2f: PUSH1 0xa0 00000c31: DUP2 00000c32: ADD 00000c33: PUSH1 0x80 00000c35: DUP3 00000c36: ADD 00000c37: CALLDATALOAD 00000c38: PUSH1 0x01 00000c3a: PUSH1 0x20 00000c3c: SHL 00000c3d: DUP2 00000c3e: GT 00000c3f: ISZERO 00000c40: PUSH2 0x0c48 00000c43: JUMPI 00000c44: PUSH1 0x00 00000c46: DUP1 00000c47: REVERT 00000c48: JUMPDEST 00000c49: DUP3 00000c4a: ADD 00000c4b: DUP4 00000c4c: PUSH1 0x20 00000c4e: DUP3 00000c4f: ADD 00000c50: GT 00000c51: ISZERO 00000c52: PUSH2 0x0c5a 00000c55: JUMPI 00000c56: PUSH1 0x00 00000c58: DUP1 00000c59: REVERT 00000c5a: JUMPDEST 00000c5b: DUP1 00000c5c: CALLDATALOAD 00000c5d: SWAP1 00000c5e: PUSH1 0x20 00000c60: ADD 00000c61: SWAP2 00000c62: DUP5 00000c63: PUSH1 0x01 00000c65: DUP4 00000c66: MUL 00000c67: DUP5 00000c68: ADD 00000c69: GT 00000c6a: PUSH1 0x01 00000c6c: PUSH1 0x20 00000c6e: SHL 00000c6f: DUP4 00000c70: GT 00000c71: OR 00000c72: ISZERO 00000c73: PUSH2 0x0c7b 00000c76: JUMPI 00000c77: PUSH1 0x00 00000c79: DUP1 00000c7a: REVERT 00000c7b: JUMPDEST 00000c7c: POP 00000c7d: SWAP1 00000c7e: SWAP3 00000c7f: POP 00000c80: SWAP1 00000c81: POP 00000c82: PUSH2 0x25d7 00000c85: JUMP 00000c86: JUMPDEST 00000c87: PUSH1 0x00 00000c89: PUSH2 0x0c91 00000c8c: DUP3 00000c8d: PUSH2 0x2187 00000c90: JUMP 00000c91: JUMPDEST 00000c92: ISZERO 00000c93: PUSH2 0x0ccb 00000c96: JUMPI 00000c97: PUSH1 0x00 00000c99: DUP3 00000c9a: DUP2 00000c9b: MSTORE 00000c9c: PUSH1 0x04 00000c9e: PUSH1 0x20 00000ca0: MSTORE 00000ca1: PUSH1 0x40 00000ca3: SWAP1 00000ca4: KECCAK256 00000ca5: SLOAD 00000ca6: PUSH1 0x01 00000ca8: PUSH1 0x01 00000caa: PUSH1 0xa0 00000cac: SHL 00000cad: SUB 00000cae: DUP5 00000caf: DUP2 00000cb0: AND 00000cb1: SWAP2 00000cb2: AND 00000cb3: EQ 00000cb4: PUSH2 0x0cbe 00000cb7: JUMPI 00000cb8: PUSH1 0x00 00000cba: PUSH2 0x0cc1 00000cbd: JUMP 00000cbe: JUMPDEST 00000cbf: PUSH1 0x01 00000cc1: JUMPDEST 00000cc2: PUSH1 0xff 00000cc4: AND 00000cc5: SWAP1 00000cc6: POP 00000cc7: PUSH2 0x0cf0 00000cca: JUMP 00000ccb: JUMPDEST 00000ccc: POP 00000ccd: PUSH1 0x00 00000ccf: DUP2 00000cd0: DUP2 00000cd1: MSTORE 00000cd2: PUSH1 0x02 00000cd4: PUSH1 0x20 00000cd6: SWAP1 00000cd7: DUP2 00000cd8: MSTORE 00000cd9: PUSH1 0x40 00000cdb: DUP1 00000cdc: DUP4 00000cdd: KECCAK256 00000cde: PUSH1 0x01 00000ce0: PUSH1 0x01 00000ce2: PUSH1 0xa0 00000ce4: SHL 00000ce5: SUB 00000ce6: DUP7 00000ce7: AND 00000ce8: DUP5 00000ce9: MSTORE 00000cea: SWAP1 00000ceb: SWAP2 00000cec: MSTORE 00000ced: SWAP1 00000cee: KECCAK256 00000cef: SLOAD 00000cf0: JUMPDEST 00000cf1: SWAP3 00000cf2: SWAP2 00000cf3: POP 00000cf4: POP 00000cf5: JUMP 00000cf6: JUMPDEST 00000cf7: PUSH1 0x00 00000cf9: PUSH1 0x01 00000cfb: PUSH1 0x01 00000cfd: PUSH1 0xe0 00000cff: SHL 00000d00: SUB 00000d01: NOT 00000d02: DUP3 00000d03: AND 00000d04: PUSH4 0x01ffc9a7 00000d09: PUSH1 0xe0 00000d0b: SHL 00000d0c: EQ 00000d0d: DUP1 00000d0e: PUSH2 0x0d27 00000d11: JUMPI 00000d12: POP 00000d13: PUSH1 0x01 00000d15: PUSH1 0x01 00000d17: PUSH1 0xe0 00000d19: SHL 00000d1a: SUB 00000d1b: NOT 00000d1c: DUP3 00000d1d: AND 00000d1e: PUSH4 0x6cdb3d13 00000d23: PUSH1 0xe1 00000d25: SHL 00000d26: EQ 00000d27: JUMPDEST 00000d28: ISZERO 00000d29: PUSH2 0x0d34 00000d2c: JUMPI 00000d2d: POP 00000d2e: PUSH1 0x01 00000d30: PUSH2 0x0d38 00000d33: JUMP 00000d34: JUMPDEST 00000d35: POP 00000d36: PUSH1 0x00 00000d38: JUMPDEST 00000d39: SWAP2 00000d3a: SWAP1 00000d3b: POP 00000d3c: JUMP 00000d3d: JUMPDEST 00000d3e: PUSH1 0x05 00000d40: PUSH1 0x20 00000d42: MSTORE 00000d43: PUSH1 0x00 00000d45: SWAP1 00000d46: DUP2 00000d47: MSTORE 00000d48: PUSH1 0x40 00000d4a: SWAP1 00000d4b: KECCAK256 00000d4c: SLOAD 00000d4d: DUP2 00000d4e: JUMP 00000d4f: JUMPDEST 00000d50: CALLER 00000d51: PUSH1 0x00 00000d53: SWAP1 00000d54: DUP2 00000d55: MSTORE 00000d56: PUSH1 0x09 00000d58: PUSH1 0x20 00000d5a: MSTORE 00000d5b: PUSH1 0x40 00000d5d: SWAP1 00000d5e: KECCAK256 00000d5f: SLOAD 00000d60: PUSH1 0xff 00000d62: AND 00000d63: PUSH2 0x0da1 00000d66: JUMPI 00000d67: PUSH1 0x40 00000d69: DUP1 00000d6a: MLOAD 00000d6b: PUSH3 0x461bcd 00000d6f: PUSH1 0xe5 00000d71: SHL 00000d72: DUP2 00000d73: MSTORE 00000d74: PUSH1 0x20 00000d76: PUSH1 0x04 00000d78: DUP3 00000d79: ADD 00000d7a: MSTORE 00000d7b: PUSH1 0x1b 00000d7d: PUSH1 0x24 00000d7f: DUP3 00000d80: ADD 00000d81: MSTORE 00000d82: PUSH1 0x00 00000d84: DUP1 00000d85: MLOAD 00000d86: PUSH1 0x20 00000d88: PUSH2 0x2d13 00000d8b: DUP4 00000d8c: CODECOPY 00000d8d: DUP2 00000d8e: MLOAD 00000d8f: SWAP2 00000d90: MSTORE 00000d91: PUSH1 0x44 00000d93: DUP3 00000d94: ADD 00000d95: MSTORE 00000d96: SWAP1 00000d97: MLOAD 00000d98: SWAP1 00000d99: DUP2 00000d9a: SWAP1 00000d9b: SUB 00000d9c: PUSH1 0x64 00000d9e: ADD 00000d9f: SWAP1 00000da0: REVERT 00000da1: JUMPDEST 00000da2: PUSH2 0x0daa 00000da5: DUP8 00000da6: PUSH2 0x2485 00000da9: JUMP 00000daa: JUMPDEST 00000dab: PUSH2 0x0dfb 00000dae: JUMPI 00000daf: PUSH1 0x40 00000db1: DUP1 00000db2: MLOAD 00000db3: PUSH3 0x461bcd 00000db7: PUSH1 0xe5 00000db9: SHL 00000dba: DUP2 00000dbb: MSTORE 00000dbc: PUSH1 0x20 00000dbe: PUSH1 0x04 00000dc0: DUP3 00000dc1: ADD 00000dc2: MSTORE 00000dc3: PUSH1 0x1c 00000dc5: PUSH1 0x24 00000dc7: DUP3 00000dc8: ADD 00000dc9: MSTORE 00000dca: PUSH32 0x4944206d7573742062652061206e6f6e2d66756e6769626c6520494400000000 00000deb: PUSH1 0x44 00000ded: DUP3 00000dee: ADD 00000def: MSTORE 00000df0: SWAP1 00000df1: MLOAD 00000df2: SWAP1 00000df3: DUP2 00000df4: SWAP1 00000df5: SUB 00000df6: PUSH1 0x64 00000df8: ADD 00000df9: SWAP1 00000dfa: REVERT 00000dfb: JUMPDEST 00000dfc: PUSH1 0x00 00000dfe: JUMPDEST 00000dff: DUP6 00000e00: DUP2 00000e01: LT 00000e02: ISZERO 00000e03: PUSH2 0x10d3 00000e06: JUMPI 00000e07: PUSH1 0x00 00000e09: DUP9 00000e0a: DUP2 00000e0b: MSTORE 00000e0c: PUSH1 0x08 00000e0e: PUSH1 0x20 00000e10: MSTORE 00000e11: PUSH1 0x40 00000e13: SWAP1 00000e14: KECCAK256 00000e15: SLOAD 00000e16: ISZERO 00000e17: DUP1 00000e18: PUSH2 0x0e61 00000e1b: JUMPI 00000e1c: POP 00000e1d: PUSH1 0x00 00000e1f: DUP9 00000e20: DUP2 00000e21: MSTORE 00000e22: PUSH1 0x08 00000e24: PUSH1 0x20 00000e26: MSTORE 00000e27: PUSH1 0x40 00000e29: SWAP1 00000e2a: KECCAK256 00000e2b: SLOAD 00000e2c: PUSH2 0x0e5e 00000e2f: DUP7 00000e30: DUP7 00000e31: DUP5 00000e32: DUP2 00000e33: DUP2 00000e34: LT 00000e35: PUSH2 0x0e3a 00000e38: JUMPI 00000e39: INVALID 00000e3a: JUMPDEST 00000e3b: PUSH1 0x00 00000e3d: DUP14 00000e3e: DUP2 00000e3f: MSTORE 00000e40: PUSH1 0x07 00000e42: PUSH1 0x20 00000e44: SWAP1 00000e45: DUP2 00000e46: MSTORE 00000e47: PUSH1 0x40 00000e49: SWAP1 00000e4a: SWAP2 00000e4b: KECCAK256 00000e4c: SLOAD 00000e4d: SWAP4 00000e4e: SWAP2 00000e4f: MUL 00000e50: ADD 00000e51: CALLDATALOAD 00000e52: SWAP1 00000e53: POP 00000e54: PUSH4 0xffffffff 00000e59: PUSH2 0x28da 00000e5c: AND 00000e5d: JUMP 00000e5e: JUMPDEST 00000e5f: GT 00000e60: ISZERO 00000e61: JUMPDEST 00000e62: PUSH2 0x0eb2 00000e65: JUMPI 00000e66: PUSH1 0x40 00000e68: DUP1 00000e69: MLOAD 00000e6a: PUSH3 0x461bcd 00000e6e: PUSH1 0xe5 00000e70: SHL 00000e71: DUP2 00000e72: MSTORE 00000e73: PUSH1 0x20 00000e75: PUSH1 0x04 00000e77: DUP3 00000e78: ADD 00000e79: MSTORE 00000e7a: PUSH1 0x1b 00000e7c: PUSH1 0x24 00000e7e: DUP3 00000e7f: ADD 00000e80: MSTORE 00000e81: PUSH32 0x546f6b656e20737570706c79206c696d69742065786365656465640000000000 00000ea2: PUSH1 0x44 00000ea4: DUP3 00000ea5: ADD 00000ea6: MSTORE 00000ea7: SWAP1 00000ea8: MLOAD 00000ea9: SWAP1 00000eaa: DUP2 00000eab: SWAP1 00000eac: SUB 00000ead: PUSH1 0x64 00000eaf: ADD 00000eb0: SWAP1 00000eb1: REVERT 00000eb2: JUMPDEST 00000eb3: PUSH1 0x00 00000eb5: DUP9 00000eb6: DUP2 00000eb7: MSTORE 00000eb8: PUSH1 0x02 00000eba: PUSH1 0x20 00000ebc: MSTORE 00000ebd: PUSH1 0x40 00000ebf: DUP2 00000ec0: KECCAK256 00000ec1: PUSH2 0x0f22 00000ec4: SWAP2 00000ec5: DUP10 00000ec6: DUP10 00000ec7: DUP6 00000ec8: DUP2 00000ec9: DUP2 00000eca: LT 00000ecb: PUSH2 0x0ed0 00000ece: JUMPI 00000ecf: INVALID 00000ed0: JUMPDEST 00000ed1: SWAP1 00000ed2: POP 00000ed3: PUSH1 0x20 00000ed5: MUL 00000ed6: ADD 00000ed7: CALLDATALOAD 00000ed8: PUSH1 0x01 00000eda: PUSH1 0x01 00000edc: PUSH1 0xa0 00000ede: SHL 00000edf: SUB 00000ee0: AND 00000ee1: PUSH1 0x01 00000ee3: PUSH1 0x01 00000ee5: PUSH1 0xa0 00000ee7: SHL 00000ee8: SUB 00000ee9: AND 00000eea: PUSH1 0x01 00000eec: PUSH1 0x01 00000eee: PUSH1 0xa0 00000ef0: SHL 00000ef1: SUB 00000ef2: AND 00000ef3: DUP2 00000ef4: MSTORE 00000ef5: PUSH1 0x20 00000ef7: ADD 00000ef8: SWAP1 00000ef9: DUP2 00000efa: MSTORE 00000efb: PUSH1 0x20 00000efd: ADD 00000efe: PUSH1 0x00 00000f00: KECCAK256 00000f01: SLOAD 00000f02: DUP7 00000f03: DUP7 00000f04: DUP5 00000f05: DUP2 00000f06: DUP2 00000f07: LT 00000f08: PUSH2 0x0f0d 00000f0b: JUMPI 00000f0c: INVALID 00000f0d: JUMPDEST 00000f0e: SWAP1 00000f0f: POP 00000f10: PUSH1 0x20 00000f12: MUL 00000f13: ADD 00000f14: CALLDATALOAD 00000f15: PUSH2 0x28da 00000f18: SWAP1 00000f19: SWAP2 00000f1a: SWAP1 00000f1b: PUSH4 0xffffffff 00000f20: AND 00000f21: JUMP 00000f22: JUMPDEST 00000f23: PUSH1 0x00 00000f25: DUP10 00000f26: DUP2 00000f27: MSTORE 00000f28: PUSH1 0x02 00000f2a: PUSH1 0x20 00000f2c: MSTORE 00000f2d: PUSH1 0x40 00000f2f: DUP2 00000f30: KECCAK256 00000f31: SWAP1 00000f32: DUP10 00000f33: DUP10 00000f34: DUP6 00000f35: DUP2 00000f36: DUP2 00000f37: LT 00000f38: PUSH2 0x0f3d 00000f3b: JUMPI 00000f3c: INVALID 00000f3d: JUMPDEST 00000f3e: SWAP1 00000f3f: POP 00000f40: PUSH1 0x20 00000f42: MUL 00000f43: ADD 00000f44: CALLDATALOAD 00000f45: PUSH1 0x01 00000f47: PUSH1 0x01 00000f49: PUSH1 0xa0 00000f4b: SHL 00000f4c: SUB 00000f4d: AND 00000f4e: PUSH1 0x01 00000f50: PUSH1 0x01 00000f52: PUSH1 0xa0 00000f54: SHL 00000f55: SUB 00000f56: AND 00000f57: PUSH1 0x01 00000f59: PUSH1 0x01 00000f5b: PUSH1 0xa0 00000f5d: SHL 00000f5e: SUB 00000f5f: AND 00000f60: DUP2 00000f61: MSTORE 00000f62: PUSH1 0x20 00000f64: ADD 00000f65: SWAP1 00000f66: DUP2 00000f67: MSTORE 00000f68: PUSH1 0x20 00000f6a: ADD 00000f6b: PUSH1 0x00 00000f6d: KECCAK256 00000f6e: DUP2 00000f6f: SWAP1 00000f70: SSTORE 00000f71: POP 00000f72: PUSH2 0x0fa4 00000f75: DUP6 00000f76: DUP6 00000f77: DUP4 00000f78: DUP2 00000f79: DUP2 00000f7a: LT 00000f7b: PUSH2 0x0f80 00000f7e: JUMPI 00000f7f: INVALID 00000f80: JUMPDEST 00000f81: PUSH1 0x00 00000f83: DUP13 00000f84: DUP2 00000f85: MSTORE 00000f86: PUSH1 0x07 00000f88: PUSH1 0x20 00000f8a: SWAP1 00000f8b: DUP2 00000f8c: MSTORE 00000f8d: PUSH1 0x40 00000f8f: SWAP1 00000f90: SWAP2 00000f91: KECCAK256 00000f92: SLOAD 00000f93: SWAP4 00000f94: SWAP2 00000f95: MUL 00000f96: ADD 00000f97: CALLDATALOAD 00000f98: SWAP1 00000f99: POP 00000f9a: PUSH4 0xffffffff 00000f9f: PUSH2 0x28da 00000fa2: AND 00000fa3: JUMP 00000fa4: JUMPDEST 00000fa5: PUSH1 0x00 00000fa7: DUP10 00000fa8: DUP2 00000fa9: MSTORE 00000faa: PUSH1 0x07 00000fac: PUSH1 0x20 00000fae: MSTORE 00000faf: PUSH1 0x40 00000fb1: SWAP1 00000fb2: KECCAK256 00000fb3: SSTORE 00000fb4: DUP7 00000fb5: DUP7 00000fb6: DUP3 00000fb7: DUP2 00000fb8: DUP2 00000fb9: LT 00000fba: PUSH2 0x0fbf 00000fbd: JUMPI 00000fbe: INVALID 00000fbf: JUMPDEST 00000fc0: SWAP1 00000fc1: POP 00000fc2: PUSH1 0x20 00000fc4: MUL 00000fc5: ADD 00000fc6: CALLDATALOAD 00000fc7: PUSH1 0x01 00000fc9: PUSH1 0x01 00000fcb: PUSH1 0xa0 00000fcd: SHL 00000fce: SUB 00000fcf: AND 00000fd0: PUSH1 0x01 00000fd2: PUSH1 0x01 00000fd4: PUSH1 0xa0 00000fd6: SHL 00000fd7: SUB 00000fd8: AND 00000fd9: PUSH1 0x00 00000fdb: PUSH1 0x01 00000fdd: PUSH1 0x01 00000fdf: PUSH1 0xa0 00000fe1: SHL 00000fe2: SUB 00000fe3: AND 00000fe4: CALLER 00000fe5: PUSH1 0x01 00000fe7: PUSH1 0x01 00000fe9: PUSH1 0xa0 00000feb: SHL 00000fec: SUB 00000fed: AND 00000fee: PUSH1 0x00 00000ff0: DUP1 00000ff1: MLOAD 00000ff2: PUSH1 0x20 00000ff4: PUSH2 0x2c5c 00000ff7: DUP4 00000ff8: CODECOPY 00000ff9: DUP2 00000ffa: MLOAD 00000ffb: SWAP2 00000ffc: MSTORE 00000ffd: DUP12 00000ffe: DUP10 00000fff: DUP10 00001000: DUP8 00001001: DUP2 00001002: DUP2 00001003: LT 00001004: PUSH2 0x1009 00001007: JUMPI 00001008: INVALID 00001009: JUMPDEST 0000100a: PUSH1 0x40 0000100c: DUP1 0000100d: MLOAD 0000100e: SWAP5 0000100f: DUP6 00001010: MSTORE 00001011: PUSH1 0x20 00001013: SWAP2 00001014: DUP3 00001015: MUL 00001016: SWAP4 00001017: SWAP1 00001018: SWAP4 00001019: ADD 0000101a: CALLDATALOAD 0000101b: SWAP1 0000101c: DUP5 0000101d: ADD 0000101e: MSTORE 0000101f: POP 00001020: DUP1 00001021: MLOAD 00001022: SWAP2 00001023: DUP3 00001024: SWAP1 00001025: SUB 00001026: ADD 00001027: SWAP1 00001028: LOG4 00001029: PUSH2 0x1055 0000102c: DUP8 0000102d: DUP8 0000102e: DUP4 0000102f: DUP2 00001030: DUP2 00001031: LT 00001032: PUSH2 0x1037 00001035: JUMPI 00001036: INVALID 00001037: JUMPDEST 00001038: SWAP1 00001039: POP 0000103a: PUSH1 0x20 0000103c: MUL 0000103d: ADD 0000103e: CALLDATALOAD 0000103f: PUSH1 0x01 00001041: PUSH1 0x01 00001043: PUSH1 0xa0 00001045: SHL 00001046: SUB 00001047: AND 00001048: PUSH1 0x01 0000104a: PUSH1 0x01 0000104c: PUSH1 0xa0 0000104e: SHL 0000104f: SUB 00001050: AND 00001051: PUSH2 0x28e7 00001054: JUMP 00001055: JUMPDEST 00001056: ISZERO 00001057: PUSH2 0x10cb 0000105a: JUMPI 0000105b: PUSH2 0x10cb 0000105e: CALLER 0000105f: CALLER 00001060: DUP10 00001061: DUP10 00001062: DUP6 00001063: DUP2 00001064: DUP2 00001065: LT 00001066: PUSH2 0x106b 00001069: JUMPI 0000106a: INVALID 0000106b: JUMPDEST 0000106c: SWAP1 0000106d: POP 0000106e: PUSH1 0x20 00001070: MUL 00001071: ADD 00001072: CALLDATALOAD 00001073: PUSH1 0x01 00001075: PUSH1 0x01 00001077: PUSH1 0xa0 00001079: SHL 0000107a: SUB 0000107b: AND 0000107c: DUP12 0000107d: DUP10 0000107e: DUP10 0000107f: DUP8 00001080: DUP2 00001081: DUP2 00001082: LT 00001083: PUSH2 0x1088 00001086: JUMPI 00001087: INVALID 00001088: JUMPDEST 00001089: SWAP1 0000108a: POP 0000108b: PUSH1 0x20 0000108d: MUL 0000108e: ADD 0000108f: CALLDATALOAD 00001090: DUP9 00001091: DUP9 00001092: DUP1 00001093: DUP1 00001094: PUSH1 0x1f 00001096: ADD 00001097: PUSH1 0x20 00001099: DUP1 0000109a: SWAP2 0000109b: DIV 0000109c: MUL 0000109d: PUSH1 0x20 0000109f: ADD 000010a0: PUSH1 0x40 000010a2: MLOAD 000010a3: SWAP1 000010a4: DUP2 000010a5: ADD 000010a6: PUSH1 0x40 000010a8: MSTORE 000010a9: DUP1 000010aa: SWAP4 000010ab: SWAP3 000010ac: SWAP2 000010ad: SWAP1 000010ae: DUP2 000010af: DUP2 000010b0: MSTORE 000010b1: PUSH1 0x20 000010b3: ADD 000010b4: DUP4 000010b5: DUP4 000010b6: DUP1 000010b7: DUP3 000010b8: DUP5 000010b9: CALLDATACOPY 000010ba: PUSH1 0x00 000010bc: SWAP3 000010bd: ADD 000010be: SWAP2 000010bf: SWAP1 000010c0: SWAP2 000010c1: MSTORE 000010c2: POP 000010c3: PUSH2 0x28ed 000010c6: SWAP3 000010c7: POP 000010c8: POP 000010c9: POP 000010ca: JUMP 000010cb: JUMPDEST 000010cc: PUSH1 0x01 000010ce: ADD 000010cf: PUSH2 0x0dfe 000010d2: JUMP 000010d3: JUMPDEST 000010d4: POP 000010d5: POP 000010d6: POP 000010d7: POP 000010d8: POP 000010d9: POP 000010da: POP 000010db: POP 000010dc: JUMP 000010dd: JUMPDEST 000010de: PUSH1 0x07 000010e0: PUSH1 0x20 000010e2: MSTORE 000010e3: PUSH1 0x00 000010e5: SWAP1 000010e6: DUP2 000010e7: MSTORE 000010e8: PUSH1 0x40 000010ea: SWAP1 000010eb: KECCAK256 000010ec: SLOAD 000010ed: DUP2 000010ee: JUMP 000010ef: JUMPDEST 000010f0: PUSH1 0x08 000010f2: PUSH1 0x20 000010f4: MSTORE 000010f5: PUSH1 0x00 000010f7: SWAP1 000010f8: DUP2 000010f9: MSTORE 000010fa: PUSH1 0x40 000010fc: SWAP1 000010fd: KECCAK256 000010fe: SLOAD 000010ff: DUP2 00001100: JUMP 00001101: JUMPDEST 00001102: PUSH1 0x01 00001104: PUSH1 0x01 00001106: PUSH1 0xa0 00001108: SHL 00001109: SUB 0000110a: DUP8 0000110b: AND 0000110c: PUSH2 0x115c 0000110f: JUMPI 00001110: PUSH1 0x40 00001112: DUP1 00001113: MLOAD 00001114: PUSH3 0x461bcd 00001118: PUSH1 0xe5 0000111a: SHL 0000111b: DUP2 0000111c: MSTORE 0000111d: PUSH1 0x20 0000111f: PUSH1 0x04 00001121: DUP3 00001122: ADD 00001123: MSTORE 00001124: PUSH1 0x1b 00001126: PUSH1 0x24 00001128: DUP3 00001129: ADD 0000112a: MSTORE 0000112b: PUSH32 0x63616e6e6f742073656e6420746f207a65726f20616464726573730000000000 0000114c: PUSH1 0x44 0000114e: DUP3 0000114f: ADD 00001150: MSTORE 00001151: SWAP1 00001152: MLOAD 00001153: SWAP1 00001154: DUP2 00001155: SWAP1 00001156: SUB 00001157: PUSH1 0x64 00001159: ADD 0000115a: SWAP1 0000115b: REVERT 0000115c: JUMPDEST 0000115d: DUP5 0000115e: DUP4 0000115f: EQ 00001160: PUSH2 0x11b0 00001163: JUMPI 00001164: PUSH1 0x40 00001166: DUP1 00001167: MLOAD 00001168: PUSH3 0x461bcd 0000116c: PUSH1 0xe5 0000116e: SHL 0000116f: DUP2 00001170: MSTORE 00001171: PUSH1 0x20 00001173: PUSH1 0x04 00001175: DUP3 00001176: ADD 00001177: MSTORE 00001178: PUSH1 0x17 0000117a: PUSH1 0x24 0000117c: DUP3 0000117d: ADD 0000117e: MSTORE 0000117f: PUSH32 0x4172726179206c656e677468206d757374206d61746368000000000000000000 000011a0: PUSH1 0x44 000011a2: DUP3 000011a3: ADD 000011a4: MSTORE 000011a5: SWAP1 000011a6: MLOAD 000011a7: SWAP1 000011a8: DUP2 000011a9: SWAP1 000011aa: SUB 000011ab: PUSH1 0x64 000011ad: ADD 000011ae: SWAP1 000011af: REVERT 000011b0: JUMPDEST 000011b1: PUSH1 0x01 000011b3: PUSH1 0x01 000011b5: PUSH1 0xa0 000011b7: SHL 000011b8: SUB 000011b9: DUP9 000011ba: AND 000011bb: CALLER 000011bc: EQ 000011bd: DUP1 000011be: PUSH2 0x11ef 000011c1: JUMPI 000011c2: POP 000011c3: PUSH1 0x01 000011c5: PUSH1 0x01 000011c7: PUSH1 0xa0 000011c9: SHL 000011ca: SUB 000011cb: DUP9 000011cc: AND 000011cd: PUSH1 0x00 000011cf: SWAP1 000011d0: DUP2 000011d1: MSTORE 000011d2: PUSH1 0x03 000011d4: PUSH1 0x20 000011d6: SWAP1 000011d7: DUP2 000011d8: MSTORE 000011d9: PUSH1 0x40 000011db: DUP1 000011dc: DUP4 000011dd: KECCAK256 000011de: CALLER 000011df: DUP5 000011e0: MSTORE 000011e1: SWAP1 000011e2: SWAP2 000011e3: MSTORE 000011e4: SWAP1 000011e5: KECCAK256 000011e6: SLOAD 000011e7: PUSH1 0xff 000011e9: AND 000011ea: ISZERO 000011eb: ISZERO 000011ec: PUSH1 0x01 000011ee: EQ 000011ef: JUMPDEST 000011f0: PUSH2 0x122a 000011f3: JUMPI 000011f4: PUSH1 0x40 000011f6: MLOAD 000011f7: PUSH3 0x461bcd 000011fb: PUSH1 0xe5 000011fd: SHL 000011fe: DUP2 000011ff: MSTORE 00001200: PUSH1 0x04 00001202: ADD 00001203: DUP1 00001204: DUP1 00001205: PUSH1 0x20 00001207: ADD 00001208: DUP3 00001209: DUP2 0000120a: SUB 0000120b: DUP3 0000120c: MSTORE 0000120d: PUSH1 0x2f 0000120f: DUP2 00001210: MSTORE 00001211: PUSH1 0x20 00001213: ADD 00001214: DUP1 00001215: PUSH2 0x2c7c 00001218: PUSH1 0x2f 0000121a: SWAP2 0000121b: CODECOPY 0000121c: PUSH1 0x40 0000121e: ADD 0000121f: SWAP2 00001220: POP 00001221: POP 00001222: PUSH1 0x40 00001224: MLOAD 00001225: DUP1 00001226: SWAP2 00001227: SUB 00001228: SWAP1 00001229: REVERT 0000122a: JUMPDEST 0000122b: PUSH1 0x00 0000122d: JUMPDEST 0000122e: DUP6 0000122f: DUP2 00001230: LT 00001231: ISZERO 00001232: PUSH2 0x1589 00001235: JUMPI 00001236: PUSH2 0x1250 00001239: DUP8 0000123a: DUP8 0000123b: DUP4 0000123c: DUP2 0000123d: DUP2 0000123e: LT 0000123f: PUSH2 0x1244 00001242: JUMPI 00001243: INVALID 00001244: JUMPDEST 00001245: SWAP1 00001246: POP 00001247: PUSH1 0x20 00001249: MUL 0000124a: ADD 0000124b: CALLDATALOAD 0000124c: PUSH2 0x259d 0000124f: JUMP 00001250: JUMPDEST 00001251: ISZERO 00001252: PUSH2 0x1423 00001255: JUMPI 00001256: DUP9 00001257: PUSH1 0x01 00001259: PUSH1 0x01 0000125b: PUSH1 0xa0 0000125d: SHL 0000125e: SUB 0000125f: AND 00001260: PUSH1 0x04 00001262: PUSH1 0x00 00001264: DUP10 00001265: DUP10 00001266: DUP6 00001267: DUP2 00001268: DUP2 00001269: LT 0000126a: PUSH2 0x126f 0000126d: JUMPI 0000126e: INVALID 0000126f: JUMPDEST 00001270: PUSH1 0x20 00001272: SWAP1 00001273: DUP2 00001274: MUL 00001275: SWAP3 00001276: SWAP1 00001277: SWAP3 00001278: ADD 00001279: CALLDATALOAD 0000127a: DUP4 0000127b: MSTORE 0000127c: POP 0000127d: DUP2 0000127e: ADD 0000127f: SWAP2 00001280: SWAP1 00001281: SWAP2 00001282: MSTORE 00001283: PUSH1 0x40 00001285: ADD 00001286: PUSH1 0x00 00001288: KECCAK256 00001289: SLOAD 0000128a: PUSH1 0x01 0000128c: PUSH1 0x01 0000128e: PUSH1 0xa0 00001290: SHL 00001291: SUB 00001292: AND 00001293: EQ 00001294: PUSH2 0x129c 00001297: JUMPI 00001298: PUSH1 0x00 0000129a: DUP1 0000129b: REVERT 0000129c: JUMPDEST 0000129d: DUP8 0000129e: PUSH1 0x04 000012a0: PUSH1 0x00 000012a2: DUP10 000012a3: DUP10 000012a4: DUP6 000012a5: DUP2 000012a6: DUP2 000012a7: LT 000012a8: PUSH2 0x12ad 000012ab: JUMPI 000012ac: INVALID 000012ad: JUMPDEST 000012ae: SWAP1 000012af: POP 000012b0: PUSH1 0x20 000012b2: MUL 000012b3: ADD 000012b4: CALLDATALOAD 000012b5: DUP2 000012b6: MSTORE 000012b7: PUSH1 0x20 000012b9: ADD 000012ba: SWAP1 000012bb: DUP2 000012bc: MSTORE 000012bd: PUSH1 0x20 000012bf: ADD 000012c0: PUSH1 0x00 000012c2: KECCAK256 000012c3: PUSH1 0x00 000012c5: PUSH2 0x0100 000012c8: EXP 000012c9: DUP2 000012ca: SLOAD 000012cb: DUP2 000012cc: PUSH1 0x01 000012ce: PUSH1 0x01 000012d0: PUSH1 0xa0 000012d2: SHL 000012d3: SUB 000012d4: MUL 000012d5: NOT 000012d6: AND 000012d7: SWAP1 000012d8: DUP4 000012d9: PUSH1 0x01 000012db: PUSH1 0x01 000012dd: PUSH1 0xa0 000012df: SHL 000012e0: SUB 000012e1: AND 000012e2: MUL 000012e3: OR 000012e4: SWAP1 000012e5: SSTORE 000012e6: POP 000012e7: PUSH2 0x134e 000012ea: DUP6 000012eb: DUP6 000012ec: DUP4 000012ed: DUP2 000012ee: DUP2 000012ef: LT 000012f0: PUSH2 0x12f5 000012f3: JUMPI 000012f4: INVALID 000012f5: JUMPDEST 000012f6: SWAP1 000012f7: POP 000012f8: PUSH1 0x20 000012fa: MUL 000012fb: ADD 000012fc: CALLDATALOAD 000012fd: PUSH1 0x02 000012ff: PUSH1 0x00 00001301: PUSH2 0x131b 00001304: DUP12 00001305: DUP12 00001306: DUP8 00001307: DUP2 00001308: DUP2 00001309: LT 0000130a: PUSH2 0x130f 0000130d: JUMPI 0000130e: INVALID 0000130f: JUMPDEST 00001310: SWAP1 00001311: POP 00001312: PUSH1 0x20 00001314: MUL 00001315: ADD 00001316: CALLDATALOAD 00001317: PUSH2 0x21c3 0000131a: JUMP 0000131b: JUMPDEST 0000131c: DUP2 0000131d: MSTORE 0000131e: PUSH1 0x20 00001320: DUP1 00001321: DUP3 00001322: ADD 00001323: SWAP3 00001324: SWAP1 00001325: SWAP3 00001326: MSTORE 00001327: PUSH1 0x40 00001329: SWAP1 0000132a: DUP2 0000132b: ADD 0000132c: PUSH1 0x00 0000132e: SWAP1 0000132f: DUP2 00001330: KECCAK256 00001331: PUSH1 0x01 00001333: PUSH1 0x01 00001335: PUSH1 0xa0 00001337: SHL 00001338: SUB 00001339: DUP16 0000133a: AND 0000133b: DUP3 0000133c: MSTORE 0000133d: SWAP1 0000133e: SWAP3 0000133f: MSTORE 00001340: SWAP1 00001341: KECCAK256 00001342: SLOAD 00001343: SWAP1 00001344: PUSH4 0xffffffff 00001349: PUSH2 0x2a5d 0000134c: AND 0000134d: JUMP 0000134e: JUMPDEST 0000134f: PUSH1 0x02 00001351: PUSH1 0x00 00001353: PUSH2 0x1361 00001356: DUP11 00001357: DUP11 00001358: DUP7 00001359: DUP2 0000135a: DUP2 0000135b: LT 0000135c: PUSH2 0x130f 0000135f: JUMPI 00001360: INVALID 00001361: JUMPDEST 00001362: DUP2 00001363: MSTORE 00001364: PUSH1 0x20 00001366: DUP1 00001367: DUP3 00001368: ADD 00001369: SWAP3 0000136a: SWAP1 0000136b: SWAP3 0000136c: MSTORE 0000136d: PUSH1 0x40 0000136f: SWAP1 00001370: DUP2 00001371: ADD 00001372: PUSH1 0x00 00001374: SWAP1 00001375: DUP2 00001376: KECCAK256 00001377: PUSH1 0x01 00001379: PUSH1 0x01 0000137b: PUSH1 0xa0 0000137d: SHL 0000137e: SUB 0000137f: DUP15 00001380: AND 00001381: DUP3 00001382: MSTORE 00001383: SWAP1 00001384: SWAP3 00001385: MSTORE 00001386: SWAP1 00001387: KECCAK256 00001388: SSTORE 00001389: PUSH2 0x13e4 0000138c: DUP6 0000138d: DUP6 0000138e: DUP4 0000138f: DUP2 00001390: DUP2 00001391: LT 00001392: PUSH2 0x1397 00001395: JUMPI 00001396: INVALID 00001397: JUMPDEST 00001398: SWAP1 00001399: POP 0000139a: PUSH1 0x20 0000139c: MUL 0000139d: ADD 0000139e: CALLDATALOAD 0000139f: PUSH1 0x02 000013a1: PUSH1 0x00 000013a3: PUSH2 0x13b1 000013a6: DUP12 000013a7: DUP12 000013a8: DUP8 000013a9: DUP2 000013aa: DUP2 000013ab: LT 000013ac: PUSH2 0x130f 000013af: JUMPI 000013b0: INVALID 000013b1: JUMPDEST 000013b2: DUP2 000013b3: MSTORE 000013b4: PUSH1 0x20 000013b6: DUP1 000013b7: DUP3 000013b8: ADD 000013b9: SWAP3 000013ba: SWAP1 000013bb: SWAP3 000013bc: MSTORE 000013bd: PUSH1 0x40 000013bf: SWAP1 000013c0: DUP2 000013c1: ADD 000013c2: PUSH1 0x00 000013c4: SWAP1 000013c5: DUP2 000013c6: KECCAK256 000013c7: PUSH1 0x01 000013c9: PUSH1 0x01 000013cb: PUSH1 0xa0 000013cd: SHL 000013ce: SUB 000013cf: DUP15 000013d0: AND 000013d1: DUP3 000013d2: MSTORE 000013d3: SWAP1 000013d4: SWAP3 000013d5: MSTORE 000013d6: SWAP1 000013d7: KECCAK256 000013d8: SLOAD 000013d9: SWAP1 000013da: PUSH4 0xffffffff 000013df: PUSH2 0x28da 000013e2: AND 000013e3: JUMP 000013e4: JUMPDEST 000013e5: PUSH1 0x02 000013e7: PUSH1 0x00 000013e9: PUSH2 0x13f7 000013ec: DUP11 000013ed: DUP11 000013ee: DUP7 000013ef: DUP2 000013f0: DUP2 000013f1: LT 000013f2: PUSH2 0x130f 000013f5: JUMPI 000013f6: INVALID 000013f7: JUMPDEST 000013f8: DUP2 000013f9: MSTORE 000013fa: PUSH1 0x20 000013fc: DUP1 000013fd: DUP3 000013fe: ADD 000013ff: SWAP3 00001400: SWAP1 00001401: SWAP3 00001402: MSTORE 00001403: PUSH1 0x40 00001405: SWAP1 00001406: DUP2 00001407: ADD 00001408: PUSH1 0x00 0000140a: SWAP1 0000140b: DUP2 0000140c: KECCAK256 0000140d: PUSH1 0x01 0000140f: PUSH1 0x01 00001411: PUSH1 0xa0 00001413: SHL 00001414: SUB 00001415: DUP14 00001416: AND 00001417: DUP3 00001418: MSTORE 00001419: SWAP1 0000141a: SWAP3 0000141b: MSTORE 0000141c: SWAP1 0000141d: KECCAK256 0000141e: SSTORE 0000141f: PUSH2 0x1581 00001422: JUMP 00001423: JUMPDEST 00001424: PUSH2 0x1490 00001427: DUP6 00001428: DUP6 00001429: DUP4 0000142a: DUP2 0000142b: DUP2 0000142c: LT 0000142d: PUSH2 0x1432 00001430: JUMPI 00001431: INVALID 00001432: JUMPDEST 00001433: SWAP1 00001434: POP 00001435: PUSH1 0x20 00001437: MUL 00001438: ADD 00001439: CALLDATALOAD 0000143a: PUSH1 0x02 0000143c: PUSH1 0x00 0000143e: DUP11 0000143f: DUP11 00001440: DUP7 00001441: DUP2 00001442: DUP2 00001443: LT 00001444: PUSH2 0x1449 00001447: JUMPI 00001448: INVALID 00001449: JUMPDEST 0000144a: SWAP1 0000144b: POP 0000144c: PUSH1 0x20 0000144e: MUL 0000144f: ADD 00001450: CALLDATALOAD 00001451: DUP2 00001452: MSTORE 00001453: PUSH1 0x20 00001455: ADD 00001456: SWAP1 00001457: DUP2 00001458: MSTORE 00001459: PUSH1 0x20 0000145b: ADD 0000145c: PUSH1 0x00 0000145e: KECCAK256 0000145f: PUSH1 0x00 00001461: DUP13 00001462: PUSH1 0x01 00001464: PUSH1 0x01 00001466: PUSH1 0xa0 00001468: SHL 00001469: SUB 0000146a: AND 0000146b: PUSH1 0x01 0000146d: PUSH1 0x01 0000146f: PUSH1 0xa0 00001471: SHL 00001472: SUB 00001473: AND 00001474: DUP2 00001475: MSTORE 00001476: PUSH1 0x20 00001478: ADD 00001479: SWAP1 0000147a: DUP2 0000147b: MSTORE 0000147c: PUSH1 0x20 0000147e: ADD 0000147f: PUSH1 0x00 00001481: KECCAK256 00001482: SLOAD 00001483: PUSH2 0x2a5d 00001486: SWAP1 00001487: SWAP2 00001488: SWAP1 00001489: PUSH4 0xffffffff 0000148e: AND 0000148f: JUMP 00001490: JUMPDEST 00001491: PUSH1 0x02 00001493: PUSH1 0x00 00001495: DUP10 00001496: DUP10 00001497: DUP6 00001498: DUP2 00001499: DUP2 0000149a: LT 0000149b: PUSH2 0x14a0 0000149e: JUMPI 0000149f: INVALID 000014a0: JUMPDEST 000014a1: SWAP1 000014a2: POP 000014a3: PUSH1 0x20 000014a5: MUL 000014a6: ADD 000014a7: CALLDATALOAD 000014a8: DUP2 000014a9: MSTORE 000014aa: PUSH1 0x20 000014ac: ADD 000014ad: SWAP1 000014ae: DUP2 000014af: MSTORE 000014b0: PUSH1 0x20 000014b2: ADD 000014b3: PUSH1 0x00 000014b5: KECCAK256 000014b6: PUSH1 0x00 000014b8: DUP12 000014b9: PUSH1 0x01 000014bb: PUSH1 0x01 000014bd: PUSH1 0xa0 000014bf: SHL 000014c0: SUB 000014c1: AND 000014c2: PUSH1 0x01 000014c4: PUSH1 0x01 000014c6: PUSH1 0xa0 000014c8: SHL 000014c9: SUB 000014ca: AND 000014cb: DUP2 000014cc: MSTORE 000014cd: PUSH1 0x20 000014cf: ADD 000014d0: SWAP1 000014d1: DUP2 000014d2: MSTORE 000014d3: PUSH1 0x20 000014d5: ADD 000014d6: PUSH1 0x00 000014d8: KECCAK256 000014d9: DUP2 000014da: SWAP1 000014db: SSTORE 000014dc: POP 000014dd: PUSH2 0x1534 000014e0: PUSH1 0x02 000014e2: PUSH1 0x00 000014e4: DUP10 000014e5: DUP10 000014e6: DUP6 000014e7: DUP2 000014e8: DUP2 000014e9: LT 000014ea: PUSH2 0x14ef 000014ed: JUMPI 000014ee: INVALID 000014ef: JUMPDEST 000014f0: SWAP1 000014f1: POP 000014f2: PUSH1 0x20 000014f4: MUL 000014f5: ADD 000014f6: CALLDATALOAD 000014f7: DUP2 000014f8: MSTORE 000014f9: PUSH1 0x20 000014fb: ADD 000014fc: SWAP1 000014fd: DUP2 000014fe: MSTORE 000014ff: PUSH1 0x20 00001501: ADD 00001502: PUSH1 0x00 00001504: KECCAK256 00001505: PUSH1 0x00 00001507: DUP11 00001508: PUSH1 0x01 0000150a: PUSH1 0x01 0000150c: PUSH1 0xa0 0000150e: SHL 0000150f: SUB 00001510: AND 00001511: PUSH1 0x01 00001513: PUSH1 0x01 00001515: PUSH1 0xa0 00001517: SHL 00001518: SUB 00001519: AND 0000151a: DUP2 0000151b: MSTORE 0000151c: PUSH1 0x20 0000151e: ADD 0000151f: SWAP1 00001520: DUP2 00001521: MSTORE 00001522: PUSH1 0x20 00001524: ADD 00001525: PUSH1 0x00 00001527: KECCAK256 00001528: SLOAD 00001529: DUP7 0000152a: DUP7 0000152b: DUP5 0000152c: DUP2 0000152d: DUP2 0000152e: LT 0000152f: PUSH2 0x0f0d 00001532: JUMPI 00001533: INVALID 00001534: JUMPDEST 00001535: PUSH1 0x02 00001537: PUSH1 0x00 00001539: DUP10 0000153a: DUP10 0000153b: DUP6 0000153c: DUP2 0000153d: DUP2 0000153e: LT 0000153f: PUSH2 0x1544 00001542: JUMPI 00001543: INVALID 00001544: JUMPDEST 00001545: SWAP1 00001546: POP 00001547: PUSH1 0x20 00001549: MUL 0000154a: ADD 0000154b: CALLDATALOAD 0000154c: DUP2 0000154d: MSTORE 0000154e: PUSH1 0x20 00001550: ADD 00001551: SWAP1 00001552: DUP2 00001553: MSTORE 00001554: PUSH1 0x20 00001556: ADD 00001557: PUSH1 0x00 00001559: KECCAK256 0000155a: PUSH1 0x00 0000155c: DUP11 0000155d: PUSH1 0x01 0000155f: PUSH1 0x01 00001561: PUSH1 0xa0 00001563: SHL 00001564: SUB 00001565: AND 00001566: PUSH1 0x01 00001568: PUSH1 0x01 0000156a: PUSH1 0xa0 0000156c: SHL 0000156d: SUB 0000156e: AND 0000156f: DUP2 00001570: MSTORE 00001571: PUSH1 0x20 00001573: ADD 00001574: SWAP1 00001575: DUP2 00001576: MSTORE 00001577: PUSH1 0x20 00001579: ADD 0000157a: PUSH1 0x00 0000157c: KECCAK256 0000157d: DUP2 0000157e: SWAP1 0000157f: SSTORE 00001580: POP 00001581: JUMPDEST 00001582: PUSH1 0x01 00001584: ADD 00001585: PUSH2 0x122d 00001588: JUMP 00001589: JUMPDEST 0000158a: POP 0000158b: DUP7 0000158c: PUSH1 0x01 0000158e: PUSH1 0x01 00001590: PUSH1 0xa0 00001592: SHL 00001593: SUB 00001594: AND 00001595: DUP9 00001596: PUSH1 0x01 00001598: PUSH1 0x01 0000159a: PUSH1 0xa0 0000159c: SHL 0000159d: SUB 0000159e: AND 0000159f: CALLER 000015a0: PUSH1 0x01 000015a2: PUSH1 0x01 000015a4: PUSH1 0xa0 000015a6: SHL 000015a7: SUB 000015a8: AND 000015a9: PUSH32 0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb 000015ca: DUP10 000015cb: DUP10 000015cc: DUP10 000015cd: DUP10 000015ce: PUSH1 0x40 000015d0: MLOAD 000015d1: DUP1 000015d2: DUP1 000015d3: PUSH1 0x20 000015d5: ADD 000015d6: DUP1 000015d7: PUSH1 0x20 000015d9: ADD 000015da: DUP4 000015db: DUP2 000015dc: SUB 000015dd: DUP4 000015de: MSTORE 000015df: DUP8 000015e0: DUP8 000015e1: DUP3 000015e2: DUP2 000015e3: DUP2 000015e4: MSTORE 000015e5: PUSH1 0x20 000015e7: ADD 000015e8: SWAP3 000015e9: POP 000015ea: PUSH1 0x20 000015ec: MUL 000015ed: DUP1 000015ee: DUP3 000015ef: DUP5 000015f0: CALLDATACOPY 000015f1: PUSH1 0x00 000015f3: DUP4 000015f4: DUP3 000015f5: ADD 000015f6: MSTORE 000015f7: PUSH1 0x1f 000015f9: ADD 000015fa: PUSH1 0x1f 000015fc: NOT 000015fd: AND 000015fe: SWAP1 000015ff: SWAP2 00001600: ADD 00001601: DUP5 00001602: DUP2 00001603: SUB 00001604: DUP4 00001605: MSTORE 00001606: DUP6 00001607: DUP2 00001608: MSTORE 00001609: PUSH1 0x20 0000160b: SWAP1 0000160c: DUP2 0000160d: ADD 0000160e: SWAP2 0000160f: POP 00001610: DUP7 00001611: SWAP1 00001612: DUP7 00001613: MUL 00001614: DUP1 00001615: DUP3 00001616: DUP5 00001617: CALLDATACOPY 00001618: PUSH1 0x00 0000161a: DUP4 0000161b: DUP3 0000161c: ADD 0000161d: MSTORE 0000161e: PUSH1 0x40 00001620: MLOAD 00001621: PUSH1 0x1f 00001623: SWAP1 00001624: SWAP2 00001625: ADD 00001626: PUSH1 0x1f 00001628: NOT 00001629: AND 0000162a: SWAP1 0000162b: SWAP3 0000162c: ADD 0000162d: DUP3 0000162e: SWAP1 0000162f: SUB 00001630: SWAP9 00001631: POP 00001632: SWAP1 00001633: SWAP7 00001634: POP 00001635: POP 00001636: POP 00001637: POP 00001638: POP 00001639: POP 0000163a: POP 0000163b: LOG4 0000163c: PUSH2 0x164d 0000163f: DUP8 00001640: PUSH1 0x01 00001642: PUSH1 0x01 00001644: PUSH1 0xa0 00001646: SHL 00001647: SUB 00001648: AND 00001649: PUSH2 0x28e7 0000164c: JUMP 0000164d: JUMPDEST 0000164e: ISZERO 0000164f: PUSH2 0x10d3 00001652: JUMPI 00001653: PUSH2 0x10d3 00001656: CALLER 00001657: DUP10 00001658: DUP10 00001659: DUP10 0000165a: DUP10 0000165b: DUP1 0000165c: DUP1 0000165d: PUSH1 0x20 0000165f: MUL 00001660: PUSH1 0x20 00001662: ADD 00001663: PUSH1 0x40 00001665: MLOAD 00001666: SWAP1 00001667: DUP2 00001668: ADD 00001669: PUSH1 0x40 0000166b: MSTORE 0000166c: DUP1 0000166d: SWAP4 0000166e: SWAP3 0000166f: SWAP2 00001670: SWAP1 00001671: DUP2 00001672: DUP2 00001673: MSTORE 00001674: PUSH1 0x20 00001676: ADD 00001677: DUP4 00001678: DUP4 00001679: PUSH1 0x20 0000167b: MUL 0000167c: DUP1 0000167d: DUP3 0000167e: DUP5 0000167f: CALLDATACOPY 00001680: PUSH1 0x00 00001682: SWAP3 00001683: ADD 00001684: SWAP2 00001685: SWAP1 00001686: SWAP2 00001687: MSTORE 00001688: POP 00001689: POP 0000168a: PUSH1 0x40 0000168c: DUP1 0000168d: MLOAD 0000168e: PUSH1 0x20 00001690: DUP1 00001691: DUP14 00001692: MUL 00001693: DUP3 00001694: DUP2 00001695: ADD 00001696: DUP3 00001697: ADD 00001698: SWAP1 00001699: SWAP4 0000169a: MSTORE 0000169b: DUP13 0000169c: DUP3 0000169d: MSTORE 0000169e: SWAP1 0000169f: SWAP4 000016a0: POP 000016a1: DUP13 000016a2: SWAP3 000016a3: POP 000016a4: DUP12 000016a5: SWAP2 000016a6: DUP3 000016a7: SWAP2 000016a8: DUP6 000016a9: ADD 000016aa: SWAP1 000016ab: DUP5 000016ac: SWAP1 000016ad: DUP1 000016ae: DUP3 000016af: DUP5 000016b0: CALLDATACOPY 000016b1: PUSH1 0x00 000016b3: SWAP3 000016b4: ADD 000016b5: SWAP2 000016b6: SWAP1 000016b7: SWAP2 000016b8: MSTORE 000016b9: POP 000016ba: POP 000016bb: PUSH1 0x40 000016bd: DUP1 000016be: MLOAD 000016bf: PUSH1 0x20 000016c1: PUSH1 0x1f 000016c3: DUP13 000016c4: ADD 000016c5: DUP2 000016c6: SWAP1 000016c7: DIV 000016c8: DUP2 000016c9: MUL 000016ca: DUP3 000016cb: ADD 000016cc: DUP2 000016cd: ADD 000016ce: SWAP1 000016cf: SWAP3 000016d0: MSTORE 000016d1: DUP11 000016d2: DUP2 000016d3: MSTORE 000016d4: SWAP3 000016d5: POP 000016d6: DUP11 000016d7: SWAP2 000016d8: POP 000016d9: DUP10 000016da: SWAP1 000016db: DUP2 000016dc: SWAP1 000016dd: DUP5 000016de: ADD 000016df: DUP4 000016e0: DUP3 000016e1: DUP1 000016e2: DUP3 000016e3: DUP5 000016e4: CALLDATACOPY 000016e5: PUSH1 0x00 000016e7: SWAP3 000016e8: ADD 000016e9: SWAP2 000016ea: SWAP1 000016eb: SWAP2 000016ec: MSTORE 000016ed: POP 000016ee: PUSH2 0x2a6f 000016f1: SWAP3 000016f2: POP 000016f3: POP 000016f4: POP 000016f5: JUMP 000016f6: JUMPDEST 000016f7: PUSH1 0x01 000016f9: SLOAD 000016fa: PUSH1 0x01 000016fc: PUSH1 0x01 000016fe: PUSH1 0xa0 00001700: SHL 00001701: SUB 00001702: AND 00001703: CALLER 00001704: EQ 00001705: PUSH2 0x170d 00001708: JUMPI 00001709: PUSH1 0x00 0000170b: DUP1 0000170c: REVERT 0000170d: JUMPDEST 0000170e: PUSH1 0x00 00001710: JUMPDEST 00001711: DUP2 00001712: DUP2 00001713: LT 00001714: ISZERO 00001715: PUSH2 0x175a 00001718: JUMPI 00001719: PUSH1 0x09 0000171b: PUSH1 0x00 0000171d: DUP5 0000171e: DUP5 0000171f: DUP5 00001720: DUP2 00001721: DUP2 00001722: LT 00001723: PUSH2 0x1728 00001726: JUMPI 00001727: INVALID 00001728: JUMPDEST 00001729: PUSH1 0x20 0000172b: SWAP1 0000172c: DUP2 0000172d: MUL 0000172e: SWAP3 0000172f: SWAP1 00001730: SWAP3 00001731: ADD 00001732: CALLDATALOAD 00001733: PUSH1 0x01 00001735: PUSH1 0x01 00001737: PUSH1 0xa0 00001739: SHL 0000173a: SUB 0000173b: AND 0000173c: DUP4 0000173d: MSTORE 0000173e: POP 0000173f: DUP2 00001740: ADD 00001741: SWAP2 00001742: SWAP1 00001743: SWAP2 00001744: MSTORE 00001745: PUSH1 0x40 00001747: ADD 00001748: PUSH1 0x00 0000174a: KECCAK256 0000174b: DUP1 0000174c: SLOAD 0000174d: PUSH1 0xff 0000174f: NOT 00001750: AND 00001751: SWAP1 00001752: SSTORE 00001753: PUSH1 0x01 00001755: ADD 00001756: PUSH2 0x1710 00001759: JUMP 0000175a: JUMPDEST 0000175b: POP 0000175c: POP 0000175d: POP 0000175e: JUMP 0000175f: JUMPDEST 00001760: CALLER 00001761: PUSH1 0x00 00001763: SWAP1 00001764: DUP2 00001765: MSTORE 00001766: PUSH1 0x09 00001768: PUSH1 0x20 0000176a: MSTORE 0000176b: PUSH1 0x40 0000176d: SWAP1 0000176e: KECCAK256 0000176f: SLOAD 00001770: PUSH1 0xff 00001772: AND 00001773: PUSH2 0x17b1 00001776: JUMPI 00001777: PUSH1 0x40 00001779: DUP1 0000177a: MLOAD 0000177b: PUSH3 0x461bcd 0000177f: PUSH1 0xe5 00001781: SHL 00001782: DUP2 00001783: MSTORE 00001784: PUSH1 0x20 00001786: PUSH1 0x04 00001788: DUP3 00001789: ADD 0000178a: MSTORE 0000178b: PUSH1 0x1b 0000178d: PUSH1 0x24 0000178f: DUP3 00001790: ADD 00001791: MSTORE 00001792: PUSH1 0x00 00001794: DUP1 00001795: MLOAD 00001796: PUSH1 0x20 00001798: PUSH2 0x2d13 0000179b: DUP4 0000179c: CODECOPY 0000179d: DUP2 0000179e: MLOAD 0000179f: SWAP2 000017a0: MSTORE 000017a1: PUSH1 0x44 000017a3: DUP3 000017a4: ADD 000017a5: MSTORE 000017a6: SWAP1 000017a7: MLOAD 000017a8: SWAP1 000017a9: DUP2 000017aa: SWAP1 000017ab: SUB 000017ac: PUSH1 0x64 000017ae: ADD 000017af: SWAP1 000017b0: REVERT 000017b1: JUMPDEST 000017b2: DUP2 000017b3: PUSH2 0x17bb 000017b6: JUMPI 000017b7: PUSH1 0x00 000017b9: DUP1 000017ba: REVERT 000017bb: JUMPDEST 000017bc: DUP1 000017bd: PUSH32 0x6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b 000017de: DUP5 000017df: DUP5 000017e0: PUSH1 0x40 000017e2: MLOAD 000017e3: DUP1 000017e4: DUP1 000017e5: PUSH1 0x20 000017e7: ADD 000017e8: DUP3 000017e9: DUP2 000017ea: SUB 000017eb: DUP3 000017ec: MSTORE 000017ed: DUP5 000017ee: DUP5 000017ef: DUP3 000017f0: DUP2 000017f1: DUP2 000017f2: MSTORE 000017f3: PUSH1 0x20 000017f5: ADD 000017f6: SWAP3 000017f7: POP 000017f8: DUP1 000017f9: DUP3 000017fa: DUP5 000017fb: CALLDATACOPY 000017fc: PUSH1 0x00 000017fe: DUP4 000017ff: DUP3 00001800: ADD 00001801: MSTORE 00001802: PUSH1 0x40 00001804: MLOAD 00001805: PUSH1 0x1f 00001807: SWAP1 00001808: SWAP2 00001809: ADD 0000180a: PUSH1 0x1f 0000180c: NOT 0000180d: AND 0000180e: SWAP1 0000180f: SWAP3 00001810: ADD 00001811: DUP3 00001812: SWAP1 00001813: SUB 00001814: SWAP6 00001815: POP 00001816: SWAP1 00001817: SWAP4 00001818: POP 00001819: POP 0000181a: POP 0000181b: POP 0000181c: LOG2 0000181d: POP 0000181e: POP 0000181f: POP 00001820: JUMP 00001821: JUMPDEST 00001822: PUSH1 0x01 00001824: PUSH1 0x01 00001826: PUSH1 0xa0 00001828: SHL 00001829: SUB 0000182a: DUP6 0000182b: AND 0000182c: CALLER 0000182d: EQ 0000182e: DUP1 0000182f: PUSH2 0x1860 00001832: JUMPI 00001833: POP 00001834: PUSH1 0x01 00001836: PUSH1 0x01 00001838: PUSH1 0xa0 0000183a: SHL 0000183b: SUB 0000183c: DUP6 0000183d: AND 0000183e: PUSH1 0x00 00001840: SWAP1 00001841: DUP2 00001842: MSTORE 00001843: PUSH1 0x03 00001845: PUSH1 0x20 00001847: SWAP1 00001848: DUP2 00001849: MSTORE 0000184a: PUSH1 0x40 0000184c: DUP1 0000184d: DUP4 0000184e: KECCAK256 0000184f: CALLER 00001850: DUP5 00001851: MSTORE 00001852: SWAP1 00001853: SWAP2 00001854: MSTORE 00001855: SWAP1 00001856: KECCAK256 00001857: SLOAD 00001858: PUSH1 0xff 0000185a: AND 0000185b: ISZERO 0000185c: ISZERO 0000185d: PUSH1 0x01 0000185f: EQ 00001860: JUMPDEST 00001861: PUSH2 0x189b 00001864: JUMPI 00001865: PUSH1 0x40 00001867: MLOAD 00001868: PUSH3 0x461bcd 0000186c: PUSH1 0xe5 0000186e: SHL 0000186f: DUP2 00001870: MSTORE 00001871: PUSH1 0x04 00001873: ADD 00001874: DUP1 00001875: DUP1 00001876: PUSH1 0x20 00001878: ADD 00001879: DUP3 0000187a: DUP2 0000187b: SUB 0000187c: DUP3 0000187d: MSTORE 0000187e: PUSH1 0x2a 00001880: DUP2 00001881: MSTORE 00001882: PUSH1 0x20 00001884: ADD 00001885: DUP1 00001886: PUSH2 0x2ce9 00001889: PUSH1 0x2a 0000188b: SWAP2 0000188c: CODECOPY 0000188d: PUSH1 0x40 0000188f: ADD 00001890: SWAP2 00001891: POP 00001892: POP 00001893: PUSH1 0x40 00001895: MLOAD 00001896: DUP1 00001897: SWAP2 00001898: SUB 00001899: SWAP1 0000189a: REVERT 0000189b: JUMPDEST 0000189c: DUP3 0000189d: ISZERO 0000189e: DUP1 0000189f: ISZERO 000018a0: SWAP1 000018a1: PUSH2 0x18a9 000018a4: JUMPI 000018a5: POP 000018a6: DUP3 000018a7: DUP2 000018a8: EQ 000018a9: JUMPDEST 000018aa: PUSH2 0x18b2 000018ad: JUMPI 000018ae: PUSH1 0x00 000018b0: DUP1 000018b1: REVERT 000018b2: JUMPDEST 000018b3: PUSH1 0x00 000018b5: JUMPDEST 000018b6: DUP4 000018b7: DUP2 000018b8: LT 000018b9: ISZERO 000018ba: PUSH2 0x1b41 000018bd: JUMPI 000018be: PUSH2 0x18d8 000018c1: DUP6 000018c2: DUP6 000018c3: DUP4 000018c4: DUP2 000018c5: DUP2 000018c6: LT 000018c7: PUSH2 0x18cc 000018ca: JUMPI 000018cb: INVALID 000018cc: JUMPDEST 000018cd: SWAP1 000018ce: POP 000018cf: PUSH1 0x20 000018d1: MUL 000018d2: ADD 000018d3: CALLDATALOAD 000018d4: PUSH2 0x2485 000018d7: JUMP 000018d8: JUMPDEST 000018d9: ISZERO 000018da: PUSH2 0x1a02 000018dd: JUMPI 000018de: DUP3 000018df: DUP3 000018e0: DUP3 000018e1: DUP2 000018e2: DUP2 000018e3: LT 000018e4: PUSH2 0x18e9 000018e7: JUMPI 000018e8: INVALID 000018e9: JUMPDEST 000018ea: SWAP1 000018eb: POP 000018ec: PUSH1 0x20 000018ee: MUL 000018ef: ADD 000018f0: CALLDATALOAD 000018f1: PUSH1 0x02 000018f3: PUSH1 0x00 000018f5: DUP8 000018f6: DUP8 000018f7: DUP6 000018f8: DUP2 000018f9: DUP2 000018fa: LT 000018fb: PUSH2 0x1900 000018fe: JUMPI 000018ff: INVALID 00001900: JUMPDEST 00001901: SWAP1 00001902: POP 00001903: PUSH1 0x20 00001905: MUL 00001906: ADD 00001907: CALLDATALOAD 00001908: DUP2 00001909: MSTORE 0000190a: PUSH1 0x20 0000190c: ADD 0000190d: SWAP1 0000190e: DUP2 0000190f: MSTORE 00001910: PUSH1 0x20 00001912: ADD 00001913: PUSH1 0x00 00001915: KECCAK256 00001916: PUSH1 0x00 00001918: DUP9 00001919: PUSH1 0x01 0000191b: PUSH1 0x01 0000191d: PUSH1 0xa0 0000191f: SHL 00001920: SUB 00001921: AND 00001922: PUSH1 0x01 00001924: PUSH1 0x01 00001926: PUSH1 0xa0 00001928: SHL 00001929: SUB 0000192a: AND 0000192b: DUP2 0000192c: MSTORE 0000192d: PUSH1 0x20 0000192f: ADD 00001930: SWAP1 00001931: DUP2 00001932: MSTORE 00001933: PUSH1 0x20 00001935: ADD 00001936: PUSH1 0x00 00001938: KECCAK256 00001939: SLOAD 0000193a: LT 0000193b: ISZERO 0000193c: PUSH2 0x1944 0000193f: JUMPI 00001940: PUSH1 0x00 00001942: DUP1 00001943: REVERT 00001944: JUMPDEST 00001945: PUSH2 0x19b1 00001948: DUP4 00001949: DUP4 0000194a: DUP4 0000194b: DUP2 0000194c: DUP2 0000194d: LT 0000194e: PUSH2 0x1953 00001951: JUMPI 00001952: INVALID 00001953: JUMPDEST 00001954: SWAP1 00001955: POP 00001956: PUSH1 0x20 00001958: MUL 00001959: ADD 0000195a: CALLDATALOAD 0000195b: PUSH1 0x02 0000195d: PUSH1 0x00 0000195f: DUP9 00001960: DUP9 00001961: DUP7 00001962: DUP2 00001963: DUP2 00001964: LT 00001965: PUSH2 0x196a 00001968: JUMPI 00001969: INVALID 0000196a: JUMPDEST 0000196b: SWAP1 0000196c: POP 0000196d: PUSH1 0x20 0000196f: MUL 00001970: ADD 00001971: CALLDATALOAD 00001972: DUP2 00001973: MSTORE 00001974: PUSH1 0x20 00001976: ADD 00001977: SWAP1 00001978: DUP2 00001979: MSTORE 0000197a: PUSH1 0x20 0000197c: ADD 0000197d: PUSH1 0x00 0000197f: KECCAK256 00001980: PUSH1 0x00 00001982: DUP10 00001983: PUSH1 0x01 00001985: PUSH1 0x01 00001987: PUSH1 0xa0 00001989: SHL 0000198a: SUB 0000198b: AND 0000198c: PUSH1 0x01 0000198e: PUSH1 0x01 00001990: PUSH1 0xa0 00001992: SHL 00001993: SUB 00001994: AND 00001995: DUP2 00001996: MSTORE 00001997: PUSH1 0x20 00001999: ADD 0000199a: SWAP1 0000199b: DUP2 0000199c: MSTORE 0000199d: PUSH1 0x20 0000199f: ADD 000019a0: PUSH1 0x00 000019a2: KECCAK256 000019a3: SLOAD 000019a4: PUSH2 0x2a5d 000019a7: SWAP1 000019a8: SWAP2 000019a9: SWAP1 000019aa: PUSH4 0xffffffff 000019af: AND 000019b0: JUMP 000019b1: JUMPDEST 000019b2: PUSH1 0x02 000019b4: PUSH1 0x00 000019b6: DUP8 000019b7: DUP8 000019b8: DUP6 000019b9: DUP2 000019ba: DUP2 000019bb: LT 000019bc: PUSH2 0x19c1 000019bf: JUMPI 000019c0: INVALID 000019c1: JUMPDEST 000019c2: SWAP1 000019c3: POP 000019c4: PUSH1 0x20 000019c6: MUL 000019c7: ADD 000019c8: CALLDATALOAD 000019c9: DUP2 000019ca: MSTORE 000019cb: PUSH1 0x20 000019cd: ADD 000019ce: SWAP1 000019cf: DUP2 000019d0: MSTORE 000019d1: PUSH1 0x20 000019d3: ADD 000019d4: PUSH1 0x00 000019d6: KECCAK256 000019d7: PUSH1 0x00 000019d9: DUP9 000019da: PUSH1 0x01 000019dc: PUSH1 0x01 000019de: PUSH1 0xa0 000019e0: SHL 000019e1: SUB 000019e2: AND 000019e3: PUSH1 0x01 000019e5: PUSH1 0x01 000019e7: PUSH1 0xa0 000019e9: SHL 000019ea: SUB 000019eb: AND 000019ec: DUP2 000019ed: MSTORE 000019ee: PUSH1 0x20 000019f0: ADD 000019f1: SWAP1 000019f2: DUP2 000019f3: MSTORE 000019f4: PUSH1 0x20 000019f6: ADD 000019f7: PUSH1 0x00 000019f9: KECCAK256 000019fa: DUP2 000019fb: SWAP1 000019fc: SSTORE 000019fd: POP 000019fe: PUSH2 0x1adf 00001a01: JUMP 00001a02: JUMPDEST 00001a03: PUSH2 0x1a11 00001a06: DUP6 00001a07: DUP6 00001a08: DUP4 00001a09: DUP2 00001a0a: DUP2 00001a0b: LT 00001a0c: PUSH2 0x1244 00001a0f: JUMPI 00001a10: INVALID 00001a11: JUMPDEST 00001a12: PUSH2 0x1a1a 00001a15: JUMPI 00001a16: PUSH1 0x00 00001a18: DUP1 00001a19: REVERT 00001a1a: JUMPDEST 00001a1b: DUP3 00001a1c: DUP3 00001a1d: DUP3 00001a1e: DUP2 00001a1f: DUP2 00001a20: LT 00001a21: PUSH2 0x1a26 00001a24: JUMPI 00001a25: INVALID 00001a26: JUMPDEST 00001a27: SWAP1 00001a28: POP 00001a29: PUSH1 0x20 00001a2b: MUL 00001a2c: ADD 00001a2d: CALLDATALOAD 00001a2e: PUSH1 0x01 00001a30: EQ 00001a31: PUSH2 0x1a39 00001a34: JUMPI 00001a35: PUSH1 0x00 00001a37: DUP1 00001a38: REVERT 00001a39: JUMPDEST 00001a3a: PUSH1 0x00 00001a3c: PUSH2 0x1a4a 00001a3f: DUP7 00001a40: DUP7 00001a41: DUP5 00001a42: DUP2 00001a43: DUP2 00001a44: LT 00001a45: PUSH2 0x130f 00001a48: JUMPI 00001a49: INVALID 00001a4a: JUMPDEST 00001a4b: PUSH1 0x00 00001a4d: DUP2 00001a4e: DUP2 00001a4f: MSTORE 00001a50: PUSH1 0x02 00001a52: PUSH1 0x20 00001a54: SWAP1 00001a55: DUP2 00001a56: MSTORE 00001a57: PUSH1 0x40 00001a59: DUP1 00001a5a: DUP4 00001a5b: KECCAK256 00001a5c: PUSH1 0x01 00001a5e: PUSH1 0x01 00001a60: PUSH1 0xa0 00001a62: SHL 00001a63: SUB 00001a64: DUP13 00001a65: AND 00001a66: DUP5 00001a67: MSTORE 00001a68: SWAP1 00001a69: SWAP2 00001a6a: MSTORE 00001a6b: SWAP1 00001a6c: KECCAK256 00001a6d: SLOAD 00001a6e: SWAP1 00001a6f: SWAP2 00001a70: POP 00001a71: PUSH2 0x1a81 00001a74: SWAP1 00001a75: PUSH1 0x01 00001a77: PUSH4 0xffffffff 00001a7c: PUSH2 0x2a5d 00001a7f: AND 00001a80: JUMP 00001a81: JUMPDEST 00001a82: PUSH1 0x00 00001a84: DUP3 00001a85: DUP2 00001a86: MSTORE 00001a87: PUSH1 0x02 00001a89: PUSH1 0x20 00001a8b: SWAP1 00001a8c: DUP2 00001a8d: MSTORE 00001a8e: PUSH1 0x40 00001a90: DUP1 00001a91: DUP4 00001a92: KECCAK256 00001a93: PUSH1 0x01 00001a95: PUSH1 0x01 00001a97: PUSH1 0xa0 00001a99: SHL 00001a9a: SUB 00001a9b: DUP13 00001a9c: AND 00001a9d: DUP5 00001a9e: MSTORE 00001a9f: SWAP1 00001aa0: SWAP2 00001aa1: MSTORE 00001aa2: DUP2 00001aa3: KECCAK256 00001aa4: SWAP2 00001aa5: SWAP1 00001aa6: SWAP2 00001aa7: SSTORE 00001aa8: PUSH1 0x04 00001aaa: SWAP1 00001aab: DUP8 00001aac: DUP8 00001aad: DUP6 00001aae: DUP2 00001aaf: DUP2 00001ab0: LT 00001ab1: PUSH2 0x1ab6 00001ab4: JUMPI 00001ab5: INVALID 00001ab6: JUMPDEST 00001ab7: PUSH1 0x20 00001ab9: SWAP1 00001aba: DUP2 00001abb: MUL 00001abc: SWAP3 00001abd: SWAP1 00001abe: SWAP3 00001abf: ADD 00001ac0: CALLDATALOAD 00001ac1: DUP4 00001ac2: MSTORE 00001ac3: POP 00001ac4: DUP2 00001ac5: ADD 00001ac6: SWAP2 00001ac7: SWAP1 00001ac8: SWAP2 00001ac9: MSTORE 00001aca: PUSH1 0x40 00001acc: ADD 00001acd: PUSH1 0x00 00001acf: KECCAK256 00001ad0: DUP1 00001ad1: SLOAD 00001ad2: PUSH1 0x01 00001ad4: PUSH1 0x01 00001ad6: PUSH1 0xa0 00001ad8: SHL 00001ad9: SUB 00001ada: NOT 00001adb: AND 00001adc: SWAP1 00001add: SSTORE 00001ade: POP 00001adf: JUMPDEST 00001ae0: PUSH1 0x00 00001ae2: PUSH1 0x01 00001ae4: PUSH1 0x01 00001ae6: PUSH1 0xa0 00001ae8: SHL 00001ae9: SUB 00001aea: DUP8 00001aeb: AND 00001aec: CALLER 00001aed: PUSH1 0x00 00001aef: DUP1 00001af0: MLOAD 00001af1: PUSH1 0x20 00001af3: PUSH2 0x2c5c 00001af6: DUP4 00001af7: CODECOPY 00001af8: DUP2 00001af9: MLOAD 00001afa: SWAP2 00001afb: MSTORE 00001afc: DUP9 00001afd: DUP9 00001afe: DUP7 00001aff: DUP2 00001b00: DUP2 00001b01: LT 00001b02: PUSH2 0x1b07 00001b05: JUMPI 00001b06: INVALID 00001b07: JUMPDEST 00001b08: SWAP1 00001b09: POP 00001b0a: PUSH1 0x20 00001b0c: MUL 00001b0d: ADD 00001b0e: CALLDATALOAD 00001b0f: DUP8 00001b10: DUP8 00001b11: DUP8 00001b12: DUP2 00001b13: DUP2 00001b14: LT 00001b15: PUSH2 0x1b1a 00001b18: JUMPI 00001b19: INVALID 00001b1a: JUMPDEST 00001b1b: PUSH1 0x40 00001b1d: DUP1 00001b1e: MLOAD 00001b1f: SWAP5 00001b20: DUP6 00001b21: MSTORE 00001b22: PUSH1 0x20 00001b24: SWAP2 00001b25: DUP3 00001b26: MUL 00001b27: SWAP4 00001b28: SWAP1 00001b29: SWAP4 00001b2a: ADD 00001b2b: CALLDATALOAD 00001b2c: SWAP1 00001b2d: DUP5 00001b2e: ADD 00001b2f: MSTORE 00001b30: POP 00001b31: DUP1 00001b32: MLOAD 00001b33: SWAP2 00001b34: DUP3 00001b35: SWAP1 00001b36: SUB 00001b37: ADD 00001b38: SWAP1 00001b39: LOG4 00001b3a: PUSH1 0x01 00001b3c: ADD 00001b3d: PUSH2 0x18b5 00001b40: JUMP 00001b41: JUMPDEST 00001b42: POP 00001b43: POP 00001b44: POP 00001b45: POP 00001b46: POP 00001b47: POP 00001b48: JUMP 00001b49: JUMPDEST 00001b4a: PUSH1 0x60 00001b4c: DUP4 00001b4d: DUP3 00001b4e: EQ 00001b4f: PUSH2 0x1b57 00001b52: JUMPI 00001b53: PUSH1 0x00 00001b55: DUP1 00001b56: REVERT 00001b57: JUMPDEST 00001b58: PUSH1 0x40 00001b5a: DUP1 00001b5b: MLOAD 00001b5c: DUP6 00001b5d: DUP2 00001b5e: MSTORE 00001b5f: PUSH1 0x20 00001b61: DUP1 00001b62: DUP8 00001b63: MUL 00001b64: DUP3 00001b65: ADD 00001b66: ADD 00001b67: SWAP1 00001b68: SWAP2 00001b69: MSTORE 00001b6a: PUSH1 0x60 00001b6c: SWAP1 00001b6d: DUP6 00001b6e: DUP1 00001b6f: ISZERO 00001b70: PUSH2 0x1b83 00001b73: JUMPI 00001b74: DUP2 00001b75: PUSH1 0x20 00001b77: ADD 00001b78: PUSH1 0x20 00001b7a: DUP3 00001b7b: MUL 00001b7c: DUP1 00001b7d: CODESIZE 00001b7e: DUP4 00001b7f: CODECOPY 00001b80: ADD 00001b81: SWAP1 00001b82: POP 00001b83: JUMPDEST 00001b84: POP 00001b85: SWAP1 00001b86: POP 00001b87: PUSH1 0x00 00001b89: JUMPDEST 00001b8a: DUP6 00001b8b: DUP2 00001b8c: LT 00001b8d: ISZERO 00001b8e: PUSH2 0x1c8a 00001b91: JUMPI 00001b92: PUSH1 0x00 00001b94: DUP6 00001b95: DUP6 00001b96: DUP4 00001b97: DUP2 00001b98: DUP2 00001b99: LT 00001b9a: PUSH2 0x1b9f 00001b9d: JUMPI 00001b9e: INVALID 00001b9f: JUMPDEST 00001ba0: SWAP1 00001ba1: POP 00001ba2: PUSH1 0x20 00001ba4: MUL 00001ba5: ADD 00001ba6: CALLDATALOAD 00001ba7: SWAP1 00001ba8: POP 00001ba9: PUSH2 0x1bb1 00001bac: DUP2 00001bad: PUSH2 0x2187 00001bb0: JUMP 00001bb1: JUMPDEST 00001bb2: ISZERO 00001bb3: PUSH2 0x1c1c 00001bb6: JUMPI 00001bb7: DUP8 00001bb8: DUP8 00001bb9: DUP4 00001bba: DUP2 00001bbb: DUP2 00001bbc: LT 00001bbd: PUSH2 0x1bc2 00001bc0: JUMPI 00001bc1: INVALID 00001bc2: JUMPDEST 00001bc3: PUSH1 0x00 00001bc5: DUP5 00001bc6: DUP2 00001bc7: MSTORE 00001bc8: PUSH1 0x04 00001bca: PUSH1 0x20 00001bcc: SWAP1 00001bcd: DUP2 00001bce: MSTORE 00001bcf: PUSH1 0x40 00001bd1: SWAP1 00001bd2: SWAP2 00001bd3: KECCAK256 00001bd4: SLOAD 00001bd5: SWAP2 00001bd6: MUL 00001bd7: SWAP3 00001bd8: SWAP1 00001bd9: SWAP3 00001bda: ADD 00001bdb: CALLDATALOAD 00001bdc: PUSH1 0x01 00001bde: PUSH1 0x01 00001be0: PUSH1 0xa0 00001be2: SHL 00001be3: SUB 00001be4: SWAP1 00001be5: DUP2 00001be6: AND 00001be7: SWAP3 00001be8: AND 00001be9: SWAP2 00001bea: SWAP1 00001beb: SWAP2 00001bec: EQ 00001bed: SWAP1 00001bee: POP 00001bef: PUSH2 0x1bf9 00001bf2: JUMPI 00001bf3: PUSH1 0x00 00001bf5: PUSH2 0x1bfc 00001bf8: JUMP 00001bf9: JUMPDEST 00001bfa: PUSH1 0x01 00001bfc: JUMPDEST 00001bfd: PUSH1 0xff 00001bff: AND 00001c00: DUP4 00001c01: DUP4 00001c02: DUP2 00001c03: MLOAD 00001c04: DUP2 00001c05: LT 00001c06: PUSH2 0x1c0b 00001c09: JUMPI 00001c0a: INVALID 00001c0b: JUMPDEST 00001c0c: PUSH1 0x20 00001c0e: MUL 00001c0f: PUSH1 0x20 00001c11: ADD 00001c12: ADD 00001c13: DUP2 00001c14: DUP2 00001c15: MSTORE 00001c16: POP 00001c17: POP 00001c18: PUSH2 0x1c81 00001c1b: JUMP 00001c1c: JUMPDEST 00001c1d: PUSH1 0x00 00001c1f: DUP2 00001c20: DUP2 00001c21: MSTORE 00001c22: PUSH1 0x02 00001c24: PUSH1 0x20 00001c26: MSTORE 00001c27: PUSH1 0x40 00001c29: DUP2 00001c2a: KECCAK256 00001c2b: SWAP1 00001c2c: DUP10 00001c2d: DUP10 00001c2e: DUP6 00001c2f: DUP2 00001c30: DUP2 00001c31: LT 00001c32: PUSH2 0x1c37 00001c35: JUMPI 00001c36: INVALID 00001c37: JUMPDEST 00001c38: SWAP1 00001c39: POP 00001c3a: PUSH1 0x20 00001c3c: MUL 00001c3d: ADD 00001c3e: CALLDATALOAD 00001c3f: PUSH1 0x01 00001c41: PUSH1 0x01 00001c43: PUSH1 0xa0 00001c45: SHL 00001c46: SUB 00001c47: AND 00001c48: PUSH1 0x01 00001c4a: PUSH1 0x01 00001c4c: PUSH1 0xa0 00001c4e: SHL 00001c4f: SUB 00001c50: AND 00001c51: PUSH1 0x01 00001c53: PUSH1 0x01 00001c55: PUSH1 0xa0 00001c57: SHL 00001c58: SUB 00001c59: AND 00001c5a: DUP2 00001c5b: MSTORE 00001c5c: PUSH1 0x20 00001c5e: ADD 00001c5f: SWAP1 00001c60: DUP2 00001c61: MSTORE 00001c62: PUSH1 0x20 00001c64: ADD 00001c65: PUSH1 0x00 00001c67: KECCAK256 00001c68: SLOAD 00001c69: DUP4 00001c6a: DUP4 00001c6b: DUP2 00001c6c: MLOAD 00001c6d: DUP2 00001c6e: LT 00001c6f: PUSH2 0x1c74 00001c72: JUMPI 00001c73: INVALID 00001c74: JUMPDEST 00001c75: PUSH1 0x20 00001c77: MUL 00001c78: PUSH1 0x20 00001c7a: ADD 00001c7b: ADD 00001c7c: DUP2 00001c7d: DUP2 00001c7e: MSTORE 00001c7f: POP 00001c80: POP 00001c81: JUMPDEST 00001c82: POP 00001c83: PUSH1 0x01 00001c85: ADD 00001c86: PUSH2 0x1b89 00001c89: JUMP 00001c8a: JUMPDEST 00001c8b: POP 00001c8c: SWAP6 00001c8d: SWAP5 00001c8e: POP 00001c8f: POP 00001c90: POP 00001c91: POP 00001c92: POP 00001c93: JUMP 00001c94: JUMPDEST 00001c95: CALLER 00001c96: PUSH1 0x00 00001c98: SWAP1 00001c99: DUP2 00001c9a: MSTORE 00001c9b: PUSH1 0x09 00001c9d: PUSH1 0x20 00001c9f: MSTORE 00001ca0: PUSH1 0x40 00001ca2: SWAP1 00001ca3: KECCAK256 00001ca4: SLOAD 00001ca5: PUSH1 0xff 00001ca7: AND 00001ca8: PUSH2 0x1ce6 00001cab: JUMPI 00001cac: PUSH1 0x40 00001cae: DUP1 00001caf: MLOAD 00001cb0: PUSH3 0x461bcd 00001cb4: PUSH1 0xe5 00001cb6: SHL 00001cb7: DUP2 00001cb8: MSTORE 00001cb9: PUSH1 0x20 00001cbb: PUSH1 0x04 00001cbd: DUP3 00001cbe: ADD 00001cbf: MSTORE 00001cc0: PUSH1 0x1b 00001cc2: PUSH1 0x24 00001cc4: DUP3 00001cc5: ADD 00001cc6: MSTORE 00001cc7: PUSH1 0x00 00001cc9: DUP1 00001cca: MLOAD 00001ccb: PUSH1 0x20 00001ccd: PUSH2 0x2d13 00001cd0: DUP4 00001cd1: CODECOPY 00001cd2: DUP2 00001cd3: MLOAD 00001cd4: SWAP2 00001cd5: MSTORE 00001cd6: PUSH1 0x44 00001cd8: DUP3 00001cd9: ADD 00001cda: MSTORE 00001cdb: SWAP1 00001cdc: MLOAD 00001cdd: SWAP1 00001cde: DUP2 00001cdf: SWAP1 00001ce0: SUB 00001ce1: PUSH1 0x64 00001ce3: ADD 00001ce4: SWAP1 00001ce5: REVERT 00001ce6: JUMPDEST 00001ce7: PUSH2 0x1cef 00001cea: DUP6 00001ceb: PUSH2 0x259d 00001cee: JUMP 00001cef: JUMPDEST 00001cf0: PUSH2 0x1cf8 00001cf3: JUMPI 00001cf4: PUSH1 0x00 00001cf6: DUP1 00001cf7: REVERT 00001cf8: JUMPDEST 00001cf9: PUSH1 0x00 00001cfb: DUP6 00001cfc: DUP2 00001cfd: MSTORE 00001cfe: PUSH1 0x05 00001d00: PUSH1 0x20 00001d02: MSTORE 00001d03: PUSH1 0x40 00001d05: SWAP1 00001d06: KECCAK256 00001d07: SLOAD 00001d08: PUSH1 0x01 00001d0a: DUP2 00001d0b: ADD 00001d0c: SWAP1 00001d0d: PUSH2 0x1d1d 00001d10: SWAP1 00001d11: DUP6 00001d12: SWAP1 00001d13: PUSH4 0xffffffff 00001d18: PUSH2 0x28da 00001d1b: AND 00001d1c: JUMP 00001d1d: JUMPDEST 00001d1e: PUSH1 0x00 00001d20: DUP8 00001d21: DUP2 00001d22: MSTORE 00001d23: PUSH1 0x05 00001d25: PUSH1 0x20 00001d27: MSTORE 00001d28: PUSH1 0x40 00001d2a: DUP2 00001d2b: KECCAK256 00001d2c: SWAP2 00001d2d: SWAP1 00001d2e: SWAP2 00001d2f: SSTORE 00001d30: JUMPDEST 00001d31: DUP5 00001d32: DUP2 00001d33: LT 00001d34: ISZERO 00001d35: PUSH2 0x1f32 00001d38: JUMPI 00001d39: PUSH1 0x00 00001d3b: DUP7 00001d3c: DUP7 00001d3d: DUP4 00001d3e: DUP2 00001d3f: DUP2 00001d40: LT 00001d41: PUSH2 0x1d46 00001d44: JUMPI 00001d45: INVALID 00001d46: JUMPDEST 00001d47: SWAP1 00001d48: POP 00001d49: PUSH1 0x20 00001d4b: MUL 00001d4c: ADD 00001d4d: CALLDATALOAD 00001d4e: PUSH1 0x01 00001d50: PUSH1 0x01 00001d52: PUSH1 0xa0 00001d54: SHL 00001d55: SUB 00001d56: AND 00001d57: SWAP1 00001d58: POP 00001d59: PUSH1 0x00 00001d5b: DUP3 00001d5c: DUP5 00001d5d: ADD 00001d5e: DUP10 00001d5f: OR 00001d60: SWAP1 00001d61: POP 00001d62: PUSH1 0x08 00001d64: PUSH1 0x00 00001d66: DUP11 00001d67: DUP2 00001d68: MSTORE 00001d69: PUSH1 0x20 00001d6b: ADD 00001d6c: SWAP1 00001d6d: DUP2 00001d6e: MSTORE 00001d6f: PUSH1 0x20 00001d71: ADD 00001d72: PUSH1 0x00 00001d74: KECCAK256 00001d75: SLOAD 00001d76: PUSH1 0x00 00001d78: EQ 00001d79: DUP1 00001d7a: PUSH2 0x1dad 00001d7d: JUMPI 00001d7e: POP 00001d7f: PUSH1 0x00 00001d81: DUP10 00001d82: DUP2 00001d83: MSTORE 00001d84: PUSH1 0x08 00001d86: PUSH1 0x20 00001d88: SWAP1 00001d89: DUP2 00001d8a: MSTORE 00001d8b: PUSH1 0x40 00001d8d: DUP1 00001d8e: DUP4 00001d8f: KECCAK256 00001d90: SLOAD 00001d91: PUSH1 0x07 00001d93: SWAP1 00001d94: SWAP3 00001d95: MSTORE 00001d96: SWAP1 00001d97: SWAP2 00001d98: KECCAK256 00001d99: SLOAD 00001d9a: PUSH2 0x1daa 00001d9d: SWAP1 00001d9e: PUSH1 0x01 00001da0: PUSH4 0xffffffff 00001da5: PUSH2 0x28da 00001da8: AND 00001da9: JUMP 00001daa: JUMPDEST 00001dab: GT 00001dac: ISZERO 00001dad: JUMPDEST 00001dae: PUSH2 0x1dfe 00001db1: JUMPI 00001db2: PUSH1 0x40 00001db4: DUP1 00001db5: MLOAD 00001db6: PUSH3 0x461bcd 00001dba: PUSH1 0xe5 00001dbc: SHL 00001dbd: DUP2 00001dbe: MSTORE 00001dbf: PUSH1 0x20 00001dc1: PUSH1 0x04 00001dc3: DUP3 00001dc4: ADD 00001dc5: MSTORE 00001dc6: PUSH1 0x1b 00001dc8: PUSH1 0x24 00001dca: DUP3 00001dcb: ADD 00001dcc: MSTORE 00001dcd: PUSH32 0x546f6b656e20737570706c79206c696d69742065786365656465640000000000 00001dee: PUSH1 0x44 00001df0: DUP3 00001df1: ADD 00001df2: MSTORE 00001df3: SWAP1 00001df4: MLOAD 00001df5: SWAP1 00001df6: DUP2 00001df7: SWAP1 00001df8: SUB 00001df9: PUSH1 0x64 00001dfb: ADD 00001dfc: SWAP1 00001dfd: REVERT 00001dfe: JUMPDEST 00001dff: PUSH1 0x00 00001e01: DUP2 00001e02: DUP2 00001e03: MSTORE 00001e04: PUSH1 0x04 00001e06: PUSH1 0x20 00001e08: SWAP1 00001e09: DUP2 00001e0a: MSTORE 00001e0b: PUSH1 0x40 00001e0d: DUP1 00001e0e: DUP4 00001e0f: KECCAK256 00001e10: DUP1 00001e11: SLOAD 00001e12: PUSH1 0x01 00001e14: PUSH1 0x01 00001e16: PUSH1 0xa0 00001e18: SHL 00001e19: SUB 00001e1a: NOT 00001e1b: AND 00001e1c: PUSH1 0x01 00001e1e: PUSH1 0x01 00001e20: PUSH1 0xa0 00001e22: SHL 00001e23: SUB 00001e24: DUP8 00001e25: AND 00001e26: OR 00001e27: SWAP1 00001e28: SSTORE 00001e29: DUP12 00001e2a: DUP4 00001e2b: MSTORE 00001e2c: PUSH1 0x07 00001e2e: SWAP1 00001e2f: SWAP2 00001e30: MSTORE 00001e31: SWAP1 00001e32: KECCAK256 00001e33: SLOAD 00001e34: PUSH2 0x1e3e 00001e37: SWAP1 00001e38: PUSH1 0x01 00001e3a: PUSH2 0x28da 00001e3d: JUMP 00001e3e: JUMPDEST 00001e3f: PUSH1 0x00 00001e41: DUP11 00001e42: DUP2 00001e43: MSTORE 00001e44: PUSH1 0x07 00001e46: PUSH1 0x20 00001e48: SWAP1 00001e49: DUP2 00001e4a: MSTORE 00001e4b: PUSH1 0x40 00001e4d: DUP1 00001e4e: DUP4 00001e4f: KECCAK256 00001e50: SWAP4 00001e51: SWAP1 00001e52: SWAP4 00001e53: SSTORE 00001e54: PUSH1 0x02 00001e56: DUP2 00001e57: MSTORE 00001e58: DUP3 00001e59: DUP3 00001e5a: KECCAK256 00001e5b: PUSH1 0x01 00001e5d: PUSH1 0x01 00001e5f: PUSH1 0xa0 00001e61: SHL 00001e62: SUB 00001e63: DUP7 00001e64: AND 00001e65: DUP4 00001e66: MSTORE 00001e67: SWAP1 00001e68: MSTORE 00001e69: KECCAK256 00001e6a: SLOAD 00001e6b: PUSH2 0x1e7b 00001e6e: SWAP1 00001e6f: PUSH1 0x01 00001e71: PUSH4 0xffffffff 00001e76: PUSH2 0x28da 00001e79: AND 00001e7a: JUMP 00001e7b: JUMPDEST 00001e7c: PUSH1 0x00 00001e7e: DUP11 00001e7f: DUP2 00001e80: MSTORE 00001e81: PUSH1 0x02 00001e83: PUSH1 0x20 00001e85: SWAP1 00001e86: DUP2 00001e87: MSTORE 00001e88: PUSH1 0x40 00001e8a: DUP1 00001e8b: DUP4 00001e8c: KECCAK256 00001e8d: PUSH1 0x01 00001e8f: PUSH1 0x01 00001e91: PUSH1 0xa0 00001e93: SHL 00001e94: SUB 00001e95: DUP8 00001e96: AND 00001e97: DUP1 00001e98: DUP6 00001e99: MSTORE 00001e9a: SWAP1 00001e9b: DUP4 00001e9c: MSTORE 00001e9d: DUP2 00001e9e: DUP5 00001e9f: KECCAK256 00001ea0: SWAP5 00001ea1: SWAP1 00001ea2: SWAP5 00001ea3: SSTORE 00001ea4: DUP1 00001ea5: MLOAD 00001ea6: DUP6 00001ea7: DUP2 00001ea8: MSTORE 00001ea9: PUSH1 0x01 00001eab: SWAP3 00001eac: DUP2 00001ead: ADD 00001eae: SWAP3 00001eaf: SWAP1 00001eb0: SWAP3 00001eb1: MSTORE 00001eb2: DUP1 00001eb3: MLOAD 00001eb4: CALLER 00001eb5: SWAP3 00001eb6: PUSH1 0x00 00001eb8: DUP1 00001eb9: MLOAD 00001eba: PUSH1 0x20 00001ebc: PUSH2 0x2c5c 00001ebf: DUP4 00001ec0: CODECOPY 00001ec1: DUP2 00001ec2: MLOAD 00001ec3: SWAP2 00001ec4: MSTORE 00001ec5: SWAP3 00001ec6: SWAP1 00001ec7: DUP3 00001ec8: SWAP1 00001ec9: SUB 00001eca: ADD 00001ecb: SWAP1 00001ecc: LOG4 00001ecd: PUSH2 0x1ede 00001ed0: DUP3 00001ed1: PUSH1 0x01 00001ed3: PUSH1 0x01 00001ed5: PUSH1 0xa0 00001ed7: SHL 00001ed8: SUB 00001ed9: AND 00001eda: PUSH2 0x28e7 00001edd: JUMP 00001ede: JUMPDEST 00001edf: ISZERO 00001ee0: PUSH2 0x1f28 00001ee3: JUMPI 00001ee4: PUSH2 0x1f28 00001ee7: CALLER 00001ee8: CALLER 00001ee9: DUP5 00001eea: DUP5 00001eeb: PUSH1 0x01 00001eed: DUP12 00001eee: DUP12 00001eef: DUP1 00001ef0: DUP1 00001ef1: PUSH1 0x1f 00001ef3: ADD 00001ef4: PUSH1 0x20 00001ef6: DUP1 00001ef7: SWAP2 00001ef8: DIV 00001ef9: MUL 00001efa: PUSH1 0x20 00001efc: ADD 00001efd: PUSH1 0x40 00001eff: MLOAD 00001f00: SWAP1 00001f01: DUP2 00001f02: ADD 00001f03: PUSH1 0x40 00001f05: MSTORE 00001f06: DUP1 00001f07: SWAP4 00001f08: SWAP3 00001f09: SWAP2 00001f0a: SWAP1 00001f0b: DUP2 00001f0c: DUP2 00001f0d: MSTORE 00001f0e: PUSH1 0x20 00001f10: ADD 00001f11: DUP4 00001f12: DUP4 00001f13: DUP1 00001f14: DUP3 00001f15: DUP5 00001f16: CALLDATACOPY 00001f17: PUSH1 0x00 00001f19: SWAP3 00001f1a: ADD 00001f1b: SWAP2 00001f1c: SWAP1 00001f1d: SWAP2 00001f1e: MSTORE 00001f1f: POP 00001f20: PUSH2 0x28ed 00001f23: SWAP3 00001f24: POP 00001f25: POP 00001f26: POP 00001f27: JUMP 00001f28: JUMPDEST 00001f29: POP 00001f2a: POP 00001f2b: PUSH1 0x01 00001f2d: ADD 00001f2e: PUSH2 0x1d30 00001f31: JUMP 00001f32: JUMPDEST 00001f33: POP 00001f34: POP 00001f35: POP 00001f36: POP 00001f37: POP 00001f38: POP 00001f39: POP 00001f3a: JUMP 00001f3b: JUMPDEST 00001f3c: PUSH1 0x01 00001f3e: PUSH1 0x01 00001f40: PUSH1 0xa0 00001f42: SHL 00001f43: SUB 00001f44: SWAP3 00001f45: DUP4 00001f46: AND 00001f47: PUSH1 0x00 00001f49: SWAP1 00001f4a: DUP2 00001f4b: MSTORE 00001f4c: PUSH1 0x06 00001f4e: PUSH1 0x20 00001f50: SWAP1 00001f51: DUP2 00001f52: MSTORE 00001f53: PUSH1 0x40 00001f55: DUP1 00001f56: DUP4 00001f57: KECCAK256 00001f58: SWAP5 00001f59: SWAP1 00001f5a: SWAP6 00001f5b: AND 00001f5c: DUP3 00001f5d: MSTORE 00001f5e: SWAP3 00001f5f: DUP4 00001f60: MSTORE 00001f61: DUP4 00001f62: DUP2 00001f63: KECCAK256 00001f64: SWAP2 00001f65: DUP2 00001f66: MSTORE 00001f67: SWAP2 00001f68: MSTORE 00001f69: KECCAK256 00001f6a: SLOAD 00001f6b: SWAP1 00001f6c: JUMP 00001f6d: JUMPDEST 00001f6e: DUP5 00001f6f: DUP4 00001f70: EQ 00001f71: PUSH2 0x1fc1 00001f74: JUMPI 00001f75: PUSH1 0x40 00001f77: DUP1 00001f78: MLOAD 00001f79: PUSH3 0x461bcd 00001f7d: PUSH1 0xe5 00001f7f: SHL 00001f80: DUP2 00001f81: MSTORE 00001f82: PUSH1 0x20 00001f84: PUSH1 0x04 00001f86: DUP3 00001f87: ADD 00001f88: MSTORE 00001f89: PUSH1 0x1a 00001f8b: PUSH1 0x24 00001f8d: DUP3 00001f8e: ADD 00001f8f: MSTORE 00001f90: PUSH32 0x417272617973206d7573742062652073616d65206c656e677468000000000000 00001fb1: PUSH1 0x44 00001fb3: DUP3 00001fb4: ADD 00001fb5: MSTORE 00001fb6: SWAP1 00001fb7: MLOAD 00001fb8: SWAP1 00001fb9: DUP2 00001fba: SWAP1 00001fbb: SUB 00001fbc: PUSH1 0x64 00001fbe: ADD 00001fbf: SWAP1 00001fc0: REVERT 00001fc1: JUMPDEST 00001fc2: DUP3 00001fc3: DUP2 00001fc4: EQ 00001fc5: PUSH2 0x2015 00001fc8: JUMPI 00001fc9: PUSH1 0x40 00001fcb: DUP1 00001fcc: MLOAD 00001fcd: PUSH3 0x461bcd 00001fd1: PUSH1 0xe5 00001fd3: SHL 00001fd4: DUP2 00001fd5: MSTORE 00001fd6: PUSH1 0x20 00001fd8: PUSH1 0x04 00001fda: DUP3 00001fdb: ADD 00001fdc: MSTORE 00001fdd: PUSH1 0x1a 00001fdf: PUSH1 0x24 00001fe1: DUP3 00001fe2: ADD 00001fe3: MSTORE 00001fe4: PUSH32 0x417272617973206d7573742062652073616d65206c656e677468000000000000 00002005: PUSH1 0x44 00002007: DUP3 00002008: ADD 00002009: MSTORE 0000200a: SWAP1 0000200b: MLOAD 0000200c: SWAP1 0000200d: DUP2 0000200e: SWAP1 0000200f: SUB 00002010: PUSH1 0x64 00002012: ADD 00002013: SWAP1 00002014: REVERT 00002015: JUMPDEST 00002016: PUSH1 0x00 00002018: JUMPDEST 00002019: DUP2 0000201a: DUP2 0000201b: LT 0000201c: ISZERO 0000201d: PUSH2 0x10d3 00002020: JUMPI 00002021: PUSH1 0x00 00002023: DUP8 00002024: DUP8 00002025: DUP4 00002026: DUP2 00002027: DUP2 00002028: LT 00002029: PUSH2 0x202e 0000202c: JUMPI 0000202d: INVALID 0000202e: JUMPDEST 0000202f: SWAP1 00002030: POP 00002031: PUSH1 0x20 00002033: MUL 00002034: ADD 00002035: CALLDATALOAD 00002036: SWAP1 00002037: POP 00002038: PUSH1 0x00 0000203a: DUP7 0000203b: DUP7 0000203c: DUP5 0000203d: DUP2 0000203e: DUP2 0000203f: LT 00002040: PUSH2 0x2045 00002043: JUMPI 00002044: INVALID 00002045: JUMPDEST 00002046: SWAP1 00002047: POP 00002048: PUSH1 0x20 0000204a: MUL 0000204b: ADD 0000204c: CALLDATALOAD 0000204d: SWAP1 0000204e: POP 0000204f: PUSH1 0x00 00002051: DUP6 00002052: DUP6 00002053: DUP6 00002054: DUP2 00002055: DUP2 00002056: LT 00002057: PUSH2 0x205c 0000205a: JUMPI 0000205b: INVALID 0000205c: JUMPDEST 0000205d: SWAP1 0000205e: POP 0000205f: PUSH1 0x20 00002061: MUL 00002062: ADD 00002063: CALLDATALOAD 00002064: SWAP1 00002065: POP 00002066: DUP2 00002067: PUSH1 0x06 00002069: PUSH1 0x00 0000206b: CALLER 0000206c: PUSH1 0x01 0000206e: PUSH1 0x01 00002070: PUSH1 0xa0 00002072: SHL 00002073: SUB 00002074: AND 00002075: PUSH1 0x01 00002077: PUSH1 0x01 00002079: PUSH1 0xa0 0000207b: SHL 0000207c: SUB 0000207d: AND 0000207e: DUP2 0000207f: MSTORE 00002080: PUSH1 0x20 00002082: ADD 00002083: SWAP1 00002084: DUP2 00002085: MSTORE 00002086: PUSH1 0x20 00002088: ADD 00002089: PUSH1 0x00 0000208b: KECCAK256 0000208c: PUSH1 0x00 0000208e: DUP14 0000208f: PUSH1 0x01 00002091: PUSH1 0x01 00002093: PUSH1 0xa0 00002095: SHL 00002096: SUB 00002097: AND 00002098: PUSH1 0x01 0000209a: PUSH1 0x01 0000209c: PUSH1 0xa0 0000209e: SHL 0000209f: SUB 000020a0: AND 000020a1: DUP2 000020a2: MSTORE 000020a3: PUSH1 0x20 000020a5: ADD 000020a6: SWAP1 000020a7: DUP2 000020a8: MSTORE 000020a9: PUSH1 0x20 000020ab: ADD 000020ac: PUSH1 0x00 000020ae: KECCAK256 000020af: PUSH1 0x00 000020b1: DUP6 000020b2: DUP2 000020b3: MSTORE 000020b4: PUSH1 0x20 000020b6: ADD 000020b7: SWAP1 000020b8: DUP2 000020b9: MSTORE 000020ba: PUSH1 0x20 000020bc: ADD 000020bd: PUSH1 0x00 000020bf: KECCAK256 000020c0: SLOAD 000020c1: EQ 000020c2: PUSH2 0x20ca 000020c5: JUMPI 000020c6: PUSH1 0x00 000020c8: DUP1 000020c9: REVERT 000020ca: JUMPDEST 000020cb: DUP1 000020cc: PUSH1 0x06 000020ce: PUSH1 0x00 000020d0: CALLER 000020d1: PUSH1 0x01 000020d3: PUSH1 0x01 000020d5: PUSH1 0xa0 000020d7: SHL 000020d8: SUB 000020d9: AND 000020da: PUSH1 0x01 000020dc: PUSH1 0x01 000020de: PUSH1 0xa0 000020e0: SHL 000020e1: SUB 000020e2: AND 000020e3: DUP2 000020e4: MSTORE 000020e5: PUSH1 0x20 000020e7: ADD 000020e8: SWAP1 000020e9: DUP2 000020ea: MSTORE 000020eb: PUSH1 0x20 000020ed: ADD 000020ee: PUSH1 0x00 000020f0: KECCAK256 000020f1: PUSH1 0x00 000020f3: DUP14 000020f4: PUSH1 0x01 000020f6: PUSH1 0x01 000020f8: PUSH1 0xa0 000020fa: SHL 000020fb: SUB 000020fc: AND 000020fd: PUSH1 0x01 000020ff: PUSH1 0x01 00002101: PUSH1 0xa0 00002103: SHL 00002104: SUB 00002105: AND 00002106: DUP2 00002107: MSTORE 00002108: PUSH1 0x20 0000210a: ADD 0000210b: SWAP1 0000210c: DUP2 0000210d: MSTORE 0000210e: PUSH1 0x20 00002110: ADD 00002111: PUSH1 0x00 00002113: KECCAK256 00002114: PUSH1 0x00 00002116: DUP6 00002117: DUP2 00002118: MSTORE 00002119: PUSH1 0x20 0000211b: ADD 0000211c: SWAP1 0000211d: DUP2 0000211e: MSTORE 0000211f: PUSH1 0x20 00002121: ADD 00002122: PUSH1 0x00 00002124: KECCAK256 00002125: DUP2 00002126: SWAP1 00002127: SSTORE 00002128: POP 00002129: DUP3 0000212a: DUP12 0000212b: PUSH1 0x01 0000212d: PUSH1 0x01 0000212f: PUSH1 0xa0 00002131: SHL 00002132: SUB 00002133: AND 00002134: CALLER 00002135: PUSH1 0x01 00002137: PUSH1 0x01 00002139: PUSH1 0xa0 0000213b: SHL 0000213c: SUB 0000213d: AND 0000213e: PUSH32 0x3a9c85c6b31f7a9d7fe1478f53e1be42e85db97ca30d1789cfef9196dbc472c9 0000215f: DUP6 00002160: DUP6 00002161: PUSH1 0x40 00002163: MLOAD 00002164: DUP1 00002165: DUP4 00002166: DUP2 00002167: MSTORE 00002168: PUSH1 0x20 0000216a: ADD 0000216b: DUP3 0000216c: DUP2 0000216d: MSTORE 0000216e: PUSH1 0x20 00002170: ADD 00002171: SWAP3 00002172: POP 00002173: POP 00002174: POP 00002175: PUSH1 0x40 00002177: MLOAD 00002178: DUP1 00002179: SWAP2 0000217a: SUB 0000217b: SWAP1 0000217c: LOG4 0000217d: POP 0000217e: POP 0000217f: POP 00002180: PUSH1 0x01 00002182: ADD 00002183: PUSH2 0x2018 00002186: JUMP 00002187: JUMPDEST 00002188: PUSH1 0x00 0000218a: PUSH1 0x01 0000218c: PUSH1 0xff 0000218e: SHL 0000218f: DUP1 00002190: DUP4 00002191: AND 00002192: EQ 00002193: DUP1 00002194: ISZERO 00002195: PUSH2 0x0cf0 00002198: JUMPI 00002199: POP 0000219a: POP 0000219b: PUSH1 0x01 0000219d: PUSH1 0x01 0000219f: PUSH1 0x80 000021a1: SHL 000021a2: SUB 000021a3: AND 000021a4: ISZERO 000021a5: ISZERO 000021a6: SWAP1 000021a7: JUMP 000021a8: JUMPDEST 000021a9: PUSH1 0x00 000021ab: SWAP1 000021ac: DUP2 000021ad: MSTORE 000021ae: PUSH1 0x04 000021b0: PUSH1 0x20 000021b2: MSTORE 000021b3: PUSH1 0x40 000021b5: SWAP1 000021b6: KECCAK256 000021b7: SLOAD 000021b8: PUSH1 0x01 000021ba: PUSH1 0x01 000021bc: PUSH1 0xa0 000021be: SHL 000021bf: SUB 000021c0: AND 000021c1: SWAP1 000021c2: JUMP 000021c3: JUMPDEST 000021c4: PUSH16 0xffffffffffffffffffffffffffffffff 000021d5: NOT 000021d6: AND 000021d7: SWAP1 000021d8: JUMP 000021d9: JUMPDEST 000021da: PUSH1 0x00 000021dc: PUSH1 0x01 000021de: PUSH1 0xff 000021e0: SHL 000021e1: DUP1 000021e2: DUP4 000021e3: AND 000021e4: EQ 000021e5: DUP1 000021e6: ISZERO 000021e7: PUSH2 0x0cf0 000021ea: JUMPI 000021eb: POP 000021ec: POP 000021ed: PUSH1 0x01 000021ef: PUSH1 0x01 000021f1: PUSH1 0x80 000021f3: SHL 000021f4: SUB 000021f5: AND 000021f6: ISZERO 000021f7: SWAP1 000021f8: JUMP 000021f9: JUMPDEST 000021fa: CALLER 000021fb: PUSH1 0x00 000021fd: SWAP1 000021fe: DUP2 000021ff: MSTORE 00002200: PUSH1 0x09 00002202: PUSH1 0x20 00002204: MSTORE 00002205: PUSH1 0x40 00002207: SWAP1 00002208: KECCAK256 00002209: SLOAD 0000220a: PUSH1 0xff 0000220c: AND 0000220d: PUSH2 0x224b 00002210: JUMPI 00002211: PUSH1 0x40 00002213: DUP1 00002214: MLOAD 00002215: PUSH3 0x461bcd 00002219: PUSH1 0xe5 0000221b: SHL 0000221c: DUP2 0000221d: MSTORE 0000221e: PUSH1 0x20 00002220: PUSH1 0x04 00002222: DUP3 00002223: ADD 00002224: MSTORE 00002225: PUSH1 0x1b 00002227: PUSH1 0x24 00002229: DUP3 0000222a: ADD 0000222b: MSTORE 0000222c: PUSH1 0x00 0000222e: DUP1 0000222f: MLOAD 00002230: PUSH1 0x20 00002232: PUSH2 0x2d13 00002235: DUP4 00002236: CODECOPY 00002237: DUP2 00002238: MLOAD 00002239: SWAP2 0000223a: MSTORE 0000223b: PUSH1 0x44 0000223d: DUP3 0000223e: ADD 0000223f: MSTORE 00002240: SWAP1 00002241: MLOAD 00002242: SWAP1 00002243: DUP2 00002244: SWAP1 00002245: SUB 00002246: PUSH1 0x64 00002248: ADD 00002249: SWAP1 0000224a: REVERT 0000224b: JUMPDEST 0000224c: PUSH1 0x00 0000224e: DUP2 0000224f: GT 00002250: PUSH2 0x2258 00002253: JUMPI 00002254: PUSH1 0x00 00002256: DUP1 00002257: REVERT 00002258: JUMPDEST 00002259: PUSH2 0x2261 0000225c: DUP3 0000225d: PUSH2 0x2187 00002260: JUMP 00002261: JUMPDEST 00002262: ISZERO 00002263: PUSH2 0x22da 00002266: JUMPI 00002267: PUSH1 0x00 00002269: PUSH2 0x2271 0000226c: DUP4 0000226d: PUSH2 0x21c3 00002270: JUMP 00002271: JUMPDEST 00002272: PUSH1 0x00 00002274: DUP2 00002275: DUP2 00002276: MSTORE 00002277: PUSH1 0x08 00002279: PUSH1 0x20 0000227b: MSTORE 0000227c: PUSH1 0x40 0000227e: SWAP1 0000227f: KECCAK256 00002280: SLOAD 00002281: SWAP1 00002282: SWAP2 00002283: POP 00002284: ISZERO 00002285: PUSH2 0x228d 00002288: JUMPI 00002289: PUSH1 0x00 0000228b: DUP1 0000228c: REVERT 0000228d: JUMPDEST 0000228e: PUSH1 0x00 00002290: DUP2 00002291: DUP2 00002292: MSTORE 00002293: PUSH1 0x08 00002295: PUSH1 0x20 00002297: SWAP1 00002298: DUP2 00002299: MSTORE 0000229a: PUSH1 0x40 0000229c: SWAP2 0000229d: DUP3 0000229e: SWAP1 0000229f: KECCAK256 000022a0: DUP5 000022a1: SWAP1 000022a2: SSTORE 000022a3: DUP2 000022a4: MLOAD 000022a5: DUP5 000022a6: DUP2 000022a7: MSTORE 000022a8: SWAP2 000022a9: MLOAD 000022aa: DUP4 000022ab: SWAP3 000022ac: PUSH32 0x4a92cb8a98b3c42468f2ffd7b4dc17755416ebcfd17fd0040895ea07895c0fae 000022cd: SWAP3 000022ce: SWAP1 000022cf: DUP3 000022d0: SWAP1 000022d1: SUB 000022d2: ADD 000022d3: SWAP1 000022d4: LOG2 000022d5: POP 000022d6: PUSH2 0x233b 000022d9: JUMP 000022da: JUMPDEST 000022db: PUSH1 0x00 000022dd: DUP3 000022de: DUP2 000022df: MSTORE 000022e0: PUSH1 0x08 000022e2: PUSH1 0x20 000022e4: MSTORE 000022e5: PUSH1 0x40 000022e7: SWAP1 000022e8: KECCAK256 000022e9: SLOAD 000022ea: ISZERO 000022eb: PUSH2 0x22f3 000022ee: JUMPI 000022ef: PUSH1 0x00 000022f1: DUP1 000022f2: REVERT 000022f3: JUMPDEST 000022f4: PUSH1 0x00 000022f6: DUP3 000022f7: DUP2 000022f8: MSTORE 000022f9: PUSH1 0x08 000022fb: PUSH1 0x20 000022fd: SWAP1 000022fe: DUP2 000022ff: MSTORE 00002300: PUSH1 0x40 00002302: SWAP2 00002303: DUP3 00002304: SWAP1 00002305: KECCAK256 00002306: DUP4 00002307: SWAP1 00002308: SSTORE 00002309: DUP2 0000230a: MLOAD 0000230b: DUP4 0000230c: DUP2 0000230d: MSTORE 0000230e: SWAP2 0000230f: MLOAD 00002310: DUP5 00002311: SWAP3 00002312: PUSH32 0x4a92cb8a98b3c42468f2ffd7b4dc17755416ebcfd17fd0040895ea07895c0fae 00002333: SWAP3 00002334: SWAP1 00002335: DUP3 00002336: SWAP1 00002337: SUB 00002338: ADD 00002339: SWAP1 0000233a: LOG2 0000233b: JUMPDEST 0000233c: POP 0000233d: POP 0000233e: JUMP 0000233f: JUMPDEST 00002340: PUSH1 0x01 00002342: SLOAD 00002343: PUSH1 0x01 00002345: PUSH1 0x01 00002347: PUSH1 0xa0 00002349: SHL 0000234a: SUB 0000234b: AND 0000234c: DUP2 0000234d: JUMP 0000234e: JUMPDEST 0000234f: PUSH1 0x01 00002351: PUSH1 0x01 00002353: PUSH1 0x80 00002355: SHL 00002356: SUB 00002357: AND 00002358: SWAP1 00002359: JUMP 0000235a: JUMPDEST 0000235b: CALLER 0000235c: PUSH1 0x00 0000235e: DUP2 0000235f: DUP2 00002360: MSTORE 00002361: PUSH1 0x03 00002363: PUSH1 0x20 00002365: SWAP1 00002366: DUP2 00002367: MSTORE 00002368: PUSH1 0x40 0000236a: DUP1 0000236b: DUP4 0000236c: KECCAK256 0000236d: PUSH1 0x01 0000236f: PUSH1 0x01 00002371: PUSH1 0xa0 00002373: SHL 00002374: SUB 00002375: DUP8 00002376: AND 00002377: DUP1 00002378: DUP6 00002379: MSTORE 0000237a: SWAP1 0000237b: DUP4 0000237c: MSTORE 0000237d: SWAP3 0000237e: DUP2 0000237f: SWAP1 00002380: KECCAK256 00002381: DUP1 00002382: SLOAD 00002383: PUSH1 0xff 00002385: NOT 00002386: AND 00002387: DUP7 00002388: ISZERO 00002389: ISZERO 0000238a: SWAP1 0000238b: DUP2 0000238c: OR 0000238d: SWAP1 0000238e: SWAP2 0000238f: SSTORE 00002390: DUP2 00002391: MLOAD 00002392: SWAP1 00002393: DUP2 00002394: MSTORE 00002395: SWAP1 00002396: MLOAD 00002397: SWAP3 00002398: SWAP4 00002399: SWAP3 0000239a: PUSH32 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31 000023bb: SWAP3 000023bc: SWAP2 000023bd: DUP2 000023be: SWAP1 000023bf: SUB 000023c0: SWAP1 000023c1: SWAP2 000023c2: ADD 000023c3: SWAP1 000023c4: LOG3 000023c5: POP 000023c6: POP 000023c7: JUMP 000023c8: JUMPDEST 000023c9: PUSH1 0x01 000023cb: SLOAD 000023cc: PUSH1 0x01 000023ce: PUSH1 0x01 000023d0: PUSH1 0xa0 000023d2: SHL 000023d3: SUB 000023d4: AND 000023d5: CALLER 000023d6: EQ 000023d7: PUSH2 0x23df 000023da: JUMPI 000023db: PUSH1 0x00 000023dd: DUP1 000023de: REVERT 000023df: JUMPDEST 000023e0: PUSH1 0x00 000023e2: JUMPDEST 000023e3: DUP2 000023e4: DUP2 000023e5: LT 000023e6: ISZERO 000023e7: PUSH2 0x175a 000023ea: JUMPI 000023eb: PUSH32 0x77b942a0834ead73d2e76c27f611bd4f14e4cd55de82e1d4bbd5521905f69f0f 0000240c: DUP4 0000240d: DUP4 0000240e: DUP4 0000240f: DUP2 00002410: DUP2 00002411: LT 00002412: PUSH2 0x2417 00002415: JUMPI 00002416: INVALID 00002417: JUMPDEST 00002418: PUSH1 0x40 0000241a: DUP1 0000241b: MLOAD 0000241c: PUSH1 0x20 0000241e: SWAP3 0000241f: DUP4 00002420: MUL 00002421: SWAP5 00002422: SWAP1 00002423: SWAP5 00002424: ADD 00002425: CALLDATALOAD 00002426: PUSH1 0x01 00002428: PUSH1 0x01 0000242a: PUSH1 0xa0 0000242c: SHL 0000242d: SUB 0000242e: AND 0000242f: DUP5 00002430: MSTORE 00002431: MLOAD 00002432: SWAP3 00002433: DUP4 00002434: SWAP1 00002435: SUB 00002436: ADD 00002437: SWAP2 00002438: SWAP1 00002439: POP 0000243a: LOG1 0000243b: PUSH1 0x01 0000243d: PUSH1 0x09 0000243f: PUSH1 0x00 00002441: DUP6 00002442: DUP6 00002443: DUP6 00002444: DUP2 00002445: DUP2 00002446: LT 00002447: PUSH2 0x244c 0000244a: JUMPI 0000244b: INVALID 0000244c: JUMPDEST 0000244d: PUSH1 0x20 0000244f: SWAP1 00002450: DUP2 00002451: MUL 00002452: SWAP3 00002453: SWAP1 00002454: SWAP3 00002455: ADD 00002456: CALLDATALOAD 00002457: PUSH1 0x01 00002459: PUSH1 0x01 0000245b: PUSH1 0xa0 0000245d: SHL 0000245e: SUB 0000245f: AND 00002460: DUP4 00002461: MSTORE 00002462: POP 00002463: DUP2 00002464: ADD 00002465: SWAP2 00002466: SWAP1 00002467: SWAP2 00002468: MSTORE 00002469: PUSH1 0x40 0000246b: ADD 0000246c: PUSH1 0x00 0000246e: KECCAK256 0000246f: DUP1 00002470: SLOAD 00002471: PUSH1 0xff 00002473: NOT 00002474: AND 00002475: SWAP2 00002476: ISZERO 00002477: ISZERO 00002478: SWAP2 00002479: SWAP1 0000247a: SWAP2 0000247b: OR 0000247c: SWAP1 0000247d: SSTORE 0000247e: PUSH1 0x01 00002480: ADD 00002481: PUSH2 0x23e2 00002484: JUMP 00002485: JUMPDEST 00002486: PUSH1 0x01 00002488: PUSH1 0xff 0000248a: SHL 0000248b: AND 0000248c: ISZERO 0000248d: SWAP1 0000248e: JUMP 0000248f: JUMPDEST 00002490: CALLER 00002491: PUSH1 0x00 00002493: SWAP1 00002494: DUP2 00002495: MSTORE 00002496: PUSH1 0x09 00002498: PUSH1 0x20 0000249a: MSTORE 0000249b: PUSH1 0x40 0000249d: DUP2 0000249e: KECCAK256 0000249f: SLOAD 000024a0: PUSH1 0xff 000024a2: AND 000024a3: PUSH2 0x24e1 000024a6: JUMPI 000024a7: PUSH1 0x40 000024a9: DUP1 000024aa: MLOAD 000024ab: PUSH3 0x461bcd 000024af: PUSH1 0xe5 000024b1: SHL 000024b2: DUP2 000024b3: MSTORE 000024b4: PUSH1 0x20 000024b6: PUSH1 0x04 000024b8: DUP3 000024b9: ADD 000024ba: MSTORE 000024bb: PUSH1 0x1b 000024bd: PUSH1 0x24 000024bf: DUP3 000024c0: ADD 000024c1: MSTORE 000024c2: PUSH1 0x00 000024c4: DUP1 000024c5: MLOAD 000024c6: PUSH1 0x20 000024c8: PUSH2 0x2d13 000024cb: DUP4 000024cc: CODECOPY 000024cd: DUP2 000024ce: MLOAD 000024cf: SWAP2 000024d0: MSTORE 000024d1: PUSH1 0x44 000024d3: DUP3 000024d4: ADD 000024d5: MSTORE 000024d6: SWAP1 000024d7: MLOAD 000024d8: SWAP1 000024d9: DUP2 000024da: SWAP1 000024db: SUB 000024dc: PUSH1 0x64 000024de: ADD 000024df: SWAP1 000024e0: REVERT 000024e1: JUMPDEST 000024e2: POP 000024e3: PUSH1 0x00 000024e5: DUP1 000024e6: SLOAD 000024e7: PUSH1 0x01 000024e9: ADD 000024ea: SWAP1 000024eb: DUP2 000024ec: SWAP1 000024ed: SSTORE 000024ee: PUSH1 0x80 000024f0: SHL 000024f1: DUP2 000024f2: ISZERO 000024f3: PUSH2 0x24fd 000024f6: JUMPI 000024f7: PUSH1 0x01 000024f9: PUSH1 0xff 000024fb: SHL 000024fc: OR 000024fd: JUMPDEST 000024fe: PUSH1 0x40 00002500: DUP1 00002501: MLOAD 00002502: DUP3 00002503: DUP2 00002504: MSTORE 00002505: PUSH1 0x00 00002507: PUSH1 0x20 00002509: DUP3 0000250a: ADD 0000250b: DUP2 0000250c: SWAP1 0000250d: MSTORE 0000250e: DUP3 0000250f: MLOAD 00002510: SWAP1 00002511: SWAP3 00002512: DUP4 00002513: SWAP3 00002514: CALLER 00002515: SWAP3 00002516: PUSH1 0x00 00002518: DUP1 00002519: MLOAD 0000251a: PUSH1 0x20 0000251c: PUSH2 0x2c5c 0000251f: DUP4 00002520: CODECOPY 00002521: DUP2 00002522: MLOAD 00002523: SWAP2 00002524: MSTORE 00002525: SWAP3 00002526: SWAP2 00002527: DUP2 00002528: SWAP1 00002529: SUB 0000252a: SWAP1 0000252b: SWAP2 0000252c: ADD 0000252d: SWAP1 0000252e: LOG4 0000252f: DUP3 00002530: ISZERO 00002531: PUSH2 0x2596 00002534: JUMPI 00002535: DUP1 00002536: PUSH32 0x6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b 00002557: DUP6 00002558: DUP6 00002559: PUSH1 0x40 0000255b: MLOAD 0000255c: DUP1 0000255d: DUP1 0000255e: PUSH1 0x20 00002560: ADD 00002561: DUP3 00002562: DUP2 00002563: SUB 00002564: DUP3 00002565: MSTORE 00002566: DUP5 00002567: DUP5 00002568: DUP3 00002569: DUP2 0000256a: DUP2 0000256b: MSTORE 0000256c: PUSH1 0x20 0000256e: ADD 0000256f: SWAP3 00002570: POP 00002571: DUP1 00002572: DUP3 00002573: DUP5 00002574: CALLDATACOPY 00002575: PUSH1 0x00 00002577: DUP4 00002578: DUP3 00002579: ADD 0000257a: MSTORE 0000257b: PUSH1 0x40 0000257d: MLOAD 0000257e: PUSH1 0x1f 00002580: SWAP1 00002581: SWAP2 00002582: ADD 00002583: PUSH1 0x1f 00002585: NOT 00002586: AND 00002587: SWAP1 00002588: SWAP3 00002589: ADD 0000258a: DUP3 0000258b: SWAP1 0000258c: SUB 0000258d: SWAP6 0000258e: POP 0000258f: SWAP1 00002590: SWAP4 00002591: POP 00002592: POP 00002593: POP 00002594: POP 00002595: LOG2 00002596: JUMPDEST 00002597: SWAP4 00002598: SWAP3 00002599: POP 0000259a: POP 0000259b: POP 0000259c: JUMP 0000259d: JUMPDEST 0000259e: PUSH1 0x01 000025a0: PUSH1 0xff 000025a2: SHL 000025a3: SWAP1 000025a4: DUP2 000025a5: AND 000025a6: EQ 000025a7: SWAP1 000025a8: JUMP 000025a9: JUMPDEST 000025aa: PUSH1 0x01 000025ac: PUSH1 0x01 000025ae: PUSH1 0xa0 000025b0: SHL 000025b1: SUB 000025b2: SWAP2 000025b3: DUP3 000025b4: AND 000025b5: PUSH1 0x00 000025b7: SWAP1 000025b8: DUP2 000025b9: MSTORE 000025ba: PUSH1 0x03 000025bc: PUSH1 0x20 000025be: SWAP1 000025bf: DUP2 000025c0: MSTORE 000025c1: PUSH1 0x40 000025c3: DUP1 000025c4: DUP4 000025c5: KECCAK256 000025c6: SWAP4 000025c7: SWAP1 000025c8: SWAP5 000025c9: AND 000025ca: DUP3 000025cb: MSTORE 000025cc: SWAP2 000025cd: SWAP1 000025ce: SWAP2 000025cf: MSTORE 000025d0: KECCAK256 000025d1: SLOAD 000025d2: PUSH1 0xff 000025d4: AND 000025d5: SWAP1 000025d6: JUMP 000025d7: JUMPDEST 000025d8: PUSH1 0x01 000025da: PUSH1 0x01 000025dc: PUSH1 0xa0 000025de: SHL 000025df: SUB 000025e0: DUP6 000025e1: AND 000025e2: PUSH2 0x2632 000025e5: JUMPI 000025e6: PUSH1 0x40 000025e8: DUP1 000025e9: MLOAD 000025ea: PUSH3 0x461bcd 000025ee: PUSH1 0xe5 000025f0: SHL 000025f1: DUP2 000025f2: MSTORE 000025f3: PUSH1 0x20 000025f5: PUSH1 0x04 000025f7: DUP3 000025f8: ADD 000025f9: MSTORE 000025fa: PUSH1 0x1b 000025fc: PUSH1 0x24 000025fe: DUP3 000025ff: ADD 00002600: MSTORE 00002601: PUSH32 0x63616e6e6f742073656e6420746f207a65726f20616464726573730000000000 00002622: PUSH1 0x44 00002624: DUP3 00002625: ADD 00002626: MSTORE 00002627: SWAP1 00002628: MLOAD 00002629: SWAP1 0000262a: DUP2 0000262b: SWAP1 0000262c: SUB 0000262d: PUSH1 0x64 0000262f: ADD 00002630: SWAP1 00002631: REVERT 00002632: JUMPDEST 00002633: PUSH1 0x01 00002635: PUSH1 0x01 00002637: PUSH1 0xa0 00002639: SHL 0000263a: SUB 0000263b: DUP7 0000263c: AND 0000263d: CALLER 0000263e: EQ 0000263f: DUP1 00002640: PUSH2 0x2671 00002643: JUMPI 00002644: POP 00002645: PUSH1 0x01 00002647: PUSH1 0x01 00002649: PUSH1 0xa0 0000264b: SHL 0000264c: SUB 0000264d: DUP7 0000264e: AND 0000264f: PUSH1 0x00 00002651: SWAP1 00002652: DUP2 00002653: MSTORE 00002654: PUSH1 0x03 00002656: PUSH1 0x20 00002658: SWAP1 00002659: DUP2 0000265a: MSTORE 0000265b: PUSH1 0x40 0000265d: DUP1 0000265e: DUP4 0000265f: KECCAK256 00002660: CALLER 00002661: DUP5 00002662: MSTORE 00002663: SWAP1 00002664: SWAP2 00002665: MSTORE 00002666: SWAP1 00002667: KECCAK256 00002668: SLOAD 00002669: PUSH1 0xff 0000266b: AND 0000266c: ISZERO 0000266d: ISZERO 0000266e: PUSH1 0x01 00002670: EQ 00002671: JUMPDEST 00002672: PUSH2 0x26ac 00002675: JUMPI 00002676: PUSH1 0x40 00002678: MLOAD 00002679: PUSH3 0x461bcd 0000267d: PUSH1 0xe5 0000267f: SHL 00002680: DUP2 00002681: MSTORE 00002682: PUSH1 0x04 00002684: ADD 00002685: DUP1 00002686: DUP1 00002687: PUSH1 0x20 00002689: ADD 0000268a: DUP3 0000268b: DUP2 0000268c: SUB 0000268d: DUP3 0000268e: MSTORE 0000268f: PUSH1 0x2f 00002691: DUP2 00002692: MSTORE 00002693: PUSH1 0x20 00002695: ADD 00002696: DUP1 00002697: PUSH2 0x2c7c 0000269a: PUSH1 0x2f 0000269c: SWAP2 0000269d: CODECOPY 0000269e: PUSH1 0x40 000026a0: ADD 000026a1: SWAP2 000026a2: POP 000026a3: POP 000026a4: PUSH1 0x40 000026a6: MLOAD 000026a7: DUP1 000026a8: SWAP2 000026a9: SUB 000026aa: SWAP1 000026ab: REVERT 000026ac: JUMPDEST 000026ad: PUSH2 0x26b5 000026b0: DUP5 000026b1: PUSH2 0x259d 000026b4: JUMP 000026b5: JUMPDEST 000026b6: ISZERO 000026b7: PUSH2 0x27a6 000026ba: JUMPI 000026bb: PUSH1 0x00 000026bd: DUP5 000026be: DUP2 000026bf: MSTORE 000026c0: PUSH1 0x04 000026c2: PUSH1 0x20 000026c4: MSTORE 000026c5: PUSH1 0x40 000026c7: SWAP1 000026c8: KECCAK256 000026c9: SLOAD 000026ca: PUSH1 0x01 000026cc: PUSH1 0x01 000026ce: PUSH1 0xa0 000026d0: SHL 000026d1: SUB 000026d2: DUP8 000026d3: DUP2 000026d4: AND 000026d5: SWAP2 000026d6: AND 000026d7: EQ 000026d8: PUSH2 0x26e0 000026db: JUMPI 000026dc: PUSH1 0x00 000026de: DUP1 000026df: REVERT 000026e0: JUMPDEST 000026e1: PUSH1 0x00 000026e3: DUP5 000026e4: DUP2 000026e5: MSTORE 000026e6: PUSH1 0x04 000026e8: PUSH1 0x20 000026ea: MSTORE 000026eb: PUSH1 0x40 000026ed: DUP2 000026ee: KECCAK256 000026ef: DUP1 000026f0: SLOAD 000026f1: PUSH1 0x01 000026f3: PUSH1 0x01 000026f5: PUSH1 0xa0 000026f7: SHL 000026f8: SUB 000026f9: NOT 000026fa: AND 000026fb: PUSH1 0x01 000026fd: PUSH1 0x01 000026ff: PUSH1 0xa0 00002701: SHL 00002702: SUB 00002703: DUP9 00002704: AND 00002705: OR 00002706: SWAP1 00002707: SSTORE 00002708: PUSH2 0x2710 0000270b: DUP6 0000270c: PUSH2 0x21c3 0000270f: JUMP 00002710: JUMPDEST 00002711: PUSH1 0x00 00002713: DUP2 00002714: DUP2 00002715: MSTORE 00002716: PUSH1 0x02 00002718: PUSH1 0x20 0000271a: SWAP1 0000271b: DUP2 0000271c: MSTORE 0000271d: PUSH1 0x40 0000271f: DUP1 00002720: DUP4 00002721: KECCAK256 00002722: PUSH1 0x01 00002724: PUSH1 0x01 00002726: PUSH1 0xa0 00002728: SHL 00002729: SUB 0000272a: DUP13 0000272b: AND 0000272c: DUP5 0000272d: MSTORE 0000272e: SWAP1 0000272f: SWAP2 00002730: MSTORE 00002731: SWAP1 00002732: KECCAK256 00002733: SLOAD 00002734: SWAP1 00002735: SWAP2 00002736: POP 00002737: PUSH2 0x2746 0000273a: SWAP1 0000273b: DUP6 0000273c: PUSH4 0xffffffff 00002741: PUSH2 0x2a5d 00002744: AND 00002745: JUMP 00002746: JUMPDEST 00002747: PUSH1 0x00 00002749: DUP3 0000274a: DUP2 0000274b: MSTORE 0000274c: PUSH1 0x02 0000274e: PUSH1 0x20 00002750: SWAP1 00002751: DUP2 00002752: MSTORE 00002753: PUSH1 0x40 00002755: DUP1 00002756: DUP4 00002757: KECCAK256 00002758: PUSH1 0x01 0000275a: PUSH1 0x01 0000275c: PUSH1 0xa0 0000275e: SHL 0000275f: SUB 00002760: DUP13 00002761: DUP2 00002762: AND 00002763: DUP6 00002764: MSTORE 00002765: SWAP3 00002766: MSTORE 00002767: DUP1 00002768: DUP4 00002769: KECCAK256 0000276a: SWAP4 0000276b: SWAP1 0000276c: SWAP4 0000276d: SSTORE 0000276e: DUP9 0000276f: AND 00002770: DUP2 00002771: MSTORE 00002772: KECCAK256 00002773: SLOAD 00002774: PUSH2 0x277d 00002777: SWAP1 00002778: DUP6 00002779: PUSH2 0x28da 0000277c: JUMP 0000277d: JUMPDEST 0000277e: PUSH1 0x00 00002780: SWAP2 00002781: DUP3 00002782: MSTORE 00002783: PUSH1 0x02 00002785: PUSH1 0x20 00002787: SWAP1 00002788: DUP2 00002789: MSTORE 0000278a: PUSH1 0x40 0000278c: DUP1 0000278d: DUP5 0000278e: KECCAK256 0000278f: PUSH1 0x01 00002791: PUSH1 0x01 00002793: PUSH1 0xa0 00002795: SHL 00002796: SUB 00002797: DUP11 00002798: AND 00002799: DUP6 0000279a: MSTORE 0000279b: SWAP1 0000279c: SWAP2 0000279d: MSTORE 0000279e: SWAP1 0000279f: SWAP2 000027a0: KECCAK256 000027a1: SSTORE 000027a2: PUSH2 0x2834 000027a5: JUMP 000027a6: JUMPDEST 000027a7: PUSH1 0x00 000027a9: DUP5 000027aa: DUP2 000027ab: MSTORE 000027ac: PUSH1 0x02 000027ae: PUSH1 0x20 000027b0: SWAP1 000027b1: DUP2 000027b2: MSTORE 000027b3: PUSH1 0x40 000027b5: DUP1 000027b6: DUP4 000027b7: KECCAK256 000027b8: PUSH1 0x01 000027ba: PUSH1 0x01 000027bc: PUSH1 0xa0 000027be: SHL 000027bf: SUB 000027c0: DUP11 000027c1: AND 000027c2: DUP5 000027c3: MSTORE 000027c4: SWAP1 000027c5: SWAP2 000027c6: MSTORE 000027c7: SWAP1 000027c8: KECCAK256 000027c9: SLOAD 000027ca: PUSH2 0x27d9 000027cd: SWAP1 000027ce: DUP5 000027cf: PUSH4 0xffffffff 000027d4: PUSH2 0x2a5d 000027d7: AND 000027d8: JUMP 000027d9: JUMPDEST 000027da: PUSH1 0x00 000027dc: DUP6 000027dd: DUP2 000027de: MSTORE 000027df: PUSH1 0x02 000027e1: PUSH1 0x20 000027e3: SWAP1 000027e4: DUP2 000027e5: MSTORE 000027e6: PUSH1 0x40 000027e8: DUP1 000027e9: DUP4 000027ea: KECCAK256 000027eb: PUSH1 0x01 000027ed: PUSH1 0x01 000027ef: PUSH1 0xa0 000027f1: SHL 000027f2: SUB 000027f3: DUP12 000027f4: DUP2 000027f5: AND 000027f6: DUP6 000027f7: MSTORE 000027f8: SWAP3 000027f9: MSTORE 000027fa: DUP1 000027fb: DUP4 000027fc: KECCAK256 000027fd: SWAP4 000027fe: SWAP1 000027ff: SWAP4 00002800: SSTORE 00002801: DUP8 00002802: AND 00002803: DUP2 00002804: MSTORE 00002805: KECCAK256 00002806: SLOAD 00002807: PUSH2 0x2810 0000280a: SWAP1 0000280b: DUP5 0000280c: PUSH2 0x28da 0000280f: JUMP 00002810: JUMPDEST 00002811: PUSH1 0x00 00002813: DUP6 00002814: DUP2 00002815: MSTORE 00002816: PUSH1 0x02 00002818: PUSH1 0x20 0000281a: SWAP1 0000281b: DUP2 0000281c: MSTORE 0000281d: PUSH1 0x40 0000281f: DUP1 00002820: DUP4 00002821: KECCAK256 00002822: PUSH1 0x01 00002824: PUSH1 0x01 00002826: PUSH1 0xa0 00002828: SHL 00002829: SUB 0000282a: DUP11 0000282b: AND 0000282c: DUP5 0000282d: MSTORE 0000282e: SWAP1 0000282f: SWAP2 00002830: MSTORE 00002831: SWAP1 00002832: KECCAK256 00002833: SSTORE 00002834: JUMPDEST 00002835: DUP5 00002836: PUSH1 0x01 00002838: PUSH1 0x01 0000283a: PUSH1 0xa0 0000283c: SHL 0000283d: SUB 0000283e: AND 0000283f: DUP7 00002840: PUSH1 0x01 00002842: PUSH1 0x01 00002844: PUSH1 0xa0 00002846: SHL 00002847: SUB 00002848: AND 00002849: CALLER 0000284a: PUSH1 0x01 0000284c: PUSH1 0x01 0000284e: PUSH1 0xa0 00002850: SHL 00002851: SUB 00002852: AND 00002853: PUSH1 0x00 00002855: DUP1 00002856: MLOAD 00002857: PUSH1 0x20 00002859: PUSH2 0x2c5c 0000285c: DUP4 0000285d: CODECOPY 0000285e: DUP2 0000285f: MLOAD 00002860: SWAP2 00002861: MSTORE 00002862: DUP8 00002863: DUP8 00002864: PUSH1 0x40 00002866: MLOAD 00002867: DUP1 00002868: DUP4 00002869: DUP2 0000286a: MSTORE 0000286b: PUSH1 0x20 0000286d: ADD 0000286e: DUP3 0000286f: DUP2 00002870: MSTORE 00002871: PUSH1 0x20 00002873: ADD 00002874: SWAP3 00002875: POP 00002876: POP 00002877: POP 00002878: PUSH1 0x40 0000287a: MLOAD 0000287b: DUP1 0000287c: SWAP2 0000287d: SUB 0000287e: SWAP1 0000287f: LOG4 00002880: PUSH2 0x2891 00002883: DUP6 00002884: PUSH1 0x01 00002886: PUSH1 0x01 00002888: PUSH1 0xa0 0000288a: SHL 0000288b: SUB 0000288c: AND 0000288d: PUSH2 0x28e7 00002890: JUMP 00002891: JUMPDEST 00002892: ISZERO 00002893: PUSH2 0x1b41 00002896: JUMPI 00002897: PUSH2 0x1b41 0000289a: CALLER 0000289b: DUP8 0000289c: DUP8 0000289d: DUP8 0000289e: DUP8 0000289f: DUP8 000028a0: DUP8 000028a1: DUP1 000028a2: DUP1 000028a3: PUSH1 0x1f 000028a5: ADD 000028a6: PUSH1 0x20 000028a8: DUP1 000028a9: SWAP2 000028aa: DIV 000028ab: MUL 000028ac: PUSH1 0x20 000028ae: ADD 000028af: PUSH1 0x40 000028b1: MLOAD 000028b2: SWAP1 000028b3: DUP2 000028b4: ADD 000028b5: PUSH1 0x40 000028b7: MSTORE 000028b8: DUP1 000028b9: SWAP4 000028ba: SWAP3 000028bb: SWAP2 000028bc: SWAP1 000028bd: DUP2 000028be: DUP2 000028bf: MSTORE 000028c0: PUSH1 0x20 000028c2: ADD 000028c3: DUP4 000028c4: DUP4 000028c5: DUP1 000028c6: DUP3 000028c7: DUP5 000028c8: CALLDATACOPY 000028c9: PUSH1 0x00 000028cb: SWAP3 000028cc: ADD 000028cd: SWAP2 000028ce: SWAP1 000028cf: SWAP2 000028d0: MSTORE 000028d1: POP 000028d2: PUSH2 0x28ed 000028d5: SWAP3 000028d6: POP 000028d7: POP 000028d8: POP 000028d9: JUMP 000028da: JUMPDEST 000028db: DUP2 000028dc: DUP2 000028dd: ADD 000028de: DUP3 000028df: DUP2 000028e0: LT 000028e1: ISZERO 000028e2: PUSH2 0x0cf0 000028e5: JUMPI 000028e6: INVALID 000028e7: JUMPDEST 000028e8: EXTCODESIZE 000028e9: ISZERO 000028ea: ISZERO 000028eb: SWAP1 000028ec: JUMP 000028ed: JUMPDEST 000028ee: PUSH4 0xf23a6e61 000028f3: PUSH1 0xe0 000028f5: SHL 000028f6: PUSH1 0x01 000028f8: PUSH1 0x01 000028fa: PUSH1 0xe0 000028fc: SHL 000028fd: SUB 000028fe: NOT 000028ff: AND 00002900: DUP5 00002901: PUSH1 0x01 00002903: PUSH1 0x01 00002905: PUSH1 0xa0 00002907: SHL 00002908: SUB 00002909: AND 0000290a: PUSH4 0xf23a6e61 0000290f: DUP9 00002910: DUP9 00002911: DUP8 00002912: DUP8 00002913: DUP8 00002914: PUSH1 0x40 00002916: MLOAD 00002917: DUP7 00002918: PUSH4 0xffffffff 0000291d: AND 0000291e: PUSH1 0xe0 00002920: SHL 00002921: DUP2 00002922: MSTORE 00002923: PUSH1 0x04 00002925: ADD 00002926: DUP1 00002927: DUP7 00002928: PUSH1 0x01 0000292a: PUSH1 0x01 0000292c: PUSH1 0xa0 0000292e: SHL 0000292f: SUB 00002930: AND 00002931: PUSH1 0x01 00002933: PUSH1 0x01 00002935: PUSH1 0xa0 00002937: SHL 00002938: SUB 00002939: AND 0000293a: DUP2 0000293b: MSTORE 0000293c: PUSH1 0x20 0000293e: ADD 0000293f: DUP6 00002940: PUSH1 0x01 00002942: PUSH1 0x01 00002944: PUSH1 0xa0 00002946: SHL 00002947: SUB 00002948: AND 00002949: PUSH1 0x01 0000294b: PUSH1 0x01 0000294d: PUSH1 0xa0 0000294f: SHL 00002950: SUB 00002951: AND 00002952: DUP2 00002953: MSTORE 00002954: PUSH1 0x20 00002956: ADD 00002957: DUP5 00002958: DUP2 00002959: MSTORE 0000295a: PUSH1 0x20 0000295c: ADD 0000295d: DUP4 0000295e: DUP2 0000295f: MSTORE 00002960: PUSH1 0x20 00002962: ADD 00002963: DUP1 00002964: PUSH1 0x20 00002966: ADD 00002967: DUP3 00002968: DUP2 00002969: SUB 0000296a: DUP3 0000296b: MSTORE 0000296c: DUP4 0000296d: DUP2 0000296e: DUP2 0000296f: MLOAD 00002970: DUP2 00002971: MSTORE 00002972: PUSH1 0x20 00002974: ADD 00002975: SWAP2 00002976: POP 00002977: DUP1 00002978: MLOAD 00002979: SWAP1 0000297a: PUSH1 0x20 0000297c: ADD 0000297d: SWAP1 0000297e: DUP1 0000297f: DUP4 00002980: DUP4 00002981: PUSH1 0x00 00002983: JUMPDEST 00002984: DUP4 00002985: DUP2 00002986: LT 00002987: ISZERO 00002988: PUSH2 0x299b 0000298b: JUMPI 0000298c: DUP2 0000298d: DUP2 0000298e: ADD 0000298f: MLOAD 00002990: DUP4 00002991: DUP3 00002992: ADD 00002993: MSTORE 00002994: PUSH1 0x20 00002996: ADD 00002997: PUSH2 0x2983 0000299a: JUMP 0000299b: JUMPDEST 0000299c: POP 0000299d: POP 0000299e: POP 0000299f: POP 000029a0: SWAP1 000029a1: POP 000029a2: SWAP1 000029a3: DUP2 000029a4: ADD 000029a5: SWAP1 000029a6: PUSH1 0x1f 000029a8: AND 000029a9: DUP1 000029aa: ISZERO 000029ab: PUSH2 0x29c8 000029ae: JUMPI 000029af: DUP1 000029b0: DUP3 000029b1: SUB 000029b2: DUP1 000029b3: MLOAD 000029b4: PUSH1 0x01 000029b6: DUP4 000029b7: PUSH1 0x20 000029b9: SUB 000029ba: PUSH2 0x0100 000029bd: EXP 000029be: SUB 000029bf: NOT 000029c0: AND 000029c1: DUP2 000029c2: MSTORE 000029c3: PUSH1 0x20 000029c5: ADD 000029c6: SWAP2 000029c7: POP 000029c8: JUMPDEST 000029c9: POP 000029ca: SWAP7 000029cb: POP 000029cc: POP 000029cd: POP 000029ce: POP 000029cf: POP 000029d0: POP 000029d1: POP 000029d2: PUSH1 0x20 000029d4: PUSH1 0x40 000029d6: MLOAD 000029d7: DUP1 000029d8: DUP4 000029d9: SUB 000029da: DUP2 000029db: PUSH1 0x00 000029dd: DUP8 000029de: DUP1 000029df: EXTCODESIZE 000029e0: ISZERO 000029e1: DUP1 000029e2: ISZERO 000029e3: PUSH2 0x29eb 000029e6: JUMPI 000029e7: PUSH1 0x00 000029e9: DUP1 000029ea: REVERT 000029eb: JUMPDEST 000029ec: POP 000029ed: GAS 000029ee: CALL 000029ef: ISZERO 000029f0: DUP1 000029f1: ISZERO 000029f2: PUSH2 0x29ff 000029f5: JUMPI 000029f6: RETURNDATASIZE 000029f7: PUSH1 0x00 000029f9: DUP1 000029fa: RETURNDATACOPY 000029fb: RETURNDATASIZE 000029fc: PUSH1 0x00 000029fe: REVERT 000029ff: JUMPDEST 00002a00: POP 00002a01: POP 00002a02: POP 00002a03: POP 00002a04: PUSH1 0x40 00002a06: MLOAD 00002a07: RETURNDATASIZE 00002a08: PUSH1 0x20 00002a0a: DUP2 00002a0b: LT 00002a0c: ISZERO 00002a0d: PUSH2 0x2a15 00002a10: JUMPI 00002a11: PUSH1 0x00 00002a13: DUP1 00002a14: REVERT 00002a15: JUMPDEST 00002a16: POP 00002a17: MLOAD 00002a18: PUSH1 0x01 00002a1a: PUSH1 0x01 00002a1c: PUSH1 0xe0 00002a1e: SHL 00002a1f: SUB 00002a20: NOT 00002a21: AND 00002a22: EQ 00002a23: PUSH2 0x1b41 00002a26: JUMPI 00002a27: PUSH1 0x40 00002a29: MLOAD 00002a2a: PUSH3 0x461bcd 00002a2e: PUSH1 0xe5 00002a30: SHL 00002a31: DUP2 00002a32: MSTORE 00002a33: PUSH1 0x04 00002a35: ADD 00002a36: DUP1 00002a37: DUP1 00002a38: PUSH1 0x20 00002a3a: ADD 00002a3b: DUP3 00002a3c: DUP2 00002a3d: SUB 00002a3e: DUP3 00002a3f: MSTORE 00002a40: PUSH1 0x39 00002a42: DUP2 00002a43: MSTORE 00002a44: PUSH1 0x20 00002a46: ADD 00002a47: DUP1 00002a48: PUSH2 0x2d33 00002a4b: PUSH1 0x39 00002a4d: SWAP2 00002a4e: CODECOPY 00002a4f: PUSH1 0x40 00002a51: ADD 00002a52: SWAP2 00002a53: POP 00002a54: POP 00002a55: PUSH1 0x40 00002a57: MLOAD 00002a58: DUP1 00002a59: SWAP2 00002a5a: SUB 00002a5b: SWAP1 00002a5c: REVERT 00002a5d: JUMPDEST 00002a5e: PUSH1 0x00 00002a60: DUP3 00002a61: DUP3 00002a62: GT 00002a63: ISZERO 00002a64: PUSH2 0x2a69 00002a67: JUMPI 00002a68: INVALID 00002a69: JUMPDEST 00002a6a: POP 00002a6b: SWAP1 00002a6c: SUB 00002a6d: SWAP1 00002a6e: JUMP 00002a6f: JUMPDEST 00002a70: PUSH4 0xbc197c81 00002a75: PUSH1 0xe0 00002a77: SHL 00002a78: PUSH1 0x01 00002a7a: PUSH1 0x01 00002a7c: PUSH1 0xe0 00002a7e: SHL 00002a7f: SUB 00002a80: NOT 00002a81: AND 00002a82: DUP5 00002a83: PUSH1 0x01 00002a85: PUSH1 0x01 00002a87: PUSH1 0xa0 00002a89: SHL 00002a8a: SUB 00002a8b: AND 00002a8c: PUSH4 0xbc197c81 00002a91: DUP9 00002a92: DUP9 00002a93: DUP8 00002a94: DUP8 00002a95: DUP8 00002a96: PUSH1 0x40 00002a98: MLOAD 00002a99: DUP7 00002a9a: PUSH4 0xffffffff 00002a9f: AND 00002aa0: PUSH1 0xe0 00002aa2: SHL 00002aa3: DUP2 00002aa4: MSTORE 00002aa5: PUSH1 0x04 00002aa7: ADD 00002aa8: DUP1 00002aa9: DUP7 00002aaa: PUSH1 0x01 00002aac: PUSH1 0x01 00002aae: PUSH1 0xa0 00002ab0: SHL 00002ab1: SUB 00002ab2: AND 00002ab3: PUSH1 0x01 00002ab5: PUSH1 0x01 00002ab7: PUSH1 0xa0 00002ab9: SHL 00002aba: SUB 00002abb: AND 00002abc: DUP2 00002abd: MSTORE 00002abe: PUSH1 0x20 00002ac0: ADD 00002ac1: DUP6 00002ac2: PUSH1 0x01 00002ac4: PUSH1 0x01 00002ac6: PUSH1 0xa0 00002ac8: SHL 00002ac9: SUB 00002aca: AND 00002acb: PUSH1 0x01 00002acd: PUSH1 0x01 00002acf: PUSH1 0xa0 00002ad1: SHL 00002ad2: SUB 00002ad3: AND 00002ad4: DUP2 00002ad5: MSTORE 00002ad6: PUSH1 0x20 00002ad8: ADD 00002ad9: DUP1 00002ada: PUSH1 0x20 00002adc: ADD 00002add: DUP1 00002ade: PUSH1 0x20 00002ae0: ADD 00002ae1: DUP1 00002ae2: PUSH1 0x20 00002ae4: ADD 00002ae5: DUP5 00002ae6: DUP2 00002ae7: SUB 00002ae8: DUP5 00002ae9: MSTORE 00002aea: DUP8 00002aeb: DUP2 00002aec: DUP2 00002aed: MLOAD 00002aee: DUP2 00002aef: MSTORE 00002af0: PUSH1 0x20 00002af2: ADD 00002af3: SWAP2 00002af4: POP 00002af5: DUP1 00002af6: MLOAD 00002af7: SWAP1 00002af8: PUSH1 0x20 00002afa: ADD 00002afb: SWAP1 00002afc: PUSH1 0x20 00002afe: MUL 00002aff: DUP1 00002b00: DUP4 00002b01: DUP4 00002b02: PUSH1 0x00 00002b04: JUMPDEST 00002b05: DUP4 00002b06: DUP2 00002b07: LT 00002b08: ISZERO 00002b09: PUSH2 0x2b1c 00002b0c: JUMPI 00002b0d: DUP2 00002b0e: DUP2 00002b0f: ADD 00002b10: MLOAD 00002b11: DUP4 00002b12: DUP3 00002b13: ADD 00002b14: MSTORE 00002b15: PUSH1 0x20 00002b17: ADD 00002b18: PUSH2 0x2b04 00002b1b: JUMP 00002b1c: JUMPDEST 00002b1d: POP 00002b1e: POP 00002b1f: POP 00002b20: POP 00002b21: SWAP1 00002b22: POP 00002b23: ADD 00002b24: DUP5 00002b25: DUP2 00002b26: SUB 00002b27: DUP4 00002b28: MSTORE 00002b29: DUP7 00002b2a: DUP2 00002b2b: DUP2 00002b2c: MLOAD 00002b2d: DUP2 00002b2e: MSTORE 00002b2f: PUSH1 0x20 00002b31: ADD 00002b32: SWAP2 00002b33: POP 00002b34: DUP1 00002b35: MLOAD 00002b36: SWAP1 00002b37: PUSH1 0x20 00002b39: ADD 00002b3a: SWAP1 00002b3b: PUSH1 0x20 00002b3d: MUL 00002b3e: DUP1 00002b3f: DUP4 00002b40: DUP4 00002b41: PUSH1 0x00 00002b43: JUMPDEST 00002b44: DUP4 00002b45: DUP2 00002b46: LT 00002b47: ISZERO 00002b48: PUSH2 0x2b5b 00002b4b: JUMPI 00002b4c: DUP2 00002b4d: DUP2 00002b4e: ADD 00002b4f: MLOAD 00002b50: DUP4 00002b51: DUP3 00002b52: ADD 00002b53: MSTORE 00002b54: PUSH1 0x20 00002b56: ADD 00002b57: PUSH2 0x2b43 00002b5a: JUMP 00002b5b: JUMPDEST 00002b5c: POP 00002b5d: POP 00002b5e: POP 00002b5f: POP 00002b60: SWAP1 00002b61: POP 00002b62: ADD 00002b63: DUP5 00002b64: DUP2 00002b65: SUB 00002b66: DUP3 00002b67: MSTORE 00002b68: DUP6 00002b69: DUP2 00002b6a: DUP2 00002b6b: MLOAD 00002b6c: DUP2 00002b6d: MSTORE 00002b6e: PUSH1 0x20 00002b70: ADD 00002b71: SWAP2 00002b72: POP 00002b73: DUP1 00002b74: MLOAD 00002b75: SWAP1 00002b76: PUSH1 0x20 00002b78: ADD 00002b79: SWAP1 00002b7a: DUP1 00002b7b: DUP4 00002b7c: DUP4 00002b7d: PUSH1 0x00 00002b7f: JUMPDEST 00002b80: DUP4 00002b81: DUP2 00002b82: LT 00002b83: ISZERO 00002b84: PUSH2 0x2b97 00002b87: JUMPI 00002b88: DUP2 00002b89: DUP2 00002b8a: ADD 00002b8b: MLOAD 00002b8c: DUP4 00002b8d: DUP3 00002b8e: ADD 00002b8f: MSTORE 00002b90: PUSH1 0x20 00002b92: ADD 00002b93: PUSH2 0x2b7f 00002b96: JUMP 00002b97: JUMPDEST 00002b98: POP 00002b99: POP 00002b9a: POP 00002b9b: POP 00002b9c: SWAP1 00002b9d: POP 00002b9e: SWAP1 00002b9f: DUP2 00002ba0: ADD 00002ba1: SWAP1 00002ba2: PUSH1 0x1f 00002ba4: AND 00002ba5: DUP1 00002ba6: ISZERO 00002ba7: PUSH2 0x2bc4 00002baa: JUMPI 00002bab: DUP1 00002bac: DUP3 00002bad: SUB 00002bae: DUP1 00002baf: MLOAD 00002bb0: PUSH1 0x01 00002bb2: DUP4 00002bb3: PUSH1 0x20 00002bb5: SUB 00002bb6: PUSH2 0x0100 00002bb9: EXP 00002bba: SUB 00002bbb: NOT 00002bbc: AND 00002bbd: DUP2 00002bbe: MSTORE 00002bbf: PUSH1 0x20 00002bc1: ADD 00002bc2: SWAP2 00002bc3: POP 00002bc4: JUMPDEST 00002bc5: POP 00002bc6: SWAP9 00002bc7: POP 00002bc8: POP 00002bc9: POP 00002bca: POP 00002bcb: POP 00002bcc: POP 00002bcd: POP 00002bce: POP 00002bcf: POP 00002bd0: PUSH1 0x20 00002bd2: PUSH1 0x40 00002bd4: MLOAD 00002bd5: DUP1 00002bd6: DUP4 00002bd7: SUB 00002bd8: DUP2 00002bd9: PUSH1 0x00 00002bdb: DUP8 00002bdc: DUP1 00002bdd: EXTCODESIZE 00002bde: ISZERO 00002bdf: DUP1 00002be0: ISZERO 00002be1: PUSH2 0x2be9 00002be4: JUMPI 00002be5: PUSH1 0x00 00002be7: DUP1 00002be8: REVERT 00002be9: JUMPDEST 00002bea: POP 00002beb: GAS 00002bec: CALL 00002bed: ISZERO 00002bee: DUP1 00002bef: ISZERO 00002bf0: PUSH2 0x2bfd 00002bf3: JUMPI 00002bf4: RETURNDATASIZE 00002bf5: PUSH1 0x00 00002bf7: DUP1 00002bf8: RETURNDATACOPY 00002bf9: RETURNDATASIZE 00002bfa: PUSH1 0x00 00002bfc: REVERT 00002bfd: JUMPDEST 00002bfe: POP 00002bff: POP 00002c00: POP 00002c01: POP 00002c02: PUSH1 0x40 00002c04: MLOAD 00002c05: RETURNDATASIZE 00002c06: PUSH1 0x20 00002c08: DUP2 00002c09: LT 00002c0a: ISZERO 00002c0b: PUSH2 0x2c13 00002c0e: JUMPI 00002c0f: PUSH1 0x00 00002c11: DUP1 00002c12: REVERT 00002c13: JUMPDEST 00002c14: POP 00002c15: MLOAD 00002c16: PUSH1 0x01 00002c18: PUSH1 0x01 00002c1a: PUSH1 0xe0 00002c1c: SHL 00002c1d: SUB 00002c1e: NOT 00002c1f: AND 00002c20: EQ 00002c21: PUSH2 0x1b41 00002c24: JUMPI 00002c25: PUSH1 0x40 00002c27: MLOAD 00002c28: PUSH3 0x461bcd 00002c2c: PUSH1 0xe5 00002c2e: SHL 00002c2f: DUP2 00002c30: MSTORE 00002c31: PUSH1 0x04 00002c33: ADD 00002c34: DUP1 00002c35: DUP1 00002c36: PUSH1 0x20 00002c38: ADD 00002c39: DUP3 00002c3a: DUP2 00002c3b: SUB 00002c3c: DUP3 00002c3d: MSTORE 00002c3e: PUSH1 0x3e 00002c40: DUP2 00002c41: MSTORE 00002c42: PUSH1 0x20 00002c44: ADD 00002c45: DUP1 00002c46: PUSH2 0x2cab 00002c49: PUSH1 0x3e 00002c4b: SWAP2 00002c4c: CODECOPY 00002c4d: PUSH1 0x40 00002c4f: ADD 00002c50: SWAP2 00002c51: POP 00002c52: POP 00002c53: PUSH1 0x40 00002c55: MLOAD 00002c56: DUP1 00002c57: SWAP2 00002c58: SUB 00002c59: SWAP1 00002c5a: REVERT 00002c5b: INVALID 00002c5c: UNKNOWN(0xC3) 00002c5d: UNKNOWN(0xD5) 00002c5e: DUP2 00002c5f: PUSH9 0xc5ae7397731d063d5b 00002c69: UNKNOWN(0xBF) 00002c6a: RETURNDATASIZE 00002c6b: PUSH6 0x7854427343f4 00002c72: UNKNOWN(0xC0) 00002c73: DUP4 00002c74: UNKNOWN(0x24) 00002c75: UNKNOWN(0x0F) 00002c76: PUSH27 0xacaa2d0f624e656564206f70657261746f7220617070726f76616c 00002c92: KECCAK256 00002c93: PUSH7 0x6f722033726420 00002c9b: PUSH17 0x61727479207472616e73666572732e636f 00002cad: PUSH15 0x74726163742072657475726e656420 00002cbd: PUSH2 0x6e20 00002cc0: PUSH22 0x6e6b6e6f776e2076616c75652066726f6d206f6e4552 00002cd7: NUMBER 00002cd8: BALANCE 00002cd9: BALANCE 00002cda: CALLDATALOAD 00002cdb: CALLDATALOAD 00002cdc: TIMESTAMP 00002cdd: PUSH2 0x7463 00002ce0: PUSH9 0x52656365697665644e 00002cea: PUSH6 0x6564206f7065 00002cf1: PUSH19 0x61746f7220617070726f76616c20666f722033 00002d05: PUSH19 0x64207061727479206275726e2e43726561746f 00002d19: PUSH19 0x207065726d697373696f6e2072657175697265 00002d2d: PUSH5 0x0000000000 00002d33: PUSH4 0x6f6e7472 00002d38: PUSH2 0x6374 00002d3b: KECCAK256 00002d3c: PUSH19 0x657475726e656420616e20756e6b6e6f776e20 00002d50: PUSH23 0x616c75652066726f6d206f6e4552433131353552656365 00002d68: PUSH10 0x766564a265627a7a7231 00002d73: PC 00002d74: KECCAK256 00002d75: UNKNOWN(0xE8) 00002d76: UNKNOWN(0xA6) 00002d77: SAR 00002d78: SSTORE 00002d79: LOG1 00002d7a: SWAP5 00002d7b: UNKNOWN(0xB2) 00002d7c: DELEGATECALL 00002d7d: UNKNOWN(0x2D) 00002d7e: DUP4 00002d7f: UNKNOWN(0xBA) 00002d80: UNKNOWN(0xD5) 00002d81: UNKNOWN(0xCB) 00002d82: POP 00002d83: PUSH21 0x3bb2cae21f6bc9f7b12d8f0056879d500e64736f6c 00002d99: PUSH4 0x43000511 00002d9e: STOP 00002d9f: ORIGIN
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | access_control | codex | NFT burn lacks ownership check, enabling destruction of others’ tokens | 85 | no | — |
viewevidence_json{
"evidence": "burn() deletes nfOwners[_ids[i]] for non\u2011fungibles without checking that _from owns the token.",
"locations": [
"contracts/Gala.sol:385",
"contracts/Gala.sol:399",
"contracts/Gala.sol:404",
"contracts/Gala.sol:405"
],
"recommendation": "Require nfOwners[_id] == _from for non\u2011fungible burns (or require operator approval from the actual owner). Consider also updating tokenSupply when burning if supply tracking is intended.",
"exploit_scenario": "An attacker who owns any NFT of a base type T (or has approval for their own address) can call burn with _from=attacker and _ids containing a victim\u2019s NFT of the same base type. The function only checks _from approval and then deletes nfOwners[_ids[i]] without verifying ownership, burning the victim\u2019s token while merely decrementing the attacker\u2019s base-type balance."
}
|
| 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": "0xcc10e401",
"selector": "0xcc10e401",
"calldata_variants": [
"0xcc10e401",
"0xcc10e4010000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe44591f0",
"selector": "0xe44591f0",
"calldata_variants": [
"0xe44591f0",
"0xe44591f00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe985e9c5",
"selector": "0xe985e9c5",
"calldata_variants": [
"0xe985e9c5",
"0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf242432a",
"selector": "0xf242432a",
"calldata_variants": [
"0xf242432a",
"0xf242432a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa22cb465",
"selector": "0xa22cb465",
"calldata_variants": [
"0xa22cb465",
"0xa22cb4650000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9e7d531",
"selector": "0xa9e7d531",
"calldata_variants": [
"0xa9e7d531",
"0xa9e7d5310000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xadebf6f2",
"selector": "0xadebf6f2",
"calldata_variants": [
"0xadebf6f2",
"0xadebf6f20000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7269a327",
"selector": "0x7269a327",
"calldata_variants": [
"0x7269a327",
"0x7269a3270000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 11679,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x1ead18439ec558cfdd79a81ed62e96a22fe20d32d3caca3558767370e7ee9c4d
call_targets:
0xc36cf0cfcb5d905b8b513860db0cfe63f6cf9f5c
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x1ead18439ec558cfdd79a81ed62e96a22fe20d32d3caca3558767370e7ee9c4d",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xc36cf0cfcb5d905b8b513860db0cfe63f6cf9f5c"
],
"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": "0xcc10e401",
"selector": "0xcc10e401",
"calldata_variants": [
"0xcc10e401",
"0xcc10e4010000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe44591f0",
"selector": "0xe44591f0",
"calldata_variants": [
"0xe44591f0",
"0xe44591f00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe985e9c5",
"selector": "0xe985e9c5",
"calldata_variants": [
"0xe985e9c5",
"0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf242432a",
"selector": "0xf242432a",
"calldata_variants": [
"0xf242432a",
"0xf242432a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa22cb465",
"selector": "0xa22cb465",
"calldata_variants": [
"0xa22cb465",
"0xa22cb4650000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9e7d531",
"selector": "0xa9e7d531",
"calldata_variants": [
"0xa9e7d531",
"0xa9e7d5310000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xadebf6f2",
"selector": "0xadebf6f2",
"calldata_variants": [
"0xadebf6f2",
"0xadebf6f20000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7269a327",
"selector": "0x7269a327",
"calldata_variants": [
"0x7269a327",
"0x7269a3270000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 10734,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 11244,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [
{
"pc": 11679,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 2
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 1
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x1ead18439ec558cfdd79a81ed62e96a22fe20d32d3caca3558767370e7ee9c4d
call_targets:
0xc36cf0cfcb5d905b8b513860db0cfe63f6cf9f5c
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x1ead18439ec558cfdd79a81ed62e96a22fe20d32d3caca3558767370e7ee9c4d",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xc36cf0cfcb5d905b8b513860db0cfe63f6cf9f5c"
],
"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": "0xcc10e401",
"selector": "0xcc10e401",
"calldata_variants": [
"0xcc10e401",
"0xcc10e4010000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe44591f0",
"selector": "0xe44591f0",
"calldata_variants": [
"0xe44591f0",
"0xe44591f00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe985e9c5",
"selector": "0xe985e9c5",
"calldata_variants": [
"0xe985e9c5",
"0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf242432a",
"selector": "0xf242432a",
"calldata_variants": [
"0xf242432a",
"0xf242432a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa22cb465",
"selector": "0xa22cb465",
"calldata_variants": [
"0xa22cb465",
"0xa22cb4650000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa9e7d531",
"selector": "0xa9e7d531",
"calldata_variants": [
"0xa9e7d531",
"0xa9e7d5310000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xadebf6f2",
"selector": "0xadebf6f2",
"calldata_variants": [
"0xadebf6f2",
"0xadebf6f20000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x7269a327",
"selector": "0x7269a327",
"calldata_variants": [
"0x7269a327",
"0x7269a3270000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 10734,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 11244,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": [
{
"pc": 11679,
"type": "tx_origin_used"
}
]
}
|
| medium | other | codex | Non‑fungible transfers accept arbitrary _value, breaking base‑type accounting | 75 | no | — |
viewevidence_json{
"evidence": "Non\u2011fungible transfers update balances using _value but never enforce _value == 1.",
"locations": [
"contracts/Gala.sol:156",
"contracts/Gala.sol:161",
"contracts/Gala.sol:175",
"contracts/Gala.sol:190",
"contracts/Gala.sol:196"
],
"recommendation": "Require _value == 1 for non\u2011fungible items in both single and batch transfers (or ignore _value and force it to 1) to preserve invariants between nfOwners and base\u2011type balances.",
"exploit_scenario": "For non\u2011fungible IDs, safeTransferFrom and safeBatchTransferFrom update nfOwners but use the caller\u2011supplied _value to adjust base\u2011type balances. A sender can transfer an NFT with _value=0 to keep their base\u2011type balance while ownership moves, or otherwise desynchronize balances. If base\u2011type balances are relied on (e.g., for burns or supply accounting), this enables inconsistent state and potential abuse."
}
|
| low | auth | codex | Signature verification allows malleable signatures and packed-encoding ambiguity | 65 | no | — |
viewevidence_json{
"evidence": "validateNodeSignature uses splitSignature without v/s validation and hashes with abi.encodePacked over a dynamic string.",
"locations": [
"contracts/SignatureVerifier.sol:5",
"contracts/SignatureVerifier.sol:13",
"contracts/SignatureVerifier.sol:14",
"contracts/SignatureVerifier.sol:19"
],
"recommendation": "Enforce v in {27,28} and s in the lower half\u2011order, reject signer == address(0), and switch to abi.encode with explicit domain separation and nonce management to prevent packed\u2011encoding collisions.",
"exploit_scenario": "If validateNodeSignature is used for authorization, an attacker could present malleable signatures (high\u2011s or non\u2011standard v) or craft (nodeHardwareLicenseId, sigNonce) pairs that hash to the same abi.encodePacked output, reusing signatures for different data. This can weaken signature\u2011based access controls."
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 5
}
|