019be3d6-829b-7113-92ff-3299b47c7d80
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 |
|---|---|---|---|---|
| 40687 | artifact.fetch | complete | 1 / 3 | 2 months ago |
| 40688 | proxy.resolve | complete | 1 / 3 | 2 months ago |
| 40689 | tool.cast_disasm | complete | 1 / 3 | 2 months ago |
| 40690 | analysis.bundle | complete | 1 / 3 | 2 months ago |
| 40691 | capability.graph | complete | 1 / 3 | 2 months ago |
| 40692 | detector.run | complete | 1 / 3 | 2 months ago |
| 40693 | validation.fork | complete | 1 / 3 | 2 months ago |
| 41281 | report.consolidate | complete | 1 / 6 | 2 months ago |
| 41282 | tool.slither | complete | 1 / 2 | 2 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-a5mp7fkj)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-a5mp7fkj)
Crate.recoverETH() (contracts/crate/Crate.sol#303-308) sends eth to arbitrary user
Dangerous calls:
- _msgSender().call{value: balance}() (contracts/crate/Crate.sol#305)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#206-277) has bitwise-xor operator ^ instead of the exponentiation operator **:
- inverse = (3 * denominator) ^ 2 (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#259)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-exponentiation
Reentrancy in Crate.claimPartner(address[],string,uint256,uint8,bytes32,bytes32) (contracts/crate/Crate.sol#267-301):
External calls:
- (success,None) = user_.call{value: balance}() (contracts/crate/Crate.sol#293)
State variables written after the call(s):
- _partnerBalanceOf[partner_][token] = 0 (contracts/crate/Crate.sol#291)
Crate._partnerBalanceOf (contracts/crate/Crate.sol#32) can be used in cross function reentrancies:
- Crate.partnerBalanceOf(address,string) (contracts/crate/Crate.sol#344-346)
- Crate.setData(address,address,uint256,uint256,string,uint256,uint256) (contracts/crate/Crate.sol#188-212)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
- denominator = denominator / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#244)
- inverse = (3 * denominator) ^ 2 (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#259)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
- denominator = denominator / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#244)
- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#263)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
- denominator = denominator / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#244)
- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#264)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
- denominator = denominator / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#244)
- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#265)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
- denominator = denominator / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#244)
- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#266)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
- denominator = denominator / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#244)
- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#267)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
- denominator = denominator / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#244)
- inverse *= 2 - denominator * inverse (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#268)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#206-277) performs a multiplication on the result of a division:
- low = low / twos (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#247)
- result = low * inverse (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#274)
Math.invMod(uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#317-363) performs a multiplication on the result of a division:
- quotient = gcd / remainder (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#339)
- (gcd,remainder) = (remainder,gcd - remainder * quotient) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#341-348)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply
Crate.recoverETH() (contracts/crate/Crate.sol#303-308) ignores return value by _msgSender().call{value: balance}() (contracts/crate/Crate.sol#305)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-low-level-calls
Crate.constructor(address,address).claimer_ (contracts/crate/Crate.sol#39) lacks a zero-check on :
- _claimer = claimer_ (contracts/crate/Crate.sol#43)
Crate.setClaimer(address).claimer_ (contracts/crate/Crate.sol#182) lacks a zero-check on :
- _claimer = claimer_ (contracts/crate/Crate.sol#183)
Crate.claimPartner(address[],string,uint256,uint8,bytes32,bytes32).user_ (contracts/crate/Crate.sol#268) lacks a zero-check on :
- (success,None) = user_.call{value: balance}() (contracts/crate/Crate.sol#293)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
Crate.claimPartner(address[],string,uint256,uint8,bytes32,bytes32) (contracts/crate/Crate.sol#267-301) has external calls inside a loop: (success,None) = user_.call{value: balance}() (contracts/crate/Crate.sol#293)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop
Reentrancy in Crate.recoverETH() (contracts/crate/Crate.sol#303-308):
External calls:
- _msgSender().call{value: balance}() (contracts/crate/Crate.sol#305)
Event emitted after the call(s):
- ETHRecovered(balance) (contracts/crate/Crate.sol#307)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
Crate.claimPartner(address[],string,uint256,uint8,bytes32,bytes32) (contracts/crate/Crate.sol#267-301) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,error)(deadline_ > block.timestamp,revert DeadlineERR()()) (contracts/crate/Crate.sol#270)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
SafeERC20._safeTransfer(IERC20,address,uint256,bool) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#176-200) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#179-199)
SafeERC20._safeTransferFrom(IERC20,address,address,uint256,bool) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#212-244) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#221-243)
SafeERC20._safeApprove(IERC20,address,uint256,bool) (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#255-279) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#258-278)
Bytes.slice(bytes,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#86-98) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#93-95)
Bytes.splice(bytes,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#117-129) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#123-126)
Bytes.replace(bytes,uint256,bytes,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#154-172) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#167-169)
Bytes.concat(bytes[]) (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#183-203) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#194-196)
Bytes.toNibbles(bytes) (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#210-245) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#211-244)
Bytes._unsafeReadBytesOffset(bytes,uint256) (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#326-331) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#328-330)
Panic.panic(uint256) (lib/openzeppelin-contracts/contracts/utils/Panic.sol#50-56) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Panic.sol#51-55)
ShortStrings.toString(ShortString) (lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol#63-72) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol#67-70)
StorageSlot.getAddressSlot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#66-70) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#67-69)
StorageSlot.getBooleanSlot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#75-79) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#76-78)
StorageSlot.getBytes32Slot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#84-88) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#85-87)
StorageSlot.getUint256Slot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#93-97) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#94-96)
StorageSlot.getInt256Slot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#102-106) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#103-105)
StorageSlot.getStringSlot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#111-115) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#112-114)
StorageSlot.getStringSlot(string) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#120-124) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#121-123)
StorageSlot.getBytesSlot(bytes32) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#129-133) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#130-132)
StorageSlot.getBytesSlot(bytes) (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#138-142) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#139-141)
Strings.toString(uint256) (lib/openzeppelin-contracts/contracts/utils/Strings.sol#46-64) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Strings.sol#51-53)
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Strings.sol#56-58)
Strings.toChecksumHexString(address) (lib/openzeppelin-contracts/contracts/utils/Strings.sol#112-130) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Strings.sol#117-119)
Strings.escapeJSON(string) (lib/openzeppelin-contracts/contracts/utils/Strings.sol#464-494) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Strings.sol#488-491)
Strings._unsafeReadBytesOffset(bytes,uint256) (lib/openzeppelin-contracts/contracts/utils/Strings.sol#502-507) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/Strings.sol#504-506)
ECDSA.tryRecover(bytes32,bytes) (lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol#61-80) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol#71-75)
ECDSA.tryRecoverCalldata(bytes32,bytes) (lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol#85-104) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol#95-99)
ECDSA.parse(bytes) (lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol#217-240) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol#218-239)
ECDSA.parseCalldata(bytes) (lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol#245-268) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol#246-267)
MessageHashUtils.toEthSignedMessageHash(bytes32) (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#32-38) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#33-37)
MessageHashUtils.toDataWithIntendedValidatorHash(address,bytes32) (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#71-81) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#75-80)
MessageHashUtils.toTypedDataHash(bytes32,bytes32) (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#92-100) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#93-99)
MessageHashUtils.toDomainSeparator(bytes1,bytes32,bytes32,uint256,address,bytes32) (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#137-179) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#147-178)
MessageHashUtils.toDomainTypeHash(bytes1) (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#182-227) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#185-226)
Math.add512(uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#25-30) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#26-29)
Math.mul512(uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#37-46) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#41-45)
Math.tryMul(uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#73-84) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#76-80)
Math.tryDiv(uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#89-97) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#92-95)
Math.tryMod(uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#102-110) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#105-108)
Math.mulDiv(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#206-277) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#229-236)
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#242-251)
Math.tryModExp(uint256,uint256,uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#411-435) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#413-434)
Math.tryModExp(bytes,bytes,bytes) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#451-473) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#463-472)
Math._zeroBytes(bytes) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#478-490) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#482-484)
Math.log2(uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#619-658) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#655-657)
SafeCast.toUint(bool) (lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol#1157-1161) uses assembly
- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol#1158-1160)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
7 different versions of Solidity are used:
- Version constraint ^0.8.28 is used by:
-^0.8.28 (contracts/crate/Constants.sol#2)
-^0.8.28 (contracts/crate/ICrate.sol#2)
- Version constraint 0.8.28 is used by:
-0.8.28 (contracts/crate/Crate.sol#2)
- Version constraint ^0.8.20 is used by:
-^0.8.20 (lib/openzeppelin-contracts/contracts/access/AccessControl.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/Context.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/Panic.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#5)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#4)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol#5)
-^0.8.20 (lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol#4)
- Version constraint >=0.8.4 is used by:
->=0.8.4 (lib/openzeppelin-contracts/contracts/access/IAccessControl.sol#4)
- Version constraint >=0.6.2 is used by:
->=0.6.2 (lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol#4)
- Version constraint >=0.4.16 is used by:
->=0.4.16 (lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol#4)
->=0.4.16 (lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol#4)
->=0.4.16 (lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol#4)
->=0.4.16 (lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#4)
->=0.4.16 (lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol#4)
- Version constraint ^0.8.24 is used by:
-^0.8.24 (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#4)
-^0.8.24 (lib/openzeppelin-contracts/contracts/utils/Strings.sol#4)
-^0.8.24 (lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol#4)
-^0.8.24 (lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol#4)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used
Version constraint ^0.8.20 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- VerbatimInvalidDeduplication
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess.
It is used by:
- ^0.8.20 (lib/openzeppelin-contracts/contracts/access/AccessControl.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/Context.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/Panic.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol#5)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#4)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol#5)
- ^0.8.20 (lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol#4)
Version constraint >=0.8.4 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- FullInlinerNonExpressionSplitArgumentEvaluationOrder
- MissingSideEffectsOnSelectorAccess
- AbiReencodingHeadOverflowWithStaticArrayCleanup
- DirtyBytesArrayToStorage
- DataLocationChangeInInternalOverride
- NestedCalldataArrayAbiReencodingSizeValidation
- SignedImmutables.
It is used by:
- >=0.8.4 (lib/openzeppelin-contracts/contracts/access/IAccessControl.sol#4)
Version constraint >=0.6.2 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- MissingSideEffectsOnSelectorAccess
- AbiReencodingHeadOverflowWithStaticArrayCleanup
- DirtyBytesArrayToStorage
- NestedCalldataArrayAbiReencodingSizeValidation
- ABIDecodeTwoDimensionalArrayMemory
- KeccakCaching
- EmptyByteArrayCopy
- DynamicArrayCleanup
- MissingEscapingInFormatting
- ArraySliceDynamicallyEncodedBaseType
- ImplicitConstructorCallvalueCheck
- TupleAssignmentMultiStackSlotComponents
- MemoryArrayCreationOverflow.
It is used by:
- >=0.6.2 (lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol#4)
Version constraint >=0.4.16 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
- DirtyBytesArrayToStorage
- ABIDecodeTwoDimensionalArrayMemory
- KeccakCaching
- EmptyByteArrayCopy
- DynamicArrayCleanup
- ImplicitConstructorCallvalueCheck
- TupleAssignmentMultiStackSlotComponents
- MemoryArrayCreationOverflow
- privateCanBeOverridden
- SignedArrayStorageCopy
- ABIEncoderV2StorageArrayWithMultiSlotElement
- DynamicConstructorArgumentsClippedABIV2
- UninitializedFunctionPointerInConstructor_0.4.x
- IncorrectEventSignatureInLibraries_0.4.x
- ExpExponentCleanup
- NestedArrayFunctionCallDecoder
- ZeroFunctionSelector.
It is used by:
- >=0.4.16 (lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol#4)
- >=0.4.16 (lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol#4)
- >=0.4.16 (lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol#4)
- >=0.4.16 (lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol#4)
- >=0.4.16 (lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol#4)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity
Low level call in Crate.claimPartner(address[],string,uint256,uint8,bytes32,bytes32) (contracts/crate/Crate.sol#267-301):
- (success,None) = user_.call{value: balance}() (contracts/crate/Crate.sol#293)
Low level call in Crate.recoverETH() (contracts/crate/Crate.sol#303-308):
- _msgSender().call{value: balance}() (contracts/crate/Crate.sol#305)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
Function EIP712._EIP712Name() (lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol#146-148) is not in mixedCase
Function EIP712._EIP712Version() (lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol#157-159) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
Bytes.toNibbles(bytes) (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#210-245) uses literals with too many digits:
- chunk_toNibbles_asm_0 = 0x0000000000000000ffffffffffffffff0000000000000000ffffffffffffffff & chunk_toNibbles_asm_0 << 64 | chunk_toNibbles_asm_0 (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#222-225)
Bytes.toNibbles(bytes) (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#210-245) uses literals with too many digits:
- chunk_toNibbles_asm_0 = 0x00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff & chunk_toNibbles_asm_0 << 32 | chunk_toNibbles_asm_0 (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#226-229)
Bytes.reverseBytes32(bytes32) (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#258-272) uses literals with too many digits:
- value = ((value >> 32) & 0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) | ((value & 0x00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF) << 32) (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#265-267)
Bytes.reverseBytes32(bytes32) (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#258-272) uses literals with too many digits:
- value = ((value >> 64) & 0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) | ((value & 0x0000000000000000FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF) << 64) (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#268-270)
Bytes.reverseBytes16(bytes16) (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#275-286) uses literals with too many digits:
- value = ((value & 0xFFFFFFFF00000000FFFFFFFF00000000) >> 32) | ((value & 0x00000000FFFFFFFF00000000FFFFFFFF) << 32) (lib/openzeppelin-contracts/contracts/utils/Bytes.sol#282-284)
ShortStrings.slitherConstructorConstantVariables() (lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol#40-122) uses literals with too many digits:
- FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF (lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol#42)
Math.log2(uint256) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#619-658) uses literals with too many digits:
- r = r | byte(uint256,uint256)(x >> r,0x0000010102020202030303030303030300000000000000000000000000000000) (lib/openzeppelin-contracts/contracts/utils/math/Math.sol#656)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits
Loop condition idx < _bonus.length (contracts/crate/Crate.sol#401) should use cached array length instead of referencing `length` member of the storage array.
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#cache-array-length
. analyzed (24 contracts with 100 detectors), 80 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.8.28",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.8.28",
"install_stderr": null,
"install_stdout": "Version '0.8.28' is already installed, skipping..."
},
"solc_args": "--base-path /tmp/slither-a5mp7fkj --include-path /tmp/slither-a5mp7fkj/lib --include-path /tmp/slither-a5mp7fkj/lib/openzeppelin-contracts --allow-paths /tmp/slither-a5mp7fkj,/tmp/slither-a5mp7fkj/lib,/tmp/slither-a5mp7fkj/lib/openzeppelin-contracts,/tmp/slither-a5mp7fkj/src",
"remappings": [
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/"
],
"source_files": [
"@openzeppelin/contracts/access/AccessControl.sol",
"@openzeppelin/contracts/access/IAccessControl.sol",
"@openzeppelin/contracts/interfaces/IERC1363.sol",
"@openzeppelin/contracts/interfaces/IERC165.sol",
"@openzeppelin/contracts/interfaces/IERC20.sol",
"@openzeppelin/contracts/interfaces/IERC5267.sol",
"@openzeppelin/contracts/token/ERC20/IERC20.sol",
"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
"@openzeppelin/contracts/utils/Address.sol",
"@openzeppelin/contracts/utils/Context.sol",
"@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
"@openzeppelin/contracts/utils/cryptography/EIP712.sol",
"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol",
"@openzeppelin/contracts/utils/Errors.sol",
"@openzeppelin/contracts/utils/introspection/ERC165.sol",
"@openzeppelin/contracts/utils/introspection/IERC165.sol",
"@openzeppelin/contracts/utils/math/Math.sol",
"@openzeppelin/contracts/utils/math/SafeCast.sol",
"@openzeppelin/contracts/utils/math/SignedMath.sol",
"@openzeppelin/contracts/utils/Panic.sol",
"@openzeppelin/contracts/utils/ReentrancyGuard.sol",
"@openzeppelin/contracts/utils/ShortStrings.sol",
"@openzeppelin/contracts/utils/StorageSlot.sol",
"@openzeppelin/contracts/utils/Strings.sol",
"contracts/crate/Constants.sol",
"contracts/crate/Crate.sol",
"contracts/crate/ICrate.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 80,
"workspace_hash": "a0a4c1e4b4d1ad62419adc15f8c9348ab7285d8d17a4815d8161a5d5948870fd",
"duration_seconds": 2.865438222885132,
"solc_version_requested": "0.8.28"
}
{"no_findings":false,"summary":"Found 1 low-severity issue: recoverETH ignores the ETH transfer result, which can leave funds stuck and emit misleading events.","findings":[{"severity":"low","category":"other","title":"recoverETH ignores low-level call success","exploit_scenario":"If the DEFAULT_ADMIN_ROLE is a contract that rejects ETH (or runs out of gas), recoverETH will still emit ETHRecovered while the transfer fails, leaving ETH locked until another admin can receive.","recommendation":"Check the call return value and revert on failure (or use Address.sendValue / a payable recipient parameter).","evidence":"_msgSender().call{value: balance}(\"\"); without checking success.","locations":["contracts/crate/Crate.sol:303"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-h1_f4pll
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019be419-4115-7503-9a69-bc805e76918c
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers
thinking
**Listing all files with ripgrep**
exec
/bin/bash -lc 'rg --files' in /tmp/codex-h1_f4pll succeeded in 16ms:
codex-output-schema.json
AUDIT_BUNDLE.txt
contracts/crate/ICrate.sol
contracts/crate/Constants.sol
contracts/crate/Crate.sol
@openzeppelin/contracts/interfaces/IERC1363.sol
@openzeppelin/contracts/interfaces/IERC20.sol
@openzeppelin/contracts/interfaces/IERC5267.sol
@openzeppelin/contracts/interfaces/IERC165.sol
@openzeppelin/contracts/access/AccessControl.sol
@openzeppelin/contracts/access/IAccessControl.sol
@openzeppelin/contracts/token/ERC20/IERC20.sol
@openzeppelin/contracts/utils/Panic.sol
@openzeppelin/contracts/utils/Address.sol
@openzeppelin/contracts/utils/Errors.sol
@openzeppelin/contracts/utils/Context.sol
@openzeppelin/contracts/utils/Strings.sol
@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol
@openzeppelin/contracts/utils/math/SafeCast.sol
@openzeppelin/contracts/utils/math/SignedMath.sol
thinking
**Preparing to read audit bundle content**
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-h1_f4pll succeeded in 8ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.
================================================================================
FILE: contracts/crate/Constants.sol
================================================================================
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.28;
contract Constants {
bytes32 public constant CRATE_ROLE = keccak256("CRATE_ROLE");
bytes32 public constant MANAGER_ROLE = keccak256("MANAGER_ROLE");
bytes32 public constant SELLER_RAISER_ROLE = keccak256("SELLER_RAISER_ROLE");
bytes32 internal constant CLAIM_HASH = keccak256("ClaimPartner(address[] tokens_,string partner_,address user_,uint256 deadline_)");
address internal constant ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
address internal constant TOKEN = 0xdEDEDEDEdEdEdEDedEDeDedEdEdeDedEdEDedEdE;
uint256 internal constant MIN = 10**18;
uint256 internal constant PRECISION = 18;
}
thinking
**Identifying potential contract issues**
I'm auditing key functions for reentrancy, access control, and logical checks, noting some missing validations on rate bounds and sale reopening. Also, privileged roles can update sale data without supply or status checks, which may be expected but worth confirming against security assumptions.
thinking
**Reviewing signature hashing and partner logic**
I've verified the custom array hashing in EIP712 signature is safe despite nonstandard encoding, and claimPartner correctly binds signatures to callers with reentrancy guarded. Noted a minor unchecked call return in ETH recovery and a potentially surprising partner lookup logic allowing unknown partners if not defined.
exec
/bin/bash -lc 'rg -n "getPartner|partner" contracts/crate/Crate.sol' in /tmp/codex-h1_f4pll succeeded in 10ms:
31: mapping(address => string) private _partners;
32: mapping(string => mapping(address => uint256)) private _partnerBalanceOf;
33: mapping(string => Partner) private _partnersData;
99: string[] calldata partner_,
104: require(partner_.length == newRate1_.length && partner_.length == newRate2_.length, ParamsInvalidERR());
106: for (uint256 index = 0; index < partner_.length; index++) {
107: _partnersData[partner_[index]] = Partner({
114: emit SetRatesForPartner(partner_[index], newRate1_[index], newRate2_[index]);
193: string calldata partner_,
201: if (!partner_.equal("")) {
202: if (!_partnersData[partner_].defined) {
203: _partnersData[partner_].defined = true;
204: _partnersData[partner_].enabled = true;
206: emit SetRatesForPartner(partner_, _rate1, _rate2);
208: _partnerBalanceOf[partner_][token_] += reward1_;
209: _partnerBalanceOf[partner_][TOKEN] += reward2_ ;
210: _partners[user_] = partner_;
237: function enablePartner(string calldata partner_) external onlyRole(MANAGER_ROLE) {
238: require(_partnersData[partner_].defined, UndefinedERR());
239: require(!_partnersData[partner_].enabled, EnabledERR());
thinking
**Assessing potential vulnerabilities**
The main issue found is array access out-of-bounds in openSale causing reverts but not a security flaw. Access control appears solid though misuse of CRATE_ROLE could bypass validation. Signature replay protection looks robust, but recoverETH lacks handling for failed calls.
thinking
**Identifying unchecked return in recoverETH and access control gaps**
The unchecked low-level call in recoverETH could silently fail if the admin is a contract rejecting ETH, causing stuck funds but no direct exploit. Also, setData lacks sale status checks, letting CRATE_ROLE manipulate sales regardless of open/closed state, which is a trust assumption rather than explicit vulnerability. Signature hashing deviates from standard EIP-712 array encoding but can be matched offchain, so no security flaw.
thinking
**Highlighting recoverETH unchecked call and setData partner accrual logic**
Reentrancy via recoverETH could allow repeated calls but only by admin, who already has privileges. The unchecked low-level call may silently fail if recipient contract rejects ETH. Also, setData accrues rewards to partners regardless of enable status, enabling disabled partners to accumulate rewards retroactively if re-enabled, which risks logic inconsistencies around partner management.
exec
/bin/bash -lc "nl -ba contracts/crate/Crate.sol | sed -n '300,340p'" in /tmp/codex-h1_f4pll succeeded in 6ms:
300 }
301 }
302
303 function recoverETH() external onlyRole(DEFAULT_ADMIN_ROLE) {
304 uint256 balance = address(this).balance;
305 _msgSender().call{value: balance}("");
306
307 emit ETHRecovered(balance);
308 }
309
310 function recoverERC20(address token_, uint256 amount_) external onlyRole(DEFAULT_ADMIN_ROLE) {
311 IERC20(token_).safeTransfer(_msgSender(), amount_);
312
313 emit Erc20Recovered(token_, amount_);
314 }
315
316 function getTreasury() external view returns (address) {
317 return _treasury;
318 }
319
thinking
**Checking line numbers for setData**
exec
/bin/bash -lc "nl -ba contracts/crate/Crate.sol | sed -n '170,230p'" in /tmp/codex-h1_f4pll succeeded in 8ms:
170
171 emit SetMin(_min);
172 }
173
174 function setTreasury(address treasury_) external onlyRole(DEFAULT_ADMIN_ROLE) {
175 require(treasury_ != address(0), ZeroAddressERR());
176
177 _treasury = treasury_;
178
179 emit SetTreasury(_treasury);
180 }
181
182 function setClaimer(address claimer_) external onlyRole(DEFAULT_ADMIN_ROLE) {
183 _claimer = claimer_;
184
185 emit SetClaimer(claimer_);
186 }
187
188 function setData(
189 address user_,
thinking
**Evaluating potential vulnerabilities**
I'm assessing whether to classify setData's lack of sale status validation as a medium-risk access control issue, but it hinges on how CRATE_ROLE is assigned; overall, these seem like trusted roles with some bounded privilege, so risks may be low to medium. The unchecked call in recoverETH looks like a valid low-severity finding due to unchecked return values, while token claiming's token array mismatch seems less clear as a vulnerability.
thinking
**Drafting detailed JSON output**
I'm preparing a final JSON output with one low-severity finding about recoverETH's unchecked call result and its potential to leave ETH stuck, including categories, evidence with line numbers, and a concise summary noting a single low issue while omitting the setData invariant concern due to ambiguous exploitability.
codex
{"no_findings":false,"summary":"Found 1 low-severity issue: recoverETH ignores the ETH transfer result, which can leave funds stuck and emit misleading events.","findings":[{"severity":"low","category":"other","title":"recoverETH ignores low-level call success","exploit_scenario":"If the DEFAULT_ADMIN_ROLE is a contract that rejects ETH (or runs out of gas), recoverETH will still emit ETHRecovered while the transfer fails, leaving ETH locked until another admin can receive.","recommendation":"Check the call return value and revert on failure (or use Address.sendValue / a payable recipient parameter).","evidence":"_msgSender().call{value: balance}(\"\"); without checking success.","locations":["contracts/crate/Crate.sol:303"]}]}
tokens used
20,715
{
"codex": {
"ran_at": "2026-01-22T05:10:06.846322+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 27,
"import_count": 29,
"first_party_contracts_count": 3
},
"summary": "Found 1 low-severity issue: recoverETH ignores the ETH transfer result, which can leave funds stuck and emit misleading events.",
"raw_final": {
"summary": "Found 1 low-severity issue: recoverETH ignores the ETH transfer result, which can leave funds stuck and emit misleading events.",
"findings": [
{
"title": "recoverETH ignores low-level call success",
"category": "other",
"evidence": "_msgSender().call{value: balance}(\"\"); without checking success.",
"severity": "low",
"locations": [
"contracts/crate/Crate.sol:303"
],
"recommendation": "Check the call return value and revert on failure (or use Address.sendValue / a payable recipient parameter).",
"exploit_scenario": "If the DEFAULT_ADMIN_ROLE is a contract that rejects ETH (or runs out of gas), recoverETH will still emit ETHRecovered while the transfer fails, leaving ETH locked until another admin can receive."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: DUP1 00000003: PUSH1 0x40 00000005: MSTORE 00000006: PUSH1 0x04 00000008: CALLDATASIZE 00000009: LT 0000000a: ISZERO 0000000b: PUSH2 0x001d 0000000e: JUMPI 0000000f: JUMPDEST 00000010: POP 00000011: CALLDATASIZE 00000012: ISZERO 00000013: PUSH2 0x001b 00000016: JUMPI 00000017: PUSH1 0x00 00000019: DUP1 0000001a: REVERT 0000001b: JUMPDEST 0000001c: STOP 0000001d: JUMPDEST 0000001e: PUSH1 0x00 00000020: CALLDATALOAD 00000021: PUSH1 0xe0 00000023: SHR 00000024: SWAP1 00000025: DUP2 00000026: PUSH4 0x01ffc9a7 0000002b: EQ 0000002c: PUSH2 0x1f9d 0000002f: JUMPI 00000030: POP 00000031: DUP1 00000032: PUSH4 0x0614117a 00000037: EQ 00000038: PUSH2 0x1f44 0000003b: JUMPI 0000003c: DUP1 0000003d: PUSH4 0x07da68f5 00000042: EQ 00000043: PUSH2 0x1eb5 00000046: JUMPI 00000047: DUP1 00000048: PUSH4 0x14afd04a 0000004d: EQ 0000004e: PUSH2 0x1e7a 00000051: JUMPI 00000052: DUP1 00000053: PUSH4 0x248a9ca3 00000058: EQ 00000059: PUSH2 0x1e4d 0000005c: JUMPI 0000005d: DUP1 0000005e: PUSH4 0x2f2ff15d 00000063: EQ 00000064: PUSH2 0x1e0d 00000067: JUMPI 00000068: DUP1 00000069: PUSH4 0x34ec740a 0000006e: EQ 0000006f: PUSH2 0x1d40 00000072: JUMPI 00000073: DUP1 00000074: PUSH4 0x36568abe 00000079: EQ 0000007a: PUSH2 0x1cfa 0000007d: JUMPI 0000007e: DUP1 0000007f: PUSH4 0x3656eec2 00000084: EQ 00000085: PUSH2 0x1cb2 00000088: JUMPI 00000089: DUP1 0000008a: PUSH4 0x366e6daa 0000008f: EQ 00000090: PUSH2 0x1be2 00000093: JUMPI 00000094: DUP1 00000095: PUSH4 0x3b19e84a 0000009a: EQ 0000009b: PUSH2 0x1bbb 0000009e: JUMPI 0000009f: DUP1 000000a0: PUSH4 0x45dc3dd8 000000a5: EQ 000000a6: PUSH2 0x1b4e 000000a9: JUMPI 000000aa: DUP1 000000ab: PUSH4 0x4896672e 000000b0: EQ 000000b1: PUSH2 0x1aad 000000b4: JUMPI 000000b5: DUP1 000000b6: PUSH4 0x4e69d560 000000bb: EQ 000000bc: PUSH2 0x1a82 000000bf: JUMPI 000000c0: DUP1 000000c1: PUSH4 0x54f89ed3 000000c6: EQ 000000c7: PUSH2 0x199e 000000ca: JUMPI 000000cb: DUP1 000000cc: PUSH4 0x5c64bb72 000000d1: EQ 000000d2: PUSH2 0x1980 000000d5: JUMPI 000000d6: DUP1 000000d7: PUSH4 0x5d6ff9e6 000000dc: EQ 000000dd: PUSH2 0x15b4 000000e0: JUMPI 000000e1: DUP1 000000e2: PUSH4 0x6183f16e 000000e7: EQ 000000e8: PUSH2 0x14df 000000eb: JUMPI 000000ec: DUP1 000000ed: PUSH4 0x6bb6ff15 000000f2: EQ 000000f3: PUSH2 0x1453 000000f6: JUMPI 000000f7: DUP1 000000f8: PUSH4 0x6f9fdd66 000000fd: EQ 000000fe: PUSH2 0x1430 00000101: JUMPI 00000102: DUP1 00000103: PUSH4 0x7319b518 00000108: EQ 00000109: PUSH2 0x13f5 0000010c: JUMPI 0000010d: DUP1 0000010e: PUSH4 0x7f8f166d 00000113: EQ 00000114: PUSH2 0x11b0 00000117: JUMPI 00000118: DUP1 00000119: PUSH4 0x84b0196e 0000011e: EQ 0000011f: PUSH2 0x10b3 00000122: JUMPI 00000123: DUP1 00000124: PUSH4 0x8980f11f 00000129: EQ 0000012a: PUSH2 0x1035 0000012d: JUMPI 0000012e: DUP1 0000012f: PUSH4 0x8bdff161 00000134: EQ 00000135: PUSH2 0x0f52 00000138: JUMPI 00000139: DUP1 0000013a: PUSH4 0x91d14854 0000013f: EQ 00000140: PUSH2 0x0f04 00000143: JUMPI 00000144: DUP1 00000145: PUSH4 0x98d5fdca 0000014a: EQ 0000014b: PUSH2 0x0ee9 0000014e: JUMPI 0000014f: DUP1 00000150: PUSH4 0x9accab55 00000155: EQ 00000156: PUSH2 0x0ec4 00000159: JUMPI 0000015a: DUP1 0000015b: PUSH4 0x9d7b8e68 00000160: EQ 00000161: PUSH2 0x0ea6 00000164: JUMPI 00000165: DUP1 00000166: PUSH4 0x9ea21a6f 0000016b: EQ 0000016c: PUSH2 0x0e74 0000016f: JUMPI 00000170: DUP1 00000171: PUSH4 0xa217fddf 00000176: EQ 00000177: PUSH2 0x0e58 0000017a: JUMPI 0000017b: DUP1 0000017c: PUSH4 0xa4223d53 00000181: EQ 00000182: PUSH2 0x0dda 00000185: JUMPI 00000186: DUP1 00000187: PUSH4 0xb72e5182 0000018c: EQ 0000018d: PUSH2 0x0ca4 00000190: JUMPI 00000191: DUP1 00000192: PUSH4 0xbe9a6555 00000197: EQ 00000198: PUSH2 0x0c04 0000019b: JUMPI 0000019c: DUP1 0000019d: PUSH4 0xc41a8a66 000001a2: EQ 000001a3: PUSH2 0x0a21 000001a6: JUMPI 000001a7: DUP1 000001a8: PUSH4 0xc6b872ab 000001ad: EQ 000001ae: PUSH2 0x09db 000001b1: JUMPI 000001b2: DUP1 000001b3: PUSH4 0xc8e6dcb1 000001b8: EQ 000001b9: PUSH2 0x09ba 000001bc: JUMPI 000001bd: DUP1 000001be: PUSH4 0xcdfb5832 000001c3: EQ 000001c4: PUSH2 0x0945 000001c7: JUMPI 000001c8: DUP1 000001c9: PUSH4 0xd547741f 000001ce: EQ 000001cf: PUSH2 0x0900 000001d2: JUMPI 000001d3: DUP1 000001d4: PUSH4 0xd6362e97 000001d9: EQ 000001da: PUSH2 0x08e2 000001dd: JUMPI 000001de: DUP1 000001df: PUSH4 0xd8f6d596 000001e4: EQ 000001e5: PUSH2 0x0809 000001e8: JUMPI 000001e9: DUP1 000001ea: PUSH4 0xda1d12f3 000001ef: EQ 000001f0: PUSH2 0x07c1 000001f3: JUMPI 000001f4: DUP1 000001f5: PUSH4 0xdd8027db 000001fa: EQ 000001fb: PUSH2 0x07a3 000001fe: JUMPI 000001ff: DUP1 00000200: PUSH4 0xe2f05fca 00000205: EQ 00000206: PUSH2 0x076a 00000209: JUMPI 0000020a: DUP1 0000020b: PUSH4 0xec87621c 00000210: EQ 00000211: PUSH2 0x072f 00000214: JUMPI 00000215: DUP1 00000216: PUSH4 0xf0f44260 0000021b: EQ 0000021c: PUSH2 0x06a2 0000021f: JUMPI 00000220: PUSH4 0xf6c19852 00000225: EQ 00000226: PUSH2 0x022f 00000229: JUMPI 0000022a: CODESIZE 0000022b: PUSH2 0x000f 0000022e: JUMP 0000022f: JUMPDEST 00000230: CALLVALUE 00000231: PUSH2 0x067d 00000234: JUMPI 00000235: PUSH1 0xc0 00000237: CALLDATASIZE 00000238: PUSH1 0x03 0000023a: NOT 0000023b: ADD 0000023c: SLT 0000023d: PUSH2 0x067d 00000240: JUMPI 00000241: PUSH1 0x04 00000243: CALLDATALOAD 00000244: PUSH8 0xffffffffffffffff 0000024d: DUP2 0000024e: GT 0000024f: PUSH2 0x067d 00000252: JUMPI 00000253: CALLDATASIZE 00000254: PUSH1 0x23 00000256: DUP3 00000257: ADD 00000258: SLT 00000259: ISZERO 0000025a: PUSH2 0x067d 0000025d: JUMPI 0000025e: DUP1 0000025f: PUSH1 0x04 00000261: ADD 00000262: CALLDATALOAD 00000263: PUSH2 0x026b 00000266: DUP2 00000267: PUSH2 0x21a0 0000026a: JUMP 0000026b: JUMPDEST 0000026c: SWAP2 0000026d: PUSH2 0x0279 00000270: PUSH1 0x40 00000272: MLOAD 00000273: SWAP4 00000274: DUP5 00000275: PUSH2 0x217e 00000278: JUMP 00000279: JUMPDEST 0000027a: DUP2 0000027b: DUP4 0000027c: MSTORE 0000027d: PUSH1 0x20 0000027f: DUP4 00000280: ADD 00000281: SWAP1 00000282: PUSH1 0x24 00000284: DUP3 00000285: SWAP4 00000286: PUSH1 0x05 00000288: SHL 00000289: DUP3 0000028a: ADD 0000028b: ADD 0000028c: SWAP1 0000028d: CALLDATASIZE 0000028e: DUP3 0000028f: GT 00000290: PUSH2 0x067d 00000293: JUMPI 00000294: PUSH1 0x24 00000296: ADD 00000297: SWAP2 00000298: JUMPDEST 00000299: DUP2 0000029a: DUP4 0000029b: LT 0000029c: PUSH2 0x0682 0000029f: JUMPI 000002a0: POP 000002a1: POP 000002a2: POP 000002a3: PUSH1 0x24 000002a5: CALLDATALOAD 000002a6: PUSH8 0xffffffffffffffff 000002af: DUP2 000002b0: GT 000002b1: PUSH2 0x067d 000002b4: JUMPI 000002b5: CALLDATASIZE 000002b6: PUSH1 0x23 000002b8: DUP3 000002b9: ADD 000002ba: SLT 000002bb: ISZERO 000002bc: PUSH2 0x067d 000002bf: JUMPI 000002c0: PUSH2 0x02d3 000002c3: SWAP1 000002c4: CALLDATASIZE 000002c5: SWAP1 000002c6: PUSH1 0x24 000002c8: DUP2 000002c9: PUSH1 0x04 000002cb: ADD 000002cc: CALLDATALOAD 000002cd: SWAP2 000002ce: ADD 000002cf: PUSH2 0x21d4 000002d2: JUMP 000002d3: JUMPDEST 000002d4: SWAP2 000002d5: PUSH1 0x44 000002d7: CALLDATALOAD 000002d8: SWAP2 000002d9: PUSH1 0x64 000002db: CALLDATALOAD 000002dc: SWAP1 000002dd: PUSH1 0xff 000002df: DUP3 000002e0: AND 000002e1: DUP3 000002e2: SUB 000002e3: PUSH2 0x067d 000002e6: JUMPI 000002e7: PUSH1 0x02 000002e9: PUSH1 0x03 000002eb: SLOAD 000002ec: EQ 000002ed: PUSH2 0x066c 000002f0: JUMPI 000002f1: PUSH1 0x02 000002f3: PUSH1 0x03 000002f5: SSTORE 000002f6: PUSH1 0x01 000002f8: PUSH1 0x01 000002fa: PUSH1 0xa0 000002fc: SHL 000002fd: SUB 000002fe: PUSH1 0x0b 00000300: SLOAD 00000301: AND 00000302: SWAP1 00000303: DUP2 00000304: ISZERO 00000305: PUSH2 0x065b 00000308: JUMPI 00000309: TIMESTAMP 0000030a: DUP6 0000030b: GT 0000030c: ISZERO 0000030d: PUSH2 0x064a 00000310: JUMPI 00000311: PUSH1 0x40 00000313: MLOAD 00000314: DUP5 00000315: MLOAD 00000316: PUSH1 0x20 00000318: DUP3 00000319: ADD 0000031a: SWAP3 0000031b: DUP4 0000031c: SWAP2 0000031d: PUSH1 0x00 0000031f: JUMPDEST 00000320: DUP2 00000321: DUP2 00000322: LT 00000323: PUSH2 0x062b 00000326: JUMPI 00000327: POP 00000328: POP 00000329: POP 0000032a: PUSH1 0x42 0000032c: PUSH1 0x01 0000032e: PUSH1 0x01 00000330: PUSH1 0xa0 00000332: SHL 00000333: SUB 00000334: SWAP4 00000335: DUP4 00000336: PUSH2 0x034e 00000339: PUSH2 0x03e7 0000033c: SWAP6 0000033d: PUSH2 0x03de 00000340: SWAP6 00000341: SUB 00000342: PUSH1 0x1f 00000344: NOT 00000345: DUP2 00000346: ADD 00000347: DUP4 00000348: MSTORE 00000349: DUP3 0000034a: PUSH2 0x217e 0000034d: JUMP 0000034e: JUMPDEST 0000034f: MLOAD 00000350: SWAP1 00000351: KECCAK256 00000352: DUP10 00000353: MLOAD 00000354: SWAP9 00000355: PUSH1 0x20 00000357: DUP12 00000358: ADD 00000359: SWAP10 0000035a: DUP11 0000035b: KECCAK256 0000035c: SWAP1 0000035d: PUSH1 0x40 0000035f: MLOAD 00000360: SWAP2 00000361: PUSH1 0x20 00000363: DUP4 00000364: ADD 00000365: SWAP4 00000366: PUSH32 0xea718fd86e7d1161a7cc23db13014c3328fa4a2edd36f7f55c6ff4a1766187b4 00000387: DUP6 00000388: MSTORE 00000389: PUSH1 0x40 0000038b: DUP5 0000038c: ADD 0000038d: MSTORE 0000038e: PUSH1 0x60 00000390: DUP4 00000391: ADD 00000392: MSTORE 00000393: CALLER 00000394: PUSH1 0x80 00000396: DUP4 00000397: ADD 00000398: MSTORE 00000399: PUSH1 0xa0 0000039b: DUP3 0000039c: ADD 0000039d: MSTORE 0000039e: PUSH1 0xa0 000003a0: DUP2 000003a1: MSTORE 000003a2: PUSH2 0x03ac 000003a5: PUSH1 0xc0 000003a7: DUP3 000003a8: PUSH2 0x217e 000003ab: JUMP 000003ac: JUMPDEST 000003ad: MLOAD 000003ae: SWAP1 000003af: KECCAK256 000003b0: PUSH2 0x03b7 000003b3: PUSH2 0x2aaf 000003b6: JUMP 000003b7: JUMPDEST 000003b8: SWAP1 000003b9: PUSH1 0x40 000003bb: MLOAD 000003bc: SWAP2 000003bd: PUSH2 0x1901 000003c0: PUSH1 0xf0 000003c2: SHL 000003c3: DUP4 000003c4: MSTORE 000003c5: PUSH1 0x02 000003c7: DUP4 000003c8: ADD 000003c9: MSTORE 000003ca: PUSH1 0x22 000003cc: DUP3 000003cd: ADD 000003ce: MSTORE 000003cf: KECCAK256 000003d0: SWAP5 000003d1: PUSH1 0xa4 000003d3: CALLDATALOAD 000003d4: SWAP1 000003d5: PUSH1 0x84 000003d7: CALLDATALOAD 000003d8: SWAP1 000003d9: DUP8 000003da: PUSH2 0x2bcb 000003dd: JUMP 000003de: JUMPDEST 000003df: SWAP1 000003e0: SWAP3 000003e1: SWAP2 000003e2: SWAP3 000003e3: PUSH2 0x2c54 000003e6: JUMP 000003e7: JUMPDEST 000003e8: AND 000003e9: SUB 000003ea: PUSH2 0x061a 000003ed: JUMPI 000003ee: DUP1 000003ef: PUSH1 0x00 000003f1: MSTORE 000003f2: PUSH1 0x10 000003f4: PUSH1 0x20 000003f6: MSTORE 000003f7: PUSH1 0xff 000003f9: PUSH1 0x40 000003fb: PUSH1 0x00 000003fd: KECCAK256 000003fe: SLOAD 000003ff: AND 00000400: PUSH2 0x0609 00000403: JUMPI 00000404: PUSH1 0x00 00000406: MSTORE 00000407: PUSH1 0x10 00000409: PUSH1 0x20 0000040b: MSTORE 0000040c: PUSH1 0x40 0000040e: PUSH1 0x00 00000410: KECCAK256 00000411: PUSH1 0x01 00000413: PUSH1 0xff 00000415: NOT 00000416: DUP3 00000417: SLOAD 00000418: AND 00000419: OR 0000041a: SWAP1 0000041b: SSTORE 0000041c: DUP1 0000041d: MLOAD 0000041e: ISZERO 0000041f: PUSH2 0x05f8 00000422: JUMPI 00000423: PUSH1 0xff 00000425: PUSH1 0x40 00000427: MLOAD 00000428: PUSH1 0x20 0000042a: DUP2 0000042b: DUP7 0000042c: MLOAD 0000042d: PUSH2 0x0437 00000430: DUP2 00000431: DUP4 00000432: DUP10 00000433: PUSH2 0x209e 00000436: JUMP 00000437: JUMPDEST 00000438: DUP2 00000439: ADD 0000043a: PUSH1 0x0f 0000043c: DUP2 0000043d: MSTORE 0000043e: SUB 0000043f: ADD 00000440: SWAP1 00000441: KECCAK256 00000442: SLOAD 00000443: AND 00000444: ISZERO 00000445: PUSH2 0x05e8 00000448: JUMPI 00000449: PUSH1 0xff 0000044b: PUSH1 0x40 0000044d: MLOAD 0000044e: PUSH1 0x20 00000450: DUP2 00000451: DUP7 00000452: MLOAD 00000453: PUSH2 0x045d 00000456: DUP2 00000457: DUP4 00000458: DUP10 00000459: PUSH2 0x209e 0000045c: JUMP 0000045d: JUMPDEST 0000045e: DUP2 0000045f: ADD 00000460: PUSH1 0x0f 00000462: DUP2 00000463: MSTORE 00000464: SUB 00000465: ADD 00000466: SWAP1 00000467: KECCAK256 00000468: SLOAD 00000469: PUSH1 0x08 0000046b: SHR 0000046c: AND 0000046d: ISZERO 0000046e: PUSH2 0x05d7 00000471: JUMPI 00000472: PUSH1 0x00 00000474: JUMPDEST 00000475: DUP2 00000476: MLOAD 00000477: DUP2 00000478: LT 00000479: ISZERO 0000047a: PUSH2 0x05d0 0000047d: JUMPI 0000047e: PUSH1 0x00 00000480: PUSH1 0x01 00000482: PUSH1 0x01 00000484: PUSH1 0xa0 00000486: SHL 00000487: SUB 00000488: PUSH1 0x20 0000048a: DUP4 0000048b: PUSH1 0x05 0000048d: SHL 0000048e: DUP6 0000048f: ADD 00000490: ADD 00000491: MLOAD 00000492: AND 00000493: SWAP1 00000494: PUSH1 0x40 00000496: MLOAD 00000497: PUSH1 0x20 00000499: DUP2 0000049a: DUP9 0000049b: MLOAD 0000049c: PUSH2 0x04a6 0000049f: DUP2 000004a0: DUP4 000004a1: DUP12 000004a2: PUSH2 0x209e 000004a5: JUMP 000004a6: JUMPDEST 000004a7: DUP2 000004a8: ADD 000004a9: PUSH1 0x0e 000004ab: DUP2 000004ac: MSTORE 000004ad: SUB 000004ae: ADD 000004af: SWAP1 000004b0: KECCAK256 000004b1: PUSH1 0x01 000004b3: PUSH1 0x01 000004b5: PUSH1 0xa0 000004b7: SHL 000004b8: SUB 000004b9: DUP4 000004ba: AND 000004bb: DUP3 000004bc: MSTORE 000004bd: PUSH1 0x20 000004bf: MSTORE 000004c0: PUSH1 0x40 000004c2: DUP2 000004c3: KECCAK256 000004c4: SLOAD 000004c5: SWAP1 000004c6: DUP2 000004c7: ISZERO 000004c8: PUSH2 0x05c5 000004cb: JUMPI 000004cc: PUSH1 0x40 000004ce: MLOAD 000004cf: PUSH1 0x20 000004d1: DUP2 000004d2: DUP10 000004d3: MLOAD 000004d4: PUSH2 0x04de 000004d7: DUP2 000004d8: DUP4 000004d9: DUP13 000004da: PUSH2 0x209e 000004dd: JUMP 000004de: JUMPDEST 000004df: DUP2 000004e0: ADD 000004e1: PUSH1 0x0e 000004e3: DUP2 000004e4: MSTORE 000004e5: SUB 000004e6: ADD 000004e7: SWAP1 000004e8: KECCAK256 000004e9: PUSH1 0x01 000004eb: PUSH1 0x01 000004ed: PUSH1 0xa0 000004ef: SHL 000004f0: SUB 000004f1: DUP5 000004f2: AND 000004f3: DUP3 000004f4: MSTORE 000004f5: PUSH1 0x20 000004f7: MSTORE 000004f8: DUP1 000004f9: PUSH1 0x40 000004fb: DUP2 000004fc: KECCAK256 000004fd: SSTORE 000004fe: PUSH20 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee 00000513: DUP4 00000514: EQ 00000515: PUSH1 0x00 00000517: EQ 00000518: PUSH2 0x058e 0000051b: JUMPI 0000051c: DUP1 0000051d: DUP1 0000051e: DUP1 0000051f: DUP1 00000520: DUP6 00000521: CALLER 00000522: GAS 00000523: CALL 00000524: PUSH2 0x052b 00000527: PUSH2 0x220b 0000052a: JUMP 0000052b: JUMPDEST 0000052c: POP 0000052d: ISZERO 0000052e: PUSH2 0x057f 00000531: JUMPI 00000532: POP 00000533: SWAP1 00000534: PUSH32 0xd0bd8d4ccf927b8bdb7954418f673071608791fd667407899920ac1daae0df1a 00000555: PUSH1 0x01 00000557: SWAP4 00000558: SWAP3 00000559: JUMPDEST 0000055a: PUSH1 0x40 0000055c: MLOAD 0000055d: DUP1 0000055e: SWAP2 0000055f: PUSH1 0x40 00000561: DUP3 00000562: MSTORE 00000563: PUSH2 0x056f 00000566: PUSH1 0x40 00000568: DUP4 00000569: ADD 0000056a: DUP12 0000056b: PUSH2 0x20c1 0000056e: JUMP 0000056f: JUMPDEST 00000570: SWAP1 00000571: PUSH1 0x20 00000573: DUP4 00000574: ADD 00000575: MSTORE 00000576: SUB 00000577: SWAP1 00000578: LOG2 00000579: JUMPDEST 0000057a: ADD 0000057b: PUSH2 0x0474 0000057e: JUMP 0000057f: JUMPDEST 00000580: PUSH4 0x0fd208f5 00000585: PUSH1 0xe2 00000587: SHL 00000588: DUP2 00000589: MSTORE 0000058a: PUSH1 0x04 0000058c: SWAP1 0000058d: REVERT 0000058e: JUMPDEST 0000058f: POP 00000590: SWAP1 00000591: PUSH32 0xd0bd8d4ccf927b8bdb7954418f673071608791fd667407899920ac1daae0df1a 000005b2: DUP3 000005b3: PUSH2 0x05c0 000005b6: PUSH1 0x01 000005b8: SWAP6 000005b9: SWAP5 000005ba: CALLER 000005bb: DUP6 000005bc: PUSH2 0x2980 000005bf: JUMP 000005c0: JUMPDEST 000005c1: PUSH2 0x0559 000005c4: JUMP 000005c5: JUMPDEST 000005c6: POP 000005c7: POP 000005c8: POP 000005c9: PUSH1 0x01 000005cb: SWAP1 000005cc: PUSH2 0x0579 000005cf: JUMP 000005d0: JUMPDEST 000005d1: PUSH1 0x01 000005d3: PUSH1 0x03 000005d5: SSTORE 000005d6: STOP 000005d7: JUMPDEST 000005d8: PUSH4 0x243ba77d 000005dd: PUSH1 0xe1 000005df: SHL 000005e0: PUSH1 0x00 000005e2: MSTORE 000005e3: PUSH1 0x04 000005e5: PUSH1 0x00 000005e7: REVERT 000005e8: JUMPDEST 000005e9: PUSH3 0x25f2f9 000005ed: PUSH1 0xe3 000005ef: SHL 000005f0: PUSH1 0x00 000005f2: MSTORE 000005f3: PUSH1 0x04 000005f5: PUSH1 0x00 000005f7: REVERT 000005f8: JUMPDEST 000005f9: PUSH4 0x49712887 000005fe: PUSH1 0xe1 00000600: SHL 00000601: PUSH1 0x00 00000603: MSTORE 00000604: PUSH1 0x04 00000606: PUSH1 0x00 00000608: REVERT 00000609: JUMPDEST 0000060a: PUSH4 0xfaaa8729 0000060f: PUSH1 0xe0 00000611: SHL 00000612: PUSH1 0x00 00000614: MSTORE 00000615: PUSH1 0x04 00000617: PUSH1 0x00 00000619: REVERT 0000061a: JUMPDEST 0000061b: PUSH4 0x260de157 00000620: PUSH1 0xe0 00000622: SHL 00000623: PUSH1 0x00 00000625: MSTORE 00000626: PUSH1 0x04 00000628: PUSH1 0x00 0000062a: REVERT 0000062b: JUMPDEST 0000062c: DUP3 0000062d: MLOAD 0000062e: PUSH1 0x01 00000630: PUSH1 0x01 00000632: PUSH1 0xa0 00000634: SHL 00000635: SUB 00000636: AND 00000637: DUP5 00000638: MSTORE 00000639: PUSH1 0x20 0000063b: SWAP4 0000063c: DUP5 0000063d: ADD 0000063e: SWAP4 0000063f: SWAP1 00000640: SWAP3 00000641: ADD 00000642: SWAP2 00000643: PUSH1 0x01 00000645: ADD 00000646: PUSH2 0x031f 00000649: JUMP 0000064a: JUMPDEST 0000064b: PUSH4 0x1d921347 00000650: PUSH1 0xe2 00000652: SHL 00000653: PUSH1 0x00 00000655: MSTORE 00000656: PUSH1 0x04 00000658: PUSH1 0x00 0000065a: REVERT 0000065b: JUMPDEST 0000065c: PUSH4 0x28e48c3d 00000661: PUSH1 0xe2 00000663: SHL 00000664: PUSH1 0x00 00000666: MSTORE 00000667: PUSH1 0x04 00000669: PUSH1 0x00 0000066b: REVERT 0000066c: JUMPDEST 0000066d: PUSH4 0x3ee5aeb5 00000672: PUSH1 0xe0 00000674: SHL 00000675: PUSH1 0x00 00000677: MSTORE 00000678: PUSH1 0x04 0000067a: PUSH1 0x00 0000067c: REVERT 0000067d: JUMPDEST 0000067e: PUSH1 0x00 00000680: DUP1 00000681: REVERT 00000682: JUMPDEST 00000683: DUP3 00000684: CALLDATALOAD 00000685: PUSH1 0x01 00000687: PUSH1 0x01 00000689: PUSH1 0xa0 0000068b: SHL 0000068c: SUB 0000068d: DUP2 0000068e: AND 0000068f: DUP2 00000690: SUB 00000691: PUSH2 0x067d 00000694: JUMPI 00000695: DUP2 00000696: MSTORE 00000697: PUSH1 0x20 00000699: SWAP3 0000069a: DUP4 0000069b: ADD 0000069c: SWAP3 0000069d: ADD 0000069e: PUSH2 0x0298 000006a1: JUMP 000006a2: JUMPDEST 000006a3: CALLVALUE 000006a4: PUSH2 0x067d 000006a7: JUMPI 000006a8: PUSH1 0x20 000006aa: CALLDATASIZE 000006ab: PUSH1 0x03 000006ad: NOT 000006ae: ADD 000006af: SLT 000006b0: PUSH2 0x067d 000006b3: JUMPI 000006b4: PUSH1 0x01 000006b6: PUSH1 0x01 000006b8: PUSH1 0xa0 000006ba: SHL 000006bb: SUB 000006bc: PUSH2 0x06c3 000006bf: PUSH2 0x2006 000006c2: JUMP 000006c3: JUMPDEST 000006c4: PUSH2 0x06cb 000006c7: PUSH2 0x26e0 000006ca: JUMP 000006cb: JUMPDEST 000006cc: AND 000006cd: DUP1 000006ce: ISZERO 000006cf: PUSH2 0x071e 000006d2: JUMPI 000006d3: PUSH1 0x20 000006d5: DUP2 000006d6: PUSH32 0xcb7ef3e545f5cdb893f5c568ba710fe08f336375a2d9fd66e161033f8fc09ef3 000006f7: SWAP3 000006f8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000070d: NOT 0000070e: PUSH1 0x04 00000710: SLOAD 00000711: AND 00000712: OR 00000713: PUSH1 0x04 00000715: SSTORE 00000716: PUSH1 0x40 00000718: MLOAD 00000719: SWAP1 0000071a: DUP2 0000071b: MSTORE 0000071c: LOG1 0000071d: STOP 0000071e: JUMPDEST 0000071f: PUSH4 0x0cfc3ee5 00000724: PUSH1 0xe3 00000726: SHL 00000727: PUSH1 0x00 00000729: MSTORE 0000072a: PUSH1 0x04 0000072c: PUSH1 0x00 0000072e: REVERT 0000072f: JUMPDEST 00000730: CALLVALUE 00000731: PUSH2 0x067d 00000734: JUMPI 00000735: PUSH1 0x00 00000737: CALLDATASIZE 00000738: PUSH1 0x03 0000073a: NOT 0000073b: ADD 0000073c: SLT 0000073d: PUSH2 0x067d 00000740: JUMPI 00000741: PUSH1 0x20 00000743: PUSH1 0x40 00000745: MLOAD 00000746: PUSH32 0x241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08 00000767: DUP2 00000768: MSTORE 00000769: RETURN 0000076a: JUMPDEST 0000076b: CALLVALUE 0000076c: PUSH2 0x067d 0000076f: JUMPI 00000770: PUSH1 0x20 00000772: CALLDATASIZE 00000773: PUSH1 0x03 00000775: NOT 00000776: ADD 00000777: SLT 00000778: PUSH2 0x067d 0000077b: JUMPI 0000077c: PUSH1 0x04 0000077e: CALLDATALOAD 0000077f: DUP1 00000780: ISZERO 00000781: ISZERO 00000782: DUP1 00000783: SWAP2 00000784: SUB 00000785: PUSH2 0x067d 00000788: JUMPI 00000789: PUSH2 0x0790 0000078c: PUSH2 0x27a5 0000078f: JUMP 00000790: JUMPDEST 00000791: PUSH1 0xff 00000793: DUP1 00000794: NOT 00000795: PUSH1 0x12 00000797: SLOAD 00000798: AND 00000799: SWAP2 0000079a: AND 0000079b: OR 0000079c: PUSH1 0x12 0000079e: SSTORE 0000079f: PUSH1 0x00 000007a1: DUP1 000007a2: RETURN 000007a3: JUMPDEST 000007a4: CALLVALUE 000007a5: PUSH2 0x067d 000007a8: JUMPI 000007a9: PUSH1 0x00 000007ab: CALLDATASIZE 000007ac: PUSH1 0x03 000007ae: NOT 000007af: ADD 000007b0: SLT 000007b1: PUSH2 0x067d 000007b4: JUMPI 000007b5: PUSH1 0x20 000007b7: PUSH1 0x11 000007b9: SLOAD 000007ba: PUSH1 0x40 000007bc: MLOAD 000007bd: SWAP1 000007be: DUP2 000007bf: MSTORE 000007c0: RETURN 000007c1: JUMPDEST 000007c2: CALLVALUE 000007c3: PUSH2 0x067d 000007c6: JUMPI 000007c7: PUSH1 0x20 000007c9: CALLDATASIZE 000007ca: PUSH1 0x03 000007cc: NOT 000007cd: ADD 000007ce: SLT 000007cf: PUSH2 0x067d 000007d2: JUMPI 000007d3: PUSH1 0x04 000007d5: CALLDATALOAD 000007d6: PUSH8 0xffffffffffffffff 000007df: DUP2 000007e0: GT 000007e1: PUSH2 0x067d 000007e4: JUMPI 000007e5: PUSH2 0x07fd 000007e8: PUSH2 0x07f7 000007eb: PUSH1 0x40 000007ed: SWAP3 000007ee: CALLDATASIZE 000007ef: SWAP1 000007f0: PUSH1 0x04 000007f2: ADD 000007f3: PUSH2 0x201c 000007f6: JUMP 000007f7: JUMPDEST 000007f8: SWAP1 000007f9: PUSH2 0x2660 000007fc: JUMP 000007fd: JUMPDEST 000007fe: DUP3 000007ff: MLOAD 00000800: SWAP2 00000801: DUP3 00000802: MSTORE 00000803: PUSH1 0x20 00000805: DUP3 00000806: ADD 00000807: MSTORE 00000808: RETURN 00000809: JUMPDEST 0000080a: CALLVALUE 0000080b: PUSH2 0x067d 0000080e: JUMPI 0000080f: PUSH1 0x20 00000811: CALLDATASIZE 00000812: PUSH1 0x03 00000814: NOT 00000815: ADD 00000816: SLT 00000817: PUSH2 0x067d 0000081a: JUMPI 0000081b: PUSH1 0x00 0000081d: PUSH1 0x80 0000081f: PUSH1 0x40 00000821: MLOAD 00000822: PUSH2 0x082a 00000825: DUP2 00000826: PUSH2 0x2146 00000829: JUMP 0000082a: JUMPDEST 0000082b: DUP3 0000082c: DUP2 0000082d: MSTORE 0000082e: DUP3 0000082f: PUSH1 0x20 00000831: DUP3 00000832: ADD 00000833: MSTORE 00000834: DUP3 00000835: PUSH1 0x40 00000837: DUP3 00000838: ADD 00000839: MSTORE 0000083a: DUP3 0000083b: PUSH1 0x60 0000083d: DUP3 0000083e: ADD 0000083f: MSTORE 00000840: ADD 00000841: MSTORE 00000842: PUSH2 0x084c 00000845: PUSH1 0x04 00000847: CALLDATALOAD 00000848: PUSH2 0x223b 0000084b: JUMP 0000084c: JUMPDEST 0000084d: POP 0000084e: PUSH1 0x40 00000850: MLOAD 00000851: PUSH2 0x0859 00000854: DUP2 00000855: PUSH2 0x2146 00000858: JUMP 00000859: JUMPDEST 0000085a: PUSH1 0xff 0000085c: DUP3 0000085d: SLOAD 0000085e: DUP2 0000085f: DUP2 00000860: AND 00000861: ISZERO 00000862: ISZERO 00000863: DUP4 00000864: MSTORE 00000865: PUSH1 0x08 00000867: SHR 00000868: AND 00000869: SWAP2 0000086a: PUSH1 0x20 0000086c: DUP3 0000086d: ADD 0000086e: SWAP1 0000086f: PUSH1 0x03 00000871: DUP5 00000872: LT 00000873: ISZERO 00000874: PUSH2 0x08cc 00000877: JUMPI 00000878: PUSH1 0xa0 0000087a: SWAP4 0000087b: DUP3 0000087c: MSTORE 0000087d: PUSH1 0x01 0000087f: DUP2 00000880: ADD 00000881: SLOAD 00000882: PUSH1 0x40 00000884: DUP5 00000885: ADD 00000886: SWAP1 00000887: DUP2 00000888: MSTORE 00000889: PUSH2 0x08b8 0000088c: PUSH1 0x03 0000088e: PUSH1 0x02 00000890: DUP5 00000891: ADD 00000892: SLOAD 00000893: SWAP4 00000894: PUSH1 0x60 00000896: DUP8 00000897: ADD 00000898: SWAP5 00000899: DUP6 0000089a: MSTORE 0000089b: ADD 0000089c: SLOAD 0000089d: SWAP4 0000089e: PUSH1 0x80 000008a0: DUP7 000008a1: ADD 000008a2: SWAP5 000008a3: DUP6 000008a4: MSTORE 000008a5: PUSH1 0x40 000008a7: MLOAD 000008a8: SWAP6 000008a9: MLOAD 000008aa: ISZERO 000008ab: ISZERO 000008ac: DUP7 000008ad: MSTORE 000008ae: MLOAD 000008af: PUSH1 0x20 000008b1: DUP7 000008b2: ADD 000008b3: SWAP1 000008b4: PUSH2 0x2060 000008b7: JUMP 000008b8: JUMPDEST 000008b9: MLOAD 000008ba: PUSH1 0x40 000008bc: DUP5 000008bd: ADD 000008be: MSTORE 000008bf: MLOAD 000008c0: PUSH1 0x60 000008c2: DUP4 000008c3: ADD 000008c4: MSTORE 000008c5: MLOAD 000008c6: PUSH1 0x80 000008c8: DUP3 000008c9: ADD 000008ca: MSTORE 000008cb: RETURN 000008cc: JUMPDEST 000008cd: PUSH4 0x4e487b71 000008d2: PUSH1 0xe0 000008d4: SHL 000008d5: PUSH1 0x00 000008d7: MSTORE 000008d8: PUSH1 0x21 000008da: PUSH1 0x04 000008dc: MSTORE 000008dd: PUSH1 0x24 000008df: PUSH1 0x00 000008e1: REVERT 000008e2: JUMPDEST 000008e3: CALLVALUE 000008e4: PUSH2 0x067d 000008e7: JUMPI 000008e8: PUSH1 0x00 000008ea: CALLDATASIZE 000008eb: PUSH1 0x03 000008ed: NOT 000008ee: ADD 000008ef: SLT 000008f0: PUSH2 0x067d 000008f3: JUMPI 000008f4: PUSH1 0x20 000008f6: PUSH1 0x07 000008f8: SLOAD 000008f9: PUSH1 0x40 000008fb: MLOAD 000008fc: SWAP1 000008fd: DUP2 000008fe: MSTORE 000008ff: RETURN 00000900: JUMPDEST 00000901: CALLVALUE 00000902: PUSH2 0x067d 00000905: JUMPI 00000906: PUSH1 0x40 00000908: CALLDATASIZE 00000909: PUSH1 0x03 0000090b: NOT 0000090c: ADD 0000090d: SLT 0000090e: PUSH2 0x067d 00000911: JUMPI 00000912: PUSH2 0x001b 00000915: PUSH1 0x04 00000917: CALLDATALOAD 00000918: PUSH2 0x091f 0000091b: PUSH2 0x1ff0 0000091e: JUMP 0000091f: JUMPDEST 00000920: SWAP1 00000921: PUSH2 0x0940 00000924: PUSH2 0x093b 00000927: DUP3 00000928: PUSH1 0x00 0000092a: MSTORE 0000092b: PUSH1 0x02 0000092d: PUSH1 0x20 0000092f: MSTORE 00000930: PUSH1 0x01 00000932: PUSH1 0x40 00000934: PUSH1 0x00 00000936: KECCAK256 00000937: ADD 00000938: SLOAD 00000939: SWAP1 0000093a: JUMP 0000093b: JUMPDEST 0000093c: PUSH2 0x2817 0000093f: JUMP 00000940: JUMPDEST 00000941: PUSH2 0x28f1 00000944: JUMP 00000945: JUMPDEST 00000946: CALLVALUE 00000947: PUSH2 0x067d 0000094a: JUMPI 0000094b: PUSH1 0x20 0000094d: CALLDATASIZE 0000094e: PUSH1 0x03 00000950: NOT 00000951: ADD 00000952: SLT 00000953: PUSH2 0x067d 00000956: JUMPI 00000957: PUSH32 0xdfe91dcad2adcb1ecd18d2e830b469081211d6743c1e2dfa893836431fb78794 00000978: PUSH1 0x20 0000097a: PUSH1 0x01 0000097c: PUSH1 0x01 0000097e: PUSH1 0xa0 00000980: SHL 00000981: SUB 00000982: PUSH2 0x0989 00000985: PUSH2 0x2006 00000988: JUMP 00000989: JUMPDEST 0000098a: PUSH2 0x0991 0000098d: PUSH2 0x26e0 00000990: JUMP 00000991: JUMPDEST 00000992: AND 00000993: DUP1 00000994: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009a9: NOT 000009aa: PUSH1 0x0b 000009ac: SLOAD 000009ad: AND 000009ae: OR 000009af: PUSH1 0x0b 000009b1: SSTORE 000009b2: PUSH1 0x40 000009b4: MLOAD 000009b5: SWAP1 000009b6: DUP2 000009b7: MSTORE 000009b8: LOG1 000009b9: STOP 000009ba: JUMPDEST 000009bb: CALLVALUE 000009bc: PUSH2 0x067d 000009bf: JUMPI 000009c0: PUSH1 0x20 000009c2: PUSH2 0x09d3 000009c5: PUSH2 0x09cd 000009c8: CALLDATASIZE 000009c9: PUSH2 0x204a 000009cc: JUMP 000009cd: JUMPDEST 000009ce: SWAP1 000009cf: PUSH2 0x25d0 000009d2: JUMP 000009d3: JUMPDEST 000009d4: PUSH1 0x40 000009d6: MLOAD 000009d7: SWAP1 000009d8: DUP2 000009d9: MSTORE 000009da: RETURN 000009db: JUMPDEST 000009dc: CALLVALUE 000009dd: PUSH2 0x067d 000009e0: JUMPI 000009e1: PUSH1 0x20 000009e3: PUSH1 0x01 000009e5: PUSH1 0x01 000009e7: PUSH1 0xa0 000009e9: SHL 000009ea: SUB 000009eb: PUSH2 0x09f3 000009ee: CALLDATASIZE 000009ef: PUSH2 0x20e6 000009f2: JUMP 000009f3: JUMPDEST 000009f4: SWAP2 000009f5: SWAP4 000009f6: SWAP1 000009f7: DUP3 000009f8: PUSH1 0x40 000009fa: MLOAD 000009fb: SWAP4 000009fc: DUP5 000009fd: SWAP3 000009fe: DUP4 000009ff: CALLDATACOPY 00000a00: DUP2 00000a01: ADD 00000a02: PUSH1 0x0e 00000a04: DUP2 00000a05: MSTORE 00000a06: SUB 00000a07: ADD 00000a08: SWAP1 00000a09: KECCAK256 00000a0a: SWAP2 00000a0b: AND 00000a0c: PUSH1 0x00 00000a0e: MSTORE 00000a0f: PUSH1 0x20 00000a11: MSTORE 00000a12: PUSH1 0x20 00000a14: PUSH1 0x40 00000a16: PUSH1 0x00 00000a18: KECCAK256 00000a19: SLOAD 00000a1a: PUSH1 0x40 00000a1c: MLOAD 00000a1d: SWAP1 00000a1e: DUP2 00000a1f: MSTORE 00000a20: RETURN 00000a21: JUMPDEST 00000a22: CALLVALUE 00000a23: PUSH2 0x067d 00000a26: JUMPI 00000a27: PUSH1 0x60 00000a29: CALLDATASIZE 00000a2a: PUSH1 0x03 00000a2c: NOT 00000a2d: ADD 00000a2e: SLT 00000a2f: PUSH2 0x067d 00000a32: JUMPI 00000a33: PUSH1 0x04 00000a35: CALLDATALOAD 00000a36: PUSH8 0xffffffffffffffff 00000a3f: DUP2 00000a40: GT 00000a41: PUSH2 0x067d 00000a44: JUMPI 00000a45: PUSH2 0x0a52 00000a48: SWAP1 00000a49: CALLDATASIZE 00000a4a: SWAP1 00000a4b: PUSH1 0x04 00000a4d: ADD 00000a4e: PUSH2 0x206d 00000a51: JUMP 00000a52: JUMPDEST 00000a53: SWAP1 00000a54: PUSH1 0x24 00000a56: CALLDATALOAD 00000a57: PUSH8 0xffffffffffffffff 00000a60: DUP2 00000a61: GT 00000a62: PUSH2 0x067d 00000a65: JUMPI 00000a66: PUSH2 0x0a73 00000a69: SWAP1 00000a6a: CALLDATASIZE 00000a6b: SWAP1 00000a6c: PUSH1 0x04 00000a6e: ADD 00000a6f: PUSH2 0x206d 00000a72: JUMP 00000a73: JUMPDEST 00000a74: PUSH1 0x44 00000a76: SWAP3 00000a77: SWAP2 00000a78: SWAP3 00000a79: CALLDATALOAD 00000a7a: PUSH8 0xffffffffffffffff 00000a83: DUP2 00000a84: GT 00000a85: PUSH2 0x067d 00000a88: JUMPI 00000a89: PUSH2 0x0a96 00000a8c: SWAP1 00000a8d: CALLDATASIZE 00000a8e: SWAP1 00000a8f: PUSH1 0x04 00000a91: ADD 00000a92: PUSH2 0x206d 00000a95: JUMP 00000a96: JUMPDEST 00000a97: PUSH2 0x0aa1 00000a9a: SWAP5 00000a9b: SWAP2 00000a9c: SWAP5 00000a9d: PUSH2 0x2733 00000aa0: JUMP 00000aa1: JUMPDEST 00000aa2: PUSH1 0xff 00000aa4: PUSH1 0x0b 00000aa6: SLOAD 00000aa7: PUSH1 0xa0 00000aa9: SHR 00000aaa: AND 00000aab: PUSH1 0x03 00000aad: DUP2 00000aae: LT 00000aaf: ISZERO 00000ab0: PUSH2 0x08cc 00000ab3: JUMPI 00000ab4: PUSH1 0x02 00000ab6: EQ 00000ab7: PUSH2 0x0bf3 00000aba: JUMPI 00000abb: DUP3 00000abc: DUP7 00000abd: EQ 00000abe: DUP1 00000abf: PUSH2 0x0bea 00000ac2: JUMPI 00000ac3: JUMPDEST 00000ac4: ISZERO 00000ac5: PUSH2 0x0bd9 00000ac8: JUMPI 00000ac9: PUSH1 0x00 00000acb: JUMPDEST 00000acc: DUP7 00000acd: DUP2 00000ace: LT 00000acf: PUSH2 0x0ad4 00000ad2: JUMPI 00000ad3: STOP 00000ad4: JUMPDEST 00000ad5: DUP1 00000ad6: PUSH31 0xc6ee47ff3b385ec289bf5bbe0e21c12204141c9586eb2a480d955d6a9f9230 00000af6: DUP6 00000af7: DUP6 00000af8: PUSH2 0x0bd0 00000afb: DUP11 00000afc: PUSH2 0x0bc2 00000aff: DUP7 00000b00: DUP10 00000b01: DUP16 00000b02: DUP3 00000b03: DUP16 00000b04: DUP2 00000b05: PUSH2 0x0bbb 00000b08: SWAP4 00000b09: PUSH2 0x0bb3 00000b0c: SWAP3 00000b0d: PUSH1 0x01 00000b0f: SWAP16 00000b10: PUSH1 0x02 00000b12: PUSH2 0x0b2c 00000b15: DUP16 00000b16: SWAP3 00000b17: DUP16 00000b18: PUSH2 0x0b25 00000b1b: DUP16 00000b1c: SWAP6 00000b1d: DUP4 00000b1e: SWAP1 00000b1f: DUP15 00000b20: SWAP4 00000b21: PUSH2 0x22e6 00000b24: JUMP 00000b25: JUMPDEST 00000b26: CALLDATALOAD 00000b27: SWAP5 00000b28: PUSH2 0x22e6 00000b2b: JUMP 00000b2c: JUMPDEST 00000b2d: CALLDATALOAD 00000b2e: PUSH1 0x40 00000b30: MLOAD 00000b31: SWAP3 00000b32: PUSH2 0x0b3a 00000b35: DUP5 00000b36: PUSH2 0x2162 00000b39: JUMP 00000b3a: JUMPDEST 00000b3b: PUSH1 0x01 00000b3d: DUP5 00000b3e: MSTORE 00000b3f: PUSH1 0x20 00000b41: DUP5 00000b42: ADD 00000b43: PUSH1 0x01 00000b45: DUP2 00000b46: MSTORE 00000b47: PUSH1 0x40 00000b49: DUP6 00000b4a: ADD 00000b4b: SWAP2 00000b4c: DUP3 00000b4d: MSTORE 00000b4e: PUSH1 0x60 00000b50: DUP6 00000b51: ADD 00000b52: SWAP3 00000b53: DUP4 00000b54: MSTORE 00000b55: PUSH2 0x0b8f 00000b58: PUSH1 0x20 00000b5a: PUSH2 0x0b64 00000b5d: DUP11 00000b5e: DUP11 00000b5f: DUP11 00000b60: PUSH2 0x258e 00000b63: JUMP 00000b64: JUMPDEST 00000b65: SWAP2 00000b66: SWAP1 00000b67: DUP3 00000b68: PUSH1 0x40 00000b6a: MLOAD 00000b6b: SWAP4 00000b6c: DUP5 00000b6d: SWAP3 00000b6e: DUP4 00000b6f: CALLDATACOPY 00000b70: DUP2 00000b71: ADD 00000b72: PUSH1 0x0f 00000b74: DUP2 00000b75: MSTORE 00000b76: SUB 00000b77: ADD 00000b78: SWAP1 00000b79: KECCAK256 00000b7a: SWAP6 00000b7b: MLOAD 00000b7c: ISZERO 00000b7d: ISZERO 00000b7e: DUP7 00000b7f: SWAP1 00000b80: PUSH1 0xff 00000b82: DUP1 00000b83: NOT 00000b84: DUP4 00000b85: SLOAD 00000b86: AND 00000b87: SWAP2 00000b88: ISZERO 00000b89: ISZERO 00000b8a: AND 00000b8b: OR 00000b8c: SWAP1 00000b8d: SSTORE 00000b8e: JUMP 00000b8f: JUMPDEST 00000b90: MLOAD 00000b91: DUP5 00000b92: SLOAD 00000b93: PUSH2 0xff00 00000b96: NOT 00000b97: AND 00000b98: SWAP1 00000b99: ISZERO 00000b9a: ISZERO 00000b9b: PUSH1 0x08 00000b9d: SHL 00000b9e: PUSH2 0xff00 00000ba1: AND 00000ba2: OR 00000ba3: DUP5 00000ba4: SSTORE 00000ba5: MLOAD 00000ba6: PUSH1 0x01 00000ba8: DUP5 00000ba9: ADD 00000baa: SSTORE 00000bab: MLOAD 00000bac: SWAP2 00000bad: ADD 00000bae: SSTORE 00000baf: PUSH2 0x258e 00000bb2: JUMP 00000bb3: JUMPDEST 00000bb4: SWAP10 00000bb5: SWAP1 00000bb6: SWAP9 00000bb7: PUSH2 0x22e6 00000bba: JUMP 00000bbb: JUMPDEST 00000bbc: CALLDATALOAD 00000bbd: SWAP4 00000bbe: PUSH2 0x22e6 00000bc1: JUMP 00000bc2: JUMPDEST 00000bc3: CALLDATALOAD 00000bc4: SWAP1 00000bc5: PUSH1 0x40 00000bc7: MLOAD 00000bc8: SWAP5 00000bc9: DUP6 00000bca: SWAP5 00000bcb: DUP6 00000bcc: PUSH2 0x2288 00000bcf: JUMP 00000bd0: JUMPDEST 00000bd1: SUB 00000bd2: SWAP1 00000bd3: LOG1 00000bd4: ADD 00000bd5: PUSH2 0x0acb 00000bd8: JUMP 00000bd9: JUMPDEST 00000bda: PUSH4 0x0a91615f 00000bdf: PUSH1 0xe2 00000be1: SHL 00000be2: PUSH1 0x00 00000be4: MSTORE 00000be5: PUSH1 0x04 00000be7: PUSH1 0x00 00000be9: REVERT 00000bea: JUMPDEST 00000beb: POP 00000bec: DUP1 00000bed: DUP7 00000bee: EQ 00000bef: PUSH2 0x0ac3 00000bf2: JUMP 00000bf3: JUMPDEST 00000bf4: PUSH4 0x60f98625 00000bf9: PUSH1 0xe1 00000bfb: SHL 00000bfc: PUSH1 0x00 00000bfe: MSTORE 00000bff: PUSH1 0x04 00000c01: PUSH1 0x00 00000c03: REVERT 00000c04: JUMPDEST 00000c05: CALLVALUE 00000c06: PUSH2 0x067d 00000c09: JUMPI 00000c0a: PUSH1 0x00 00000c0c: CALLDATASIZE 00000c0d: PUSH1 0x03 00000c0f: NOT 00000c10: ADD 00000c11: SLT 00000c12: PUSH2 0x067d 00000c15: JUMPI 00000c16: PUSH2 0x0c1d 00000c19: PUSH2 0x26e0 00000c1c: JUMP 00000c1d: JUMPDEST 00000c1e: PUSH1 0xff 00000c20: PUSH1 0x0b 00000c22: SLOAD 00000c23: PUSH1 0xa0 00000c25: SHR 00000c26: AND 00000c27: PUSH1 0x03 00000c29: DUP2 00000c2a: LT 00000c2b: ISZERO 00000c2c: PUSH2 0x08cc 00000c2f: JUMPI 00000c30: PUSH2 0x0c93 00000c33: JUMPI 00000c34: PUSH21 0x010000000000000000000000000000000000000000 00000c4a: PUSH1 0xff 00000c4c: PUSH1 0xa0 00000c4e: SHL 00000c4f: NOT 00000c50: PUSH1 0x0b 00000c52: SLOAD 00000c53: AND 00000c54: OR 00000c55: PUSH1 0x0b 00000c57: SSTORE 00000c58: PUSH32 0x7101a660456a4e2f94e6b0ccd3d6a034724e26130a817471aaf5a3de8fba384a 00000c79: PUSH1 0x20 00000c7b: PUSH1 0xff 00000c7d: PUSH1 0x0b 00000c7f: SLOAD 00000c80: PUSH1 0xa0 00000c82: SHR 00000c83: AND 00000c84: PUSH2 0x0c90 00000c87: PUSH1 0x40 00000c89: MLOAD 00000c8a: DUP1 00000c8b: SWAP3 00000c8c: PUSH2 0x2060 00000c8f: JUMP 00000c90: JUMPDEST 00000c91: LOG1 00000c92: STOP 00000c93: JUMPDEST 00000c94: PUSH4 0x331bce45 00000c99: PUSH1 0xe2 00000c9b: SHL 00000c9c: PUSH1 0x00 00000c9e: MSTORE 00000c9f: PUSH1 0x04 00000ca1: PUSH1 0x00 00000ca3: REVERT 00000ca4: JUMPDEST 00000ca5: CALLVALUE 00000ca6: PUSH2 0x067d 00000ca9: JUMPI 00000caa: PUSH2 0x0cb2 00000cad: CALLDATASIZE 00000cae: PUSH2 0x204a 00000cb1: JUMP 00000cb2: JUMPDEST 00000cb3: SWAP1 00000cb4: PUSH2 0x0cbb 00000cb7: PUSH2 0x27a5 00000cba: JUMP 00000cbb: JUMPDEST 00000cbc: PUSH1 0xff 00000cbe: PUSH1 0x0b 00000cc0: SLOAD 00000cc1: PUSH1 0xa0 00000cc3: SHR 00000cc4: AND 00000cc5: PUSH1 0x03 00000cc7: DUP2 00000cc8: LT 00000cc9: ISZERO 00000cca: PUSH2 0x08cc 00000ccd: JUMPI 00000cce: PUSH1 0x02 00000cd0: EQ 00000cd1: PUSH2 0x0bf3 00000cd4: JUMPI 00000cd5: PUSH1 0x40 00000cd7: MLOAD 00000cd8: SWAP1 00000cd9: PUSH2 0x0ce1 00000cdc: DUP3 00000cdd: PUSH2 0x2146 00000ce0: JUMP 00000ce1: JUMPDEST 00000ce2: PUSH1 0x01 00000ce4: DUP3 00000ce5: MSTORE 00000ce6: PUSH1 0x20 00000ce8: DUP3 00000ce9: ADD 00000cea: SWAP3 00000ceb: PUSH1 0x00 00000ced: DUP5 00000cee: MSTORE 00000cef: PUSH1 0x40 00000cf1: DUP4 00000cf2: ADD 00000cf3: SWAP3 00000cf4: DUP3 00000cf5: DUP5 00000cf6: MSTORE 00000cf7: PUSH1 0x60 00000cf9: DUP2 00000cfa: ADD 00000cfb: SWAP5 00000cfc: PUSH1 0x00 00000cfe: DUP7 00000cff: MSTORE 00000d00: PUSH1 0x80 00000d02: DUP3 00000d03: ADD 00000d04: SWAP1 00000d05: DUP4 00000d06: DUP3 00000d07: MSTORE 00000d08: PUSH1 0x11 00000d0a: SLOAD 00000d0b: PUSH9 0x010000000000000000 00000d15: DUP2 00000d16: LT 00000d17: ISZERO 00000d18: PUSH2 0x0dc4 00000d1b: JUMPI 00000d1c: DUP1 00000d1d: PUSH1 0x01 00000d1f: PUSH2 0x0d2b 00000d22: SWAP3 00000d23: ADD 00000d24: PUSH1 0x11 00000d26: SSTORE 00000d27: PUSH2 0x223b 00000d2a: JUMP 00000d2b: JUMPDEST 00000d2c: SWAP4 00000d2d: SWAP1 00000d2e: SWAP4 00000d2f: PUSH2 0x0dae 00000d32: JUMPI 00000d33: PUSH2 0x0d4b 00000d36: SWAP1 00000d37: MLOAD 00000d38: ISZERO 00000d39: ISZERO 00000d3a: DUP5 00000d3b: SWAP1 00000d3c: PUSH1 0xff 00000d3e: DUP1 00000d3f: NOT 00000d40: DUP4 00000d41: SLOAD 00000d42: AND 00000d43: SWAP2 00000d44: ISZERO 00000d45: ISZERO 00000d46: AND 00000d47: OR 00000d48: SWAP1 00000d49: SSTORE 00000d4a: JUMP 00000d4b: JUMPDEST 00000d4c: MLOAD 00000d4d: SWAP1 00000d4e: PUSH1 0x03 00000d50: DUP3 00000d51: LT 00000d52: ISZERO 00000d53: PUSH2 0x08cc 00000d56: JUMPI 00000d57: PUSH32 0x23135a80f2463aa6bc9df8521af634b8aae450b0936efcbbc5f2a2f07d58132b 00000d78: SWAP7 00000d79: PUSH1 0x40 00000d7b: SWAP7 00000d7c: PUSH1 0x03 00000d7e: SWAP4 00000d7f: PUSH2 0xff00 00000d82: DUP7 00000d83: SLOAD 00000d84: SWAP2 00000d85: PUSH1 0x08 00000d87: SHL 00000d88: AND 00000d89: SWAP1 00000d8a: PUSH2 0xff00 00000d8d: NOT 00000d8e: AND 00000d8f: OR 00000d90: DUP6 00000d91: SSTORE 00000d92: MLOAD 00000d93: PUSH1 0x01 00000d95: DUP6 00000d96: ADD 00000d97: SSTORE 00000d98: MLOAD 00000d99: PUSH1 0x02 00000d9b: DUP5 00000d9c: ADD 00000d9d: SSTORE 00000d9e: MLOAD 00000d9f: SWAP2 00000da0: ADD 00000da1: SSTORE 00000da2: DUP3 00000da3: MLOAD 00000da4: SWAP2 00000da5: DUP3 00000da6: MSTORE 00000da7: PUSH1 0x20 00000da9: DUP3 00000daa: ADD 00000dab: MSTORE 00000dac: LOG1 00000dad: STOP 00000dae: JUMPDEST 00000daf: PUSH4 0x4e487b71 00000db4: PUSH1 0xe0 00000db6: SHL 00000db7: PUSH1 0x00 00000db9: MSTORE 00000dba: PUSH1 0x00 00000dbc: PUSH1 0x04 00000dbe: MSTORE 00000dbf: PUSH1 0x24 00000dc1: PUSH1 0x00 00000dc3: REVERT 00000dc4: JUMPDEST 00000dc5: PUSH4 0x4e487b71 00000dca: PUSH1 0xe0 00000dcc: SHL 00000dcd: PUSH1 0x00 00000dcf: MSTORE 00000dd0: PUSH1 0x41 00000dd2: PUSH1 0x04 00000dd4: MSTORE 00000dd5: PUSH1 0x24 00000dd7: PUSH1 0x00 00000dd9: REVERT 00000dda: JUMPDEST 00000ddb: CALLVALUE 00000ddc: PUSH2 0x067d 00000ddf: JUMPI 00000de0: PUSH1 0x20 00000de2: CALLDATASIZE 00000de3: PUSH1 0x03 00000de5: NOT 00000de6: ADD 00000de7: SLT 00000de8: PUSH2 0x067d 00000deb: JUMPI 00000dec: PUSH1 0x04 00000dee: CALLDATALOAD 00000def: PUSH2 0x0df6 00000df2: PUSH2 0x2733 00000df5: JUMP 00000df6: JUMPDEST 00000df7: PUSH1 0xff 00000df9: PUSH2 0x0e01 00000dfc: DUP3 00000dfd: PUSH2 0x223b 00000e00: JUMP 00000e01: JUMPDEST 00000e02: POP 00000e03: SLOAD 00000e04: AND 00000e05: ISZERO 00000e06: PUSH2 0x0e47 00000e09: JUMPI 00000e0a: PUSH2 0x0e12 00000e0d: DUP2 00000e0e: PUSH2 0x223b 00000e11: JUMP 00000e12: JUMPDEST 00000e13: POP 00000e14: DUP1 00000e15: SLOAD 00000e16: PUSH2 0xff00 00000e19: NOT 00000e1a: AND 00000e1b: PUSH2 0x0200 00000e1e: OR 00000e1f: SWAP1 00000e20: SSTORE 00000e21: PUSH32 0xcb67f20f64495b30f15524c55f90201dd6571d6b5c19dac183d2aeb25315b2dc 00000e42: PUSH1 0x00 00000e44: DUP1 00000e45: LOG2 00000e46: STOP 00000e47: JUMPDEST 00000e48: PUSH4 0x61f81d4d 00000e4d: PUSH1 0xe0 00000e4f: SHL 00000e50: PUSH1 0x00 00000e52: MSTORE 00000e53: PUSH1 0x04 00000e55: PUSH1 0x00 00000e57: REVERT 00000e58: JUMPDEST 00000e59: CALLVALUE 00000e5a: PUSH2 0x067d 00000e5d: JUMPI 00000e5e: PUSH1 0x00 00000e60: CALLDATASIZE 00000e61: PUSH1 0x03 00000e63: NOT 00000e64: ADD 00000e65: SLT 00000e66: PUSH2 0x067d 00000e69: JUMPI 00000e6a: PUSH1 0x20 00000e6c: PUSH1 0x40 00000e6e: MLOAD 00000e6f: PUSH1 0x00 00000e71: DUP2 00000e72: MSTORE 00000e73: RETURN 00000e74: JUMPDEST 00000e75: CALLVALUE 00000e76: PUSH2 0x067d 00000e79: JUMPI 00000e7a: PUSH2 0x0ea2 00000e7d: PUSH2 0x0e8e 00000e80: PUSH2 0x0e88 00000e83: CALLDATASIZE 00000e84: PUSH2 0x20e6 00000e87: JUMP 00000e88: JUMPDEST 00000e89: SWAP2 00000e8a: PUSH2 0x23d3 00000e8d: JUMP 00000e8e: JUMPDEST 00000e8f: PUSH1 0x40 00000e91: MLOAD 00000e92: SWAP2 00000e93: DUP3 00000e94: SWAP2 00000e95: PUSH1 0x20 00000e97: DUP4 00000e98: MSTORE 00000e99: PUSH1 0x20 00000e9b: DUP4 00000e9c: ADD 00000e9d: SWAP1 00000e9e: PUSH2 0x20c1 00000ea1: JUMP 00000ea2: JUMPDEST 00000ea3: SUB 00000ea4: SWAP1 00000ea5: RETURN 00000ea6: JUMPDEST 00000ea7: CALLVALUE 00000ea8: PUSH2 0x067d 00000eab: JUMPI 00000eac: PUSH1 0x00 00000eae: CALLDATASIZE 00000eaf: PUSH1 0x03 00000eb1: NOT 00000eb2: ADD 00000eb3: SLT 00000eb4: PUSH2 0x067d 00000eb7: JUMPI 00000eb8: PUSH1 0x20 00000eba: PUSH1 0x05 00000ebc: SLOAD 00000ebd: PUSH1 0x40 00000ebf: MLOAD 00000ec0: SWAP1 00000ec1: DUP2 00000ec2: MSTORE 00000ec3: RETURN 00000ec4: JUMPDEST 00000ec5: CALLVALUE 00000ec6: PUSH2 0x067d 00000ec9: JUMPI 00000eca: PUSH1 0x00 00000ecc: CALLDATASIZE 00000ecd: PUSH1 0x03 00000ecf: NOT 00000ed0: ADD 00000ed1: SLT 00000ed2: PUSH2 0x067d 00000ed5: JUMPI 00000ed6: PUSH1 0x40 00000ed8: PUSH1 0x08 00000eda: SLOAD 00000edb: PUSH1 0x09 00000edd: SLOAD 00000ede: DUP3 00000edf: MLOAD 00000ee0: SWAP2 00000ee1: DUP3 00000ee2: MSTORE 00000ee3: PUSH1 0x20 00000ee5: DUP3 00000ee6: ADD 00000ee7: MSTORE 00000ee8: RETURN 00000ee9: JUMPDEST 00000eea: CALLVALUE 00000eeb: PUSH2 0x067d 00000eee: JUMPI 00000eef: PUSH1 0x00 00000ef1: CALLDATASIZE 00000ef2: PUSH1 0x03 00000ef4: NOT 00000ef5: ADD 00000ef6: SLT 00000ef7: PUSH2 0x067d 00000efa: JUMPI 00000efb: PUSH1 0x20 00000efd: PUSH2 0x09d3 00000f00: PUSH2 0x2315 00000f03: JUMP 00000f04: JUMPDEST 00000f05: CALLVALUE 00000f06: PUSH2 0x067d 00000f09: JUMPI 00000f0a: PUSH1 0x40 00000f0c: CALLDATASIZE 00000f0d: PUSH1 0x03 00000f0f: NOT 00000f10: ADD 00000f11: SLT 00000f12: PUSH2 0x067d 00000f15: JUMPI 00000f16: PUSH2 0x0f1d 00000f19: PUSH2 0x1ff0 00000f1c: JUMP 00000f1d: JUMPDEST 00000f1e: PUSH1 0x04 00000f20: CALLDATALOAD 00000f21: PUSH1 0x00 00000f23: MSTORE 00000f24: PUSH1 0x02 00000f26: PUSH1 0x20 00000f28: MSTORE 00000f29: PUSH1 0x01 00000f2b: PUSH1 0x01 00000f2d: PUSH1 0xa0 00000f2f: SHL 00000f30: SUB 00000f31: PUSH1 0x40 00000f33: PUSH1 0x00 00000f35: KECCAK256 00000f36: SWAP2 00000f37: AND 00000f38: PUSH1 0x00 00000f3a: MSTORE 00000f3b: PUSH1 0x20 00000f3d: MSTORE 00000f3e: PUSH1 0x20 00000f40: PUSH1 0xff 00000f42: PUSH1 0x40 00000f44: PUSH1 0x00 00000f46: KECCAK256 00000f47: SLOAD 00000f48: AND 00000f49: PUSH1 0x40 00000f4b: MLOAD 00000f4c: SWAP1 00000f4d: ISZERO 00000f4e: ISZERO 00000f4f: DUP2 00000f50: MSTORE 00000f51: RETURN 00000f52: JUMPDEST 00000f53: CALLVALUE 00000f54: PUSH2 0x067d 00000f57: JUMPI 00000f58: PUSH1 0x00 00000f5a: CALLDATASIZE 00000f5b: PUSH1 0x03 00000f5d: NOT 00000f5e: ADD 00000f5f: SLT 00000f60: PUSH2 0x067d 00000f63: JUMPI 00000f64: PUSH1 0x0a 00000f66: SLOAD 00000f67: PUSH2 0x0f6f 00000f6a: DUP2 00000f6b: PUSH2 0x21a0 00000f6e: JUMP 00000f6f: JUMPDEST 00000f70: SWAP1 00000f71: PUSH2 0x0f7d 00000f74: PUSH1 0x40 00000f76: MLOAD 00000f77: SWAP3 00000f78: DUP4 00000f79: PUSH2 0x217e 00000f7c: JUMP 00000f7d: JUMPDEST 00000f7e: DUP1 00000f7f: DUP3 00000f80: MSTORE 00000f81: PUSH1 0x20 00000f83: DUP3 00000f84: ADD 00000f85: SWAP1 00000f86: DUP2 00000f87: PUSH1 0x0a 00000f89: PUSH1 0x00 00000f8b: MSTORE 00000f8c: PUSH32 0xc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8 00000fad: PUSH1 0x00 00000faf: SWAP2 00000fb0: JUMPDEST 00000fb1: DUP4 00000fb2: DUP4 00000fb3: LT 00000fb4: PUSH2 0x1008 00000fb7: JUMPI 00000fb8: DUP5 00000fb9: DUP7 00000fba: PUSH1 0x40 00000fbc: MLOAD 00000fbd: SWAP2 00000fbe: DUP3 00000fbf: SWAP2 00000fc0: PUSH1 0x20 00000fc2: DUP4 00000fc3: ADD 00000fc4: SWAP1 00000fc5: PUSH1 0x20 00000fc7: DUP5 00000fc8: MSTORE 00000fc9: MLOAD 00000fca: DUP1 00000fcb: SWAP2 00000fcc: MSTORE 00000fcd: PUSH1 0x40 00000fcf: DUP4 00000fd0: ADD 00000fd1: SWAP2 00000fd2: SWAP1 00000fd3: PUSH1 0x00 00000fd5: JUMPDEST 00000fd6: DUP2 00000fd7: DUP2 00000fd8: LT 00000fd9: PUSH2 0x0fe3 00000fdc: JUMPI 00000fdd: POP 00000fde: POP 00000fdf: POP 00000fe0: SUB 00000fe1: SWAP1 00000fe2: RETURN 00000fe3: JUMPDEST 00000fe4: DUP3 00000fe5: MLOAD 00000fe6: DUP1 00000fe7: MLOAD 00000fe8: DUP6 00000fe9: MSTORE 00000fea: PUSH1 0x20 00000fec: SWAP1 00000fed: DUP2 00000fee: ADD 00000fef: MLOAD 00000ff0: DUP2 00000ff1: DUP7 00000ff2: ADD 00000ff3: MSTORE 00000ff4: DUP7 00000ff5: SWAP6 00000ff6: POP 00000ff7: PUSH1 0x40 00000ff9: SWAP1 00000ffa: SWAP5 00000ffb: ADD 00000ffc: SWAP4 00000ffd: SWAP1 00000ffe: SWAP3 00000fff: ADD 00001000: SWAP2 00001001: PUSH1 0x01 00001003: ADD 00001004: PUSH2 0x0fd5 00001007: JUMP 00001008: JUMPDEST 00001009: PUSH1 0x02 0000100b: PUSH1 0x20 0000100d: PUSH1 0x01 0000100f: SWAP3 00001010: PUSH1 0x40 00001012: MLOAD 00001013: PUSH2 0x101b 00001016: DUP2 00001017: PUSH2 0x212a 0000101a: JUMP 0000101b: JUMPDEST 0000101c: DUP6 0000101d: SLOAD 0000101e: DUP2 0000101f: MSTORE 00001020: DUP5 00001021: DUP7 00001022: ADD 00001023: SLOAD 00001024: DUP4 00001025: DUP3 00001026: ADD 00001027: MSTORE 00001028: DUP2 00001029: MSTORE 0000102a: ADD 0000102b: SWAP3 0000102c: ADD 0000102d: SWAP3 0000102e: ADD 0000102f: SWAP2 00001030: SWAP1 00001031: PUSH2 0x0fb0 00001034: JUMP 00001035: JUMPDEST 00001036: CALLVALUE 00001037: PUSH2 0x067d 0000103a: JUMPI 0000103b: PUSH1 0x40 0000103d: CALLDATASIZE 0000103e: PUSH1 0x03 00001040: NOT 00001041: ADD 00001042: SLT 00001043: PUSH2 0x067d 00001046: JUMPI 00001047: PUSH32 0xa75ce34872c395a628c61aff7fee33ef71bed972e3a28c7f63fff0022f629aa9 00001068: PUSH2 0x106f 0000106b: PUSH2 0x2006 0000106e: JUMP 0000106f: JUMPDEST 00001070: PUSH1 0x24 00001072: CALLDATALOAD 00001073: SWAP1 00001074: PUSH2 0x107b 00001077: PUSH2 0x26e0 0000107a: JUMP 0000107b: JUMPDEST 0000107c: PUSH2 0x108f 0000107f: DUP3 00001080: CALLER 00001081: PUSH1 0x01 00001083: PUSH1 0x01 00001085: PUSH1 0xa0 00001087: SHL 00001088: SUB 00001089: DUP5 0000108a: AND 0000108b: PUSH2 0x2980 0000108e: JUMP 0000108f: JUMPDEST 00001090: PUSH1 0x40 00001092: DUP1 00001093: MLOAD 00001094: PUSH1 0x01 00001096: PUSH1 0x01 00001098: PUSH1 0xa0 0000109a: SHL 0000109b: SUB 0000109c: SWAP1 0000109d: SWAP3 0000109e: AND 0000109f: DUP3 000010a0: MSTORE 000010a1: PUSH1 0x20 000010a3: DUP3 000010a4: ADD 000010a5: SWAP3 000010a6: SWAP1 000010a7: SWAP3 000010a8: MSTORE 000010a9: SWAP1 000010aa: DUP2 000010ab: SWAP1 000010ac: DUP2 000010ad: ADD 000010ae: JUMPDEST 000010af: SUB 000010b0: SWAP1 000010b1: LOG1 000010b2: STOP 000010b3: JUMPDEST 000010b4: CALLVALUE 000010b5: PUSH2 0x067d 000010b8: JUMPI 000010b9: PUSH1 0x00 000010bb: CALLDATASIZE 000010bc: PUSH1 0x03 000010be: NOT 000010bf: ADD 000010c0: SLT 000010c1: PUSH2 0x067d 000010c4: JUMPI 000010c5: PUSH2 0x1152 000010c8: PUSH2 0x10f0 000010cb: PUSH32 0x4372617465000000000000000000000000000000000000000000000000000005 000010ec: PUSH2 0x2a1b 000010ef: JUMP 000010f0: JUMPDEST 000010f1: PUSH2 0x1119 000010f4: PUSH32 0x3100000000000000000000000000000000000000000000000000000000000001 00001115: PUSH2 0x2a78 00001118: JUMP 00001119: JUMPDEST 0000111a: PUSH1 0x20 0000111c: PUSH2 0x1160 0000111f: PUSH1 0x40 00001121: MLOAD 00001122: SWAP3 00001123: PUSH2 0x112c 00001126: DUP4 00001127: DUP6 00001128: PUSH2 0x217e 0000112b: JUMP 0000112c: JUMPDEST 0000112d: PUSH1 0x00 0000112f: DUP5 00001130: MSTORE 00001131: PUSH1 0x00 00001133: CALLDATASIZE 00001134: DUP2 00001135: CALLDATACOPY 00001136: PUSH1 0x40 00001138: MLOAD 00001139: SWAP6 0000113a: DUP7 0000113b: SWAP6 0000113c: PUSH1 0x0f 0000113e: PUSH1 0xf8 00001140: SHL 00001141: DUP8 00001142: MSTORE 00001143: PUSH1 0xe0 00001145: DUP6 00001146: DUP9 00001147: ADD 00001148: MSTORE 00001149: PUSH1 0xe0 0000114b: DUP8 0000114c: ADD 0000114d: SWAP1 0000114e: PUSH2 0x20c1 00001151: JUMP 00001152: JUMPDEST 00001153: SWAP1 00001154: DUP6 00001155: DUP3 00001156: SUB 00001157: PUSH1 0x40 00001159: DUP8 0000115a: ADD 0000115b: MSTORE 0000115c: PUSH2 0x20c1 0000115f: JUMP 00001160: JUMPDEST 00001161: CHAINID 00001162: PUSH1 0x60 00001164: DUP6 00001165: ADD 00001166: MSTORE 00001167: ADDRESS 00001168: PUSH1 0x80 0000116a: DUP6 0000116b: ADD 0000116c: MSTORE 0000116d: PUSH1 0x00 0000116f: PUSH1 0xa0 00001171: DUP6 00001172: ADD 00001173: MSTORE 00001174: DUP4 00001175: DUP2 00001176: SUB 00001177: PUSH1 0xc0 00001179: DUP6 0000117a: ADD 0000117b: MSTORE 0000117c: DUP2 0000117d: DUP1 0000117e: DUP5 0000117f: MLOAD 00001180: SWAP3 00001181: DUP4 00001182: DUP2 00001183: MSTORE 00001184: ADD 00001185: SWAP4 00001186: ADD 00001187: SWAP2 00001188: PUSH1 0x00 0000118a: JUMPDEST 0000118b: DUP3 0000118c: DUP2 0000118d: LT 0000118e: PUSH2 0x1199 00001191: JUMPI 00001192: POP 00001193: POP 00001194: POP 00001195: POP 00001196: SUB 00001197: SWAP1 00001198: RETURN 00001199: JUMPDEST 0000119a: DUP4 0000119b: MLOAD 0000119c: DUP6 0000119d: MSTORE 0000119e: DUP7 0000119f: SWAP6 000011a0: POP 000011a1: SWAP4 000011a2: DUP2 000011a3: ADD 000011a4: SWAP4 000011a5: SWAP3 000011a6: DUP2 000011a7: ADD 000011a8: SWAP3 000011a9: PUSH1 0x01 000011ab: ADD 000011ac: PUSH2 0x118a 000011af: JUMP 000011b0: JUMPDEST 000011b1: CALLVALUE 000011b2: PUSH2 0x067d 000011b5: JUMPI 000011b6: PUSH1 0x40 000011b8: CALLDATASIZE 000011b9: PUSH1 0x03 000011bb: NOT 000011bc: ADD 000011bd: SLT 000011be: PUSH2 0x067d 000011c1: JUMPI 000011c2: PUSH1 0x04 000011c4: CALLDATALOAD 000011c5: PUSH8 0xffffffffffffffff 000011ce: DUP2 000011cf: GT 000011d0: PUSH2 0x067d 000011d3: JUMPI 000011d4: PUSH2 0x11e1 000011d7: SWAP1 000011d8: CALLDATASIZE 000011d9: SWAP1 000011da: PUSH1 0x04 000011dc: ADD 000011dd: PUSH2 0x206d 000011e0: JUMP 000011e1: JUMPDEST 000011e2: PUSH1 0x24 000011e4: CALLDATALOAD 000011e5: PUSH8 0xffffffffffffffff 000011ee: DUP2 000011ef: GT 000011f0: PUSH2 0x067d 000011f3: JUMPI 000011f4: PUSH2 0x1201 000011f7: SWAP1 000011f8: CALLDATASIZE 000011f9: SWAP1 000011fa: PUSH1 0x04 000011fc: ADD 000011fd: PUSH2 0x206d 00001200: JUMP 00001201: JUMPDEST 00001202: SWAP1 00001203: PUSH2 0x120a 00001206: PUSH2 0x27a5 00001209: JUMP 0000120a: JUMPDEST 0000120b: DUP2 0000120c: DUP4 0000120d: SUB 0000120e: PUSH2 0x05f8 00001211: JUMPI 00001212: PUSH1 0x0a 00001214: SLOAD 00001215: PUSH1 0x00 00001217: PUSH1 0x0a 00001219: SSTORE 0000121a: DUP1 0000121b: PUSH2 0x1361 0000121e: JUMPI 0000121f: JUMPDEST 00001220: POP 00001221: PUSH1 0x00 00001223: JUMPDEST 00001224: DUP4 00001225: DUP2 00001226: LT 00001227: PUSH2 0x122c 0000122a: JUMPI 0000122b: STOP 0000122c: JUMPDEST 0000122d: DUP1 0000122e: PUSH2 0x12e9 00001231: JUMPI 00001232: DUP4 00001233: ISZERO 00001234: PUSH2 0x12d3 00001237: JUMPI 00001238: DUP5 00001239: CALLDATALOAD 0000123a: ISZERO 0000123b: ISZERO 0000123c: DUP1 0000123d: PUSH2 0x12c3 00001240: JUMPI 00001241: JUMPDEST 00001242: ISZERO 00001243: PUSH2 0x12b2 00001246: JUMPI 00001247: JUMPDEST 00001248: PUSH2 0x1252 0000124b: DUP2 0000124c: DUP5 0000124d: DUP5 0000124e: PUSH2 0x22e6 00001251: JUMP 00001252: JUMPDEST 00001253: CALLDATALOAD 00001254: SWAP1 00001255: PUSH2 0x125f 00001258: DUP2 00001259: DUP7 0000125a: DUP9 0000125b: PUSH2 0x22e6 0000125e: JUMP 0000125f: JUMPDEST 00001260: CALLDATALOAD 00001261: PUSH1 0x40 00001263: MLOAD 00001264: SWAP1 00001265: PUSH2 0x126d 00001268: DUP3 00001269: PUSH2 0x212a 0000126c: JUMP 0000126d: JUMPDEST 0000126e: DUP2 0000126f: MSTORE 00001270: PUSH1 0x20 00001272: DUP2 00001273: ADD 00001274: SWAP3 00001275: DUP4 00001276: MSTORE 00001277: PUSH1 0x0a 00001279: SLOAD 0000127a: PUSH9 0x010000000000000000 00001284: DUP2 00001285: LT 00001286: ISZERO 00001287: PUSH2 0x0dc4 0000128a: JUMPI 0000128b: DUP1 0000128c: PUSH1 0x01 0000128e: PUSH2 0x129a 00001291: SWAP3 00001292: ADD 00001293: PUSH1 0x0a 00001295: SSTORE 00001296: PUSH2 0x22f6 00001299: JUMP 0000129a: JUMPDEST 0000129b: SWAP2 0000129c: SWAP1 0000129d: SWAP2 0000129e: PUSH2 0x0dae 000012a1: JUMPI 000012a2: MLOAD 000012a3: DUP2 000012a4: SSTORE 000012a5: SWAP2 000012a6: MLOAD 000012a7: PUSH1 0x01 000012a9: SWAP3 000012aa: DUP4 000012ab: ADD 000012ac: SSTORE 000012ad: ADD 000012ae: PUSH2 0x1223 000012b1: JUMP 000012b2: JUMPDEST 000012b3: PUSH4 0x7253e4df 000012b8: PUSH1 0xe1 000012ba: SHL 000012bb: PUSH1 0x00 000012bd: MSTORE 000012be: PUSH1 0x04 000012c0: PUSH1 0x00 000012c2: REVERT 000012c3: JUMPDEST 000012c4: POP 000012c5: DUP3 000012c6: ISZERO 000012c7: PUSH2 0x12d3 000012ca: JUMPI 000012cb: DUP2 000012cc: CALLDATALOAD 000012cd: ISZERO 000012ce: ISZERO 000012cf: PUSH2 0x1241 000012d2: JUMP 000012d3: JUMPDEST 000012d4: PUSH4 0x4e487b71 000012d9: PUSH1 0xe0 000012db: SHL 000012dc: PUSH1 0x00 000012de: MSTORE 000012df: PUSH1 0x32 000012e1: PUSH1 0x04 000012e3: MSTORE 000012e4: PUSH1 0x24 000012e6: PUSH1 0x00 000012e8: REVERT 000012e9: JUMPDEST 000012ea: PUSH1 0x00 000012ec: NOT 000012ed: DUP2 000012ee: ADD 000012ef: DUP2 000012f0: DUP2 000012f1: GT 000012f2: PUSH2 0x134b 000012f5: JUMPI 000012f6: PUSH2 0x1300 000012f9: DUP2 000012fa: DUP7 000012fb: DUP9 000012fc: PUSH2 0x22e6 000012ff: JUMP 00001300: JUMPDEST 00001301: CALLDATALOAD 00001302: PUSH2 0x130c 00001305: DUP4 00001306: DUP8 00001307: DUP10 00001308: PUSH2 0x22e6 0000130b: JUMP 0000130c: JUMPDEST 0000130d: CALLDATALOAD 0000130e: GT 0000130f: SWAP1 00001310: DUP2 00001311: PUSH2 0x132b 00001314: JUMPI 00001315: JUMPDEST 00001316: POP 00001317: PUSH2 0x1247 0000131a: JUMPI 0000131b: PUSH4 0x7253e4df 00001320: PUSH1 0xe1 00001322: SHL 00001323: PUSH1 0x00 00001325: MSTORE 00001326: PUSH1 0x04 00001328: PUSH1 0x00 0000132a: REVERT 0000132b: JUMPDEST 0000132c: PUSH2 0x1337 0000132f: SWAP2 00001330: POP 00001331: DUP5 00001332: DUP5 00001333: PUSH2 0x22e6 00001336: JUMP 00001337: JUMPDEST 00001338: CALLDATALOAD 00001339: PUSH2 0x1343 0000133c: DUP3 0000133d: DUP6 0000133e: DUP6 0000133f: PUSH2 0x22e6 00001342: JUMP 00001343: JUMPDEST 00001344: CALLDATALOAD 00001345: GT 00001346: DUP7 00001347: PUSH2 0x1315 0000134a: JUMP 0000134b: JUMPDEST 0000134c: PUSH4 0x4e487b71 00001351: PUSH1 0xe0 00001353: SHL 00001354: PUSH1 0x00 00001356: MSTORE 00001357: PUSH1 0x11 00001359: PUSH1 0x04 0000135b: MSTORE 0000135c: PUSH1 0x24 0000135e: PUSH1 0x00 00001360: REVERT 00001361: JUMPDEST 00001362: PUSH32 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 00001383: DUP2 00001384: AND 00001385: DUP2 00001386: SUB 00001387: PUSH2 0x134b 0000138a: JUMPI 0000138b: PUSH1 0x0a 0000138d: PUSH1 0x00 0000138f: MSTORE 00001390: PUSH1 0x01 00001392: SHL 00001393: PUSH32 0xc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8 000013b4: ADD 000013b5: PUSH32 0xc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8 000013d6: JUMPDEST 000013d7: DUP2 000013d8: DUP2 000013d9: LT 000013da: PUSH2 0x13e3 000013dd: JUMPI 000013de: POP 000013df: PUSH2 0x121f 000013e2: JUMP 000013e3: JUMPDEST 000013e4: PUSH1 0x00 000013e6: DUP1 000013e7: DUP3 000013e8: SSTORE 000013e9: PUSH1 0x01 000013eb: DUP3 000013ec: ADD 000013ed: SSTORE 000013ee: PUSH1 0x02 000013f0: ADD 000013f1: PUSH2 0x13d6 000013f4: JUMP 000013f5: JUMPDEST 000013f6: CALLVALUE 000013f7: PUSH2 0x067d 000013fa: JUMPI 000013fb: PUSH1 0x00 000013fd: CALLDATASIZE 000013fe: PUSH1 0x03 00001400: NOT 00001401: ADD 00001402: SLT 00001403: PUSH2 0x067d 00001406: JUMPI 00001407: PUSH1 0x20 00001409: PUSH1 0x40 0000140b: MLOAD 0000140c: PUSH32 0x4537a8625b568d11dc31ae1d90b1ee7e52cbc0a45ac7bbe0d5b3dc7605dda3e7 0000142d: DUP2 0000142e: MSTORE 0000142f: RETURN 00001430: JUMPDEST 00001431: CALLVALUE 00001432: PUSH2 0x067d 00001435: JUMPI 00001436: PUSH1 0x00 00001438: CALLDATASIZE 00001439: PUSH1 0x03 0000143b: NOT 0000143c: ADD 0000143d: SLT 0000143e: PUSH2 0x067d 00001441: JUMPI 00001442: PUSH1 0x20 00001444: PUSH1 0xff 00001446: PUSH1 0x12 00001448: SLOAD 00001449: AND 0000144a: PUSH1 0x40 0000144c: MLOAD 0000144d: SWAP1 0000144e: ISZERO 0000144f: ISZERO 00001450: DUP2 00001451: MSTORE 00001452: RETURN 00001453: JUMPDEST 00001454: CALLVALUE 00001455: PUSH2 0x067d 00001458: JUMPI 00001459: PUSH2 0x1461 0000145c: CALLDATASIZE 0000145d: PUSH2 0x204a 00001460: JUMP 00001461: JUMPDEST 00001462: PUSH2 0x1469 00001465: PUSH2 0x27a5 00001468: JUMP 00001469: JUMPDEST 0000146a: PUSH1 0xff 0000146c: PUSH1 0x0b 0000146e: SLOAD 0000146f: PUSH1 0xa0 00001471: SHR 00001472: AND 00001473: PUSH1 0x03 00001475: DUP2 00001476: LT 00001477: ISZERO 00001478: PUSH2 0x08cc 0000147b: JUMPI 0000147c: PUSH1 0x02 0000147e: EQ 0000147f: PUSH2 0x0bf3 00001482: JUMPI 00001483: PUSH2 0x03e8 00001486: DUP3 00001487: GT 00001488: PUSH2 0x14ce 0000148b: JUMPI 0000148c: PUSH2 0x03e8 0000148f: DUP2 00001490: GT 00001491: PUSH2 0x14ce 00001494: JUMPI 00001495: DUP2 00001496: PUSH1 0x40 00001498: SWAP2 00001499: PUSH32 0xcdae37a21b83247d47e3b28fa5ad3ea45492b3fffded004435e702b8549f32f8 000014ba: SWAP4 000014bb: PUSH1 0x08 000014bd: SSTORE 000014be: DUP1 000014bf: PUSH1 0x09 000014c1: SSTORE 000014c2: DUP3 000014c3: MLOAD 000014c4: SWAP2 000014c5: DUP3 000014c6: MSTORE 000014c7: PUSH1 0x20 000014c9: DUP3 000014ca: ADD 000014cb: MSTORE 000014cc: LOG1 000014cd: STOP 000014ce: JUMPDEST 000014cf: PUSH4 0x3374af3d 000014d4: PUSH1 0xe2 000014d6: SHL 000014d7: PUSH1 0x00 000014d9: MSTORE 000014da: PUSH1 0x04 000014dc: PUSH1 0x00 000014de: REVERT 000014df: JUMPDEST 000014e0: CALLVALUE 000014e1: PUSH2 0x067d 000014e4: JUMPI 000014e5: PUSH2 0x14ed 000014e8: CALLDATASIZE 000014e9: PUSH2 0x204a 000014ec: JUMP 000014ed: JUMPDEST 000014ee: PUSH2 0x14f5 000014f1: PUSH2 0x27a5 000014f4: JUMP 000014f5: JUMPDEST 000014f6: PUSH1 0xff 000014f8: PUSH1 0x0b 000014fa: SLOAD 000014fb: PUSH1 0xa0 000014fd: SHR 000014fe: AND 000014ff: PUSH1 0x03 00001501: DUP2 00001502: LT 00001503: ISZERO 00001504: PUSH2 0x08cc 00001507: JUMPI 00001508: PUSH1 0x02 0000150a: EQ 0000150b: PUSH2 0x0bf3 0000150e: JUMPI 0000150f: PUSH1 0xff 00001511: PUSH2 0x1519 00001514: DUP4 00001515: PUSH2 0x223b 00001518: JUMP 00001519: JUMPDEST 0000151a: POP 0000151b: SLOAD 0000151c: AND 0000151d: ISZERO 0000151e: PUSH2 0x0e47 00001521: JUMPI 00001522: PUSH1 0xff 00001524: PUSH2 0x152c 00001527: DUP4 00001528: PUSH2 0x223b 0000152b: JUMP 0000152c: JUMPDEST 0000152d: POP 0000152e: SLOAD 0000152f: PUSH1 0x08 00001531: SHR 00001532: AND 00001533: PUSH1 0x03 00001535: DUP2 00001536: LT 00001537: ISZERO 00001538: PUSH2 0x08cc 0000153b: JUMPI 0000153c: PUSH1 0x02 0000153e: EQ 0000153f: PUSH2 0x15a3 00001542: JUMPI 00001543: DUP1 00001544: PUSH1 0x02 00001546: PUSH2 0x154e 00001549: DUP5 0000154a: PUSH2 0x223b 0000154d: JUMP 0000154e: JUMPDEST 0000154f: POP 00001550: ADD 00001551: SLOAD 00001552: GT 00001553: PUSH2 0x1592 00001556: JUMPI 00001557: PUSH1 0x20 00001559: DUP2 0000155a: PUSH32 0xafd694a7b0d2ebaf8fa8483392d4036a4ab5bd8debe0c15695d17982c9d6523c 0000157b: SWAP3 0000157c: PUSH1 0x03 0000157e: PUSH2 0x1586 00001581: DUP7 00001582: PUSH2 0x223b 00001585: JUMP 00001586: JUMPDEST 00001587: POP 00001588: ADD 00001589: SSTORE 0000158a: PUSH1 0x40 0000158c: MLOAD 0000158d: SWAP1 0000158e: DUP2 0000158f: MSTORE 00001590: LOG2 00001591: STOP 00001592: JUMPDEST 00001593: PUSH4 0x615154af 00001598: PUSH1 0xe0 0000159a: SHL 0000159b: PUSH1 0x00 0000159d: MSTORE 0000159e: PUSH1 0x04 000015a0: PUSH1 0x00 000015a2: REVERT 000015a3: JUMPDEST 000015a4: PUSH4 0x35469427 000015a9: PUSH1 0xe2 000015ab: SHL 000015ac: PUSH1 0x00 000015ae: MSTORE 000015af: PUSH1 0x04 000015b1: PUSH1 0x00 000015b3: REVERT 000015b4: JUMPDEST 000015b5: CALLVALUE 000015b6: PUSH2 0x067d 000015b9: JUMPI 000015ba: PUSH1 0xe0 000015bc: CALLDATASIZE 000015bd: PUSH1 0x03 000015bf: NOT 000015c0: ADD 000015c1: SLT 000015c2: PUSH2 0x067d 000015c5: JUMPI 000015c6: PUSH2 0x15cd 000015c9: PUSH2 0x2006 000015cc: JUMP 000015cd: JUMPDEST 000015ce: PUSH2 0x15d5 000015d1: PUSH2 0x1ff0 000015d4: JUMP 000015d5: JUMPDEST 000015d6: SWAP1 000015d7: PUSH1 0x64 000015d9: CALLDATALOAD 000015da: PUSH1 0x84 000015dc: CALLDATALOAD 000015dd: PUSH8 0xffffffffffffffff 000015e6: DUP2 000015e7: GT 000015e8: PUSH2 0x067d 000015eb: JUMPI 000015ec: PUSH2 0x15f9 000015ef: SWAP1 000015f0: CALLDATASIZE 000015f1: SWAP1 000015f2: PUSH1 0x04 000015f4: ADD 000015f5: PUSH2 0x201c 000015f8: JUMP 000015f9: JUMPDEST 000015fa: CALLER 000015fb: PUSH1 0x00 000015fd: SWAP1 000015fe: DUP2 000015ff: MSTORE 00001600: PUSH32 0x2b47e9a17e06300fb3ae8f151c0f02ac1a6674e8f3a0025b7af02fe70478ba14 00001621: PUSH1 0x20 00001623: MSTORE 00001624: PUSH1 0x40 00001626: SWAP1 00001627: KECCAK256 00001628: SLOAD 00001629: SWAP2 0000162a: SWAP4 0000162b: SWAP1 0000162c: SWAP3 0000162d: SWAP2 0000162e: PUSH1 0xff 00001630: AND 00001631: ISZERO 00001632: PUSH2 0x1947 00001635: JUMPI 00001636: PUSH1 0x01 00001638: PUSH1 0x01 0000163a: PUSH1 0xa0 0000163c: SHL 0000163d: SUB 0000163e: SWAP1 0000163f: PUSH2 0x164a 00001642: DUP4 00001643: PUSH1 0x05 00001645: SLOAD 00001646: PUSH2 0x227b 00001649: JUMP 0000164a: JUMPDEST 0000164b: PUSH1 0x05 0000164d: SSTORE 0000164e: PUSH1 0x06 00001650: SLOAD 00001651: PUSH1 0x02 00001653: PUSH2 0x1671 00001656: PUSH2 0x166b 00001659: DUP7 0000165a: DUP4 0000165b: PUSH2 0x1663 0000165e: DUP7 0000165f: PUSH2 0x223b 00001662: JUMP 00001663: JUMPDEST 00001664: POP 00001665: ADD 00001666: SLOAD 00001667: PUSH2 0x227b 0000166a: JUMP 0000166b: JUMPDEST 0000166c: SWAP3 0000166d: PUSH2 0x223b 00001670: JUMP 00001671: JUMPDEST 00001672: POP 00001673: ADD 00001674: SSTORE 00001675: AND 00001676: SWAP1 00001677: DUP2 00001678: PUSH1 0x00 0000167a: MSTORE 0000167b: PUSH1 0x0c 0000167d: PUSH1 0x20 0000167f: MSTORE 00001680: PUSH2 0x169e 00001683: PUSH1 0x40 00001685: PUSH1 0x00 00001687: KECCAK256 00001688: SWAP2 00001689: PUSH1 0x06 0000168b: SLOAD 0000168c: SWAP3 0000168d: DUP4 0000168e: PUSH1 0x00 00001690: MSTORE 00001691: PUSH1 0x20 00001693: MSTORE 00001694: PUSH1 0x40 00001696: PUSH1 0x00 00001698: KECCAK256 00001699: SLOAD 0000169a: PUSH2 0x227b 0000169d: JUMP 0000169e: JUMPDEST 0000169f: SWAP1 000016a0: DUP3 000016a1: PUSH1 0x00 000016a3: MSTORE 000016a4: PUSH1 0x0c 000016a6: PUSH1 0x20 000016a8: MSTORE 000016a9: PUSH1 0x40 000016ab: PUSH1 0x00 000016ad: KECCAK256 000016ae: SWAP1 000016af: PUSH1 0x00 000016b1: MSTORE 000016b2: PUSH1 0x20 000016b4: MSTORE 000016b5: PUSH1 0x40 000016b7: PUSH1 0x00 000016b9: KECCAK256 000016ba: SSTORE 000016bb: PUSH2 0x16c5 000016be: CALLDATASIZE 000016bf: DUP4 000016c0: DUP6 000016c1: PUSH2 0x21d4 000016c4: JUMP 000016c5: JUMPDEST 000016c6: SWAP4 000016c7: PUSH1 0x20 000016c9: SWAP5 000016ca: PUSH1 0x00 000016cc: PUSH1 0x40 000016ce: MLOAD 000016cf: PUSH2 0x16d8 000016d2: DUP9 000016d3: DUP3 000016d4: PUSH2 0x217e 000016d7: JUMP 000016d8: JUMPDEST 000016d9: MSTORE 000016da: DUP1 000016db: MLOAD 000016dc: DUP7 000016dd: DUP2 000016de: ISZERO 000016df: SWAP3 000016e0: DUP4 000016e1: PUSH2 0x1919 000016e4: JUMPI 000016e5: JUMPDEST 000016e6: POP 000016e7: POP 000016e8: POP 000016e9: ISZERO 000016ea: PUSH2 0x16ef 000016ed: JUMPI 000016ee: STOP 000016ef: JUMPDEST 000016f0: PUSH1 0xff 000016f2: PUSH1 0x40 000016f4: MLOAD 000016f5: DUP5 000016f6: DUP7 000016f7: DUP3 000016f8: CALLDATACOPY 000016f9: DUP7 000016fa: DUP2 000016fb: DUP7 000016fc: DUP2 000016fd: ADD 000016fe: PUSH1 0x0f 00001700: DUP2 00001701: MSTORE 00001702: SUB 00001703: ADD 00001704: SWAP1 00001705: KECCAK256 00001706: SLOAD 00001707: AND 00001708: ISZERO 00001709: PUSH2 0x1899 0000170c: JUMPI 0000170d: JUMPDEST 0000170e: PUSH1 0x01 00001710: PUSH1 0x01 00001712: PUSH1 0xa0 00001714: SHL 00001715: SUB 00001716: PUSH1 0x40 00001718: MLOAD 00001719: DUP5 0000171a: DUP7 0000171b: DUP3 0000171c: CALLDATACOPY 0000171d: DUP7 0000171e: DUP2 0000171f: DUP7 00001720: DUP2 00001721: ADD 00001722: PUSH1 0x0e 00001724: DUP2 00001725: MSTORE 00001726: SUB 00001727: ADD 00001728: SWAP1 00001729: KECCAK256 0000172a: SWAP2 0000172b: AND 0000172c: PUSH1 0x00 0000172e: MSTORE 0000172f: DUP5 00001730: MSTORE 00001731: PUSH1 0x40 00001733: PUSH1 0x00 00001735: KECCAK256 00001736: PUSH2 0x1742 00001739: PUSH1 0xa4 0000173b: CALLDATALOAD 0000173c: DUP3 0000173d: SLOAD 0000173e: PUSH2 0x227b 00001741: JUMP 00001742: JUMPDEST 00001743: SWAP1 00001744: SSTORE 00001745: PUSH1 0x40 00001747: MLOAD 00001748: DUP3 00001749: DUP5 0000174a: DUP3 0000174b: CALLDATACOPY 0000174c: DUP5 0000174d: DUP2 0000174e: DUP5 0000174f: DUP2 00001750: ADD 00001751: PUSH1 0x0e 00001753: DUP2 00001754: MSTORE 00001755: SUB 00001756: ADD 00001757: SWAP1 00001758: KECCAK256 00001759: PUSH20 0xdededededededededededededededededededede 0000176e: PUSH1 0x00 00001770: MSTORE 00001771: DUP5 00001772: MSTORE 00001773: PUSH1 0x40 00001775: PUSH1 0x00 00001777: KECCAK256 00001778: PUSH2 0x1784 0000177b: PUSH1 0xc4 0000177d: CALLDATALOAD 0000177e: DUP3 0000177f: SLOAD 00001780: PUSH2 0x227b 00001783: JUMP 00001784: JUMPDEST 00001785: SWAP1 00001786: SSTORE 00001787: PUSH1 0x00 00001789: MSTORE 0000178a: PUSH1 0x0d 0000178c: DUP4 0000178d: MSTORE 0000178e: PUSH1 0x40 00001790: PUSH1 0x00 00001792: KECCAK256 00001793: SWAP2 00001794: PUSH8 0xffffffffffffffff 0000179d: DUP3 0000179e: GT 0000179f: PUSH2 0x0dc4 000017a2: JUMPI 000017a3: PUSH2 0x17ac 000017a6: DUP4 000017a7: SLOAD 000017a8: PUSH2 0x22ac 000017ab: JUMP 000017ac: JUMPDEST 000017ad: PUSH1 0x1f 000017af: DUP2 000017b0: GT 000017b1: PUSH2 0x1853 000017b4: JUMPI 000017b5: JUMPDEST 000017b6: POP 000017b7: PUSH1 0x00 000017b9: SWAP4 000017ba: PUSH1 0x1f 000017bc: DUP4 000017bd: GT 000017be: PUSH1 0x01 000017c0: EQ 000017c1: PUSH2 0x17f2 000017c4: JUMPI 000017c5: POP 000017c6: SWAP3 000017c7: DUP2 000017c8: SWAP3 000017c9: SWAP4 000017ca: PUSH1 0x00 000017cc: SWAP3 000017cd: PUSH2 0x17e7 000017d0: JUMPI 000017d1: JUMPDEST 000017d2: POP 000017d3: POP 000017d4: DUP2 000017d5: PUSH1 0x01 000017d7: SHL 000017d8: SWAP2 000017d9: PUSH1 0x00 000017db: NOT 000017dc: SWAP1 000017dd: PUSH1 0x03 000017df: SHL 000017e0: SHR 000017e1: NOT 000017e2: AND 000017e3: OR 000017e4: SWAP1 000017e5: SSTORE 000017e6: STOP 000017e7: JUMPDEST 000017e8: ADD 000017e9: CALLDATALOAD 000017ea: SWAP1 000017eb: POP 000017ec: DUP4 000017ed: DUP1 000017ee: PUSH2 0x17d1 000017f1: JUMP 000017f2: JUMPDEST 000017f3: SWAP1 000017f4: PUSH1 0x1f 000017f6: NOT 000017f7: DUP4 000017f8: AND 000017f9: SWAP5 000017fa: DUP5 000017fb: DUP2 000017fc: MSTORE 000017fd: DUP3 000017fe: DUP2 000017ff: KECCAK256 00001800: SWAP3 00001801: DUP2 00001802: SWAP1 00001803: JUMPDEST 00001804: DUP8 00001805: DUP3 00001806: LT 00001807: PUSH2 0x183b 0000180a: JUMPI 0000180b: POP 0000180c: POP 0000180d: DUP4 0000180e: PUSH1 0x01 00001810: SWAP6 00001811: SWAP7 00001812: LT 00001813: PUSH2 0x1821 00001816: JUMPI 00001817: JUMPDEST 00001818: POP 00001819: POP 0000181a: POP 0000181b: DUP2 0000181c: SHL 0000181d: ADD 0000181e: SWAP1 0000181f: SSTORE 00001820: STOP 00001821: JUMPDEST 00001822: ADD 00001823: CALLDATALOAD 00001824: PUSH1 0x00 00001826: NOT 00001827: PUSH1 0x03 00001829: DUP5 0000182a: SWAP1 0000182b: SHL 0000182c: PUSH1 0xf8 0000182e: AND 0000182f: SHR 00001830: NOT 00001831: AND 00001832: SWAP1 00001833: SSTORE 00001834: DUP4 00001835: DUP1 00001836: DUP1 00001837: PUSH2 0x1817 0000183a: JUMP 0000183b: JUMPDEST 0000183c: DUP1 0000183d: PUSH1 0x01 0000183f: DUP5 00001840: SWAP7 00001841: DUP3 00001842: SWAP5 00001843: SWAP6 00001844: DUP8 00001845: ADD 00001846: CALLDATALOAD 00001847: DUP2 00001848: SSTORE 00001849: ADD 0000184a: SWAP6 0000184b: ADD 0000184c: SWAP3 0000184d: ADD 0000184e: SWAP1 0000184f: PUSH2 0x1803 00001852: JUMP 00001853: JUMPDEST 00001854: DUP4 00001855: PUSH1 0x00 00001857: MSTORE 00001858: DUP5 00001859: PUSH1 0x00 0000185b: KECCAK256 0000185c: PUSH1 0x1f 0000185e: DUP5 0000185f: ADD 00001860: PUSH1 0x05 00001862: SHR 00001863: DUP2 00001864: ADD 00001865: SWAP2 00001866: DUP7 00001867: DUP6 00001868: LT 00001869: PUSH2 0x188f 0000186c: JUMPI 0000186d: JUMPDEST 0000186e: PUSH1 0x1f 00001870: ADD 00001871: PUSH1 0x05 00001873: SHR 00001874: ADD 00001875: SWAP1 00001876: JUMPDEST 00001877: DUP2 00001878: DUP2 00001879: LT 0000187a: PUSH2 0x1883 0000187d: JUMPI 0000187e: POP 0000187f: PUSH2 0x17b5 00001882: JUMP 00001883: JUMPDEST 00001884: PUSH1 0x00 00001886: DUP2 00001887: SSTORE 00001888: PUSH1 0x01 0000188a: ADD 0000188b: PUSH2 0x1876 0000188e: JUMP 0000188f: JUMPDEST 00001890: SWAP1 00001891: SWAP2 00001892: POP 00001893: DUP2 00001894: SWAP1 00001895: PUSH2 0x186d 00001898: JUMP 00001899: JUMPDEST 0000189a: PUSH1 0x40 0000189c: MLOAD 0000189d: DUP4 0000189e: DUP6 0000189f: DUP3 000018a0: CALLDATACOPY 000018a1: DUP6 000018a2: DUP2 000018a3: DUP6 000018a4: DUP2 000018a5: ADD 000018a6: PUSH1 0x0f 000018a8: DUP2 000018a9: MSTORE 000018aa: SUB 000018ab: ADD 000018ac: SWAP1 000018ad: KECCAK256 000018ae: PUSH1 0x01 000018b0: PUSH1 0xff 000018b2: NOT 000018b3: DUP3 000018b4: SLOAD 000018b5: AND 000018b6: OR 000018b7: SWAP1 000018b8: SSTORE 000018b9: PUSH1 0x40 000018bb: MLOAD 000018bc: DUP4 000018bd: DUP6 000018be: DUP3 000018bf: CALLDATACOPY 000018c0: DUP6 000018c1: DUP2 000018c2: DUP6 000018c3: DUP2 000018c4: ADD 000018c5: PUSH1 0x0f 000018c7: DUP2 000018c8: MSTORE 000018c9: SUB 000018ca: ADD 000018cb: SWAP1 000018cc: KECCAK256 000018cd: PUSH2 0x0100 000018d0: PUSH2 0xff00 000018d3: NOT 000018d4: DUP3 000018d5: SLOAD 000018d6: AND 000018d7: OR 000018d8: SWAP1 000018d9: SSTORE 000018da: PUSH31 0xc6ee47ff3b385ec289bf5bbe0e21c12204141c9586eb2a480d955d6a9f9230 000018fa: PUSH1 0x08 000018fc: SLOAD 000018fd: PUSH1 0x09 000018ff: SLOAD 00001900: SWAP1 00001901: PUSH2 0x1911 00001904: PUSH1 0x40 00001906: MLOAD 00001907: SWAP3 00001908: DUP4 00001909: SWAP3 0000190a: DUP9 0000190b: DUP11 0000190c: DUP6 0000190d: PUSH2 0x2288 00001910: JUMP 00001911: JUMPDEST 00001912: SUB 00001913: SWAP1 00001914: LOG1 00001915: PUSH2 0x170d 00001918: JUMP 00001919: JUMPDEST 0000191a: ADD 0000191b: KECCAK256 0000191c: PUSH32 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 0000193d: EQ 0000193e: SWAP1 0000193f: POP 00001940: DUP7 00001941: DUP7 00001942: DUP2 00001943: PUSH2 0x16e5 00001946: JUMP 00001947: JUMPDEST 00001948: PUSH4 0xe2517d3f 0000194d: PUSH1 0xe0 0000194f: SHL 00001950: PUSH1 0x00 00001952: MSTORE 00001953: CALLER 00001954: PUSH1 0x04 00001956: MSTORE 00001957: PUSH32 0x5c42e1a2de17d35e78d4f783ddb8b0669fa78795107f1c2a41ef134e7505e3f8 00001978: PUSH1 0x24 0000197a: MSTORE 0000197b: PUSH1 0x44 0000197d: PUSH1 0x00 0000197f: REVERT 00001980: JUMPDEST 00001981: CALLVALUE 00001982: PUSH2 0x067d 00001985: JUMPI 00001986: PUSH1 0x00 00001988: CALLDATASIZE 00001989: PUSH1 0x03 0000198b: NOT 0000198c: ADD 0000198d: SLT 0000198e: PUSH2 0x067d 00001991: JUMPI 00001992: PUSH1 0x20 00001994: PUSH1 0x06 00001996: SLOAD 00001997: PUSH1 0x40 00001999: MLOAD 0000199a: SWAP1 0000199b: DUP2 0000199c: MSTORE 0000199d: RETURN 0000199e: JUMPDEST 0000199f: CALLVALUE 000019a0: PUSH2 0x067d 000019a3: JUMPI 000019a4: PUSH1 0x20 000019a6: CALLDATASIZE 000019a7: PUSH1 0x03 000019a9: NOT 000019aa: ADD 000019ab: SLT 000019ac: PUSH2 0x067d 000019af: JUMPI 000019b0: PUSH1 0x04 000019b2: CALLDATALOAD 000019b3: PUSH8 0xffffffffffffffff 000019bc: DUP2 000019bd: GT 000019be: PUSH2 0x067d 000019c1: JUMPI 000019c2: PUSH2 0x19cf 000019c5: SWAP1 000019c6: CALLDATASIZE 000019c7: SWAP1 000019c8: PUSH1 0x04 000019ca: ADD 000019cb: PUSH2 0x201c 000019ce: JUMP 000019cf: JUMPDEST 000019d0: SWAP1 000019d1: PUSH2 0x19d8 000019d4: PUSH2 0x27a5 000019d7: JUMP 000019d8: JUMPDEST 000019d9: PUSH1 0xff 000019db: PUSH1 0x40 000019dd: MLOAD 000019de: DUP4 000019df: DUP4 000019e0: DUP3 000019e1: CALLDATACOPY 000019e2: PUSH1 0x20 000019e4: DUP2 000019e5: DUP6 000019e6: DUP2 000019e7: ADD 000019e8: PUSH1 0x0f 000019ea: DUP2 000019eb: MSTORE 000019ec: SUB 000019ed: ADD 000019ee: SWAP1 000019ef: KECCAK256 000019f0: SLOAD 000019f1: AND 000019f2: ISZERO 000019f3: PUSH2 0x05e8 000019f6: JUMPI 000019f7: PUSH1 0xff 000019f9: PUSH1 0x40 000019fb: MLOAD 000019fc: DUP4 000019fd: DUP4 000019fe: DUP3 000019ff: CALLDATACOPY 00001a00: PUSH1 0x20 00001a02: DUP2 00001a03: DUP6 00001a04: DUP2 00001a05: ADD 00001a06: PUSH1 0x0f 00001a08: DUP2 00001a09: MSTORE 00001a0a: SUB 00001a0b: ADD 00001a0c: SWAP1 00001a0d: KECCAK256 00001a0e: SLOAD 00001a0f: PUSH1 0x08 00001a11: SHR 00001a12: AND 00001a13: PUSH2 0x1a71 00001a16: JUMPI 00001a17: PUSH32 0x8eb0a6745000d1ac28cc6e307a2046fa4cf5409af4cd0e49367c7daa3974d2cc 00001a38: SWAP2 00001a39: PUSH1 0x40 00001a3b: MLOAD 00001a3c: DUP2 00001a3d: DUP4 00001a3e: DUP3 00001a3f: CALLDATACOPY 00001a40: PUSH1 0x20 00001a42: DUP2 00001a43: DUP4 00001a44: DUP2 00001a45: ADD 00001a46: PUSH1 0x0f 00001a48: DUP2 00001a49: MSTORE 00001a4a: SUB 00001a4b: ADD 00001a4c: SWAP1 00001a4d: KECCAK256 00001a4e: PUSH2 0x0100 00001a51: PUSH2 0xff00 00001a54: NOT 00001a55: DUP3 00001a56: SLOAD 00001a57: AND 00001a58: OR 00001a59: SWAP1 00001a5a: SSTORE 00001a5b: PUSH2 0x10ae 00001a5e: PUSH1 0x40 00001a60: MLOAD 00001a61: SWAP3 00001a62: DUP4 00001a63: SWAP3 00001a64: PUSH1 0x20 00001a66: DUP5 00001a67: MSTORE 00001a68: PUSH1 0x20 00001a6a: DUP5 00001a6b: ADD 00001a6c: SWAP2 00001a6d: PUSH2 0x225a 00001a70: JUMP 00001a71: JUMPDEST 00001a72: PUSH4 0xd87aeaf1 00001a77: PUSH1 0xe0 00001a79: SHL 00001a7a: PUSH1 0x00 00001a7c: MSTORE 00001a7d: PUSH1 0x04 00001a7f: PUSH1 0x00 00001a81: REVERT 00001a82: JUMPDEST 00001a83: CALLVALUE 00001a84: PUSH2 0x067d 00001a87: JUMPI 00001a88: PUSH1 0x00 00001a8a: CALLDATASIZE 00001a8b: PUSH1 0x03 00001a8d: NOT 00001a8e: ADD 00001a8f: SLT 00001a90: PUSH2 0x067d 00001a93: JUMPI 00001a94: PUSH1 0x20 00001a96: PUSH1 0xff 00001a98: PUSH1 0x0b 00001a9a: SLOAD 00001a9b: PUSH1 0xa0 00001a9d: SHR 00001a9e: AND 00001a9f: PUSH2 0x1aab 00001aa2: PUSH1 0x40 00001aa4: MLOAD 00001aa5: DUP1 00001aa6: SWAP3 00001aa7: PUSH2 0x2060 00001aaa: JUMP 00001aab: JUMPDEST 00001aac: RETURN 00001aad: JUMPDEST 00001aae: CALLVALUE 00001aaf: PUSH2 0x067d 00001ab2: JUMPI 00001ab3: PUSH2 0x1abb 00001ab6: CALLDATASIZE 00001ab7: PUSH2 0x204a 00001aba: JUMP 00001abb: JUMPDEST 00001abc: PUSH2 0x1ac3 00001abf: PUSH2 0x27a5 00001ac2: JUMP 00001ac3: JUMPDEST 00001ac4: PUSH1 0xff 00001ac6: PUSH1 0x0b 00001ac8: SLOAD 00001ac9: PUSH1 0xa0 00001acb: SHR 00001acc: AND 00001acd: PUSH1 0x03 00001acf: DUP2 00001ad0: LT 00001ad1: ISZERO 00001ad2: PUSH2 0x08cc 00001ad5: JUMPI 00001ad6: PUSH1 0x01 00001ad8: SUB 00001ad9: PUSH2 0x0bf3 00001adc: JUMPI 00001add: PUSH1 0xff 00001adf: PUSH2 0x1ae7 00001ae2: DUP4 00001ae3: PUSH2 0x223b 00001ae6: JUMP 00001ae7: JUMPDEST 00001ae8: POP 00001ae9: SLOAD 00001aea: AND 00001aeb: ISZERO 00001aec: PUSH2 0x0e47 00001aef: JUMPI 00001af0: PUSH1 0xff 00001af2: PUSH2 0x1afa 00001af5: DUP4 00001af6: PUSH2 0x223b 00001af9: JUMP 00001afa: JUMPDEST 00001afb: POP 00001afc: SLOAD 00001afd: PUSH1 0x08 00001aff: SHR 00001b00: AND 00001b01: PUSH1 0x03 00001b03: DUP2 00001b04: LT 00001b05: ISZERO 00001b06: PUSH2 0x08cc 00001b09: JUMPI 00001b0a: PUSH2 0x1b3d 00001b0d: JUMPI 00001b0e: PUSH1 0x20 00001b10: DUP2 00001b11: PUSH32 0xd006c5031840180875671abf2f693e0e435af57e95db66c1edbab17d0e097732 00001b32: SWAP3 00001b33: PUSH1 0x01 00001b35: PUSH2 0x1586 00001b38: DUP7 00001b39: PUSH2 0x223b 00001b3c: JUMP 00001b3d: JUMPDEST 00001b3e: PUSH4 0x4691a201 00001b43: PUSH1 0xe0 00001b45: SHL 00001b46: PUSH1 0x00 00001b48: MSTORE 00001b49: PUSH1 0x04 00001b4b: PUSH1 0x00 00001b4d: REVERT 00001b4e: JUMPDEST 00001b4f: CALLVALUE 00001b50: PUSH2 0x067d 00001b53: JUMPI 00001b54: PUSH1 0x20 00001b56: CALLDATASIZE 00001b57: PUSH1 0x03 00001b59: NOT 00001b5a: ADD 00001b5b: SLT 00001b5c: PUSH2 0x067d 00001b5f: JUMPI 00001b60: PUSH1 0x04 00001b62: CALLDATALOAD 00001b63: PUSH2 0x1b6a 00001b66: PUSH2 0x27a5 00001b69: JUMP 00001b6a: JUMPDEST 00001b6b: PUSH8 0x0de0b6b3a7640000 00001b74: DUP2 00001b75: LT 00001b76: PUSH2 0x1baa 00001b79: JUMPI 00001b7a: PUSH1 0x20 00001b7c: DUP2 00001b7d: PUSH32 0x872625bb2664b4062b3ee73c41a6a37a6dfd40299dd84ea14fc29f4b3c995a1c 00001b9e: SWAP3 00001b9f: PUSH1 0x07 00001ba1: SSTORE 00001ba2: PUSH1 0x40 00001ba4: MLOAD 00001ba5: SWAP1 00001ba6: DUP2 00001ba7: MSTORE 00001ba8: LOG1 00001ba9: STOP 00001baa: JUMPDEST 00001bab: PUSH4 0x272a3151 00001bb0: PUSH1 0xe0 00001bb2: SHL 00001bb3: PUSH1 0x00 00001bb5: MSTORE 00001bb6: PUSH1 0x04 00001bb8: PUSH1 0x00 00001bba: REVERT 00001bbb: JUMPDEST 00001bbc: CALLVALUE 00001bbd: PUSH2 0x067d 00001bc0: JUMPI 00001bc1: PUSH1 0x00 00001bc3: CALLDATASIZE 00001bc4: PUSH1 0x03 00001bc6: NOT 00001bc7: ADD 00001bc8: SLT 00001bc9: PUSH2 0x067d 00001bcc: JUMPI 00001bcd: PUSH1 0x20 00001bcf: PUSH1 0x01 00001bd1: PUSH1 0x01 00001bd3: PUSH1 0xa0 00001bd5: SHL 00001bd6: SUB 00001bd7: PUSH1 0x04 00001bd9: SLOAD 00001bda: AND 00001bdb: PUSH1 0x40 00001bdd: MLOAD 00001bde: SWAP1 00001bdf: DUP2 00001be0: MSTORE 00001be1: RETURN 00001be2: JUMPDEST 00001be3: CALLVALUE 00001be4: PUSH2 0x067d 00001be7: JUMPI 00001be8: PUSH1 0x20 00001bea: CALLDATASIZE 00001beb: PUSH1 0x03 00001bed: NOT 00001bee: ADD 00001bef: SLT 00001bf0: PUSH2 0x067d 00001bf3: JUMPI 00001bf4: PUSH1 0x04 00001bf6: CALLDATALOAD 00001bf7: PUSH8 0xffffffffffffffff 00001c00: DUP2 00001c01: GT 00001c02: PUSH2 0x067d 00001c05: JUMPI 00001c06: PUSH2 0x1c13 00001c09: SWAP1 00001c0a: CALLDATASIZE 00001c0b: SWAP1 00001c0c: PUSH1 0x04 00001c0e: ADD 00001c0f: PUSH2 0x201c 00001c12: JUMP 00001c13: JUMPDEST 00001c14: SWAP1 00001c15: PUSH2 0x1c1c 00001c18: PUSH2 0x27a5 00001c1b: JUMP 00001c1c: JUMPDEST 00001c1d: PUSH1 0xff 00001c1f: PUSH1 0x40 00001c21: MLOAD 00001c22: DUP4 00001c23: DUP4 00001c24: DUP3 00001c25: CALLDATACOPY 00001c26: PUSH1 0x20 00001c28: DUP2 00001c29: DUP6 00001c2a: DUP2 00001c2b: ADD 00001c2c: PUSH1 0x0f 00001c2e: DUP2 00001c2f: MSTORE 00001c30: SUB 00001c31: ADD 00001c32: SWAP1 00001c33: KECCAK256 00001c34: SLOAD 00001c35: AND 00001c36: ISZERO 00001c37: PUSH2 0x05e8 00001c3a: JUMPI 00001c3b: PUSH1 0xff 00001c3d: PUSH1 0x40 00001c3f: MLOAD 00001c40: DUP4 00001c41: DUP4 00001c42: DUP3 00001c43: CALLDATACOPY 00001c44: PUSH1 0x20 00001c46: DUP2 00001c47: DUP6 00001c48: DUP2 00001c49: ADD 00001c4a: PUSH1 0x0f 00001c4c: DUP2 00001c4d: MSTORE 00001c4e: SUB 00001c4f: ADD 00001c50: SWAP1 00001c51: KECCAK256 00001c52: SLOAD 00001c53: PUSH1 0x08 00001c55: SHR 00001c56: AND 00001c57: ISZERO 00001c58: PUSH2 0x05d7 00001c5b: JUMPI 00001c5c: PUSH32 0x306d737eda7eb5cdb5ea9736a7893cfe34db76e3174bea5b6b3f371d49216c1d 00001c7d: SWAP2 00001c7e: PUSH1 0x40 00001c80: MLOAD 00001c81: DUP2 00001c82: DUP4 00001c83: DUP3 00001c84: CALLDATACOPY 00001c85: PUSH1 0x20 00001c87: DUP2 00001c88: DUP4 00001c89: DUP2 00001c8a: ADD 00001c8b: PUSH1 0x0f 00001c8d: DUP2 00001c8e: MSTORE 00001c8f: SUB 00001c90: ADD 00001c91: SWAP1 00001c92: KECCAK256 00001c93: PUSH2 0xff00 00001c96: NOT 00001c97: DUP2 00001c98: SLOAD 00001c99: AND 00001c9a: SWAP1 00001c9b: SSTORE 00001c9c: PUSH2 0x10ae 00001c9f: PUSH1 0x40 00001ca1: MLOAD 00001ca2: SWAP3 00001ca3: DUP4 00001ca4: SWAP3 00001ca5: PUSH1 0x20 00001ca7: DUP5 00001ca8: MSTORE 00001ca9: PUSH1 0x20 00001cab: DUP5 00001cac: ADD 00001cad: SWAP2 00001cae: PUSH2 0x225a 00001cb1: JUMP 00001cb2: JUMPDEST 00001cb3: CALLVALUE 00001cb4: PUSH2 0x067d 00001cb7: JUMPI 00001cb8: PUSH1 0x40 00001cba: CALLDATASIZE 00001cbb: PUSH1 0x03 00001cbd: NOT 00001cbe: ADD 00001cbf: SLT 00001cc0: PUSH2 0x067d 00001cc3: JUMPI 00001cc4: PUSH1 0x01 00001cc6: PUSH1 0x01 00001cc8: PUSH1 0xa0 00001cca: SHL 00001ccb: SUB 00001ccc: PUSH2 0x1cd3 00001ccf: PUSH2 0x1ff0 00001cd2: JUMP 00001cd3: JUMPDEST 00001cd4: AND 00001cd5: PUSH1 0x00 00001cd7: MSTORE 00001cd8: PUSH1 0x0c 00001cda: PUSH1 0x20 00001cdc: MSTORE 00001cdd: PUSH1 0x40 00001cdf: PUSH1 0x00 00001ce1: KECCAK256 00001ce2: PUSH1 0x04 00001ce4: CALLDATALOAD 00001ce5: PUSH1 0x00 00001ce7: MSTORE 00001ce8: PUSH1 0x20 00001cea: MSTORE 00001ceb: PUSH1 0x20 00001ced: PUSH1 0x40 00001cef: PUSH1 0x00 00001cf1: KECCAK256 00001cf2: SLOAD 00001cf3: PUSH1 0x40 00001cf5: MLOAD 00001cf6: SWAP1 00001cf7: DUP2 00001cf8: MSTORE 00001cf9: RETURN 00001cfa: JUMPDEST 00001cfb: CALLVALUE 00001cfc: PUSH2 0x067d 00001cff: JUMPI 00001d00: PUSH1 0x40 00001d02: CALLDATASIZE 00001d03: PUSH1 0x03 00001d05: NOT 00001d06: ADD 00001d07: SLT 00001d08: PUSH2 0x067d 00001d0b: JUMPI 00001d0c: PUSH2 0x1d13 00001d0f: PUSH2 0x1ff0 00001d12: JUMP 00001d13: JUMPDEST 00001d14: CALLER 00001d15: PUSH1 0x01 00001d17: PUSH1 0x01 00001d19: PUSH1 0xa0 00001d1b: SHL 00001d1c: SUB 00001d1d: DUP3 00001d1e: AND 00001d1f: SUB 00001d20: PUSH2 0x1d2f 00001d23: JUMPI 00001d24: PUSH2 0x001b 00001d27: SWAP1 00001d28: PUSH1 0x04 00001d2a: CALLDATALOAD 00001d2b: PUSH2 0x28f1 00001d2e: JUMP 00001d2f: JUMPDEST 00001d30: PUSH4 0x334bd919 00001d35: PUSH1 0xe1 00001d37: SHL 00001d38: PUSH1 0x00 00001d3a: MSTORE 00001d3b: PUSH1 0x04 00001d3d: PUSH1 0x00 00001d3f: REVERT 00001d40: JUMPDEST 00001d41: CALLVALUE 00001d42: PUSH2 0x067d 00001d45: JUMPI 00001d46: PUSH1 0x20 00001d48: CALLDATASIZE 00001d49: PUSH1 0x03 00001d4b: NOT 00001d4c: ADD 00001d4d: SLT 00001d4e: PUSH2 0x067d 00001d51: JUMPI 00001d52: PUSH1 0x04 00001d54: CALLDATALOAD 00001d55: PUSH2 0x1d5c 00001d58: PUSH2 0x2733 00001d5b: JUMP 00001d5c: JUMPDEST 00001d5d: PUSH1 0xff 00001d5f: PUSH1 0x0b 00001d61: SLOAD 00001d62: PUSH1 0xa0 00001d64: SHR 00001d65: AND 00001d66: PUSH1 0x03 00001d68: DUP2 00001d69: LT 00001d6a: ISZERO 00001d6b: PUSH2 0x08cc 00001d6e: JUMPI 00001d6f: PUSH1 0x01 00001d71: SUB 00001d72: PUSH2 0x0bf3 00001d75: JUMPI 00001d76: PUSH1 0xff 00001d78: PUSH2 0x1d80 00001d7b: DUP3 00001d7c: PUSH2 0x223b 00001d7f: JUMP 00001d80: JUMPDEST 00001d81: POP 00001d82: SLOAD 00001d83: AND 00001d84: ISZERO 00001d85: PUSH2 0x0e47 00001d88: JUMPI 00001d89: PUSH1 0x06 00001d8b: SLOAD 00001d8c: PUSH1 0xff 00001d8e: PUSH2 0x1d96 00001d91: DUP3 00001d92: PUSH2 0x223b 00001d95: JUMP 00001d96: JUMPDEST 00001d97: POP 00001d98: SLOAD 00001d99: PUSH1 0x08 00001d9b: SHR 00001d9c: AND 00001d9d: PUSH1 0x03 00001d9f: DUP2 00001da0: LT 00001da1: ISZERO 00001da2: PUSH2 0x08cc 00001da5: JUMPI 00001da6: PUSH1 0x01 00001da8: EQ 00001da9: PUSH2 0x1df0 00001dac: JUMPI 00001dad: JUMPDEST 00001dae: POP 00001daf: PUSH2 0x1db7 00001db2: DUP2 00001db3: PUSH2 0x223b 00001db6: JUMP 00001db7: JUMPDEST 00001db8: POP 00001db9: PUSH2 0x0100 00001dbc: PUSH2 0xff00 00001dbf: NOT 00001dc0: DUP3 00001dc1: SLOAD 00001dc2: AND 00001dc3: OR 00001dc4: SWAP1 00001dc5: SSTORE 00001dc6: DUP1 00001dc7: PUSH1 0x06 00001dc9: SSTORE 00001dca: PUSH32 0x1d43fb703e6eb9b1472bc95a5806edf8d7c700c4cb5c3ab570c7ac1eed12e72e 00001deb: PUSH1 0x00 00001ded: DUP1 00001dee: LOG2 00001def: STOP 00001df0: JUMPDEST 00001df1: PUSH2 0x1df9 00001df4: SWAP1 00001df5: PUSH2 0x223b 00001df8: JUMP 00001df9: JUMPDEST 00001dfa: POP 00001dfb: DUP1 00001dfc: SLOAD 00001dfd: PUSH2 0xff00 00001e00: NOT 00001e01: AND 00001e02: PUSH2 0x0200 00001e05: OR 00001e06: SWAP1 00001e07: SSTORE 00001e08: DUP2 00001e09: PUSH2 0x1dad 00001e0c: JUMP 00001e0d: JUMPDEST 00001e0e: CALLVALUE 00001e0f: PUSH2 0x067d 00001e12: JUMPI 00001e13: PUSH1 0x40 00001e15: CALLDATASIZE 00001e16: PUSH1 0x03 00001e18: NOT 00001e19: ADD 00001e1a: SLT 00001e1b: PUSH2 0x067d 00001e1e: JUMPI 00001e1f: PUSH2 0x001b 00001e22: PUSH1 0x04 00001e24: CALLDATALOAD 00001e25: PUSH2 0x1e2c 00001e28: PUSH2 0x1ff0 00001e2b: JUMP 00001e2c: JUMPDEST 00001e2d: SWAP1 00001e2e: PUSH2 0x1e48 00001e31: PUSH2 0x093b 00001e34: DUP3 00001e35: PUSH1 0x00 00001e37: MSTORE 00001e38: PUSH1 0x02 00001e3a: PUSH1 0x20 00001e3c: MSTORE 00001e3d: PUSH1 0x01 00001e3f: PUSH1 0x40 00001e41: PUSH1 0x00 00001e43: KECCAK256 00001e44: ADD 00001e45: SLOAD 00001e46: SWAP1 00001e47: JUMP 00001e48: JUMPDEST 00001e49: PUSH2 0x285e 00001e4c: JUMP 00001e4d: JUMPDEST 00001e4e: CALLVALUE 00001e4f: PUSH2 0x067d 00001e52: JUMPI 00001e53: PUSH1 0x20 00001e55: CALLDATASIZE 00001e56: PUSH1 0x03 00001e58: NOT 00001e59: ADD 00001e5a: SLT 00001e5b: PUSH2 0x067d 00001e5e: JUMPI 00001e5f: PUSH1 0x20 00001e61: PUSH2 0x09d3 00001e64: PUSH1 0x04 00001e66: CALLDATALOAD 00001e67: PUSH1 0x00 00001e69: MSTORE 00001e6a: PUSH1 0x02 00001e6c: PUSH1 0x20 00001e6e: MSTORE 00001e6f: PUSH1 0x01 00001e71: PUSH1 0x40 00001e73: PUSH1 0x00 00001e75: KECCAK256 00001e76: ADD 00001e77: SLOAD 00001e78: SWAP1 00001e79: JUMP 00001e7a: JUMPDEST 00001e7b: CALLVALUE 00001e7c: PUSH2 0x067d 00001e7f: JUMPI 00001e80: PUSH1 0x00 00001e82: CALLDATASIZE 00001e83: PUSH1 0x03 00001e85: NOT 00001e86: ADD 00001e87: SLT 00001e88: PUSH2 0x067d 00001e8b: JUMPI 00001e8c: PUSH1 0x20 00001e8e: PUSH1 0x40 00001e90: MLOAD 00001e91: PUSH32 0x5c42e1a2de17d35e78d4f783ddb8b0669fa78795107f1c2a41ef134e7505e3f8 00001eb2: DUP2 00001eb3: MSTORE 00001eb4: RETURN 00001eb5: JUMPDEST 00001eb6: CALLVALUE 00001eb7: PUSH2 0x067d 00001eba: JUMPI 00001ebb: PUSH1 0x00 00001ebd: CALLDATASIZE 00001ebe: PUSH1 0x03 00001ec0: NOT 00001ec1: ADD 00001ec2: SLT 00001ec3: PUSH2 0x067d 00001ec6: JUMPI 00001ec7: PUSH2 0x1ece 00001eca: PUSH2 0x26e0 00001ecd: JUMP 00001ece: JUMPDEST 00001ecf: PUSH1 0xff 00001ed1: PUSH1 0x0b 00001ed3: SLOAD 00001ed4: PUSH1 0xa0 00001ed6: SHR 00001ed7: AND 00001ed8: PUSH1 0x03 00001eda: DUP2 00001edb: LT 00001edc: ISZERO 00001edd: PUSH2 0x08cc 00001ee0: JUMPI 00001ee1: PUSH1 0x01 00001ee3: SUB 00001ee4: PUSH2 0x0bf3 00001ee7: JUMPI 00001ee8: PUSH21 0x020000000000000000000000000000000000000000 00001efe: PUSH1 0xff 00001f00: PUSH1 0xa0 00001f02: SHL 00001f03: NOT 00001f04: PUSH1 0x0b 00001f06: SLOAD 00001f07: AND 00001f08: OR 00001f09: PUSH1 0x0b 00001f0b: SSTORE 00001f0c: PUSH32 0x7101a660456a4e2f94e6b0ccd3d6a034724e26130a817471aaf5a3de8fba384a 00001f2d: PUSH1 0x20 00001f2f: PUSH1 0xff 00001f31: PUSH1 0x0b 00001f33: SLOAD 00001f34: PUSH1 0xa0 00001f36: SHR 00001f37: AND 00001f38: PUSH2 0x0c90 00001f3b: PUSH1 0x40 00001f3d: MLOAD 00001f3e: DUP1 00001f3f: SWAP3 00001f40: PUSH2 0x2060 00001f43: JUMP 00001f44: JUMPDEST 00001f45: CALLVALUE 00001f46: PUSH2 0x067d 00001f49: JUMPI 00001f4a: PUSH1 0x00 00001f4c: CALLDATASIZE 00001f4d: PUSH1 0x03 00001f4f: NOT 00001f50: ADD 00001f51: SLT 00001f52: PUSH2 0x067d 00001f55: JUMPI 00001f56: PUSH2 0x1f5d 00001f59: PUSH2 0x26e0 00001f5c: JUMP 00001f5d: JUMPDEST 00001f5e: PUSH32 0x0296f2c4dbc8c0e53c0ffab63f84aeebd5c28aa143475a37346bf15ac003f327 00001f7f: PUSH1 0x20 00001f81: SELFBALANCE 00001f82: PUSH1 0x00 00001f84: DUP1 00001f85: DUP1 00001f86: DUP1 00001f87: DUP5 00001f88: CALLER 00001f89: GAS 00001f8a: CALL 00001f8b: POP 00001f8c: PUSH2 0x1f93 00001f8f: PUSH2 0x220b 00001f92: JUMP 00001f93: JUMPDEST 00001f94: POP 00001f95: PUSH1 0x40 00001f97: MLOAD 00001f98: SWAP1 00001f99: DUP2 00001f9a: MSTORE 00001f9b: LOG1 00001f9c: STOP 00001f9d: JUMPDEST 00001f9e: CALLVALUE 00001f9f: PUSH2 0x067d 00001fa2: JUMPI 00001fa3: PUSH1 0x20 00001fa5: CALLDATASIZE 00001fa6: PUSH1 0x03 00001fa8: NOT 00001fa9: ADD 00001faa: SLT 00001fab: PUSH2 0x067d 00001fae: JUMPI 00001faf: PUSH1 0x04 00001fb1: CALLDATALOAD 00001fb2: SWAP1 00001fb3: PUSH4 0xffffffff 00001fb8: PUSH1 0xe0 00001fba: SHL 00001fbb: DUP3 00001fbc: AND 00001fbd: DUP1 00001fbe: SWAP3 00001fbf: SUB 00001fc0: PUSH2 0x067d 00001fc3: JUMPI 00001fc4: PUSH1 0x20 00001fc6: SWAP2 00001fc7: PUSH4 0x7965db0b 00001fcc: PUSH1 0xe0 00001fce: SHL 00001fcf: DUP2 00001fd0: EQ 00001fd1: SWAP1 00001fd2: DUP2 00001fd3: ISZERO 00001fd4: PUSH2 0x1fdf 00001fd7: JUMPI 00001fd8: JUMPDEST 00001fd9: POP 00001fda: ISZERO 00001fdb: ISZERO 00001fdc: DUP2 00001fdd: MSTORE 00001fde: RETURN 00001fdf: JUMPDEST 00001fe0: PUSH4 0x01ffc9a7 00001fe5: PUSH1 0xe0 00001fe7: SHL 00001fe8: EQ 00001fe9: SWAP1 00001fea: POP 00001feb: DUP4 00001fec: PUSH2 0x1fd8 00001fef: JUMP 00001ff0: JUMPDEST 00001ff1: PUSH1 0x24 00001ff3: CALLDATALOAD 00001ff4: SWAP1 00001ff5: PUSH1 0x01 00001ff7: PUSH1 0x01 00001ff9: PUSH1 0xa0 00001ffb: SHL 00001ffc: SUB 00001ffd: DUP3 00001ffe: AND 00001fff: DUP3 00002000: SUB 00002001: PUSH2 0x067d 00002004: JUMPI 00002005: JUMP 00002006: JUMPDEST 00002007: PUSH1 0x04 00002009: CALLDATALOAD 0000200a: SWAP1 0000200b: PUSH1 0x01 0000200d: PUSH1 0x01 0000200f: PUSH1 0xa0 00002011: SHL 00002012: SUB 00002013: DUP3 00002014: AND 00002015: DUP3 00002016: SUB 00002017: PUSH2 0x067d 0000201a: JUMPI 0000201b: JUMP 0000201c: JUMPDEST 0000201d: SWAP2 0000201e: DUP2 0000201f: PUSH1 0x1f 00002021: DUP5 00002022: ADD 00002023: SLT 00002024: ISZERO 00002025: PUSH2 0x067d 00002028: JUMPI 00002029: DUP3 0000202a: CALLDATALOAD 0000202b: SWAP2 0000202c: PUSH8 0xffffffffffffffff 00002035: DUP4 00002036: GT 00002037: PUSH2 0x067d 0000203a: JUMPI 0000203b: PUSH1 0x20 0000203d: DUP4 0000203e: DUP2 0000203f: DUP7 00002040: ADD 00002041: SWAP6 00002042: ADD 00002043: ADD 00002044: GT 00002045: PUSH2 0x067d 00002048: JUMPI 00002049: JUMP 0000204a: JUMPDEST 0000204b: PUSH1 0x40 0000204d: SWAP1 0000204e: PUSH1 0x03 00002050: NOT 00002051: ADD 00002052: SLT 00002053: PUSH2 0x067d 00002056: JUMPI 00002057: PUSH1 0x04 00002059: CALLDATALOAD 0000205a: SWAP1 0000205b: PUSH1 0x24 0000205d: CALLDATALOAD 0000205e: SWAP1 0000205f: JUMP 00002060: JUMPDEST 00002061: SWAP1 00002062: PUSH1 0x03 00002064: DUP3 00002065: LT 00002066: ISZERO 00002067: PUSH2 0x08cc 0000206a: JUMPI 0000206b: MSTORE 0000206c: JUMP 0000206d: JUMPDEST 0000206e: SWAP2 0000206f: DUP2 00002070: PUSH1 0x1f 00002072: DUP5 00002073: ADD 00002074: SLT 00002075: ISZERO 00002076: PUSH2 0x067d 00002079: JUMPI 0000207a: DUP3 0000207b: CALLDATALOAD 0000207c: SWAP2 0000207d: PUSH8 0xffffffffffffffff 00002086: DUP4 00002087: GT 00002088: PUSH2 0x067d 0000208b: JUMPI 0000208c: PUSH1 0x20 0000208e: DUP1 0000208f: DUP6 00002090: ADD 00002091: SWAP5 00002092: DUP5 00002093: PUSH1 0x05 00002095: SHL 00002096: ADD 00002097: ADD 00002098: GT 00002099: PUSH2 0x067d 0000209c: JUMPI 0000209d: JUMP 0000209e: JUMPDEST 0000209f: PUSH1 0x00 000020a1: JUMPDEST 000020a2: DUP4 000020a3: DUP2 000020a4: LT 000020a5: PUSH2 0x20b1 000020a8: JUMPI 000020a9: POP 000020aa: POP 000020ab: PUSH1 0x00 000020ad: SWAP2 000020ae: ADD 000020af: MSTORE 000020b0: JUMP 000020b1: JUMPDEST 000020b2: DUP2 000020b3: DUP2 000020b4: ADD 000020b5: MLOAD 000020b6: DUP4 000020b7: DUP3 000020b8: ADD 000020b9: MSTORE 000020ba: PUSH1 0x20 000020bc: ADD 000020bd: PUSH2 0x20a1 000020c0: JUMP 000020c1: JUMPDEST 000020c2: SWAP1 000020c3: PUSH1 0x20 000020c5: SWAP2 000020c6: PUSH2 0x20da 000020c9: DUP2 000020ca: MLOAD 000020cb: DUP1 000020cc: SWAP3 000020cd: DUP2 000020ce: DUP6 000020cf: MSTORE 000020d0: DUP6 000020d1: DUP1 000020d2: DUP7 000020d3: ADD 000020d4: SWAP2 000020d5: ADD 000020d6: PUSH2 0x209e 000020d9: JUMP 000020da: JUMPDEST 000020db: PUSH1 0x1f 000020dd: ADD 000020de: PUSH1 0x1f 000020e0: NOT 000020e1: AND 000020e2: ADD 000020e3: ADD 000020e4: SWAP1 000020e5: JUMP 000020e6: JUMPDEST 000020e7: SWAP1 000020e8: PUSH1 0x40 000020ea: PUSH1 0x03 000020ec: NOT 000020ed: DUP4 000020ee: ADD 000020ef: SLT 000020f0: PUSH2 0x067d 000020f3: JUMPI 000020f4: PUSH1 0x04 000020f6: CALLDATALOAD 000020f7: PUSH1 0x01 000020f9: PUSH1 0x01 000020fb: PUSH1 0xa0 000020fd: SHL 000020fe: SUB 000020ff: DUP2 00002100: AND 00002101: DUP2 00002102: SUB 00002103: PUSH2 0x067d 00002106: JUMPI 00002107: SWAP2 00002108: PUSH1 0x24 0000210a: CALLDATALOAD 0000210b: SWAP1 0000210c: PUSH8 0xffffffffffffffff 00002115: DUP3 00002116: GT 00002117: PUSH2 0x067d 0000211a: JUMPI 0000211b: PUSH2 0x2126 0000211e: SWAP2 0000211f: PUSH1 0x04 00002121: ADD 00002122: PUSH2 0x201c 00002125: JUMP 00002126: JUMPDEST 00002127: SWAP1 00002128: SWAP2 00002129: JUMP 0000212a: JUMPDEST 0000212b: PUSH1 0x40 0000212d: DUP2 0000212e: ADD 0000212f: SWAP1 00002130: DUP2 00002131: LT 00002132: PUSH8 0xffffffffffffffff 0000213b: DUP3 0000213c: GT 0000213d: OR 0000213e: PUSH2 0x0dc4 00002141: JUMPI 00002142: PUSH1 0x40 00002144: MSTORE 00002145: JUMP 00002146: JUMPDEST 00002147: PUSH1 0xa0 00002149: DUP2 0000214a: ADD 0000214b: SWAP1 0000214c: DUP2 0000214d: LT 0000214e: PUSH8 0xffffffffffffffff 00002157: DUP3 00002158: GT 00002159: OR 0000215a: PUSH2 0x0dc4 0000215d: JUMPI 0000215e: PUSH1 0x40 00002160: MSTORE 00002161: JUMP 00002162: JUMPDEST 00002163: PUSH1 0x80 00002165: DUP2 00002166: ADD 00002167: SWAP1 00002168: DUP2 00002169: LT 0000216a: PUSH8 0xffffffffffffffff 00002173: DUP3 00002174: GT 00002175: OR 00002176: PUSH2 0x0dc4 00002179: JUMPI 0000217a: PUSH1 0x40 0000217c: MSTORE 0000217d: JUMP 0000217e: JUMPDEST 0000217f: SWAP1 00002180: PUSH1 0x1f 00002182: DUP1 00002183: NOT 00002184: SWAP2 00002185: ADD 00002186: AND 00002187: DUP2 00002188: ADD 00002189: SWAP1 0000218a: DUP2 0000218b: LT 0000218c: PUSH8 0xffffffffffffffff 00002195: DUP3 00002196: GT 00002197: OR 00002198: PUSH2 0x0dc4 0000219b: JUMPI 0000219c: PUSH1 0x40 0000219e: MSTORE 0000219f: JUMP 000021a0: JUMPDEST 000021a1: PUSH8 0xffffffffffffffff 000021aa: DUP2 000021ab: GT 000021ac: PUSH2 0x0dc4 000021af: JUMPI 000021b0: PUSH1 0x05 000021b2: SHL 000021b3: PUSH1 0x20 000021b5: ADD 000021b6: SWAP1 000021b7: JUMP 000021b8: JUMPDEST 000021b9: PUSH8 0xffffffffffffffff 000021c2: DUP2 000021c3: GT 000021c4: PUSH2 0x0dc4 000021c7: JUMPI 000021c8: PUSH1 0x1f 000021ca: ADD 000021cb: PUSH1 0x1f 000021cd: NOT 000021ce: AND 000021cf: PUSH1 0x20 000021d1: ADD 000021d2: SWAP1 000021d3: JUMP 000021d4: JUMPDEST 000021d5: SWAP3 000021d6: SWAP2 000021d7: SWAP3 000021d8: PUSH2 0x21e0 000021db: DUP3 000021dc: PUSH2 0x21b8 000021df: JUMP 000021e0: JUMPDEST 000021e1: SWAP2 000021e2: PUSH2 0x21ee 000021e5: PUSH1 0x40 000021e7: MLOAD 000021e8: SWAP4 000021e9: DUP5 000021ea: PUSH2 0x217e 000021ed: JUMP 000021ee: JUMPDEST 000021ef: DUP3 000021f0: SWAP5 000021f1: DUP2 000021f2: DUP5 000021f3: MSTORE 000021f4: DUP2 000021f5: DUP4 000021f6: ADD 000021f7: GT 000021f8: PUSH2 0x067d 000021fb: JUMPI 000021fc: DUP3 000021fd: DUP2 000021fe: PUSH1 0x20 00002200: SWAP4 00002201: DUP5 00002202: PUSH1 0x00 00002204: SWAP7 00002205: ADD 00002206: CALLDATACOPY 00002207: ADD 00002208: ADD 00002209: MSTORE 0000220a: JUMP 0000220b: JUMPDEST 0000220c: RETURNDATASIZE 0000220d: ISZERO 0000220e: PUSH2 0x2236 00002211: JUMPI 00002212: RETURNDATASIZE 00002213: SWAP1 00002214: PUSH2 0x221c 00002217: DUP3 00002218: PUSH2 0x21b8 0000221b: JUMP 0000221c: JUMPDEST 0000221d: SWAP2 0000221e: PUSH2 0x222a 00002221: PUSH1 0x40 00002223: MLOAD 00002224: SWAP4 00002225: DUP5 00002226: PUSH2 0x217e 00002229: JUMP 0000222a: JUMPDEST 0000222b: DUP3 0000222c: MSTORE 0000222d: RETURNDATASIZE 0000222e: PUSH1 0x00 00002230: PUSH1 0x20 00002232: DUP5 00002233: ADD 00002234: RETURNDATACOPY 00002235: JUMP 00002236: JUMPDEST 00002237: PUSH1 0x60 00002239: SWAP1 0000223a: JUMP 0000223b: JUMPDEST 0000223c: PUSH1 0x11 0000223e: SLOAD 0000223f: DUP2 00002240: LT 00002241: ISZERO 00002242: PUSH2 0x12d3 00002245: JUMPI 00002246: PUSH1 0x11 00002248: PUSH1 0x00 0000224a: MSTORE 0000224b: PUSH1 0x20 0000224d: PUSH1 0x00 0000224f: KECCAK256 00002250: SWAP1 00002251: PUSH1 0x02 00002253: SHL 00002254: ADD 00002255: SWAP1 00002256: PUSH1 0x00 00002258: SWAP1 00002259: JUMP 0000225a: JUMPDEST 0000225b: SWAP1 0000225c: DUP1 0000225d: PUSH1 0x20 0000225f: SWAP4 00002260: SWAP3 00002261: DUP2 00002262: DUP5 00002263: MSTORE 00002264: DUP5 00002265: DUP5 00002266: ADD 00002267: CALLDATACOPY 00002268: PUSH1 0x00 0000226a: DUP3 0000226b: DUP3 0000226c: ADD 0000226d: DUP5 0000226e: ADD 0000226f: MSTORE 00002270: PUSH1 0x1f 00002272: ADD 00002273: PUSH1 0x1f 00002275: NOT 00002276: AND 00002277: ADD 00002278: ADD 00002279: SWAP1 0000227a: JUMP 0000227b: JUMPDEST 0000227c: SWAP2 0000227d: SWAP1 0000227e: DUP3 0000227f: ADD 00002280: DUP1 00002281: SWAP3 00002282: GT 00002283: PUSH2 0x134b 00002286: JUMPI 00002287: JUMP 00002288: JUMPDEST 00002289: SWAP1 0000228a: PUSH2 0x22a2 0000228d: SWAP1 0000228e: PUSH1 0x40 00002290: SWAP4 00002291: SWAP7 00002292: SWAP6 00002293: SWAP5 00002294: SWAP7 00002295: PUSH1 0x60 00002297: DUP5 00002298: MSTORE 00002299: PUSH1 0x60 0000229b: DUP5 0000229c: ADD 0000229d: SWAP2 0000229e: PUSH2 0x225a 000022a1: JUMP 000022a2: JUMPDEST 000022a3: SWAP5 000022a4: PUSH1 0x20 000022a6: DUP3 000022a7: ADD 000022a8: MSTORE 000022a9: ADD 000022aa: MSTORE 000022ab: JUMP 000022ac: JUMPDEST 000022ad: SWAP1 000022ae: PUSH1 0x01 000022b0: DUP3 000022b1: DUP2 000022b2: SHR 000022b3: SWAP3 000022b4: AND 000022b5: DUP1 000022b6: ISZERO 000022b7: PUSH2 0x22dc 000022ba: JUMPI 000022bb: JUMPDEST 000022bc: PUSH1 0x20 000022be: DUP4 000022bf: LT 000022c0: EQ 000022c1: PUSH2 0x22c6 000022c4: JUMPI 000022c5: JUMP 000022c6: JUMPDEST 000022c7: PUSH4 0x4e487b71 000022cc: PUSH1 0xe0 000022ce: SHL 000022cf: PUSH1 0x00 000022d1: MSTORE 000022d2: PUSH1 0x22 000022d4: PUSH1 0x04 000022d6: MSTORE 000022d7: PUSH1 0x24 000022d9: PUSH1 0x00 000022db: REVERT 000022dc: JUMPDEST 000022dd: SWAP2 000022de: PUSH1 0x7f 000022e0: AND 000022e1: SWAP2 000022e2: PUSH2 0x22bb 000022e5: JUMP 000022e6: JUMPDEST 000022e7: SWAP2 000022e8: SWAP1 000022e9: DUP2 000022ea: LT 000022eb: ISZERO 000022ec: PUSH2 0x12d3 000022ef: JUMPI 000022f0: PUSH1 0x05 000022f2: SHL 000022f3: ADD 000022f4: SWAP1 000022f5: JUMP 000022f6: JUMPDEST 000022f7: PUSH1 0x0a 000022f9: SLOAD 000022fa: DUP2 000022fb: LT 000022fc: ISZERO 000022fd: PUSH2 0x12d3 00002300: JUMPI 00002301: PUSH1 0x0a 00002303: PUSH1 0x00 00002305: MSTORE 00002306: PUSH1 0x20 00002308: PUSH1 0x00 0000230a: KECCAK256 0000230b: SWAP1 0000230c: PUSH1 0x01 0000230e: SHL 0000230f: ADD 00002310: SWAP1 00002311: PUSH1 0x00 00002313: SWAP1 00002314: JUMP 00002315: JUMPDEST 00002316: PUSH1 0x06 00002318: SLOAD 00002319: PUSH1 0xff 0000231b: PUSH2 0x2323 0000231e: DUP3 0000231f: PUSH2 0x223b 00002322: JUMP 00002323: JUMPDEST 00002324: POP 00002325: SLOAD 00002326: PUSH1 0x08 00002328: SHR 00002329: AND 0000232a: PUSH1 0x03 0000232c: DUP2 0000232d: LT 0000232e: ISZERO 0000232f: PUSH2 0x08cc 00002332: JUMPI 00002333: PUSH1 0x01 00002335: EQ 00002336: PUSH2 0x233f 00002339: JUMPI 0000233a: POP 0000233b: PUSH1 0x00 0000233d: SWAP1 0000233e: JUMP 0000233f: JUMPDEST 00002340: PUSH2 0x234a 00002343: PUSH1 0x01 00002345: SWAP2 00002346: PUSH2 0x223b 00002349: JUMP 0000234a: JUMPDEST 0000234b: POP 0000234c: ADD 0000234d: SLOAD 0000234e: SWAP1 0000234f: JUMP 00002350: JUMPDEST 00002351: PUSH1 0x00 00002353: SWAP3 00002354: SWAP2 00002355: DUP2 00002356: SLOAD 00002357: SWAP2 00002358: PUSH2 0x2360 0000235b: DUP4 0000235c: PUSH2 0x22ac 0000235f: JUMP 00002360: JUMPDEST 00002361: DUP1 00002362: DUP4 00002363: MSTORE 00002364: SWAP3 00002365: PUSH1 0x01 00002367: DUP2 00002368: AND 00002369: SWAP1 0000236a: DUP2 0000236b: ISZERO 0000236c: PUSH2 0x23b6 0000236f: JUMPI 00002370: POP 00002371: PUSH1 0x01 00002373: EQ 00002374: PUSH2 0x237c 00002377: JUMPI 00002378: POP 00002379: POP 0000237a: POP 0000237b: JUMP 0000237c: JUMPDEST 0000237d: PUSH1 0x00 0000237f: SWAP1 00002380: DUP2 00002381: MSTORE 00002382: PUSH1 0x20 00002384: DUP2 00002385: KECCAK256 00002386: SWAP4 00002387: SWAP5 00002388: POP 00002389: SWAP2 0000238a: SWAP3 0000238b: JUMPDEST 0000238c: DUP4 0000238d: DUP4 0000238e: LT 0000238f: PUSH2 0x239c 00002392: JUMPI 00002393: POP 00002394: PUSH1 0x20 00002396: SWAP3 00002397: POP 00002398: ADD 00002399: ADD 0000239a: SWAP1 0000239b: JUMP 0000239c: JUMPDEST 0000239d: PUSH1 0x01 0000239f: DUP2 000023a0: PUSH1 0x20 000023a2: SWAP3 000023a3: SWAP5 000023a4: SWAP4 000023a5: SWAP5 000023a6: SLOAD 000023a7: DUP4 000023a8: DUP6 000023a9: DUP8 000023aa: ADD 000023ab: ADD 000023ac: MSTORE 000023ad: ADD 000023ae: SWAP2 000023af: ADD 000023b0: SWAP2 000023b1: SWAP1 000023b2: PUSH2 0x238b 000023b5: JUMP 000023b6: JUMPDEST 000023b7: SWAP2 000023b8: POP 000023b9: POP 000023ba: PUSH1 0x20 000023bc: SWAP4 000023bd: SWAP5 000023be: POP 000023bf: PUSH1 0xff 000023c1: SWAP3 000023c2: SWAP2 000023c3: SWAP3 000023c4: NOT 000023c5: AND 000023c6: DUP4 000023c7: DUP4 000023c8: ADD 000023c9: MSTORE 000023ca: ISZERO 000023cb: ISZERO 000023cc: PUSH1 0x05 000023ce: SHL 000023cf: ADD 000023d0: ADD 000023d1: SWAP1 000023d2: JUMP 000023d3: JUMPDEST 000023d4: PUSH1 0xff 000023d6: PUSH1 0x12 000023d8: SLOAD 000023d9: AND 000023da: PUSH2 0x2582 000023dd: JUMPI 000023de: PUSH1 0x01 000023e0: PUSH1 0x01 000023e2: PUSH1 0xa0 000023e4: SHL 000023e5: SUB 000023e6: AND 000023e7: DUP1 000023e8: PUSH1 0x00 000023ea: MSTORE 000023eb: PUSH1 0x0d 000023ed: PUSH1 0x20 000023ef: MSTORE 000023f0: PUSH1 0x40 000023f2: PUSH1 0x00 000023f4: KECCAK256 000023f5: PUSH1 0x40 000023f7: MLOAD 000023f8: SWAP1 000023f9: DUP2 000023fa: PUSH1 0x00 000023fc: DUP3 000023fd: SLOAD 000023fe: SWAP3 000023ff: PUSH2 0x2407 00002402: DUP5 00002403: PUSH2 0x22ac 00002406: JUMP 00002407: JUMPDEST 00002408: SWAP4 00002409: PUSH1 0x01 0000240b: DUP2 0000240c: AND 0000240d: SWAP1 0000240e: DUP2 0000240f: ISZERO 00002410: PUSH2 0x2568 00002413: JUMPI 00002414: POP 00002415: PUSH1 0x01 00002417: EQ 00002418: PUSH2 0x252c 0000241b: JUMPI 0000241c: JUMPDEST 0000241d: POP 0000241e: PUSH1 0x20 00002420: SWAP3 00002421: POP 00002422: PUSH1 0x0f 00002424: DUP2 00002425: MSTORE 00002426: SUB 00002427: ADD 00002428: SWAP1 00002429: KECCAK256 0000242a: PUSH1 0x40 0000242c: MLOAD 0000242d: SWAP1 0000242e: PUSH2 0x2436 00002431: DUP3 00002432: PUSH2 0x2162 00002435: JUMP 00002436: JUMPDEST 00002437: DUP1 00002438: SLOAD 00002439: SWAP2 0000243a: PUSH1 0x60 0000243c: PUSH1 0x02 0000243e: PUSH1 0xff 00002440: DUP1 00002441: DUP7 00002442: AND 00002443: ISZERO 00002444: ISZERO 00002445: SWAP6 00002446: DUP7 00002447: DUP6 00002448: MSTORE 00002449: PUSH1 0x08 0000244b: SHR 0000244c: AND 0000244d: ISZERO 0000244e: ISZERO 0000244f: SWAP4 00002450: DUP5 00002451: PUSH1 0x20 00002453: DUP6 00002454: ADD 00002455: MSTORE 00002456: PUSH1 0x01 00002458: DUP2 00002459: ADD 0000245a: SLOAD 0000245b: PUSH1 0x40 0000245d: DUP6 0000245e: ADD 0000245f: MSTORE 00002460: ADD 00002461: SLOAD 00002462: SWAP2 00002463: ADD 00002464: MSTORE 00002465: DUP2 00002466: PUSH2 0x2524 00002469: JUMPI 0000246a: JUMPDEST 0000246b: POP 0000246c: PUSH2 0x24fb 0000246f: JUMPI 00002470: POP 00002471: PUSH1 0x40 00002473: MLOAD 00002474: DUP3 00002475: DUP3 00002476: DUP3 00002477: CALLDATACOPY 00002478: PUSH1 0x20 0000247a: DUP2 0000247b: DUP5 0000247c: DUP2 0000247d: ADD 0000247e: PUSH1 0x0f 00002480: DUP2 00002481: MSTORE 00002482: SUB 00002483: ADD 00002484: SWAP1 00002485: KECCAK256 00002486: PUSH1 0x40 00002488: MLOAD 00002489: SWAP1 0000248a: PUSH2 0x2492 0000248d: DUP3 0000248e: PUSH2 0x2162 00002491: JUMP 00002492: JUMPDEST 00002493: DUP1 00002494: SLOAD 00002495: SWAP2 00002496: PUSH1 0xff 00002498: DUP4 00002499: AND 0000249a: ISZERO 0000249b: SWAP1 0000249c: PUSH1 0x60 0000249e: PUSH1 0x02 000024a0: PUSH1 0xff 000024a2: DUP5 000024a3: ISZERO 000024a4: SWAP7 000024a5: DUP8 000024a6: DUP6 000024a7: MSTORE 000024a8: PUSH1 0x08 000024aa: SHR 000024ab: AND 000024ac: ISZERO 000024ad: ISZERO 000024ae: SWAP5 000024af: DUP6 000024b0: PUSH1 0x20 000024b2: DUP6 000024b3: ADD 000024b4: MSTORE 000024b5: PUSH1 0x01 000024b7: DUP2 000024b8: ADD 000024b9: SLOAD 000024ba: PUSH1 0x40 000024bc: DUP6 000024bd: ADD 000024be: MSTORE 000024bf: ADD 000024c0: SLOAD 000024c1: SWAP2 000024c2: ADD 000024c3: MSTORE 000024c4: SWAP2 000024c5: PUSH2 0x24f3 000024c8: JUMPI 000024c9: JUMPDEST 000024ca: POP 000024cb: PUSH2 0x24e5 000024ce: JUMPI 000024cf: POP 000024d0: POP 000024d1: PUSH1 0x40 000024d3: MLOAD 000024d4: PUSH2 0x24de 000024d7: PUSH1 0x20 000024d9: DUP3 000024da: PUSH2 0x217e 000024dd: JUMP 000024de: JUMPDEST 000024df: PUSH1 0x00 000024e1: DUP2 000024e2: MSTORE 000024e3: SWAP1 000024e4: JUMP 000024e5: JUMPDEST 000024e6: PUSH2 0x24f0 000024e9: SWAP2 000024ea: CALLDATASIZE 000024eb: SWAP2 000024ec: PUSH2 0x21d4 000024ef: JUMP 000024f0: JUMPDEST 000024f1: SWAP1 000024f2: JUMP 000024f3: JUMPDEST 000024f4: SWAP1 000024f5: POP 000024f6: CODESIZE 000024f7: PUSH2 0x24c9 000024fa: JUMP 000024fb: JUMPDEST 000024fc: SWAP2 000024fd: POP 000024fe: POP 000024ff: PUSH1 0x00 00002501: MSTORE 00002502: PUSH1 0x0d 00002504: PUSH1 0x20 00002506: MSTORE 00002507: PUSH2 0x251d 0000250a: PUSH2 0x24f0 0000250d: PUSH1 0x40 0000250f: PUSH1 0x00 00002511: KECCAK256 00002512: PUSH1 0x40 00002514: MLOAD 00002515: SWAP3 00002516: DUP4 00002517: DUP1 00002518: SWAP3 00002519: PUSH2 0x2350 0000251c: JUMP 0000251d: JUMPDEST 0000251e: SUB 0000251f: DUP3 00002520: PUSH2 0x217e 00002523: JUMP 00002524: JUMPDEST 00002525: SWAP1 00002526: POP 00002527: CODESIZE 00002528: PUSH2 0x246a 0000252b: JUMP 0000252c: JUMPDEST 0000252d: SWAP2 0000252e: POP 0000252f: POP 00002530: PUSH1 0x00 00002532: MSTORE 00002533: DUP2 00002534: PUSH1 0x20 00002536: PUSH1 0x00 00002538: KECCAK256 00002539: PUSH1 0x00 0000253b: SWAP1 0000253c: JUMPDEST 0000253d: DUP4 0000253e: DUP3 0000253f: LT 00002540: PUSH2 0x2550 00002543: JUMPI 00002544: POP 00002545: POP 00002546: PUSH1 0x20 00002548: SWAP2 00002549: DUP2 0000254a: ADD 0000254b: CODESIZE 0000254c: PUSH2 0x241c 0000254f: JUMP 00002550: JUMPDEST 00002551: PUSH1 0x20 00002553: SWAP2 00002554: SWAP3 00002555: POP 00002556: DUP1 00002557: PUSH1 0x01 00002559: SWAP2 0000255a: SLOAD 0000255b: DUP5 0000255c: DUP8 0000255d: ADD 0000255e: MSTORE 0000255f: ADD 00002560: SWAP2 00002561: ADD 00002562: DUP4 00002563: SWAP2 00002564: PUSH2 0x253c 00002567: JUMP 00002568: JUMPDEST 00002569: PUSH1 0xff 0000256b: NOT 0000256c: AND 0000256d: DUP5 0000256e: MSTORE 0000256f: POP 00002570: PUSH1 0x20 00002572: SWAP4 00002573: DUP1 00002574: ISZERO 00002575: ISZERO 00002576: MUL 00002577: DUP4 00002578: ADD 00002579: SWAP2 0000257a: POP 0000257b: CODESIZE 0000257c: SWAP1 0000257d: POP 0000257e: PUSH2 0x241c 00002581: JUMP 00002582: JUMPDEST 00002583: POP 00002584: PUSH2 0x24f0 00002587: SWAP2 00002588: CALLDATASIZE 00002589: SWAP2 0000258a: PUSH2 0x21d4 0000258d: JUMP 0000258e: JUMPDEST 0000258f: SWAP2 00002590: SWAP1 00002591: DUP2 00002592: LT 00002593: ISZERO 00002594: PUSH2 0x12d3 00002597: JUMPI 00002598: PUSH1 0x05 0000259a: SHL 0000259b: DUP2 0000259c: ADD 0000259d: CALLDATALOAD 0000259e: SWAP1 0000259f: PUSH1 0x1e 000025a1: NOT 000025a2: DUP2 000025a3: CALLDATASIZE 000025a4: SUB 000025a5: ADD 000025a6: DUP3 000025a7: SLT 000025a8: ISZERO 000025a9: PUSH2 0x067d 000025ac: JUMPI 000025ad: ADD 000025ae: SWAP1 000025af: DUP2 000025b0: CALLDATALOAD 000025b1: SWAP2 000025b2: PUSH8 0xffffffffffffffff 000025bb: DUP4 000025bc: GT 000025bd: PUSH2 0x067d 000025c0: JUMPI 000025c1: PUSH1 0x20 000025c3: ADD 000025c4: DUP3 000025c5: CALLDATASIZE 000025c6: SUB 000025c7: DUP2 000025c8: SGT 000025c9: PUSH2 0x067d 000025cc: JUMPI 000025cd: SWAP2 000025ce: SWAP1 000025cf: JUMP 000025d0: JUMPDEST 000025d1: SWAP1 000025d2: PUSH1 0x0a 000025d4: SLOAD 000025d5: SWAP2 000025d6: DUP3 000025d7: ISZERO 000025d8: PUSH2 0x2658 000025db: JUMPI 000025dc: SWAP1 000025dd: SWAP2 000025de: PUSH1 0x00 000025e0: NOT 000025e1: SWAP2 000025e2: PUSH1 0x00 000025e4: SWAP1 000025e5: JUMPDEST 000025e6: DUP3 000025e7: DUP3 000025e8: LT 000025e9: PUSH2 0x262a 000025ec: JUMPI 000025ed: JUMPDEST 000025ee: POP 000025ef: POP 000025f0: POP 000025f1: PUSH1 0x00 000025f3: NOT 000025f4: DUP2 000025f5: EQ 000025f6: PUSH2 0x2623 000025f9: JUMPI 000025fa: PUSH2 0x2602 000025fd: SWAP1 000025fe: PUSH2 0x22f6 00002601: JUMP 00002602: JUMPDEST 00002603: POP 00002604: SLOAD 00002605: SWAP1 00002606: DUP2 00002607: DUP2 00002608: MUL 00002609: SWAP2 0000260a: DUP2 0000260b: DUP4 0000260c: DIV 0000260d: EQ 0000260e: SWAP1 0000260f: ISZERO 00002610: OR 00002611: ISZERO 00002612: PUSH2 0x134b 00002615: JUMPI 00002616: PUSH8 0x0de0b6b3a7640000 0000261f: SWAP1 00002620: DIV 00002621: SWAP1 00002622: JUMP 00002623: JUMPDEST 00002624: POP 00002625: POP 00002626: PUSH1 0x00 00002628: SWAP1 00002629: JUMP 0000262a: JUMPDEST 0000262b: SWAP1 0000262c: SWAP2 0000262d: SWAP4 0000262e: SWAP3 0000262f: PUSH1 0x01 00002631: PUSH2 0x2639 00002634: DUP5 00002635: PUSH2 0x22f6 00002638: JUMP 00002639: JUMPDEST 0000263a: POP 0000263b: ADD 0000263c: SLOAD 0000263d: DUP3 0000263e: LT 0000263f: PUSH2 0x2651 00002642: JUMPI 00002643: POP 00002644: PUSH1 0x01 00002646: DUP3 00002647: ADD 00002648: SWAP1 00002649: SWAP4 0000264a: SWAP2 0000264b: SWAP3 0000264c: SWAP4 0000264d: PUSH2 0x25e5 00002650: JUMP 00002651: JUMPDEST 00002652: SWAP3 00002653: SWAP4 00002654: PUSH2 0x25ed 00002657: JUMP 00002658: JUMPDEST 00002659: POP 0000265a: POP 0000265b: POP 0000265c: PUSH1 0x00 0000265e: SWAP1 0000265f: JUMP 00002660: JUMPDEST 00002661: SWAP1 00002662: PUSH1 0x20 00002664: PUSH1 0x60 00002666: SWAP4 00002667: SWAP3 00002668: DUP3 00002669: PUSH1 0x40 0000266b: MLOAD 0000266c: SWAP4 0000266d: DUP5 0000266e: SWAP3 0000266f: DUP4 00002670: CALLDATACOPY 00002671: DUP2 00002672: ADD 00002673: PUSH1 0x0f 00002675: DUP2 00002676: MSTORE 00002677: SUB 00002678: ADD 00002679: SWAP1 0000267a: KECCAK256 0000267b: PUSH1 0x40 0000267d: MLOAD 0000267e: PUSH2 0x2686 00002681: DUP2 00002682: PUSH2 0x2162 00002685: JUMP 00002686: JUMPDEST 00002687: DUP2 00002688: SLOAD 00002689: SWAP1 0000268a: PUSH1 0xff 0000268c: DUP1 0000268d: DUP4 0000268e: AND 0000268f: ISZERO 00002690: ISZERO 00002691: SWAP3 00002692: DUP4 00002693: DUP4 00002694: MSTORE 00002695: PUSH1 0x08 00002697: SHR 00002698: AND 00002699: ISZERO 0000269a: ISZERO 0000269b: PUSH1 0x20 0000269d: DUP3 0000269e: ADD 0000269f: MSTORE 000026a0: PUSH1 0x02 000026a2: PUSH1 0x01 000026a4: DUP5 000026a5: ADD 000026a6: SLOAD 000026a7: SWAP4 000026a8: DUP5 000026a9: PUSH1 0x40 000026ab: DUP5 000026ac: ADD 000026ad: MSTORE 000026ae: ADD 000026af: SLOAD 000026b0: SWAP5 000026b1: DUP6 000026b2: SWAP2 000026b3: ADD 000026b4: MSTORE 000026b5: PUSH2 0x26c5 000026b8: JUMPI 000026b9: POP 000026ba: SWAP1 000026bb: POP 000026bc: PUSH1 0x08 000026be: SLOAD 000026bf: SWAP1 000026c0: PUSH1 0x09 000026c2: SLOAD 000026c3: SWAP1 000026c4: JUMP 000026c5: JUMPDEST 000026c6: PUSH1 0x08 000026c8: SLOAD 000026c9: PUSH1 0x09 000026cb: SLOAD 000026cc: SWAP2 000026cd: DUP2 000026ce: DUP1 000026cf: DUP3 000026d0: GT 000026d1: SWAP2 000026d2: XOR 000026d3: MUL 000026d4: XOR 000026d5: SWAP3 000026d6: DUP2 000026d7: DUP1 000026d8: DUP3 000026d9: GT 000026da: SWAP2 000026db: XOR 000026dc: MUL 000026dd: XOR 000026de: SWAP1 000026df: JUMP 000026e0: JUMPDEST 000026e1: CALLER 000026e2: PUSH1 0x00 000026e4: SWAP1 000026e5: DUP2 000026e6: MSTORE 000026e7: PUSH32 0xac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b 00002708: PUSH1 0x20 0000270a: MSTORE 0000270b: PUSH1 0x40 0000270d: SWAP1 0000270e: KECCAK256 0000270f: SLOAD 00002710: PUSH1 0xff 00002712: AND 00002713: ISZERO 00002714: PUSH2 0x2719 00002717: JUMPI 00002718: JUMP 00002719: JUMPDEST 0000271a: PUSH4 0xe2517d3f 0000271f: PUSH1 0xe0 00002721: SHL 00002722: PUSH1 0x00 00002724: MSTORE 00002725: CALLER 00002726: PUSH1 0x04 00002728: MSTORE 00002729: PUSH1 0x00 0000272b: PUSH1 0x24 0000272d: MSTORE 0000272e: PUSH1 0x44 00002730: PUSH1 0x00 00002732: REVERT 00002733: JUMPDEST 00002734: CALLER 00002735: PUSH1 0x00 00002737: SWAP1 00002738: DUP2 00002739: MSTORE 0000273a: PUSH32 0x8b46ef902e70025001b52fb3290191b131ee64a6e1f85751f0223439b0152d35 0000275b: PUSH1 0x20 0000275d: MSTORE 0000275e: PUSH1 0x40 00002760: SWAP1 00002761: KECCAK256 00002762: SLOAD 00002763: PUSH1 0xff 00002765: AND 00002766: ISZERO 00002767: PUSH2 0x276c 0000276a: JUMPI 0000276b: JUMP 0000276c: JUMPDEST 0000276d: PUSH4 0xe2517d3f 00002772: PUSH1 0xe0 00002774: SHL 00002775: PUSH1 0x00 00002777: MSTORE 00002778: CALLER 00002779: PUSH1 0x04 0000277b: MSTORE 0000277c: PUSH32 0x4537a8625b568d11dc31ae1d90b1ee7e52cbc0a45ac7bbe0d5b3dc7605dda3e7 0000279d: PUSH1 0x24 0000279f: MSTORE 000027a0: PUSH1 0x44 000027a2: PUSH1 0x00 000027a4: REVERT 000027a5: JUMPDEST 000027a6: CALLER 000027a7: PUSH1 0x00 000027a9: SWAP1 000027aa: DUP2 000027ab: MSTORE 000027ac: PUSH32 0x94996c563abb815835b318c981fa050298066bd55a6db8b3a8c1aff30a38e7ef 000027cd: PUSH1 0x20 000027cf: MSTORE 000027d0: PUSH1 0x40 000027d2: SWAP1 000027d3: KECCAK256 000027d4: SLOAD 000027d5: PUSH1 0xff 000027d7: AND 000027d8: ISZERO 000027d9: PUSH2 0x27de 000027dc: JUMPI 000027dd: JUMP 000027de: JUMPDEST 000027df: PUSH4 0xe2517d3f 000027e4: PUSH1 0xe0 000027e6: SHL 000027e7: PUSH1 0x00 000027e9: MSTORE 000027ea: CALLER 000027eb: PUSH1 0x04 000027ed: MSTORE 000027ee: PUSH32 0x241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08 0000280f: PUSH1 0x24 00002811: MSTORE 00002812: PUSH1 0x44 00002814: PUSH1 0x00 00002816: REVERT 00002817: JUMPDEST 00002818: DUP1 00002819: PUSH1 0x00 0000281b: MSTORE 0000281c: PUSH1 0x02 0000281e: PUSH1 0x20 00002820: MSTORE 00002821: PUSH1 0x40 00002823: PUSH1 0x00 00002825: KECCAK256 00002826: PUSH1 0x01 00002828: PUSH1 0x01 0000282a: PUSH1 0xa0 0000282c: SHL 0000282d: SUB 0000282e: CALLER 0000282f: AND 00002830: PUSH1 0x00 00002832: MSTORE 00002833: PUSH1 0x20 00002835: MSTORE 00002836: PUSH1 0xff 00002838: PUSH1 0x40 0000283a: PUSH1 0x00 0000283c: KECCAK256 0000283d: SLOAD 0000283e: AND 0000283f: ISZERO 00002840: PUSH2 0x2846 00002843: JUMPI 00002844: POP 00002845: JUMP 00002846: JUMPDEST 00002847: PUSH4 0xe2517d3f 0000284c: PUSH1 0xe0 0000284e: SHL 0000284f: PUSH1 0x00 00002851: MSTORE 00002852: CALLER 00002853: PUSH1 0x04 00002855: MSTORE 00002856: PUSH1 0x24 00002858: MSTORE 00002859: PUSH1 0x44 0000285b: PUSH1 0x00 0000285d: REVERT 0000285e: JUMPDEST 0000285f: DUP1 00002860: PUSH1 0x00 00002862: MSTORE 00002863: PUSH1 0x02 00002865: PUSH1 0x20 00002867: MSTORE 00002868: PUSH1 0x40 0000286a: PUSH1 0x00 0000286c: KECCAK256 0000286d: PUSH1 0x01 0000286f: PUSH1 0x01 00002871: PUSH1 0xa0 00002873: SHL 00002874: SUB 00002875: DUP4 00002876: AND 00002877: PUSH1 0x00 00002879: MSTORE 0000287a: PUSH1 0x20 0000287c: MSTORE 0000287d: PUSH1 0xff 0000287f: PUSH1 0x40 00002881: PUSH1 0x00 00002883: KECCAK256 00002884: SLOAD 00002885: AND 00002886: ISZERO 00002887: PUSH1 0x00 00002889: EQ 0000288a: PUSH2 0x2623 0000288d: JUMPI 0000288e: DUP1 0000288f: PUSH1 0x00 00002891: MSTORE 00002892: PUSH1 0x02 00002894: PUSH1 0x20 00002896: MSTORE 00002897: PUSH1 0x40 00002899: PUSH1 0x00 0000289b: KECCAK256 0000289c: PUSH1 0x01 0000289e: PUSH1 0x01 000028a0: PUSH1 0xa0 000028a2: SHL 000028a3: SUB 000028a4: DUP4 000028a5: AND 000028a6: PUSH1 0x00 000028a8: MSTORE 000028a9: PUSH1 0x20 000028ab: MSTORE 000028ac: PUSH1 0x40 000028ae: PUSH1 0x00 000028b0: KECCAK256 000028b1: PUSH1 0x01 000028b3: PUSH1 0xff 000028b5: NOT 000028b6: DUP3 000028b7: SLOAD 000028b8: AND 000028b9: OR 000028ba: SWAP1 000028bb: SSTORE 000028bc: PUSH1 0x01 000028be: PUSH1 0x01 000028c0: PUSH1 0xa0 000028c2: SHL 000028c3: SUB 000028c4: CALLER 000028c5: SWAP3 000028c6: AND 000028c7: SWAP1 000028c8: PUSH32 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d 000028e9: PUSH1 0x00 000028eb: DUP1 000028ec: LOG4 000028ed: PUSH1 0x01 000028ef: SWAP1 000028f0: JUMP 000028f1: JUMPDEST 000028f2: DUP1 000028f3: PUSH1 0x00 000028f5: MSTORE 000028f6: PUSH1 0x02 000028f8: PUSH1 0x20 000028fa: MSTORE 000028fb: PUSH1 0x40 000028fd: PUSH1 0x00 000028ff: KECCAK256 00002900: PUSH1 0x01 00002902: PUSH1 0x01 00002904: PUSH1 0xa0 00002906: SHL 00002907: SUB 00002908: DUP4 00002909: AND 0000290a: PUSH1 0x00 0000290c: MSTORE 0000290d: PUSH1 0x20 0000290f: MSTORE 00002910: PUSH1 0xff 00002912: PUSH1 0x40 00002914: PUSH1 0x00 00002916: KECCAK256 00002917: SLOAD 00002918: AND 00002919: PUSH1 0x00 0000291b: EQ 0000291c: PUSH2 0x2623 0000291f: JUMPI 00002920: DUP1 00002921: PUSH1 0x00 00002923: MSTORE 00002924: PUSH1 0x02 00002926: PUSH1 0x20 00002928: MSTORE 00002929: PUSH1 0x40 0000292b: PUSH1 0x00 0000292d: KECCAK256 0000292e: PUSH1 0x01 00002930: PUSH1 0x01 00002932: PUSH1 0xa0 00002934: SHL 00002935: SUB 00002936: DUP4 00002937: AND 00002938: PUSH1 0x00 0000293a: MSTORE 0000293b: PUSH1 0x20 0000293d: MSTORE 0000293e: PUSH1 0x40 00002940: PUSH1 0x00 00002942: KECCAK256 00002943: PUSH1 0xff 00002945: NOT 00002946: DUP2 00002947: SLOAD 00002948: AND 00002949: SWAP1 0000294a: SSTORE 0000294b: PUSH1 0x01 0000294d: PUSH1 0x01 0000294f: PUSH1 0xa0 00002951: SHL 00002952: SUB 00002953: CALLER 00002954: SWAP3 00002955: AND 00002956: SWAP1 00002957: PUSH32 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b 00002978: PUSH1 0x00 0000297a: DUP1 0000297b: LOG4 0000297c: PUSH1 0x01 0000297e: SWAP1 0000297f: JUMP 00002980: JUMPDEST 00002981: PUSH1 0x40 00002983: MLOAD 00002984: PUSH4 0xa9059cbb 00002989: PUSH1 0xe0 0000298b: SHL 0000298c: PUSH1 0x20 0000298e: DUP1 0000298f: DUP4 00002990: ADD 00002991: SWAP2 00002992: DUP3 00002993: MSTORE 00002994: PUSH1 0x01 00002996: PUSH1 0x01 00002998: PUSH1 0xa0 0000299a: SHL 0000299b: SUB 0000299c: SWAP5 0000299d: SWAP1 0000299e: SWAP5 0000299f: AND 000029a0: PUSH1 0x24 000029a2: DUP4 000029a3: ADD 000029a4: MSTORE 000029a5: PUSH1 0x44 000029a7: DUP1 000029a8: DUP4 000029a9: ADD 000029aa: SWAP6 000029ab: SWAP1 000029ac: SWAP6 000029ad: MSTORE 000029ae: SWAP4 000029af: DUP2 000029b0: MSTORE 000029b1: SWAP1 000029b2: SWAP3 000029b3: PUSH1 0x00 000029b5: SWAP2 000029b6: PUSH2 0x29c0 000029b9: PUSH1 0x64 000029bb: DUP3 000029bc: PUSH2 0x217e 000029bf: JUMP 000029c0: JUMPDEST 000029c1: MLOAD 000029c2: SWAP1 000029c3: DUP3 000029c4: DUP6 000029c5: GAS 000029c6: CALL 000029c7: ISZERO 000029c8: PUSH2 0x2a0f 000029cb: JUMPI 000029cc: PUSH1 0x00 000029ce: MLOAD 000029cf: RETURNDATASIZE 000029d0: PUSH2 0x2a06 000029d3: JUMPI 000029d4: POP 000029d5: PUSH1 0x01 000029d7: PUSH1 0x01 000029d9: PUSH1 0xa0 000029db: SHL 000029dc: SUB 000029dd: DUP2 000029de: AND 000029df: EXTCODESIZE 000029e0: ISZERO 000029e1: JUMPDEST 000029e2: PUSH2 0x29e8 000029e5: JUMPI 000029e6: POP 000029e7: JUMP 000029e8: JUMPDEST 000029e9: PUSH1 0x01 000029eb: PUSH1 0x01 000029ed: PUSH1 0xa0 000029ef: SHL 000029f0: SUB 000029f1: SWAP1 000029f2: PUSH4 0x5274afe7 000029f7: PUSH1 0xe0 000029f9: SHL 000029fa: PUSH1 0x00 000029fc: MSTORE 000029fd: AND 000029fe: PUSH1 0x04 00002a00: MSTORE 00002a01: PUSH1 0x24 00002a03: PUSH1 0x00 00002a05: REVERT 00002a06: JUMPDEST 00002a07: PUSH1 0x01 00002a09: EQ 00002a0a: ISZERO 00002a0b: PUSH2 0x29e1 00002a0e: JUMP 00002a0f: JUMPDEST 00002a10: PUSH1 0x40 00002a12: MLOAD 00002a13: RETURNDATASIZE 00002a14: PUSH1 0x00 00002a16: DUP3 00002a17: RETURNDATACOPY 00002a18: RETURNDATASIZE 00002a19: SWAP1 00002a1a: REVERT 00002a1b: JUMPDEST 00002a1c: PUSH1 0xff 00002a1e: DUP2 00002a1f: EQ 00002a20: PUSH2 0x2a65 00002a23: JUMPI 00002a24: PUSH1 0xff 00002a26: DUP2 00002a27: AND 00002a28: SWAP1 00002a29: PUSH1 0x1f 00002a2b: DUP3 00002a2c: GT 00002a2d: PUSH2 0x2a54 00002a30: JUMPI 00002a31: PUSH1 0x40 00002a33: DUP1 00002a34: MLOAD 00002a35: SWAP3 00002a36: PUSH2 0x2a3f 00002a39: DUP3 00002a3a: DUP6 00002a3b: PUSH2 0x217e 00002a3e: JUMP 00002a3f: JUMPDEST 00002a40: PUSH1 0x20 00002a42: DUP1 00002a43: DUP6 00002a44: MSTORE 00002a45: DUP5 00002a46: ADD 00002a47: SWAP2 00002a48: PUSH1 0x1f 00002a4a: NOT 00002a4b: ADD 00002a4c: CALLDATASIZE 00002a4d: DUP4 00002a4e: CALLDATACOPY 00002a4f: DUP4 00002a50: MSTORE 00002a51: MSTORE 00002a52: SWAP1 00002a53: JUMP 00002a54: JUMPDEST 00002a55: PUSH4 0x2cd44ac3 00002a5a: PUSH1 0xe2 00002a5c: SHL 00002a5d: PUSH1 0x00 00002a5f: MSTORE 00002a60: PUSH1 0x04 00002a62: PUSH1 0x00 00002a64: REVERT 00002a65: JUMPDEST 00002a66: POP 00002a67: PUSH1 0x40 00002a69: MLOAD 00002a6a: PUSH2 0x24f0 00002a6d: DUP2 00002a6e: PUSH2 0x251d 00002a71: DUP2 00002a72: PUSH1 0x00 00002a74: PUSH2 0x2350 00002a77: JUMP 00002a78: JUMPDEST 00002a79: PUSH1 0xff 00002a7b: DUP2 00002a7c: EQ 00002a7d: PUSH2 0x2a9c 00002a80: JUMPI 00002a81: PUSH1 0xff 00002a83: DUP2 00002a84: AND 00002a85: SWAP1 00002a86: PUSH1 0x1f 00002a88: DUP3 00002a89: GT 00002a8a: PUSH2 0x2a54 00002a8d: JUMPI 00002a8e: PUSH1 0x40 00002a90: DUP1 00002a91: MLOAD 00002a92: SWAP3 00002a93: PUSH2 0x2a3f 00002a96: DUP3 00002a97: DUP6 00002a98: PUSH2 0x217e 00002a9b: JUMP 00002a9c: JUMPDEST 00002a9d: POP 00002a9e: PUSH1 0x40 00002aa0: MLOAD 00002aa1: PUSH2 0x24f0 00002aa4: DUP2 00002aa5: PUSH2 0x251d 00002aa8: DUP2 00002aa9: PUSH1 0x01 00002aab: PUSH2 0x2350 00002aae: JUMP 00002aaf: JUMPDEST 00002ab0: PUSH1 0x01 00002ab2: PUSH1 0x01 00002ab4: PUSH1 0xa0 00002ab6: SHL 00002ab7: SUB 00002ab8: PUSH32 0x0000000000000000000000005c29376a264e9244b50076650cea0cf30172c466 00002ad9: AND 00002ada: ADDRESS 00002adb: EQ 00002adc: DUP1 00002add: PUSH2 0x2ba2 00002ae0: JUMPI 00002ae1: JUMPDEST 00002ae2: ISZERO 00002ae3: PUSH2 0x2b0a 00002ae6: JUMPI 00002ae7: PUSH32 0x8b0ff9b1388245f1c6794b5f6c5112ab8a026f18006d5dd53b6cc95304554452 00002b08: SWAP1 00002b09: JUMP 00002b0a: JUMPDEST 00002b0b: PUSH1 0x40 00002b0d: MLOAD 00002b0e: PUSH1 0x20 00002b10: DUP2 00002b11: ADD 00002b12: SWAP1 00002b13: PUSH32 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f 00002b34: DUP3 00002b35: MSTORE 00002b36: PUSH32 0xd5410cae89f91259d821df9dfdf0033e0d09fa3fae623675d174cce19c2b45ee 00002b57: PUSH1 0x40 00002b59: DUP3 00002b5a: ADD 00002b5b: MSTORE 00002b5c: PUSH32 0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6 00002b7d: PUSH1 0x60 00002b7f: DUP3 00002b80: ADD 00002b81: MSTORE 00002b82: CHAINID 00002b83: PUSH1 0x80 00002b85: DUP3 00002b86: ADD 00002b87: MSTORE 00002b88: ADDRESS 00002b89: PUSH1 0xa0 00002b8b: DUP3 00002b8c: ADD 00002b8d: MSTORE 00002b8e: PUSH1 0xa0 00002b90: DUP2 00002b91: MSTORE 00002b92: PUSH2 0x2b9c 00002b95: PUSH1 0xc0 00002b97: DUP3 00002b98: PUSH2 0x217e 00002b9b: JUMP 00002b9c: JUMPDEST 00002b9d: MLOAD 00002b9e: SWAP1 00002b9f: KECCAK256 00002ba0: SWAP1 00002ba1: JUMP 00002ba2: JUMPDEST 00002ba3: POP 00002ba4: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001 00002bc5: CHAINID 00002bc6: EQ 00002bc7: PUSH2 0x2ae1 00002bca: JUMP 00002bcb: JUMPDEST 00002bcc: SWAP2 00002bcd: SWAP1 00002bce: PUSH32 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0 00002bef: DUP5 00002bf0: GT 00002bf1: PUSH2 0x2c48 00002bf4: JUMPI 00002bf5: SWAP2 00002bf6: PUSH1 0x20 00002bf8: SWAP4 00002bf9: PUSH1 0x80 00002bfb: SWAP3 00002bfc: PUSH1 0xff 00002bfe: PUSH1 0x00 00002c00: SWAP6 00002c01: PUSH1 0x40 00002c03: MLOAD 00002c04: SWAP5 00002c05: DUP6 00002c06: MSTORE 00002c07: AND 00002c08: DUP7 00002c09: DUP5 00002c0a: ADD 00002c0b: MSTORE 00002c0c: PUSH1 0x40 00002c0e: DUP4 00002c0f: ADD 00002c10: MSTORE 00002c11: PUSH1 0x60 00002c13: DUP3 00002c14: ADD 00002c15: MSTORE 00002c16: DUP3 00002c17: DUP1 00002c18: MSTORE 00002c19: PUSH1 0x01 00002c1b: GAS 00002c1c: STATICCALL 00002c1d: ISZERO 00002c1e: PUSH2 0x2a0f 00002c21: JUMPI 00002c22: PUSH1 0x00 00002c24: MLOAD 00002c25: PUSH1 0x01 00002c27: PUSH1 0x01 00002c29: PUSH1 0xa0 00002c2b: SHL 00002c2c: SUB 00002c2d: DUP2 00002c2e: AND 00002c2f: ISZERO 00002c30: PUSH2 0x2c3c 00002c33: JUMPI 00002c34: SWAP1 00002c35: PUSH1 0x00 00002c37: SWAP1 00002c38: PUSH1 0x00 00002c3a: SWAP1 00002c3b: JUMP 00002c3c: JUMPDEST 00002c3d: POP 00002c3e: PUSH1 0x00 00002c40: SWAP1 00002c41: PUSH1 0x01 00002c43: SWAP1 00002c44: PUSH1 0x00 00002c46: SWAP1 00002c47: JUMP 00002c48: JUMPDEST 00002c49: POP 00002c4a: POP 00002c4b: POP 00002c4c: PUSH1 0x00 00002c4e: SWAP2 00002c4f: PUSH1 0x03 00002c51: SWAP2 00002c52: SWAP1 00002c53: JUMP 00002c54: JUMPDEST 00002c55: SWAP2 00002c56: SWAP1 00002c57: SWAP2 00002c58: PUSH1 0x04 00002c5a: DUP2 00002c5b: LT 00002c5c: ISZERO 00002c5d: PUSH2 0x08cc 00002c60: JUMPI 00002c61: DUP1 00002c62: PUSH2 0x2c6a 00002c65: JUMPI 00002c66: POP 00002c67: SWAP1 00002c68: POP 00002c69: JUMP 00002c6a: JUMPDEST 00002c6b: PUSH1 0x00 00002c6d: PUSH1 0x01 00002c6f: DUP3 00002c70: SUB 00002c71: PUSH2 0x2c85 00002c74: JUMPI 00002c75: PUSH4 0xf645eedf 00002c7a: PUSH1 0xe0 00002c7c: SHL 00002c7d: PUSH1 0x00 00002c7f: MSTORE 00002c80: PUSH1 0x04 00002c82: PUSH1 0x00 00002c84: REVERT 00002c85: JUMPDEST 00002c86: POP 00002c87: PUSH1 0x02 00002c89: DUP2 00002c8a: SUB 00002c8b: PUSH2 0x2ca3 00002c8e: JUMPI 00002c8f: DUP3 00002c90: PUSH4 0xfce698f7 00002c95: PUSH1 0xe0 00002c97: SHL 00002c98: PUSH1 0x00 00002c9a: MSTORE 00002c9b: PUSH1 0x04 00002c9d: MSTORE 00002c9e: PUSH1 0x24 00002ca0: PUSH1 0x00 00002ca2: REVERT 00002ca3: JUMPDEST 00002ca4: SWAP1 00002ca5: SWAP2 00002ca6: PUSH1 0x03 00002ca8: PUSH1 0x00 00002caa: SWAP3 00002cab: EQ 00002cac: PUSH2 0x2cb3 00002caf: JUMPI 00002cb0: POP 00002cb1: POP 00002cb2: JUMP 00002cb3: JUMPDEST 00002cb4: PUSH4 0x35e2f383 00002cb9: PUSH1 0xe2 00002cbb: SHL 00002cbc: DUP3 00002cbd: MSTORE 00002cbe: PUSH1 0x04 00002cc0: MSTORE 00002cc1: PUSH1 0x24 00002cc3: SWAP2 00002cc4: POP 00002cc5: REVERT 00002cc6: INVALID 00002cc7: LOG2 00002cc8: PUSH5 0x6970667358 00002cce: UNKNOWN(0x22) 00002ccf: SLT 00002cd0: KECCAK256 00002cd1: UNKNOWN(0xB9) 00002cd2: PUSH6 0x1664551d7f3d 00002cd9: SUB 00002cda: JUMPI 00002cdb: UNKNOWN(0xDC) 00002cdc: CREATE 00002cdd: UNKNOWN(0xCF) 00002cde: SMOD 00002cdf: UNKNOWN(0xCE) 00002ce0: DUP2 00002ce1: UNKNOWN(0x0D) 00002ce2: UNKNOWN(0xD6) 00002ce3: UNKNOWN(0xA8) 00002ce4: UNKNOWN(0xA9) 00002ce5: UNKNOWN(0x0D) 00002ce6: UNKNOWN(0xEC) 00002ce7: DUP6 00002ce8: SAR 00002ce9: CALLCODE 00002cea: CREATE2 00002ceb: UNKNOWN(0xE7) 00002cec: DUP10 00002ced: MOD 00002cee: UNKNOWN(0xE2) 00002cef: UNKNOWN(0xB1) 00002cf0: UNKNOWN(0x2F) 00002cf1: PUSH5 0x736f6c6343 00002cf7: STOP 00002cf8: ADDMOD 00002cf9: SHR 00002cfa: STOP 00002cfb: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | reentrancy | slither | Reentrancy in Crate.claimPartner(address[],string,uint256,uint8,bytes32,bytes32) (contracts/crate/Crate.sol#267-301): | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "reentrancy-eth",
"elements": [
{
"name": "claimPartner",
"type": "function",
"source_mapping": {
"lines": [
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301
],
"start": 8444,
"length": 1299,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/crate/Crate.sol",
"starting_column": 3,
"filename_absolute": "/tmp/slither-a5mp7fkj/contracts/crate/Crate.sol",
"filename_relative": "contracts/crate/Crate.sol"
},
"type_specific_fields": {
"parent": {
"name": "Crate",
"type": "contract",
"source_mapping": {
"lines": [
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417
],
"start": 526,
"length": 12525,
"ending_column": 2,
"is_dependency": false,
"filename_short": "contracts/crate/Crate.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-a5mp7fkj/contracts/crate/Crate.sol",
"filename_relative": "contracts/crate/Crate.sol"
}
},
"signature": "claimPartner(address[],string,uint256,uint8,bytes32,bytes32)"
}
},
{
"name": "(success,None) = user_.call{value: balance}()",
"type": "node",
"source_mapping": {
"lines": [
293
],
"start": 9493,
"length": 49,
"ending_column": 60,
"is_dependency": false,
"filename_short": "contracts/crate/Crate.sol",
"starting_column": 11,
"filename_absolute": "/tmp/slither-a5mp7fkj/contracts/crate/Crate.sol",
"filename_relative": "contracts/crate/Crate.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "claimPartner",
"type": "function",
"source_mapping": {
"lines": [
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301
],
"start": 8444,
"length": 1299,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/crate/Crate.sol",
"starting_column": 3,
"filename_absolute": "/tmp/slither-a5mp7fkj/contracts/crate/Crate.sol",
"filename_relative": "contracts/crate/Crate.sol"
},
"type_specific_fields": {
"parent": {
"name": "Crate",
"type": "contract",
"source_mapping": {
"lines": [
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417
],
"start": 526,
"length": 12525,
"ending_column": 2,
"is_dependency": false,
"filename_short": "contracts/crate/Crate.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-a5mp7fkj/contracts/crate/Crate.sol",
"filename_relative": "contracts/crate/Crate.sol"
}
},
"signature": "claimPartner(address[],string,uint256,uint8,bytes32,bytes32)"
}
}
}
},
{
"name": "_partnerBalanceOf[partner_][token] = 0",
"type": "node",
"source_mapping": {
"lines": [
291
],
"start": 9407,
"length": 38,
"ending_column": 47,
"is_dependency": false,
"filename_short": "contracts/crate/Crate.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-a5mp7fkj/contracts/crate/Crate.sol",
"filename_relative": "contracts/crate/Crate.sol"
},
"additional_fields": {
"variable_name": "_partnerBalanceOf",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "claimPartner",
"type": "function",
"source_mapping": {
"lines": [
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301
],
"start": 8444,
"length": 1299,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/crate/Crate.sol",
"starting_column": 3,
"filename_absolute": "/tmp/slither-a5mp7fkj/contracts/crate/Crate.sol",
"filename_relative": "contracts/crate/Crate.sol"
},
"type_specific_fields": {
"parent": {
"name": "Crate",
"type": "contract",
"source_mapping": {
"lines": [
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417
],
"start": 526,
"length": 12525,
"ending_column": 2,
"is_dependency": false,
"filename_short": "contracts/crate/Crate.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-a5mp7fkj/contracts/crate/Crate.sol",
"filename_relative": "contracts/crate/Crate.sol"
}
},
"signature": "claimPartner(address[],string,uint256,uint8,bytes32,bytes32)"
}
}
}
}
],
"locations": [
{
"file": "contracts/crate/Crate.sol",
"name": "claimPartner",
"type": "function",
"lines": [
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301
]
},
{
"file": "contracts/crate/Crate.sol",
"name": "(success,None) = user_.call{value: balance}()",
"type": "node",
"lines": [
293
]
},
{
"file": "contracts/crate/Crate.sol",
"name": "_partnerBalanceOf[partner_][token] = 0",
"type": "node",
"lines": [
291
]
}
],
"description": "Reentrancy in Crate.claimPartner(address[],string,uint256,uint8,bytes32,bytes32) (contracts/crate/Crate.sol#267-301):\n\tExternal calls:\n\t- (success,None) = user_.call{value: balance}() (contracts/crate/Crate.sol#293)\n\tState variables written after the call(s):\n\t- _partnerBalanceOf[partner_][token] = 0 (contracts/crate/Crate.sol#291)\n\tCrate._partnerBalanceOf (contracts/crate/Crate.sol#32) can be used in cross function reentrancies:\n\t- Crate.partnerBalanceOf(address,string) (contracts/crate/Crate.sol#344-346)\n\t- Crate.setData(address,address,uint256,uint256,string,uint256,uint256) (contracts/crate/Crate.sol#188-212)"
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x21643ec2a9277069ad042d4f234bc66c8f674e2288b0672f1f4bcc033142cbc3
call_targets:
0x5c29376a264e9244b50076650cea0cf30172c466
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x21643ec2a9277069ad042d4f234bc66c8f674e2288b0672f1f4bcc033142cbc3",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x5c29376a264e9244b50076650cea0cf30172c466"
],
"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": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0614117a",
"selector": "0x0614117a",
"calldata_variants": [
"0x0614117a",
"0x0614117a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x07da68f5",
"selector": "0x07da68f5",
"calldata_variants": [
"0x07da68f5",
"0x07da68f50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x14afd04a",
"selector": "0x14afd04a",
"calldata_variants": [
"0x14afd04a",
"0x14afd04a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x248a9ca3",
"selector": "0x248a9ca3",
"calldata_variants": [
"0x248a9ca3",
"0x248a9ca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2f2ff15d",
"selector": "0x2f2ff15d",
"calldata_variants": [
"0x2f2ff15d",
"0x2f2ff15d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x34ec740a",
"selector": "0x34ec740a",
"calldata_variants": [
"0x34ec740a",
"0x34ec740a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x36568abe",
"selector": "0x36568abe",
"calldata_variants": [
"0x36568abe",
"0x36568abe0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1315,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 8074,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 10694,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 4,
"guards_detected": []
}
|
| high | other | slither | Crate.recoverETH() (contracts/crate/Crate.sol#303-308) sends eth to arbitrary user | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "arbitrary-send-eth",
"elements": [
{
"name": "recoverETH",
"type": "function",
"source_mapping": {
"lines": [
303,
304,
305,
306,
307,
308
],
"start": 9749,
"length": 200,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/crate/Crate.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-a5mp7fkj/contracts/crate/Crate.sol",
"filename_relative": "contracts/crate/Crate.sol"
},
"type_specific_fields": {
"parent": {
"name": "Crate",
"type": "contract",
"source_mapping": {
"lines": [
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417
],
"start": 526,
"length": 12525,
"ending_column": 2,
"is_dependency": false,
"filename_short": "contracts/crate/Crate.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-a5mp7fkj/contracts/crate/Crate.sol",
"filename_relative": "contracts/crate/Crate.sol"
}
},
"signature": "recoverETH()"
}
},
{
"name": "_msgSender().call{value: balance}()",
"type": "node",
"source_mapping": {
"lines": [
305
],
"start": 9868,
"length": 37,
"ending_column": 46,
"is_dependency": false,
"filename_short": "contracts/crate/Crate.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-a5mp7fkj/contracts/crate/Crate.sol",
"filename_relative": "contracts/crate/Crate.sol"
},
"type_specific_fields": {
"parent": {
"name": "recoverETH",
"type": "function",
"source_mapping": {
"lines": [
303,
304,
305,
306,
307,
308
],
"start": 9749,
"length": 200,
"ending_column": 6,
"is_dependency": false,
"filename_short": "contracts/crate/Crate.sol",
"starting_column": 5,
"filename_absolute": "/tmp/slither-a5mp7fkj/contracts/crate/Crate.sol",
"filename_relative": "contracts/crate/Crate.sol"
},
"type_specific_fields": {
"parent": {
"name": "Crate",
"type": "contract",
"source_mapping": {
"lines": [
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357,
358,
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379,
380,
381,
382,
383,
384,
385,
386,
387,
388,
389,
390,
391,
392,
393,
394,
395,
396,
397,
398,
399,
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417
],
"start": 526,
"length": 12525,
"ending_column": 2,
"is_dependency": false,
"filename_short": "contracts/crate/Crate.sol",
"starting_column": 1,
"filename_absolute": "/tmp/slither-a5mp7fkj/contracts/crate/Crate.sol",
"filename_relative": "contracts/crate/Crate.sol"
}
},
"signature": "recoverETH()"
}
}
}
}
],
"locations": [
{
"file": "contracts/crate/Crate.sol",
"name": "recoverETH",
"type": "function",
"lines": [
303,
304,
305,
306,
307,
308
]
},
{
"file": "contracts/crate/Crate.sol",
"name": "_msgSender().call{value: balance}()",
"type": "node",
"lines": [
305
]
}
],
"description": "Crate.recoverETH() (contracts/crate/Crate.sol#303-308) sends eth to arbitrary user\n\tDangerous calls:\n\t- _msgSender().call{value: balance}() (contracts/crate/Crate.sol#305)"
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x21643ec2a9277069ad042d4f234bc66c8f674e2288b0672f1f4bcc033142cbc3
call_targets:
0x5c29376a264e9244b50076650cea0cf30172c466
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x21643ec2a9277069ad042d4f234bc66c8f674e2288b0672f1f4bcc033142cbc3",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x5c29376a264e9244b50076650cea0cf30172c466"
],
"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": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0614117a",
"selector": "0x0614117a",
"calldata_variants": [
"0x0614117a",
"0x0614117a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x07da68f5",
"selector": "0x07da68f5",
"calldata_variants": [
"0x07da68f5",
"0x07da68f50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x14afd04a",
"selector": "0x14afd04a",
"calldata_variants": [
"0x14afd04a",
"0x14afd04a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x248a9ca3",
"selector": "0x248a9ca3",
"calldata_variants": [
"0x248a9ca3",
"0x248a9ca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2f2ff15d",
"selector": "0x2f2ff15d",
"calldata_variants": [
"0x2f2ff15d",
"0x2f2ff15d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x34ec740a",
"selector": "0x34ec740a",
"calldata_variants": [
"0x34ec740a",
"0x34ec740a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x36568abe",
"selector": "0x36568abe",
"calldata_variants": [
"0x36568abe",
"0x36568abe0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1315,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 8074,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 10694,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 4,
"guards_detected": [],
"untrusted_call_count": 4
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0x0b4435e866814da6f5f73c63854cb73011722d89f1784fc73b0606c6f024b7b9
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0x0b4435e866814da6f5f73c63854cb73011722d89f1784fc73b0606c6f024b7b9",
"confirmed": false,
"trace_mode": "structLogs",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x01ffc9a7",
"selector": "0x01ffc9a7",
"calldata_variants": [
"0x01ffc9a7",
"0x01ffc9a70000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0614117a",
"selector": "0x0614117a",
"calldata_variants": [
"0x0614117a",
"0x0614117a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x07da68f5",
"selector": "0x07da68f5",
"calldata_variants": [
"0x07da68f5",
"0x07da68f50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x14afd04a",
"selector": "0x14afd04a",
"calldata_variants": [
"0x14afd04a",
"0x14afd04a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x248a9ca3",
"selector": "0x248a9ca3",
"calldata_variants": [
"0x248a9ca3",
"0x248a9ca30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2f2ff15d",
"selector": "0x2f2ff15d",
"calldata_variants": [
"0x2f2ff15d",
"0x2f2ff15d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x34ec740a",
"selector": "0x34ec740a",
"calldata_variants": [
"0x34ec740a",
"0x34ec740a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x36568abe",
"selector": "0x36568abe",
"calldata_variants": [
"0x36568abe",
"0x36568abe0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 1,
"create2_count": 1
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 1,
"create2_count": 1
}
|
| low | other | codex | recoverETH ignores low-level call success | 65 | no | — |
viewevidence_json{
"evidence": "_msgSender().call{value: balance}(\"\"); without checking success.",
"locations": [
"contracts/crate/Crate.sol:303"
],
"recommendation": "Check the call return value and revert on failure (or use Address.sendValue / a payable recipient parameter).",
"exploit_scenario": "If the DEFAULT_ADMIN_ROLE is a contract that rejects ETH (or runs out of gas), recoverETH will still emit ETHRecovered while the transfer fails, leaving ETH locked until another admin can receive."
}
|