019b477e-b27a-70d8-8764-f580eaf201d6
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 |
|---|---|---|---|---|
| 22353 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 22354 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 65778 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 65779 | capability.graph | complete | 1 / 3 | 1 week ago |
| 65780 | detector.run | complete | 1 / 3 | 1 week ago |
| 65781 | validation.fork | complete | 1 / 3 | 1 week ago |
| 113512 | report.consolidate | complete | 1 / 6 | 1 week ago |
| 113513 | tool.slither | complete | 1 / 2 | 1 week ago |
'forge clean' running (wd: /tmp/slither-xnry1203) 'forge config --json' running 'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-xnry1203) FxxxLandRush.receiveApproval(address,uint256,address,bytes) (contracts/Contract.sol#359-379) performs a multiplication on the result of a division: - parcels = tokens.div(_parcelGze) (contracts/Contract.sol#367) - gzeToTransfer = parcels.mul(_parcelGze) (contracts/Contract.sol#371-372) FxxxLandRush.fallback() (contracts/Contract.sol#381-398) performs a multiplication on the result of a division: - parcels = msg.value.div(_parcelEth) (contracts/Contract.sol#384-385) - ethToTransfer = parcels.mul(_parcelEth) (contracts/Contract.sol#387-388) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply Reentrancy in FxxxLandRush.finalise() (contracts/Contract.sol#418-421): External calls: - parcelToken.disableMinting() (contracts/Contract.sol#420-421) State variables written after the call(s): - finalised = true (contracts/Contract.sol#421) FxxxLandRush.finalised (contracts/Contract.sol#212) can be used in cross function reentrancies: - FxxxLandRush.finalise() (contracts/Contract.sol#418-421) - FxxxLandRush.finalised (contracts/Contract.sol#212) - FxxxLandRush.mintParcelTokens(address,uint256) (contracts/Contract.sol#408-417) - FxxxLandRush.offlinePurchase(address,uint256) (contracts/Contract.sol#400-407) - FxxxLandRush.setEndDate(uint256) (contracts/Contract.sol#255-260) - FxxxLandRush.setGzeBonusOffList(uint256) (contracts/Contract.sol#281-284) - FxxxLandRush.setGzeBonusOnList(uint256) (contracts/Contract.sol#284-288) - FxxxLandRush.setMaxParcels(uint256) (contracts/Contract.sol#260-267) - FxxxLandRush.setParcelUsd(uint256) (contracts/Contract.sol#267-272) - FxxxLandRush.setStartDate(uint256) (contracts/Contract.sol#249-254) - FxxxLandRush.setUsdLockAccountThreshold(uint256) (contracts/Contract.sol#272-281) - FxxxLandRush.setWallet(address) (contracts/Contract.sol#244-249) Reentrancy in FxxxLandRush.receiveApproval(address,uint256,address,bytes) (contracts/Contract.sol#359-379): External calls: - bonusList.isInBonusList(from) (contracts/Contract.sol#363-365) - (_parcelGze,_live) = parcelGzeWithBonusOnList() (contracts/Contract.sol#365) - (_ethUsd,_ethUsdLive) = ethUsdPriceFeed.getRate() (contracts/Contract.sol#308-309) - (_gzeEth,_gzeEthLive) = gzeEthPriceFeed.getRate() (contracts/Contract.sol#310-312) - (_parcelGze,_live) = parcelGzeWithBonusOffList() (contracts/Contract.sol#366) - (_ethUsd,_ethUsdLive) = ethUsdPriceFeed.getRate() (contracts/Contract.sol#308-309) - (_gzeEth,_gzeEthLive) = gzeEthPriceFeed.getRate() (contracts/Contract.sol#310-312) - require(bool)(ERC20Interface(token).transferFrom(from,wallet,gzeToTransfer)) (contracts/Contract.sol#374-376) - lock = mintParcelTokens(from,parcels) (contracts/Contract.sol#376-377) - _lock = parcelToken.balanceOf(account).add(parcelUsd.mul(parcels)) >= usdLockAccountThreshold (contracts/Contract.sol#413-414) - require(bool)(parcelToken.mint(account,parcelUsd.mul(parcels),_lock)) (contracts/Contract.sol#414-416) - parcelToken.disableMinting() (contracts/Contract.sol#416-417) State variables written after the call(s): - lock = mintParcelTokens(from,parcels) (contracts/Contract.sol#376-377) - parcelsSold = parcelsSold.add(parcels) (contracts/Contract.sol#411-413) FxxxLandRush.parcelsSold (contracts/Contract.sol#211) can be used in cross function reentrancies: - FxxxLandRush.fallback() (contracts/Contract.sol#381-398) - FxxxLandRush.finalise() (contracts/Contract.sol#418-421) - FxxxLandRush.mintParcelTokens(address,uint256) (contracts/Contract.sol#408-417) - FxxxLandRush.offlinePurchase(address,uint256) (contracts/Contract.sol#400-407) - FxxxLandRush.parcelsSold (contracts/Contract.sol#211) - FxxxLandRush.receiveApproval(address,uint256,address,bytes) (contracts/Contract.sol#359-379) - FxxxLandRush.setMaxParcels(uint256) (contracts/Contract.sol#260-267) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1 FxxxLandRush.ethUsd() (contracts/Contract.sol#294-298) ignores return value by ethUsdPriceFeed.getRate() (contracts/Contract.sol#297) FxxxLandRush.gzeEth() (contracts/Contract.sol#300-304) ignores return value by gzeEthPriceFeed.getRate() (contracts/Contract.sol#301-304) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return Owned.transferOwnership(address)._newOwner (contracts/Contract.sol#32) lacks a zero-check on : - newOwner = _newOwner (contracts/Contract.sol#32) Owned.transferOwnershipImmediately(address)._newOwner (contracts/Contract.sol#41) lacks a zero-check on : - owner = _newOwner (contracts/Contract.sol#42) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation Reentrancy in FxxxLandRush.fallback() (contracts/Contract.sol#381-398): External calls: - (_parcelEth,_live) = parcelEth() (contracts/Contract.sol#383) - ethUsdPriceFeed.getRate() (contracts/Contract.sol#297) State variables written after the call(s): - contributedEth = contributedEth.add(ethToTransfer) (contracts/Contract.sol#389-390) Reentrancy in FxxxLandRush.fallback() (contracts/Contract.sol#381-398): External calls: - (_parcelEth,_live) = parcelEth() (contracts/Contract.sol#383) - ethUsdPriceFeed.getRate() (contracts/Contract.sol#297) - lock = mintParcelTokens(msg.sender,parcels) (contracts/Contract.sol#394-395) - _lock = parcelToken.balanceOf(account).add(parcelUsd.mul(parcels)) >= usdLockAccountThreshold (contracts/Contract.sol#413-414) - require(bool)(parcelToken.mint(account,parcelUsd.mul(parcels),_lock)) (contracts/Contract.sol#414-416) - parcelToken.disableMinting() (contracts/Contract.sol#416-417) External calls sending eth: - msg.sender.transfer(ethToRefund) (contracts/Contract.sol#393-394) State variables written after the call(s): - lock = mintParcelTokens(msg.sender,parcels) (contracts/Contract.sol#394-395) - finalised = true (contracts/Contract.sol#417) Reentrancy in FxxxLandRush.mintParcelTokens(address,uint256) (contracts/Contract.sol#408-417): External calls: - _lock = parcelToken.balanceOf(account).add(parcelUsd.mul(parcels)) >= usdLockAccountThreshold (contracts/Contract.sol#413-414) - require(bool)(parcelToken.mint(account,parcelUsd.mul(parcels),_lock)) (contracts/Contract.sol#414-416) - parcelToken.disableMinting() (contracts/Contract.sol#416-417) State variables written after the call(s): - finalised = true (contracts/Contract.sol#417) Reentrancy in FxxxLandRush.purchaseWithGze(uint256) (contracts/Contract.sol#351-354): External calls: - require(bool)(gzeToken.allowance(msg.sender,this) >= tokens) (contracts/Contract.sol#352-353) - receiveApproval(msg.sender,tokens,gzeToken,) (contracts/Contract.sol#354) - _lock = parcelToken.balanceOf(account).add(parcelUsd.mul(parcels)) >= usdLockAccountThreshold (contracts/Contract.sol#413-414) - (_ethUsd,_ethUsdLive) = ethUsdPriceFeed.getRate() (contracts/Contract.sol#308-309) - require(bool)(parcelToken.mint(account,parcelUsd.mul(parcels),_lock)) (contracts/Contract.sol#414-416) - bonusList.isInBonusList(from) (contracts/Contract.sol#363-365) - (_gzeEth,_gzeEthLive) = gzeEthPriceFeed.getRate() (contracts/Contract.sol#310-312) - parcelToken.disableMinting() (contracts/Contract.sol#416-417) - require(bool)(ERC20Interface(token).transferFrom(from,wallet,gzeToTransfer)) (contracts/Contract.sol#374-376) State variables written after the call(s): - receiveApproval(msg.sender,tokens,gzeToken,) (contracts/Contract.sol#354) - finalised = true (contracts/Contract.sol#417) Reentrancy in FxxxLandRush.receiveApproval(address,uint256,address,bytes) (contracts/Contract.sol#359-379): External calls: - bonusList.isInBonusList(from) (contracts/Contract.sol#363-365) - (_parcelGze,_live) = parcelGzeWithBonusOnList() (contracts/Contract.sol#365) - (_ethUsd,_ethUsdLive) = ethUsdPriceFeed.getRate() (contracts/Contract.sol#308-309) - (_gzeEth,_gzeEthLive) = gzeEthPriceFeed.getRate() (contracts/Contract.sol#310-312) - (_parcelGze,_live) = parcelGzeWithBonusOffList() (contracts/Contract.sol#366) - (_ethUsd,_ethUsdLive) = ethUsdPriceFeed.getRate() (contracts/Contract.sol#308-309) - (_gzeEth,_gzeEthLive) = gzeEthPriceFeed.getRate() (contracts/Contract.sol#310-312) State variables written after the call(s): - contributedGze = contributedGze.add(gzeToTransfer) (contracts/Contract.sol#372-373) Reentrancy in FxxxLandRush.receiveApproval(address,uint256,address,bytes) (contracts/Contract.sol#359-379): External calls: - bonusList.isInBonusList(from) (contracts/Contract.sol#363-365) - (_parcelGze,_live) = parcelGzeWithBonusOnList() (contracts/Contract.sol#365) - (_ethUsd,_ethUsdLive) = ethUsdPriceFeed.getRate() (contracts/Contract.sol#308-309) - (_gzeEth,_gzeEthLive) = gzeEthPriceFeed.getRate() (contracts/Contract.sol#310-312) - (_parcelGze,_live) = parcelGzeWithBonusOffList() (contracts/Contract.sol#366) - (_ethUsd,_ethUsdLive) = ethUsdPriceFeed.getRate() (contracts/Contract.sol#308-309) - (_gzeEth,_gzeEthLive) = gzeEthPriceFeed.getRate() (contracts/Contract.sol#310-312) - require(bool)(ERC20Interface(token).transferFrom(from,wallet,gzeToTransfer)) (contracts/Contract.sol#374-376) - lock = mintParcelTokens(from,parcels) (contracts/Contract.sol#376-377) - _lock = parcelToken.balanceOf(account).add(parcelUsd.mul(parcels)) >= usdLockAccountThreshold (contracts/Contract.sol#413-414) - require(bool)(parcelToken.mint(account,parcelUsd.mul(parcels),_lock)) (contracts/Contract.sol#414-416) - parcelToken.disableMinting() (contracts/Contract.sol#416-417) State variables written after the call(s): - lock = mintParcelTokens(from,parcels) (contracts/Contract.sol#376-377) - finalised = true (contracts/Contract.sol#417) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2 Reentrancy in FxxxLandRush.fallback() (contracts/Contract.sol#381-398): External calls: - (_parcelEth,_live) = parcelEth() (contracts/Contract.sol#383) - ethUsdPriceFeed.getRate() (contracts/Contract.sol#297) - lock = mintParcelTokens(msg.sender,parcels) (contracts/Contract.sol#394-395) - _lock = parcelToken.balanceOf(account).add(parcelUsd.mul(parcels)) >= usdLockAccountThreshold (contracts/Contract.sol#413-414) - require(bool)(parcelToken.mint(account,parcelUsd.mul(parcels),_lock)) (contracts/Contract.sol#414-416) - parcelToken.disableMinting() (contracts/Contract.sol#416-417) External calls sending eth: - msg.sender.transfer(ethToRefund) (contracts/Contract.sol#393-394) Event emitted after the call(s): - Purchased(msg.sender,parcels,0,ethToTransfer,parcelsSold,contributedGze,contributedEth,lock) (contracts/Contract.sol#395-398) Reentrancy in FxxxLandRush.offlinePurchase(address,uint256) (contracts/Contract.sol#400-407): External calls: - lock = mintParcelTokens(tokenOwner,parcels) (contracts/Contract.sol#405) - _lock = parcelToken.balanceOf(account).add(parcelUsd.mul(parcels)) >= usdLockAccountThreshold (contracts/Contract.sol#413-414) - require(bool)(parcelToken.mint(account,parcelUsd.mul(parcels),_lock)) (contracts/Contract.sol#414-416) - parcelToken.disableMinting() (contracts/Contract.sol#416-417) Event emitted after the call(s): - Purchased(tokenOwner,parcels,0,0,parcelsSold,contributedGze,contributedEth,lock) (contracts/Contract.sol#405-407) Reentrancy in FxxxLandRush.purchaseWithGze(uint256) (contracts/Contract.sol#351-354): External calls: - require(bool)(gzeToken.allowance(msg.sender,this) >= tokens) (contracts/Contract.sol#352-353) - receiveApproval(msg.sender,tokens,gzeToken,) (contracts/Contract.sol#354) - _lock = parcelToken.balanceOf(account).add(parcelUsd.mul(parcels)) >= usdLockAccountThreshold (contracts/Contract.sol#413-414) - (_ethUsd,_ethUsdLive) = ethUsdPriceFeed.getRate() (contracts/Contract.sol#308-309) - require(bool)(parcelToken.mint(account,parcelUsd.mul(parcels),_lock)) (contracts/Contract.sol#414-416) - bonusList.isInBonusList(from) (contracts/Contract.sol#363-365) - (_gzeEth,_gzeEthLive) = gzeEthPriceFeed.getRate() (contracts/Contract.sol#310-312) - parcelToken.disableMinting() (contracts/Contract.sol#416-417) - require(bool)(ERC20Interface(token).transferFrom(from,wallet,gzeToTransfer)) (contracts/Contract.sol#374-376) Event emitted after the call(s): - Purchased(from,parcels,gzeToTransfer,0,parcelsSold,contributedGze,contributedEth,lock) (contracts/Contract.sol#377-379) - receiveApproval(msg.sender,tokens,gzeToken,) (contracts/Contract.sol#354) Reentrancy in FxxxLandRush.receiveApproval(address,uint256,address,bytes) (contracts/Contract.sol#359-379): External calls: - bonusList.isInBonusList(from) (contracts/Contract.sol#363-365) - (_parcelGze,_live) = parcelGzeWithBonusOnList() (contracts/Contract.sol#365) - (_ethUsd,_ethUsdLive) = ethUsdPriceFeed.getRate() (contracts/Contract.sol#308-309) - (_gzeEth,_gzeEthLive) = gzeEthPriceFeed.getRate() (contracts/Contract.sol#310-312) - (_parcelGze,_live) = parcelGzeWithBonusOffList() (contracts/Contract.sol#366) - (_ethUsd,_ethUsdLive) = ethUsdPriceFeed.getRate() (contracts/Contract.sol#308-309) - (_gzeEth,_gzeEthLive) = gzeEthPriceFeed.getRate() (contracts/Contract.sol#310-312) - require(bool)(ERC20Interface(token).transferFrom(from,wallet,gzeToTransfer)) (contracts/Contract.sol#374-376) - lock = mintParcelTokens(from,parcels) (contracts/Contract.sol#376-377) - _lock = parcelToken.balanceOf(account).add(parcelUsd.mul(parcels)) >= usdLockAccountThreshold (contracts/Contract.sol#413-414) - require(bool)(parcelToken.mint(account,parcelUsd.mul(parcels),_lock)) (contracts/Contract.sol#414-416) - parcelToken.disableMinting() (contracts/Contract.sol#416-417) Event emitted after the call(s): - Purchased(from,parcels,gzeToTransfer,0,parcelsSold,contributedGze,contributedEth,lock) (contracts/Contract.sol#377-379) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3 FxxxLandRush.constructor(address,address,address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (contracts/Contract.sol#227-244) uses timestamp for comparisons Dangerous comparisons: - require(bool)(_startDate >= now && _endDate > _startDate) (contracts/Contract.sol#231) FxxxLandRush.setStartDate(uint256) (contracts/Contract.sol#249-254) uses timestamp for comparisons Dangerous comparisons: - require(bool)(_startDate >= now) (contracts/Contract.sol#251-252) FxxxLandRush.receiveApproval(address,uint256,address,bytes) (contracts/Contract.sol#359-379) uses timestamp for comparisons Dangerous comparisons: - require(bool)(now >= startDate && now <= endDate) (contracts/Contract.sol#361-362) FxxxLandRush.fallback() (contracts/Contract.sol#381-398) uses timestamp for comparisons Dangerous comparisons: - require(bool)(now >= startDate && now <= endDate) (contracts/Contract.sol#382) FxxxLandRush.finalise() (contracts/Contract.sol#418-421) uses timestamp for comparisons Dangerous comparisons: - require(bool)(now > endDate || parcelsSold >= maxParcels) (contracts/Contract.sol#420) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp Version constraint ^0.4.25 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 - ABIEncoderV2PackedStorage_0.4.x. It is used by: - ^0.4.25 (contracts/Contract.sol#1) solc-0.4.25 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible. Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity Parameter Owned.initOwned(address)._owner (contracts/Contract.sol#25-27) is not in mixedCase Parameter Owned.transferOwnership(address)._newOwner (contracts/Contract.sol#32) is not in mixedCase Parameter Owned.transferOwnershipImmediately(address)._newOwner (contracts/Contract.sol#41) is not in mixedCase Parameter FxxxLandRush.setWallet(address)._wallet (contracts/Contract.sol#244-245) is not in mixedCase Parameter FxxxLandRush.setStartDate(uint256)._startDate (contracts/Contract.sol#249-250) is not in mixedCase Parameter FxxxLandRush.setEndDate(uint256)._endDate (contracts/Contract.sol#255-257) is not in mixedCase Parameter FxxxLandRush.setMaxParcels(uint256)._maxParcels (contracts/Contract.sol#261) is not in mixedCase Parameter FxxxLandRush.setParcelUsd(uint256)._parcelUsd (contracts/Contract.sol#268-269) is not in mixedCase Parameter FxxxLandRush.setUsdLockAccountThreshold(uint256)._usdLockAccountThreshold (contracts/Contract.sol#273-275) is not in mixedCase Parameter FxxxLandRush.setGzeBonusOffList(uint256)._gzeBonusOffList (contracts/Contract.sol#281) is not in mixedCase Parameter FxxxLandRush.setGzeBonusOnList(uint256)._gzeBonusOnList (contracts/Contract.sol#284) is not in mixedCase Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions Reentrancy in FxxxLandRush.fallback() (contracts/Contract.sol#381-398): External calls: - msg.sender.transfer(ethToRefund) (contracts/Contract.sol#393-394) State variables written after the call(s): - lock = mintParcelTokens(msg.sender,parcels) (contracts/Contract.sol#394-395) - finalised = true (contracts/Contract.sol#417) - lock = mintParcelTokens(msg.sender,parcels) (contracts/Contract.sol#394-395) - parcelsSold = parcelsSold.add(parcels) (contracts/Contract.sol#411-413) Event emitted after the call(s): - Purchased(msg.sender,parcels,0,ethToTransfer,parcelsSold,contributedGze,contributedEth,lock) (contracts/Contract.sol#395-398) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4 approveAndCall(address,uint256,bytes) should be declared external: - BTTSTokenInterface.approveAndCall(address,uint256,bytes) (contracts/Contract.sol#129-131) signedTransferCheck(address,address,uint256,uint256,uint256,bytes,address) should be declared external: - BTTSTokenInterface.signedTransferCheck(address,address,uint256,uint256,uint256,bytes,address) (contracts/Contract.sol#138-139) signedTransfer(address,address,uint256,uint256,uint256,bytes,address) should be declared external: - BTTSTokenInterface.signedTransfer(address,address,uint256,uint256,uint256,bytes,address) (contracts/Contract.sol#139-140) signedApproveCheck(address,address,uint256,uint256,uint256,bytes,address) should be declared external: - BTTSTokenInterface.signedApproveCheck(address,address,uint256,uint256,uint256,bytes,address) (contracts/Contract.sol#142-143) signedApprove(address,address,uint256,uint256,uint256,bytes,address) should be declared external: - BTTSTokenInterface.signedApprove(address,address,uint256,uint256,uint256,bytes,address) (contracts/Contract.sol#143-144) signedTransferFromCheck(address,address,address,uint256,uint256,uint256,bytes,address) should be declared external: - BTTSTokenInterface.signedTransferFromCheck(address,address,address,uint256,uint256,uint256,bytes,address) (contracts/Contract.sol#146-147) signedTransferFrom(address,address,address,uint256,uint256,uint256,bytes,address) should be declared external: - BTTSTokenInterface.signedTransferFrom(address,address,address,uint256,uint256,uint256,bytes,address) (contracts/Contract.sol#147-148) signedApproveAndCallHash(address,address,uint256,bytes,uint256,uint256) should be declared external: - BTTSTokenInterface.signedApproveAndCallHash(address,address,uint256,bytes,uint256,uint256) (contracts/Contract.sol#148-150) signedApproveAndCallCheck(address,address,uint256,bytes,uint256,uint256,bytes,address) should be declared external: - BTTSTokenInterface.signedApproveAndCallCheck(address,address,uint256,bytes,uint256,uint256,bytes,address) (contracts/Contract.sol#150-151) signedApproveAndCall(address,address,uint256,bytes,uint256,uint256,bytes,address) should be declared external: - BTTSTokenInterface.signedApproveAndCall(address,address,uint256,bytes,uint256,uint256,bytes,address) (contracts/Contract.sol#151-152) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external . analyzed (8 contracts with 100 detectors), 47 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.4.25",
"strategy": "solc-select",
"solc_path": "/var/www/tripwire/.venv/bin/solc",
"install_rc": 0,
"use_stderr": null,
"use_stdout": "Switched global version to 0.4.25",
"install_stderr": null,
"install_stdout": "Version '0.4.25' is already installed, skipping..."
},
"solc_args": "--base-path /tmp/slither-xnry1203 --allow-paths /tmp/slither-xnry1203,/tmp/slither-xnry1203/lib,/tmp/slither-xnry1203/src",
"remappings": [],
"source_files": [
"contracts/Contract.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 47,
"workspace_hash": "31ab62892042dadc46de4468a69152e6723f097eefe263b663757319895cf93a",
"duration_seconds": 0.7194023132324219,
"solc_version_requested": "0.4.25"
}
OpenAI Codex v0.118.0 (research preview) -------- workdir: /tmp/codex-1p7tutii model: gpt-5.4 provider: openai approval: never sandbox: read-only reasoning effort: high reasoning summaries: none session id: 019d5c96-3448-79c0-ab3d-9d4ae2569035 -------- 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. warning: Codex could not find system bubblewrap on PATH. Please install bubblewrap with your package manager. Codex will use the vendored bubblewrap in the meantime. ERROR: You've hit your usage limit. Visit https://chatgpt.com/codex/settings/usage to purchase more credits or try again at Apr 8th, 2026 9:11 AM. ERROR: You've hit your usage limit. Visit https://chatgpt.com/codex/settings/usage to purchase more credits or try again at Apr 8th, 2026 9:11 AM.
{
"codex": {
"ran_at": "2026-04-05T07:40:42.645631+00:00",
"returncode": 1
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": null,
"no_findings": null,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x01f5 0000000c: JUMPI 0000000d: PUSH4 0xffffffff 00000012: PUSH1 0xe0 00000014: PUSH1 0x02 00000016: EXP 00000017: PUSH1 0x00 00000019: CALLDATALOAD 0000001a: DIV 0000001b: AND 0000001c: PUSH4 0x06fdde03 00000021: DUP2 00000022: EQ 00000023: PUSH2 0x036c 00000026: JUMPI 00000027: DUP1 00000028: PUSH4 0x09a9597a 0000002d: EQ 0000002e: PUSH2 0x03f6 00000031: JUMPI 00000032: DUP1 00000033: PUSH4 0x0b97bc86 00000038: EQ 00000039: PUSH2 0x041d 0000003c: JUMPI 0000003d: DUP1 0000003e: PUSH4 0x214bb60f 00000043: EQ 00000044: PUSH2 0x0432 00000047: JUMPI 00000048: DUP1 00000049: PUSH4 0x2a8a8b19 0000004e: EQ 0000004f: PUSH2 0x045b 00000052: JUMPI 00000053: DUP1 00000054: PUSH4 0x3784f000 00000059: EQ 0000005a: PUSH2 0x048c 0000005d: JUMPI 0000005e: DUP1 0000005f: PUSH4 0x42f6fb29 00000064: EQ 00000065: PUSH2 0x04a6 00000068: JUMPI 00000069: DUP1 0000006a: PUSH4 0x45b8c0c2 0000006f: EQ 00000070: PUSH2 0x04bb 00000073: JUMPI 00000074: DUP1 00000075: PUSH4 0x460ee77b 0000007a: EQ 0000007b: PUSH2 0x04e9 0000007e: JUMPI 0000007f: DUP1 00000080: PUSH4 0x4e2de9e1 00000085: EQ 00000086: PUSH2 0x04fe 00000089: JUMPI 0000008a: DUP1 0000008b: PUSH4 0x521eb273 00000090: EQ 00000091: PUSH2 0x0516 00000094: JUMPI 00000095: DUP1 00000096: PUSH4 0x5a960216 0000009b: EQ 0000009c: PUSH2 0x052b 0000009f: JUMPI 000000a0: DUP1 000000a1: PUSH4 0x6249e93f 000000a6: EQ 000000a7: PUSH2 0x0540 000000aa: JUMPI 000000ab: DUP1 000000ac: PUSH4 0x6c5dbfa3 000000b1: EQ 000000b2: PUSH2 0x0555 000000b5: JUMPI 000000b6: DUP1 000000b7: PUSH4 0x727c2ff0 000000bc: EQ 000000bd: PUSH2 0x056a 000000c0: JUMPI 000000c1: DUP1 000000c2: PUSH4 0x79ba5097 000000c7: EQ 000000c8: PUSH2 0x0582 000000cb: JUMPI 000000cc: DUP1 000000cd: PUSH4 0x7e71fb09 000000d2: EQ 000000d3: PUSH2 0x0597 000000d6: JUMPI 000000d7: DUP1 000000d8: PUSH4 0x82d95df5 000000dd: EQ 000000de: PUSH2 0x05b8 000000e1: JUMPI 000000e2: DUP1 000000e3: PUSH4 0x8da5cb5b 000000e8: EQ 000000e9: PUSH2 0x05d0 000000ec: JUMPI 000000ed: DUP1 000000ee: PUSH4 0x8f4ffcb1 000000f3: EQ 000000f4: PUSH2 0x05e5 000000f7: JUMPI 000000f8: DUP1 000000f9: PUSH4 0x8fdb72f3 000000fe: EQ 000000ff: PUSH2 0x0655 00000102: JUMPI 00000103: DUP1 00000104: PUSH4 0x91d75b98 00000109: EQ 0000010a: PUSH2 0x066a 0000010d: JUMPI 0000010e: DUP1 0000010f: PUSH4 0x9398ecb6 00000114: EQ 00000115: PUSH2 0x067f 00000118: JUMPI 00000119: DUP1 0000011a: PUSH4 0x9532c476 0000011f: EQ 00000120: PUSH2 0x0697 00000123: JUMPI 00000124: DUP1 00000125: PUSH4 0x95d89b41 0000012a: EQ 0000012b: PUSH2 0x06af 0000012e: JUMPI 0000012f: DUP1 00000130: PUSH4 0xa340d587 00000135: EQ 00000136: PUSH2 0x06c4 00000139: JUMPI 0000013a: DUP1 0000013b: PUSH4 0xa4399263 00000140: EQ 00000141: PUSH2 0x06e8 00000144: JUMPI 00000145: DUP1 00000146: PUSH4 0xa722819b 0000014b: EQ 0000014c: PUSH2 0x06fd 0000014f: JUMPI 00000150: DUP1 00000151: PUSH4 0xb026d70b 00000156: EQ 00000157: PUSH2 0x0712 0000015a: JUMPI 0000015b: DUP1 0000015c: PUSH4 0xb4d3ef5f 00000161: EQ 00000162: PUSH2 0x0727 00000165: JUMPI 00000166: DUP1 00000167: PUSH4 0xbcba33e4 0000016c: EQ 0000016d: PUSH2 0x073c 00000170: JUMPI 00000171: DUP1 00000172: PUSH4 0xc0b82515 00000177: EQ 00000178: PUSH2 0x0751 0000017b: JUMPI 0000017c: DUP1 0000017d: PUSH4 0xc24a0f8b 00000182: EQ 00000183: PUSH2 0x0766 00000186: JUMPI 00000187: DUP1 00000188: PUSH4 0xc65de62f 0000018d: EQ 0000018e: PUSH2 0x077b 00000191: JUMPI 00000192: DUP1 00000193: PUSH4 0xc949ce80 00000198: EQ 00000199: PUSH2 0x0790 0000019c: JUMPI 0000019d: DUP1 0000019e: PUSH4 0xcca794da 000001a3: EQ 000001a4: PUSH2 0x07a5 000001a7: JUMPI 000001a8: DUP1 000001a9: PUSH4 0xcf356f83 000001ae: EQ 000001af: PUSH2 0x07bd 000001b2: JUMPI 000001b3: DUP1 000001b4: PUSH4 0xd4ee1d90 000001b9: EQ 000001ba: PUSH2 0x07d2 000001bd: JUMPI 000001be: DUP1 000001bf: PUSH4 0xdeaa59df 000001c4: EQ 000001c5: PUSH2 0x07e7 000001c8: JUMPI 000001c9: DUP1 000001ca: PUSH4 0xe0f4ed01 000001cf: EQ 000001d0: PUSH2 0x0808 000001d3: JUMPI 000001d4: DUP1 000001d5: PUSH4 0xebb5a996 000001da: EQ 000001db: PUSH2 0x081d 000001de: JUMPI 000001df: DUP1 000001e0: PUSH4 0xf2fde38b 000001e5: EQ 000001e6: PUSH2 0x0835 000001e9: JUMPI 000001ea: DUP1 000001eb: PUSH4 0xf314e976 000001f0: EQ 000001f1: PUSH2 0x0856 000001f4: JUMPI 000001f5: JUMPDEST 000001f6: PUSH1 0x00 000001f8: DUP1 000001f9: PUSH1 0x00 000001fb: DUP1 000001fc: PUSH1 0x00 000001fe: DUP1 000001ff: PUSH1 0x08 00000201: SLOAD 00000202: TIMESTAMP 00000203: LT 00000204: ISZERO 00000205: DUP1 00000206: ISZERO 00000207: PUSH2 0x0212 0000020a: JUMPI 0000020b: POP 0000020c: PUSH1 0x09 0000020e: SLOAD 0000020f: TIMESTAMP 00000210: GT 00000211: ISZERO 00000212: JUMPDEST 00000213: ISZERO 00000214: ISZERO 00000215: PUSH2 0x021d 00000218: JUMPI 00000219: PUSH1 0x00 0000021b: DUP1 0000021c: REVERT 0000021d: JUMPDEST 0000021e: PUSH2 0x0225 00000221: PUSH2 0x086b 00000224: JUMP 00000225: JUMPDEST 00000226: SWAP1 00000227: SWAP7 00000228: POP 00000229: SWAP5 0000022a: POP 0000022b: DUP5 0000022c: ISZERO 0000022d: ISZERO 0000022e: PUSH2 0x0236 00000231: JUMPI 00000232: PUSH1 0x00 00000234: DUP1 00000235: REVERT 00000236: JUMPDEST 00000237: PUSH2 0x0246 0000023a: CALLVALUE 0000023b: DUP8 0000023c: PUSH4 0xffffffff 00000241: PUSH2 0x08b7 00000244: AND 00000245: JUMP 00000246: JUMPDEST 00000247: SWAP4 00000248: POP 00000249: PUSH1 0x0a 0000024b: SLOAD 0000024c: PUSH2 0x0260 0000024f: DUP6 00000250: PUSH1 0x0f 00000252: SLOAD 00000253: PUSH2 0x08d8 00000256: SWAP1 00000257: SWAP2 00000258: SWAP1 00000259: PUSH4 0xffffffff 0000025e: AND 0000025f: JUMP 00000260: JUMPDEST 00000261: LT 00000262: PUSH2 0x027d 00000265: JUMPI 00000266: PUSH1 0x0f 00000268: SLOAD 00000269: PUSH1 0x0a 0000026b: SLOAD 0000026c: PUSH2 0x027a 0000026f: SWAP2 00000270: PUSH4 0xffffffff 00000275: PUSH2 0x08ee 00000278: AND 00000279: JUMP 0000027a: JUMPDEST 0000027b: SWAP4 0000027c: POP 0000027d: JUMPDEST 0000027e: PUSH2 0x028d 00000281: DUP5 00000282: DUP8 00000283: PUSH4 0xffffffff 00000288: PUSH2 0x0903 0000028b: AND 0000028c: JUMP 0000028d: JUMPDEST 0000028e: PUSH1 0x11 00000290: SLOAD 00000291: SWAP1 00000292: SWAP4 00000293: POP 00000294: PUSH2 0x02a3 00000297: SWAP1 00000298: DUP5 00000299: PUSH4 0xffffffff 0000029e: PUSH2 0x08d8 000002a1: AND 000002a2: JUMP 000002a3: JUMPDEST 000002a4: PUSH1 0x11 000002a6: SSTORE 000002a7: PUSH2 0x02b6 000002aa: CALLVALUE 000002ab: DUP5 000002ac: PUSH4 0xffffffff 000002b1: PUSH2 0x08ee 000002b4: AND 000002b5: JUMP 000002b6: JUMPDEST 000002b7: SWAP2 000002b8: POP 000002b9: PUSH1 0x00 000002bb: DUP3 000002bc: GT 000002bd: ISZERO 000002be: PUSH2 0x02f0 000002c1: JUMPI 000002c2: PUSH1 0x40 000002c4: MLOAD 000002c5: CALLER 000002c6: SWAP1 000002c7: DUP4 000002c8: ISZERO 000002c9: PUSH2 0x08fc 000002cc: MUL 000002cd: SWAP1 000002ce: DUP5 000002cf: SWAP1 000002d0: PUSH1 0x00 000002d2: DUP2 000002d3: DUP2 000002d4: DUP2 000002d5: DUP6 000002d6: DUP9 000002d7: DUP9 000002d8: CALL 000002d9: SWAP4 000002da: POP 000002db: POP 000002dc: POP 000002dd: POP 000002de: ISZERO 000002df: DUP1 000002e0: ISZERO 000002e1: PUSH2 0x02ee 000002e4: JUMPI 000002e5: RETURNDATASIZE 000002e6: PUSH1 0x00 000002e8: DUP1 000002e9: RETURNDATACOPY 000002ea: RETURNDATASIZE 000002eb: PUSH1 0x00 000002ed: REVERT 000002ee: JUMPDEST 000002ef: POP 000002f0: JUMPDEST 000002f1: PUSH2 0x02fa 000002f4: CALLER 000002f5: DUP6 000002f6: PUSH2 0x0928 000002f9: JUMP 000002fa: JUMPDEST 000002fb: PUSH1 0x0f 000002fd: SLOAD 000002fe: PUSH1 0x10 00000300: SLOAD 00000301: PUSH1 0x11 00000303: SLOAD 00000304: PUSH1 0x40 00000306: DUP1 00000307: MLOAD 00000308: DUP10 00000309: DUP2 0000030a: MSTORE 0000030b: PUSH1 0x00 0000030d: PUSH1 0x20 0000030f: DUP3 00000310: ADD 00000311: MSTORE 00000312: DUP1 00000313: DUP3 00000314: ADD 00000315: DUP10 00000316: SWAP1 00000317: MSTORE 00000318: PUSH1 0x60 0000031a: DUP2 0000031b: ADD 0000031c: SWAP5 0000031d: SWAP1 0000031e: SWAP5 0000031f: MSTORE 00000320: PUSH1 0x80 00000322: DUP5 00000323: ADD 00000324: SWAP3 00000325: SWAP1 00000326: SWAP3 00000327: MSTORE 00000328: PUSH1 0xa0 0000032a: DUP4 0000032b: ADD 0000032c: MSTORE 0000032d: DUP3 0000032e: ISZERO 0000032f: ISZERO 00000330: PUSH1 0xc0 00000332: DUP4 00000333: ADD 00000334: MSTORE 00000335: MLOAD 00000336: SWAP2 00000337: SWAP3 00000338: POP 00000339: CALLER 0000033a: SWAP2 0000033b: PUSH32 0x20fe12028d9f9484cae3903103a15de61b4e2269b7572e5357eed98ecaed54f3 0000035c: SWAP2 0000035d: DUP2 0000035e: SWAP1 0000035f: SUB 00000360: PUSH1 0xe0 00000362: ADD 00000363: SWAP1 00000364: LOG2 00000365: POP 00000366: POP 00000367: POP 00000368: POP 00000369: POP 0000036a: POP 0000036b: STOP 0000036c: JUMPDEST 0000036d: CALLVALUE 0000036e: DUP1 0000036f: ISZERO 00000370: PUSH2 0x0378 00000373: JUMPI 00000374: PUSH1 0x00 00000376: DUP1 00000377: REVERT 00000378: JUMPDEST 00000379: POP 0000037a: PUSH2 0x0381 0000037d: PUSH2 0x0b4a 00000380: JUMP 00000381: JUMPDEST 00000382: PUSH1 0x40 00000384: DUP1 00000385: MLOAD 00000386: PUSH1 0x20 00000388: DUP1 00000389: DUP3 0000038a: MSTORE 0000038b: DUP4 0000038c: MLOAD 0000038d: DUP2 0000038e: DUP4 0000038f: ADD 00000390: MSTORE 00000391: DUP4 00000392: MLOAD 00000393: SWAP2 00000394: SWAP3 00000395: DUP4 00000396: SWAP3 00000397: SWAP1 00000398: DUP4 00000399: ADD 0000039a: SWAP2 0000039b: DUP6 0000039c: ADD 0000039d: SWAP1 0000039e: DUP1 0000039f: DUP4 000003a0: DUP4 000003a1: PUSH1 0x00 000003a3: JUMPDEST 000003a4: DUP4 000003a5: DUP2 000003a6: LT 000003a7: ISZERO 000003a8: PUSH2 0x03bb 000003ab: JUMPI 000003ac: DUP2 000003ad: DUP2 000003ae: ADD 000003af: MLOAD 000003b0: DUP4 000003b1: DUP3 000003b2: ADD 000003b3: MSTORE 000003b4: PUSH1 0x20 000003b6: ADD 000003b7: PUSH2 0x03a3 000003ba: JUMP 000003bb: JUMPDEST 000003bc: POP 000003bd: POP 000003be: POP 000003bf: POP 000003c0: SWAP1 000003c1: POP 000003c2: SWAP1 000003c3: DUP2 000003c4: ADD 000003c5: SWAP1 000003c6: PUSH1 0x1f 000003c8: AND 000003c9: DUP1 000003ca: ISZERO 000003cb: PUSH2 0x03e8 000003ce: JUMPI 000003cf: DUP1 000003d0: DUP3 000003d1: SUB 000003d2: DUP1 000003d3: MLOAD 000003d4: PUSH1 0x01 000003d6: DUP4 000003d7: PUSH1 0x20 000003d9: SUB 000003da: PUSH2 0x0100 000003dd: EXP 000003de: SUB 000003df: NOT 000003e0: AND 000003e1: DUP2 000003e2: MSTORE 000003e3: PUSH1 0x20 000003e5: ADD 000003e6: SWAP2 000003e7: POP 000003e8: JUMPDEST 000003e9: POP 000003ea: SWAP3 000003eb: POP 000003ec: POP 000003ed: POP 000003ee: PUSH1 0x40 000003f0: MLOAD 000003f1: DUP1 000003f2: SWAP2 000003f3: SUB 000003f4: SWAP1 000003f5: RETURN 000003f6: JUMPDEST 000003f7: CALLVALUE 000003f8: DUP1 000003f9: ISZERO 000003fa: PUSH2 0x0402 000003fd: JUMPI 000003fe: PUSH1 0x00 00000400: DUP1 00000401: REVERT 00000402: JUMPDEST 00000403: POP 00000404: PUSH2 0x040b 00000407: PUSH2 0x0c36 0000040a: JUMP 0000040b: JUMPDEST 0000040c: PUSH1 0x40 0000040e: DUP1 0000040f: MLOAD 00000410: SWAP2 00000411: DUP3 00000412: MSTORE 00000413: MLOAD 00000414: SWAP1 00000415: DUP2 00000416: SWAP1 00000417: SUB 00000418: PUSH1 0x20 0000041a: ADD 0000041b: SWAP1 0000041c: RETURN 0000041d: JUMPDEST 0000041e: CALLVALUE 0000041f: DUP1 00000420: ISZERO 00000421: PUSH2 0x0429 00000424: JUMPI 00000425: PUSH1 0x00 00000427: DUP1 00000428: REVERT 00000429: JUMPDEST 0000042a: POP 0000042b: PUSH2 0x040b 0000042e: PUSH2 0x0c3c 00000431: JUMP 00000432: JUMPDEST 00000433: CALLVALUE 00000434: DUP1 00000435: ISZERO 00000436: PUSH2 0x043e 00000439: JUMPI 0000043a: PUSH1 0x00 0000043c: DUP1 0000043d: REVERT 0000043e: JUMPDEST 0000043f: POP 00000440: PUSH2 0x0447 00000443: PUSH2 0x0c42 00000446: JUMP 00000447: JUMPDEST 00000448: PUSH1 0x40 0000044a: DUP1 0000044b: MLOAD 0000044c: SWAP2 0000044d: ISZERO 0000044e: ISZERO 0000044f: DUP3 00000450: MSTORE 00000451: MLOAD 00000452: SWAP1 00000453: DUP2 00000454: SWAP1 00000455: SUB 00000456: PUSH1 0x20 00000458: ADD 00000459: SWAP1 0000045a: RETURN 0000045b: JUMPDEST 0000045c: CALLVALUE 0000045d: DUP1 0000045e: ISZERO 0000045f: PUSH2 0x0467 00000462: JUMPI 00000463: PUSH1 0x00 00000465: DUP1 00000466: REVERT 00000467: JUMPDEST 00000468: POP 00000469: PUSH2 0x0470 0000046c: PUSH2 0x0c4b 0000046f: JUMP 00000470: JUMPDEST 00000471: PUSH1 0x40 00000473: DUP1 00000474: MLOAD 00000475: PUSH1 0x01 00000477: PUSH1 0xa0 00000479: PUSH1 0x02 0000047b: EXP 0000047c: SUB 0000047d: SWAP1 0000047e: SWAP3 0000047f: AND 00000480: DUP3 00000481: MSTORE 00000482: MLOAD 00000483: SWAP1 00000484: DUP2 00000485: SWAP1 00000486: SUB 00000487: PUSH1 0x20 00000489: ADD 0000048a: SWAP1 0000048b: RETURN 0000048c: JUMPDEST 0000048d: CALLVALUE 0000048e: DUP1 0000048f: ISZERO 00000490: PUSH2 0x0498 00000493: JUMPI 00000494: PUSH1 0x00 00000496: DUP1 00000497: REVERT 00000498: JUMPDEST 00000499: POP 0000049a: PUSH2 0x04a4 0000049d: PUSH1 0x04 0000049f: CALLDATALOAD 000004a0: PUSH2 0x0c5a 000004a3: JUMP 000004a4: JUMPDEST 000004a5: STOP 000004a6: JUMPDEST 000004a7: CALLVALUE 000004a8: DUP1 000004a9: ISZERO 000004aa: PUSH2 0x04b2 000004ad: JUMPI 000004ae: PUSH1 0x00 000004b0: DUP1 000004b1: REVERT 000004b2: JUMPDEST 000004b3: POP 000004b4: PUSH2 0x0470 000004b7: PUSH2 0x0cd1 000004ba: JUMP 000004bb: JUMPDEST 000004bc: CALLVALUE 000004bd: DUP1 000004be: ISZERO 000004bf: PUSH2 0x04c7 000004c2: JUMPI 000004c3: PUSH1 0x00 000004c5: DUP1 000004c6: REVERT 000004c7: JUMPDEST 000004c8: POP 000004c9: PUSH2 0x04d0 000004cc: PUSH2 0x0ce0 000004cf: JUMP 000004d0: JUMPDEST 000004d1: PUSH1 0x40 000004d3: DUP1 000004d4: MLOAD 000004d5: SWAP3 000004d6: DUP4 000004d7: MSTORE 000004d8: SWAP1 000004d9: ISZERO 000004da: ISZERO 000004db: PUSH1 0x20 000004dd: DUP4 000004de: ADD 000004df: MSTORE 000004e0: DUP1 000004e1: MLOAD 000004e2: SWAP2 000004e3: DUP3 000004e4: SWAP1 000004e5: SUB 000004e6: ADD 000004e7: SWAP1 000004e8: RETURN 000004e9: JUMPDEST 000004ea: CALLVALUE 000004eb: DUP1 000004ec: ISZERO 000004ed: PUSH2 0x04f5 000004f0: JUMPI 000004f1: PUSH1 0x00 000004f3: DUP1 000004f4: REVERT 000004f5: JUMPDEST 000004f6: POP 000004f7: PUSH2 0x040b 000004fa: PUSH2 0x0d20 000004fd: JUMP 000004fe: JUMPDEST 000004ff: CALLVALUE 00000500: DUP1 00000501: ISZERO 00000502: PUSH2 0x050a 00000505: JUMPI 00000506: PUSH1 0x00 00000508: DUP1 00000509: REVERT 0000050a: JUMPDEST 0000050b: POP 0000050c: PUSH2 0x04a4 0000050f: PUSH1 0x04 00000511: CALLDATALOAD 00000512: PUSH2 0x0d26 00000515: JUMP 00000516: JUMPDEST 00000517: CALLVALUE 00000518: DUP1 00000519: ISZERO 0000051a: PUSH2 0x0522 0000051d: JUMPI 0000051e: PUSH1 0x00 00000520: DUP1 00000521: REVERT 00000522: JUMPDEST 00000523: POP 00000524: PUSH2 0x0470 00000527: PUSH2 0x0d8f 0000052a: JUMP 0000052b: JUMPDEST 0000052c: CALLVALUE 0000052d: DUP1 0000052e: ISZERO 0000052f: PUSH2 0x0537 00000532: JUMPI 00000533: PUSH1 0x00 00000535: DUP1 00000536: REVERT 00000537: JUMPDEST 00000538: POP 00000539: PUSH2 0x04d0 0000053c: PUSH2 0x0d9e 0000053f: JUMP 00000540: JUMPDEST 00000541: CALLVALUE 00000542: DUP1 00000543: ISZERO 00000544: PUSH2 0x054c 00000547: JUMPI 00000548: PUSH1 0x00 0000054a: DUP1 0000054b: REVERT 0000054c: JUMPDEST 0000054d: POP 0000054e: PUSH2 0x040b 00000551: PUSH2 0x0e38 00000554: JUMP 00000555: JUMPDEST 00000556: CALLVALUE 00000557: DUP1 00000558: ISZERO 00000559: PUSH2 0x0561 0000055c: JUMPI 0000055d: PUSH1 0x00 0000055f: DUP1 00000560: REVERT 00000561: JUMPDEST 00000562: POP 00000563: PUSH2 0x040b 00000566: PUSH2 0x0e3e 00000569: JUMP 0000056a: JUMPDEST 0000056b: CALLVALUE 0000056c: DUP1 0000056d: ISZERO 0000056e: PUSH2 0x0576 00000571: JUMPI 00000572: PUSH1 0x00 00000574: DUP1 00000575: REVERT 00000576: JUMPDEST 00000577: POP 00000578: PUSH2 0x04a4 0000057b: PUSH1 0x04 0000057d: CALLDATALOAD 0000057e: PUSH2 0x0e44 00000581: JUMP 00000582: JUMPDEST 00000583: CALLVALUE 00000584: DUP1 00000585: ISZERO 00000586: PUSH2 0x058e 00000589: JUMPI 0000058a: PUSH1 0x00 0000058c: DUP1 0000058d: REVERT 0000058e: JUMPDEST 0000058f: POP 00000590: PUSH2 0x04a4 00000593: PUSH2 0x0f12 00000596: JUMP 00000597: JUMPDEST 00000598: CALLVALUE 00000599: DUP1 0000059a: ISZERO 0000059b: PUSH2 0x05a3 0000059e: JUMPI 0000059f: PUSH1 0x00 000005a1: DUP1 000005a2: REVERT 000005a3: JUMPDEST 000005a4: POP 000005a5: PUSH2 0x04a4 000005a8: PUSH1 0x01 000005aa: PUSH1 0xa0 000005ac: PUSH1 0x02 000005ae: EXP 000005af: SUB 000005b0: PUSH1 0x04 000005b2: CALLDATALOAD 000005b3: AND 000005b4: PUSH2 0x0f9a 000005b7: JUMP 000005b8: JUMPDEST 000005b9: CALLVALUE 000005ba: DUP1 000005bb: ISZERO 000005bc: PUSH2 0x05c4 000005bf: JUMPI 000005c0: PUSH1 0x00 000005c2: DUP1 000005c3: REVERT 000005c4: JUMPDEST 000005c5: POP 000005c6: PUSH2 0x04a4 000005c9: PUSH1 0x04 000005cb: CALLDATALOAD 000005cc: PUSH2 0x1019 000005cf: JUMP 000005d0: JUMPDEST 000005d1: CALLVALUE 000005d2: DUP1 000005d3: ISZERO 000005d4: PUSH2 0x05dc 000005d7: JUMPI 000005d8: PUSH1 0x00 000005da: DUP1 000005db: REVERT 000005dc: JUMPDEST 000005dd: POP 000005de: PUSH2 0x0470 000005e1: PUSH2 0x108f 000005e4: JUMP 000005e5: JUMPDEST 000005e6: CALLVALUE 000005e7: DUP1 000005e8: ISZERO 000005e9: PUSH2 0x05f1 000005ec: JUMPI 000005ed: PUSH1 0x00 000005ef: DUP1 000005f0: REVERT 000005f1: JUMPDEST 000005f2: POP 000005f3: PUSH1 0x40 000005f5: DUP1 000005f6: MLOAD 000005f7: PUSH1 0x20 000005f9: PUSH1 0x1f 000005fb: PUSH1 0x64 000005fd: CALLDATALOAD 000005fe: PUSH1 0x04 00000600: DUP2 00000601: DUP2 00000602: ADD 00000603: CALLDATALOAD 00000604: SWAP3 00000605: DUP4 00000606: ADD 00000607: DUP5 00000608: SWAP1 00000609: DIV 0000060a: DUP5 0000060b: MUL 0000060c: DUP6 0000060d: ADD 0000060e: DUP5 0000060f: ADD 00000610: SWAP1 00000611: SWAP6 00000612: MSTORE 00000613: DUP2 00000614: DUP5 00000615: MSTORE 00000616: PUSH2 0x04a4 00000619: SWAP5 0000061a: PUSH1 0x01 0000061c: PUSH1 0xa0 0000061e: PUSH1 0x02 00000620: EXP 00000621: SUB 00000622: DUP2 00000623: CALLDATALOAD 00000624: DUP2 00000625: AND 00000626: SWAP6 00000627: PUSH1 0x24 00000629: DUP1 0000062a: CALLDATALOAD 0000062b: SWAP7 0000062c: PUSH1 0x44 0000062e: CALLDATALOAD 0000062f: SWAP1 00000630: SWAP4 00000631: AND 00000632: SWAP6 00000633: CALLDATASIZE 00000634: SWAP6 00000635: PUSH1 0x84 00000637: SWAP5 00000638: SWAP3 00000639: ADD 0000063a: SWAP2 0000063b: DUP2 0000063c: SWAP1 0000063d: DUP5 0000063e: ADD 0000063f: DUP4 00000640: DUP3 00000641: DUP1 00000642: DUP3 00000643: DUP5 00000644: CALLDATACOPY 00000645: POP 00000646: SWAP5 00000647: SWAP8 00000648: POP 00000649: PUSH2 0x109e 0000064c: SWAP7 0000064d: POP 0000064e: POP 0000064f: POP 00000650: POP 00000651: POP 00000652: POP 00000653: POP 00000654: JUMP 00000655: JUMPDEST 00000656: CALLVALUE 00000657: DUP1 00000658: ISZERO 00000659: PUSH2 0x0661 0000065c: JUMPI 0000065d: PUSH1 0x00 0000065f: DUP1 00000660: REVERT 00000661: JUMPDEST 00000662: POP 00000663: PUSH2 0x04d0 00000666: PUSH2 0x134a 00000669: JUMP 0000066a: JUMPDEST 0000066b: CALLVALUE 0000066c: DUP1 0000066d: ISZERO 0000066e: PUSH2 0x0676 00000671: JUMPI 00000672: PUSH1 0x00 00000674: DUP1 00000675: REVERT 00000676: JUMPDEST 00000677: POP 00000678: PUSH2 0x040b 0000067b: PUSH2 0x13a9 0000067e: JUMP 0000067f: JUMPDEST 00000680: CALLVALUE 00000681: DUP1 00000682: ISZERO 00000683: PUSH2 0x068b 00000686: JUMPI 00000687: PUSH1 0x00 00000689: DUP1 0000068a: REVERT 0000068b: JUMPDEST 0000068c: POP 0000068d: PUSH2 0x04a4 00000690: PUSH1 0x04 00000692: CALLDATALOAD 00000693: PUSH2 0x13af 00000696: JUMP 00000697: JUMPDEST 00000698: CALLVALUE 00000699: DUP1 0000069a: ISZERO 0000069b: PUSH2 0x06a3 0000069e: JUMPI 0000069f: PUSH1 0x00 000006a1: DUP1 000006a2: REVERT 000006a3: JUMPDEST 000006a4: POP 000006a5: PUSH2 0x04a4 000006a8: PUSH1 0x04 000006aa: CALLDATALOAD 000006ab: PUSH2 0x1427 000006ae: JUMP 000006af: JUMPDEST 000006b0: CALLVALUE 000006b1: DUP1 000006b2: ISZERO 000006b3: PUSH2 0x06bb 000006b6: JUMPI 000006b7: PUSH1 0x00 000006b9: DUP1 000006ba: REVERT 000006bb: JUMPDEST 000006bc: POP 000006bd: PUSH2 0x0381 000006c0: PUSH2 0x149d 000006c3: JUMP 000006c4: JUMPDEST 000006c5: CALLVALUE 000006c6: DUP1 000006c7: ISZERO 000006c8: PUSH2 0x06d0 000006cb: JUMPI 000006cc: PUSH1 0x00 000006ce: DUP1 000006cf: REVERT 000006d0: JUMPDEST 000006d1: POP 000006d2: PUSH2 0x04a4 000006d5: PUSH1 0x01 000006d7: PUSH1 0xa0 000006d9: PUSH1 0x02 000006db: EXP 000006dc: SUB 000006dd: PUSH1 0x04 000006df: CALLDATALOAD 000006e0: AND 000006e1: PUSH1 0x24 000006e3: CALLDATALOAD 000006e4: PUSH2 0x14fc 000006e7: JUMP 000006e8: JUMPDEST 000006e9: CALLVALUE 000006ea: DUP1 000006eb: ISZERO 000006ec: PUSH2 0x06f4 000006ef: JUMPI 000006f0: PUSH1 0x00 000006f2: DUP1 000006f3: REVERT 000006f4: JUMPDEST 000006f5: POP 000006f6: PUSH2 0x04a4 000006f9: PUSH2 0x15d9 000006fc: JUMP 000006fd: JUMPDEST 000006fe: CALLVALUE 000006ff: DUP1 00000700: ISZERO 00000701: PUSH2 0x0709 00000704: JUMPI 00000705: PUSH1 0x00 00000707: DUP1 00000708: REVERT 00000709: JUMPDEST 0000070a: POP 0000070b: PUSH2 0x0470 0000070e: PUSH2 0x1699 00000711: JUMP 00000712: JUMPDEST 00000713: CALLVALUE 00000714: DUP1 00000715: ISZERO 00000716: PUSH2 0x071e 00000719: JUMPI 0000071a: PUSH1 0x00 0000071c: DUP1 0000071d: REVERT 0000071e: JUMPDEST 0000071f: POP 00000720: PUSH2 0x040b 00000723: PUSH2 0x16a8 00000726: JUMP 00000727: JUMPDEST 00000728: CALLVALUE 00000729: DUP1 0000072a: ISZERO 0000072b: PUSH2 0x0733 0000072e: JUMPI 0000072f: PUSH1 0x00 00000731: DUP1 00000732: REVERT 00000733: JUMPDEST 00000734: POP 00000735: PUSH2 0x040b 00000738: PUSH2 0x16ae 0000073b: JUMP 0000073c: JUMPDEST 0000073d: CALLVALUE 0000073e: DUP1 0000073f: ISZERO 00000740: PUSH2 0x0748 00000743: JUMPI 00000744: PUSH1 0x00 00000746: DUP1 00000747: REVERT 00000748: JUMPDEST 00000749: POP 0000074a: PUSH2 0x040b 0000074d: PUSH2 0x16b4 00000750: JUMP 00000751: JUMPDEST 00000752: CALLVALUE 00000753: DUP1 00000754: ISZERO 00000755: PUSH2 0x075d 00000758: JUMPI 00000759: PUSH1 0x00 0000075b: DUP1 0000075c: REVERT 0000075d: JUMPDEST 0000075e: POP 0000075f: PUSH2 0x04d0 00000762: PUSH2 0x16ba 00000765: JUMP 00000766: JUMPDEST 00000767: CALLVALUE 00000768: DUP1 00000769: ISZERO 0000076a: PUSH2 0x0772 0000076d: JUMPI 0000076e: PUSH1 0x00 00000770: DUP1 00000771: REVERT 00000772: JUMPDEST 00000773: POP 00000774: PUSH2 0x040b 00000777: PUSH2 0x181c 0000077a: JUMP 0000077b: JUMPDEST 0000077c: CALLVALUE 0000077d: DUP1 0000077e: ISZERO 0000077f: PUSH2 0x0787 00000782: JUMPI 00000783: PUSH1 0x00 00000785: DUP1 00000786: REVERT 00000787: JUMPDEST 00000788: POP 00000789: PUSH2 0x0470 0000078c: PUSH2 0x1822 0000078f: JUMP 00000790: JUMPDEST 00000791: CALLVALUE 00000792: DUP1 00000793: ISZERO 00000794: PUSH2 0x079c 00000797: JUMPI 00000798: PUSH1 0x00 0000079a: DUP1 0000079b: REVERT 0000079c: JUMPDEST 0000079d: POP 0000079e: PUSH2 0x0470 000007a1: PUSH2 0x1831 000007a4: JUMP 000007a5: JUMPDEST 000007a6: CALLVALUE 000007a7: DUP1 000007a8: ISZERO 000007a9: PUSH2 0x07b1 000007ac: JUMPI 000007ad: PUSH1 0x00 000007af: DUP1 000007b0: REVERT 000007b1: JUMPDEST 000007b2: POP 000007b3: PUSH2 0x04a4 000007b6: PUSH1 0x04 000007b8: CALLDATALOAD 000007b9: PUSH2 0x1840 000007bc: JUMP 000007bd: JUMPDEST 000007be: CALLVALUE 000007bf: DUP1 000007c0: ISZERO 000007c1: PUSH2 0x07c9 000007c4: JUMPI 000007c5: PUSH1 0x00 000007c7: DUP1 000007c8: REVERT 000007c9: JUMPDEST 000007ca: POP 000007cb: PUSH2 0x04d0 000007ce: PUSH2 0x18a9 000007d1: JUMP 000007d2: JUMPDEST 000007d3: CALLVALUE 000007d4: DUP1 000007d5: ISZERO 000007d6: PUSH2 0x07de 000007d9: JUMPI 000007da: PUSH1 0x00 000007dc: DUP1 000007dd: REVERT 000007de: JUMPDEST 000007df: POP 000007e0: PUSH2 0x0470 000007e3: PUSH2 0x18d8 000007e6: JUMP 000007e7: JUMPDEST 000007e8: CALLVALUE 000007e9: DUP1 000007ea: ISZERO 000007eb: PUSH2 0x07f3 000007ee: JUMPI 000007ef: PUSH1 0x00 000007f1: DUP1 000007f2: REVERT 000007f3: JUMPDEST 000007f4: POP 000007f5: PUSH2 0x04a4 000007f8: PUSH1 0x01 000007fa: PUSH1 0xa0 000007fc: PUSH1 0x02 000007fe: EXP 000007ff: SUB 00000800: PUSH1 0x04 00000802: CALLDATALOAD 00000803: AND 00000804: PUSH2 0x18e7 00000807: JUMP 00000808: JUMPDEST 00000809: CALLVALUE 0000080a: DUP1 0000080b: ISZERO 0000080c: PUSH2 0x0814 0000080f: JUMPI 00000810: PUSH1 0x00 00000812: DUP1 00000813: REVERT 00000814: JUMPDEST 00000815: POP 00000816: PUSH2 0x04d0 00000819: PUSH2 0x086b 0000081c: JUMP 0000081d: JUMPDEST 0000081e: CALLVALUE 0000081f: DUP1 00000820: ISZERO 00000821: PUSH2 0x0829 00000824: JUMPI 00000825: PUSH1 0x00 00000827: DUP1 00000828: REVERT 00000829: JUMPDEST 0000082a: POP 0000082b: PUSH2 0x04a4 0000082e: PUSH1 0x04 00000830: CALLDATALOAD 00000831: PUSH2 0x198c 00000834: JUMP 00000835: JUMPDEST 00000836: CALLVALUE 00000837: DUP1 00000838: ISZERO 00000839: PUSH2 0x0841 0000083c: JUMPI 0000083d: PUSH1 0x00 0000083f: DUP1 00000840: REVERT 00000841: JUMPDEST 00000842: POP 00000843: PUSH2 0x04a4 00000846: PUSH1 0x01 00000848: PUSH1 0xa0 0000084a: PUSH1 0x02 0000084c: EXP 0000084d: SUB 0000084e: PUSH1 0x04 00000850: CALLDATALOAD 00000851: AND 00000852: PUSH2 0x19f5 00000855: JUMP 00000856: JUMPDEST 00000857: CALLVALUE 00000858: DUP1 00000859: ISZERO 0000085a: PUSH2 0x0862 0000085d: JUMPI 0000085e: PUSH1 0x00 00000860: DUP1 00000861: REVERT 00000862: JUMPDEST 00000863: POP 00000864: PUSH2 0x04d0 00000867: PUSH2 0x1a3b 0000086a: JUMP 0000086b: JUMPDEST 0000086c: PUSH1 0x00 0000086e: DUP1 0000086f: PUSH1 0x00 00000871: PUSH2 0x0878 00000874: PUSH2 0x0d9e 00000877: JUMP 00000878: JUMPDEST 00000879: SWAP3 0000087a: POP 0000087b: SWAP1 0000087c: POP 0000087d: DUP2 0000087e: ISZERO 0000087f: PUSH2 0x08b2 00000882: JUMPI 00000883: PUSH2 0x08af 00000886: DUP2 00000887: PUSH2 0x08a3 0000088a: PUSH8 0x0de0b6b3a7640000 00000893: PUSH1 0x0b 00000895: SLOAD 00000896: PUSH2 0x0903 00000899: SWAP1 0000089a: SWAP2 0000089b: SWAP1 0000089c: PUSH4 0xffffffff 000008a1: AND 000008a2: JUMP 000008a3: JUMPDEST 000008a4: SWAP1 000008a5: PUSH4 0xffffffff 000008aa: PUSH2 0x08b7 000008ad: AND 000008ae: JUMP 000008af: JUMPDEST 000008b0: SWAP3 000008b1: POP 000008b2: JUMPDEST 000008b3: POP 000008b4: SWAP1 000008b5: SWAP2 000008b6: JUMP 000008b7: JUMPDEST 000008b8: PUSH1 0x00 000008ba: DUP1 000008bb: DUP3 000008bc: GT 000008bd: PUSH2 0x08c5 000008c0: JUMPI 000008c1: PUSH1 0x00 000008c3: DUP1 000008c4: REVERT 000008c5: JUMPDEST 000008c6: DUP2 000008c7: DUP4 000008c8: DUP2 000008c9: ISZERO 000008ca: ISZERO 000008cb: PUSH2 0x08d0 000008ce: JUMPI 000008cf: INVALID 000008d0: JUMPDEST 000008d1: DIV 000008d2: SWAP4 000008d3: SWAP3 000008d4: POP 000008d5: POP 000008d6: POP 000008d7: JUMP 000008d8: JUMPDEST 000008d9: DUP2 000008da: DUP2 000008db: ADD 000008dc: DUP3 000008dd: DUP2 000008de: LT 000008df: ISZERO 000008e0: PUSH2 0x08e8 000008e3: JUMPI 000008e4: PUSH1 0x00 000008e6: DUP1 000008e7: REVERT 000008e8: JUMPDEST 000008e9: SWAP3 000008ea: SWAP2 000008eb: POP 000008ec: POP 000008ed: JUMP 000008ee: JUMPDEST 000008ef: PUSH1 0x00 000008f1: DUP3 000008f2: DUP3 000008f3: GT 000008f4: ISZERO 000008f5: PUSH2 0x08fd 000008f8: JUMPI 000008f9: PUSH1 0x00 000008fb: DUP1 000008fc: REVERT 000008fd: JUMPDEST 000008fe: POP 000008ff: SWAP1 00000900: SUB 00000901: SWAP1 00000902: JUMP 00000903: JUMPDEST 00000904: DUP2 00000905: DUP2 00000906: MUL 00000907: DUP3 00000908: ISZERO 00000909: DUP1 0000090a: PUSH2 0x091d 0000090d: JUMPI 0000090e: POP 0000090f: DUP2 00000910: DUP4 00000911: DUP3 00000912: DUP2 00000913: ISZERO 00000914: ISZERO 00000915: PUSH2 0x091a 00000918: JUMPI 00000919: INVALID 0000091a: JUMPDEST 0000091b: DIV 0000091c: EQ 0000091d: JUMPDEST 0000091e: ISZERO 0000091f: ISZERO 00000920: PUSH2 0x08e8 00000923: JUMPI 00000924: PUSH1 0x00 00000926: DUP1 00000927: REVERT 00000928: JUMPDEST 00000929: PUSH1 0x00 0000092b: DUP1 0000092c: DUP3 0000092d: GT 0000092e: PUSH2 0x0936 00000931: JUMPI 00000932: PUSH1 0x00 00000934: DUP1 00000935: REVERT 00000936: JUMPDEST 00000937: PUSH1 0x0f 00000939: SLOAD 0000093a: PUSH2 0x0949 0000093d: SWAP1 0000093e: DUP4 0000093f: PUSH4 0xffffffff 00000944: PUSH2 0x08d8 00000947: AND 00000948: JUMP 00000949: JUMPDEST 0000094a: PUSH1 0x0f 0000094c: SSTORE 0000094d: PUSH1 0x0c 0000094f: SLOAD 00000950: PUSH1 0x0b 00000952: SLOAD 00000953: PUSH2 0x0a06 00000956: SWAP1 00000957: PUSH2 0x0966 0000095a: SWAP1 0000095b: DUP6 0000095c: PUSH4 0xffffffff 00000961: PUSH2 0x0903 00000964: AND 00000965: JUMP 00000966: JUMPDEST 00000967: PUSH1 0x02 00000969: SLOAD 0000096a: PUSH1 0x40 0000096c: DUP1 0000096d: MLOAD 0000096e: PUSH32 0x70a0823100000000000000000000000000000000000000000000000000000000 0000098f: DUP2 00000990: MSTORE 00000991: PUSH1 0x01 00000993: PUSH1 0xa0 00000995: PUSH1 0x02 00000997: EXP 00000998: SUB 00000999: DUP10 0000099a: DUP2 0000099b: AND 0000099c: PUSH1 0x04 0000099e: DUP4 0000099f: ADD 000009a0: MSTORE 000009a1: SWAP2 000009a2: MLOAD 000009a3: SWAP2 000009a4: SWAP1 000009a5: SWAP3 000009a6: AND 000009a7: SWAP2 000009a8: PUSH4 0x70a08231 000009ad: SWAP2 000009ae: PUSH1 0x24 000009b0: DUP1 000009b1: DUP4 000009b2: ADD 000009b3: SWAP3 000009b4: PUSH1 0x20 000009b6: SWAP3 000009b7: SWAP2 000009b8: SWAP1 000009b9: DUP3 000009ba: SWAP1 000009bb: SUB 000009bc: ADD 000009bd: DUP2 000009be: PUSH1 0x00 000009c0: DUP8 000009c1: DUP1 000009c2: EXTCODESIZE 000009c3: ISZERO 000009c4: DUP1 000009c5: ISZERO 000009c6: PUSH2 0x09ce 000009c9: JUMPI 000009ca: PUSH1 0x00 000009cc: DUP1 000009cd: REVERT 000009ce: JUMPDEST 000009cf: POP 000009d0: GAS 000009d1: CALL 000009d2: ISZERO 000009d3: DUP1 000009d4: ISZERO 000009d5: PUSH2 0x09e2 000009d8: JUMPI 000009d9: RETURNDATASIZE 000009da: PUSH1 0x00 000009dc: DUP1 000009dd: RETURNDATACOPY 000009de: RETURNDATASIZE 000009df: PUSH1 0x00 000009e1: REVERT 000009e2: JUMPDEST 000009e3: POP 000009e4: POP 000009e5: POP 000009e6: POP 000009e7: PUSH1 0x40 000009e9: MLOAD 000009ea: RETURNDATASIZE 000009eb: PUSH1 0x20 000009ed: DUP2 000009ee: LT 000009ef: ISZERO 000009f0: PUSH2 0x09f8 000009f3: JUMPI 000009f4: PUSH1 0x00 000009f6: DUP1 000009f7: REVERT 000009f8: JUMPDEST 000009f9: POP 000009fa: MLOAD 000009fb: SWAP1 000009fc: PUSH4 0xffffffff 00000a01: PUSH2 0x08d8 00000a04: AND 00000a05: JUMP 00000a06: JUMPDEST 00000a07: PUSH1 0x02 00000a09: SLOAD 00000a0a: PUSH1 0x0b 00000a0c: SLOAD 00000a0d: SWAP3 00000a0e: SWAP1 00000a0f: SWAP2 00000a10: LT 00000a11: ISZERO 00000a12: SWAP3 00000a13: POP 00000a14: PUSH1 0x01 00000a16: PUSH1 0xa0 00000a18: PUSH1 0x02 00000a1a: EXP 00000a1b: SUB 00000a1c: AND 00000a1d: SWAP1 00000a1e: PUSH4 0xd1a1beb4 00000a23: SWAP1 00000a24: DUP6 00000a25: SWAP1 00000a26: PUSH2 0x0a35 00000a29: SWAP1 00000a2a: DUP7 00000a2b: PUSH4 0xffffffff 00000a30: PUSH2 0x0903 00000a33: AND 00000a34: JUMP 00000a35: JUMPDEST 00000a36: PUSH1 0x40 00000a38: DUP1 00000a39: MLOAD 00000a3a: PUSH1 0xe0 00000a3c: PUSH1 0x02 00000a3e: EXP 00000a3f: PUSH4 0xffffffff 00000a44: DUP7 00000a45: AND 00000a46: MUL 00000a47: DUP2 00000a48: MSTORE 00000a49: PUSH1 0x01 00000a4b: PUSH1 0xa0 00000a4d: PUSH1 0x02 00000a4f: EXP 00000a50: SUB 00000a51: SWAP1 00000a52: SWAP4 00000a53: AND 00000a54: PUSH1 0x04 00000a56: DUP5 00000a57: ADD 00000a58: MSTORE 00000a59: PUSH1 0x24 00000a5b: DUP4 00000a5c: ADD 00000a5d: SWAP2 00000a5e: SWAP1 00000a5f: SWAP2 00000a60: MSTORE 00000a61: DUP5 00000a62: ISZERO 00000a63: ISZERO 00000a64: PUSH1 0x44 00000a66: DUP4 00000a67: ADD 00000a68: MSTORE 00000a69: MLOAD 00000a6a: PUSH1 0x64 00000a6c: DUP1 00000a6d: DUP4 00000a6e: ADD 00000a6f: SWAP3 00000a70: PUSH1 0x20 00000a72: SWAP3 00000a73: SWAP2 00000a74: SWAP1 00000a75: DUP3 00000a76: SWAP1 00000a77: SUB 00000a78: ADD 00000a79: DUP2 00000a7a: PUSH1 0x00 00000a7c: DUP8 00000a7d: DUP1 00000a7e: EXTCODESIZE 00000a7f: ISZERO 00000a80: DUP1 00000a81: ISZERO 00000a82: PUSH2 0x0a8a 00000a85: JUMPI 00000a86: PUSH1 0x00 00000a88: DUP1 00000a89: REVERT 00000a8a: JUMPDEST 00000a8b: POP 00000a8c: GAS 00000a8d: CALL 00000a8e: ISZERO 00000a8f: DUP1 00000a90: ISZERO 00000a91: PUSH2 0x0a9e 00000a94: JUMPI 00000a95: RETURNDATASIZE 00000a96: PUSH1 0x00 00000a98: DUP1 00000a99: RETURNDATACOPY 00000a9a: RETURNDATASIZE 00000a9b: PUSH1 0x00 00000a9d: REVERT 00000a9e: JUMPDEST 00000a9f: POP 00000aa0: POP 00000aa1: POP 00000aa2: POP 00000aa3: PUSH1 0x40 00000aa5: MLOAD 00000aa6: RETURNDATASIZE 00000aa7: PUSH1 0x20 00000aa9: DUP2 00000aaa: LT 00000aab: ISZERO 00000aac: PUSH2 0x0ab4 00000aaf: JUMPI 00000ab0: PUSH1 0x00 00000ab2: DUP1 00000ab3: REVERT 00000ab4: JUMPDEST 00000ab5: POP 00000ab6: MLOAD 00000ab7: ISZERO 00000ab8: ISZERO 00000ab9: PUSH2 0x0ac1 00000abc: JUMPI 00000abd: PUSH1 0x00 00000abf: DUP1 00000ac0: REVERT 00000ac1: JUMPDEST 00000ac2: PUSH1 0x0a 00000ac4: SLOAD 00000ac5: PUSH1 0x0f 00000ac7: SLOAD 00000ac8: LT 00000ac9: PUSH2 0x08e8 00000acc: JUMPI 00000acd: PUSH1 0x02 00000acf: PUSH1 0x00 00000ad1: SWAP1 00000ad2: SLOAD 00000ad3: SWAP1 00000ad4: PUSH2 0x0100 00000ad7: EXP 00000ad8: SWAP1 00000ad9: DIV 00000ada: PUSH1 0x01 00000adc: PUSH1 0xa0 00000ade: PUSH1 0x02 00000ae0: EXP 00000ae1: SUB 00000ae2: AND 00000ae3: PUSH1 0x01 00000ae5: PUSH1 0xa0 00000ae7: PUSH1 0x02 00000ae9: EXP 00000aea: SUB 00000aeb: AND 00000aec: PUSH4 0x7e5cd5c1 00000af1: PUSH1 0x40 00000af3: MLOAD 00000af4: DUP2 00000af5: PUSH4 0xffffffff 00000afa: AND 00000afb: PUSH1 0xe0 00000afd: PUSH1 0x02 00000aff: EXP 00000b00: MUL 00000b01: DUP2 00000b02: MSTORE 00000b03: PUSH1 0x04 00000b05: ADD 00000b06: PUSH1 0x00 00000b08: PUSH1 0x40 00000b0a: MLOAD 00000b0b: DUP1 00000b0c: DUP4 00000b0d: SUB 00000b0e: DUP2 00000b0f: PUSH1 0x00 00000b11: DUP8 00000b12: DUP1 00000b13: EXTCODESIZE 00000b14: ISZERO 00000b15: DUP1 00000b16: ISZERO 00000b17: PUSH2 0x0b1f 00000b1a: JUMPI 00000b1b: PUSH1 0x00 00000b1d: DUP1 00000b1e: REVERT 00000b1f: JUMPDEST 00000b20: POP 00000b21: GAS 00000b22: CALL 00000b23: ISZERO 00000b24: DUP1 00000b25: ISZERO 00000b26: PUSH2 0x0b33 00000b29: JUMPI 00000b2a: RETURNDATASIZE 00000b2b: PUSH1 0x00 00000b2d: DUP1 00000b2e: RETURNDATACOPY 00000b2f: RETURNDATASIZE 00000b30: PUSH1 0x00 00000b32: REVERT 00000b33: JUMPDEST 00000b34: POP 00000b35: POP 00000b36: PUSH1 0x12 00000b38: DUP1 00000b39: SLOAD 00000b3a: PUSH1 0xff 00000b3c: NOT 00000b3d: AND 00000b3e: PUSH1 0x01 00000b40: OR 00000b41: SWAP1 00000b42: SSTORE 00000b43: POP 00000b44: POP 00000b45: SWAP3 00000b46: SWAP2 00000b47: POP 00000b48: POP 00000b49: JUMP 00000b4a: JUMPDEST 00000b4b: PUSH1 0x02 00000b4d: SLOAD 00000b4e: PUSH1 0x40 00000b50: DUP1 00000b51: MLOAD 00000b52: PUSH32 0x06fdde0300000000000000000000000000000000000000000000000000000000 00000b73: DUP2 00000b74: MSTORE 00000b75: SWAP1 00000b76: MLOAD 00000b77: PUSH1 0x60 00000b79: SWAP3 00000b7a: PUSH1 0x01 00000b7c: PUSH1 0xa0 00000b7e: PUSH1 0x02 00000b80: EXP 00000b81: SUB 00000b82: AND 00000b83: SWAP2 00000b84: PUSH4 0x06fdde03 00000b89: SWAP2 00000b8a: PUSH1 0x04 00000b8c: DUP1 00000b8d: DUP4 00000b8e: ADD 00000b8f: SWAP3 00000b90: PUSH1 0x00 00000b92: SWAP3 00000b93: SWAP2 00000b94: SWAP1 00000b95: DUP3 00000b96: SWAP1 00000b97: SUB 00000b98: ADD 00000b99: DUP2 00000b9a: DUP4 00000b9b: DUP8 00000b9c: DUP1 00000b9d: EXTCODESIZE 00000b9e: ISZERO 00000b9f: DUP1 00000ba0: ISZERO 00000ba1: PUSH2 0x0ba9 00000ba4: JUMPI 00000ba5: PUSH1 0x00 00000ba7: DUP1 00000ba8: REVERT 00000ba9: JUMPDEST 00000baa: POP 00000bab: GAS 00000bac: CALL 00000bad: ISZERO 00000bae: DUP1 00000baf: ISZERO 00000bb0: PUSH2 0x0bbd 00000bb3: JUMPI 00000bb4: RETURNDATASIZE 00000bb5: PUSH1 0x00 00000bb7: DUP1 00000bb8: RETURNDATACOPY 00000bb9: RETURNDATASIZE 00000bba: PUSH1 0x00 00000bbc: REVERT 00000bbd: JUMPDEST 00000bbe: POP 00000bbf: POP 00000bc0: POP 00000bc1: POP 00000bc2: PUSH1 0x40 00000bc4: MLOAD 00000bc5: RETURNDATASIZE 00000bc6: PUSH1 0x00 00000bc8: DUP3 00000bc9: RETURNDATACOPY 00000bca: PUSH1 0x1f 00000bcc: RETURNDATASIZE 00000bcd: SWAP1 00000bce: DUP2 00000bcf: ADD 00000bd0: PUSH1 0x1f 00000bd2: NOT 00000bd3: AND 00000bd4: DUP3 00000bd5: ADD 00000bd6: PUSH1 0x40 00000bd8: MSTORE 00000bd9: PUSH1 0x20 00000bdb: DUP2 00000bdc: LT 00000bdd: ISZERO 00000bde: PUSH2 0x0be6 00000be1: JUMPI 00000be2: PUSH1 0x00 00000be4: DUP1 00000be5: REVERT 00000be6: JUMPDEST 00000be7: DUP2 00000be8: ADD 00000be9: SWAP1 00000bea: DUP1 00000beb: DUP1 00000bec: MLOAD 00000bed: PUSH5 0x0100000000 00000bf3: DUP2 00000bf4: GT 00000bf5: ISZERO 00000bf6: PUSH2 0x0bfe 00000bf9: JUMPI 00000bfa: PUSH1 0x00 00000bfc: DUP1 00000bfd: REVERT 00000bfe: JUMPDEST 00000bff: DUP3 00000c00: ADD 00000c01: PUSH1 0x20 00000c03: DUP2 00000c04: ADD 00000c05: DUP5 00000c06: DUP2 00000c07: GT 00000c08: ISZERO 00000c09: PUSH2 0x0c11 00000c0c: JUMPI 00000c0d: PUSH1 0x00 00000c0f: DUP1 00000c10: REVERT 00000c11: JUMPDEST 00000c12: DUP2 00000c13: MLOAD 00000c14: PUSH5 0x0100000000 00000c1a: DUP2 00000c1b: GT 00000c1c: DUP3 00000c1d: DUP3 00000c1e: ADD 00000c1f: DUP8 00000c20: LT 00000c21: OR 00000c22: ISZERO 00000c23: PUSH2 0x0c2b 00000c26: JUMPI 00000c27: PUSH1 0x00 00000c29: DUP1 00000c2a: REVERT 00000c2b: JUMPDEST 00000c2c: POP 00000c2d: SWAP1 00000c2e: SWAP6 00000c2f: SWAP5 00000c30: POP 00000c31: POP 00000c32: POP 00000c33: POP 00000c34: POP 00000c35: JUMP 00000c36: JUMPDEST 00000c37: PUSH1 0x0f 00000c39: SLOAD 00000c3a: DUP2 00000c3b: JUMP 00000c3c: JUMPDEST 00000c3d: PUSH1 0x08 00000c3f: SLOAD 00000c40: DUP2 00000c41: JUMP 00000c42: JUMPDEST 00000c43: PUSH1 0x12 00000c45: SLOAD 00000c46: PUSH1 0xff 00000c48: AND 00000c49: DUP2 00000c4a: JUMP 00000c4b: JUMPDEST 00000c4c: PUSH1 0x06 00000c4e: SLOAD 00000c4f: PUSH1 0x01 00000c51: PUSH1 0xa0 00000c53: PUSH1 0x02 00000c55: EXP 00000c56: SUB 00000c57: AND 00000c58: DUP2 00000c59: JUMP 00000c5a: JUMPDEST 00000c5b: PUSH1 0x00 00000c5d: SLOAD 00000c5e: PUSH1 0x01 00000c60: PUSH1 0xa0 00000c62: PUSH1 0x02 00000c64: EXP 00000c65: SUB 00000c66: AND 00000c67: CALLER 00000c68: EQ 00000c69: PUSH2 0x0c71 00000c6c: JUMPI 00000c6d: PUSH1 0x00 00000c6f: DUP1 00000c70: REVERT 00000c71: JUMPDEST 00000c72: PUSH1 0x12 00000c74: SLOAD 00000c75: PUSH1 0xff 00000c77: AND 00000c78: ISZERO 00000c79: PUSH2 0x0c81 00000c7c: JUMPI 00000c7d: PUSH1 0x00 00000c7f: DUP1 00000c80: REVERT 00000c81: JUMPDEST 00000c82: PUSH1 0x08 00000c84: SLOAD 00000c85: DUP2 00000c86: GT 00000c87: PUSH2 0x0c8f 00000c8a: JUMPI 00000c8b: PUSH1 0x00 00000c8d: DUP1 00000c8e: REVERT 00000c8f: JUMPDEST 00000c90: PUSH1 0x09 00000c92: SLOAD 00000c93: PUSH1 0x40 00000c95: DUP1 00000c96: MLOAD 00000c97: SWAP2 00000c98: DUP3 00000c99: MSTORE 00000c9a: PUSH1 0x20 00000c9c: DUP3 00000c9d: ADD 00000c9e: DUP4 00000c9f: SWAP1 00000ca0: MSTORE 00000ca1: DUP1 00000ca2: MLOAD 00000ca3: PUSH32 0x275dd536a6956e78302b90e20bb13c379fb11632284794aa77ad452d0f472a15 00000cc4: SWAP3 00000cc5: DUP2 00000cc6: SWAP1 00000cc7: SUB 00000cc8: SWAP1 00000cc9: SWAP2 00000cca: ADD 00000ccb: SWAP1 00000ccc: LOG1 00000ccd: PUSH1 0x09 00000ccf: SSTORE 00000cd0: JUMP 00000cd1: JUMPDEST 00000cd2: PUSH1 0x04 00000cd4: SLOAD 00000cd5: PUSH1 0x01 00000cd7: PUSH1 0xa0 00000cd9: PUSH1 0x02 00000cdb: EXP 00000cdc: SUB 00000cdd: AND 00000cde: DUP2 00000cdf: JUMP 00000ce0: JUMPDEST 00000ce1: PUSH1 0x00 00000ce3: DUP1 00000ce4: PUSH1 0x00 00000ce6: PUSH2 0x0ced 00000ce9: PUSH2 0x1a3b 00000cec: JUMP 00000ced: JUMPDEST 00000cee: SWAP3 00000cef: POP 00000cf0: SWAP1 00000cf1: POP 00000cf2: DUP2 00000cf3: ISZERO 00000cf4: PUSH2 0x08b2 00000cf7: JUMPI 00000cf8: PUSH1 0x0d 00000cfa: SLOAD 00000cfb: PUSH2 0x08af 00000cfe: SWAP1 00000cff: PUSH2 0x0d0f 00000d02: SWAP1 00000d03: PUSH1 0x64 00000d05: PUSH4 0xffffffff 00000d0a: PUSH2 0x08d8 00000d0d: AND 00000d0e: JUMP 00000d0f: JUMPDEST 00000d10: PUSH2 0x08a3 00000d13: DUP4 00000d14: PUSH1 0x64 00000d16: PUSH4 0xffffffff 00000d1b: PUSH2 0x0903 00000d1e: AND 00000d1f: JUMP 00000d20: JUMPDEST 00000d21: PUSH1 0x0e 00000d23: SLOAD 00000d24: DUP2 00000d25: JUMP 00000d26: JUMPDEST 00000d27: PUSH1 0x00 00000d29: SLOAD 00000d2a: PUSH1 0x01 00000d2c: PUSH1 0xa0 00000d2e: PUSH1 0x02 00000d30: EXP 00000d31: SUB 00000d32: AND 00000d33: CALLER 00000d34: EQ 00000d35: PUSH2 0x0d3d 00000d38: JUMPI 00000d39: PUSH1 0x00 00000d3b: DUP1 00000d3c: REVERT 00000d3d: JUMPDEST 00000d3e: PUSH1 0x12 00000d40: SLOAD 00000d41: PUSH1 0xff 00000d43: AND 00000d44: ISZERO 00000d45: PUSH2 0x0d4d 00000d48: JUMPI 00000d49: PUSH1 0x00 00000d4b: DUP1 00000d4c: REVERT 00000d4d: JUMPDEST 00000d4e: PUSH1 0x0d 00000d50: SLOAD 00000d51: PUSH1 0x40 00000d53: DUP1 00000d54: MLOAD 00000d55: SWAP2 00000d56: DUP3 00000d57: MSTORE 00000d58: PUSH1 0x20 00000d5a: DUP3 00000d5b: ADD 00000d5c: DUP4 00000d5d: SWAP1 00000d5e: MSTORE 00000d5f: DUP1 00000d60: MLOAD 00000d61: PUSH32 0x4c62351127406483444e8c77ed3d92ba47274904aa869a9eb0025ef1b444b131 00000d82: SWAP3 00000d83: DUP2 00000d84: SWAP1 00000d85: SUB 00000d86: SWAP1 00000d87: SWAP2 00000d88: ADD 00000d89: SWAP1 00000d8a: LOG1 00000d8b: PUSH1 0x0d 00000d8d: SSTORE 00000d8e: JUMP 00000d8f: JUMPDEST 00000d90: PUSH1 0x07 00000d92: SLOAD 00000d93: PUSH1 0x01 00000d95: PUSH1 0xa0 00000d97: PUSH1 0x02 00000d99: EXP 00000d9a: SUB 00000d9b: AND 00000d9c: DUP2 00000d9d: JUMP 00000d9e: JUMPDEST 00000d9f: PUSH1 0x04 00000da1: DUP1 00000da2: SLOAD 00000da3: PUSH1 0x40 00000da5: DUP1 00000da6: MLOAD 00000da7: PUSH32 0x679aefce00000000000000000000000000000000000000000000000000000000 00000dc8: DUP2 00000dc9: MSTORE 00000dca: DUP2 00000dcb: MLOAD 00000dcc: PUSH1 0x00 00000dce: SWAP5 00000dcf: DUP6 00000dd0: SWAP5 00000dd1: PUSH1 0x01 00000dd3: PUSH1 0xa0 00000dd5: PUSH1 0x02 00000dd7: EXP 00000dd8: SUB 00000dd9: AND 00000dda: SWAP4 00000ddb: PUSH4 0x679aefce 00000de0: SWAP4 00000de1: DUP1 00000de2: DUP4 00000de3: ADD 00000de4: SWAP4 00000de5: SWAP2 00000de6: SWAP3 00000de7: SWAP1 00000de8: DUP3 00000de9: SWAP1 00000dea: SUB 00000deb: ADD 00000dec: DUP2 00000ded: DUP8 00000dee: DUP8 00000def: DUP1 00000df0: EXTCODESIZE 00000df1: ISZERO 00000df2: DUP1 00000df3: ISZERO 00000df4: PUSH2 0x0dfc 00000df7: JUMPI 00000df8: PUSH1 0x00 00000dfa: DUP1 00000dfb: REVERT 00000dfc: JUMPDEST 00000dfd: POP 00000dfe: GAS 00000dff: CALL 00000e00: ISZERO 00000e01: DUP1 00000e02: ISZERO 00000e03: PUSH2 0x0e10 00000e06: JUMPI 00000e07: RETURNDATASIZE 00000e08: PUSH1 0x00 00000e0a: DUP1 00000e0b: RETURNDATACOPY 00000e0c: RETURNDATASIZE 00000e0d: PUSH1 0x00 00000e0f: REVERT 00000e10: JUMPDEST 00000e11: POP 00000e12: POP 00000e13: POP 00000e14: POP 00000e15: PUSH1 0x40 00000e17: MLOAD 00000e18: RETURNDATASIZE 00000e19: PUSH1 0x40 00000e1b: DUP2 00000e1c: LT 00000e1d: ISZERO 00000e1e: PUSH2 0x0e26 00000e21: JUMPI 00000e22: PUSH1 0x00 00000e24: DUP1 00000e25: REVERT 00000e26: JUMPDEST 00000e27: POP 00000e28: DUP1 00000e29: MLOAD 00000e2a: PUSH1 0x20 00000e2c: SWAP1 00000e2d: SWAP2 00000e2e: ADD 00000e2f: MLOAD 00000e30: SWAP1 00000e31: SWAP3 00000e32: POP 00000e33: SWAP1 00000e34: POP 00000e35: SWAP1 00000e36: SWAP2 00000e37: JUMP 00000e38: JUMPDEST 00000e39: PUSH1 0x0c 00000e3b: SLOAD 00000e3c: DUP2 00000e3d: JUMP 00000e3e: JUMPDEST 00000e3f: PUSH1 0x0b 00000e41: SLOAD 00000e42: DUP2 00000e43: JUMP 00000e44: JUMPDEST 00000e45: PUSH1 0x03 00000e47: SLOAD 00000e48: PUSH1 0x40 00000e4a: DUP1 00000e4b: MLOAD 00000e4c: PUSH32 0xdd62ed3e00000000000000000000000000000000000000000000000000000000 00000e6d: DUP2 00000e6e: MSTORE 00000e6f: CALLER 00000e70: PUSH1 0x04 00000e72: DUP3 00000e73: ADD 00000e74: MSTORE 00000e75: ADDRESS 00000e76: PUSH1 0x24 00000e78: DUP3 00000e79: ADD 00000e7a: MSTORE 00000e7b: SWAP1 00000e7c: MLOAD 00000e7d: DUP4 00000e7e: SWAP3 00000e7f: PUSH1 0x01 00000e81: PUSH1 0xa0 00000e83: PUSH1 0x02 00000e85: EXP 00000e86: SUB 00000e87: AND 00000e88: SWAP2 00000e89: PUSH4 0xdd62ed3e 00000e8e: SWAP2 00000e8f: PUSH1 0x44 00000e91: DUP1 00000e92: DUP4 00000e93: ADD 00000e94: SWAP3 00000e95: PUSH1 0x20 00000e97: SWAP3 00000e98: SWAP2 00000e99: SWAP1 00000e9a: DUP3 00000e9b: SWAP1 00000e9c: SUB 00000e9d: ADD 00000e9e: DUP2 00000e9f: PUSH1 0x00 00000ea1: DUP8 00000ea2: DUP1 00000ea3: EXTCODESIZE 00000ea4: ISZERO 00000ea5: DUP1 00000ea6: ISZERO 00000ea7: PUSH2 0x0eaf 00000eaa: JUMPI 00000eab: PUSH1 0x00 00000ead: DUP1 00000eae: REVERT 00000eaf: JUMPDEST 00000eb0: POP 00000eb1: GAS 00000eb2: CALL 00000eb3: ISZERO 00000eb4: DUP1 00000eb5: ISZERO 00000eb6: PUSH2 0x0ec3 00000eb9: JUMPI 00000eba: RETURNDATASIZE 00000ebb: PUSH1 0x00 00000ebd: DUP1 00000ebe: RETURNDATACOPY 00000ebf: RETURNDATASIZE 00000ec0: PUSH1 0x00 00000ec2: REVERT 00000ec3: JUMPDEST 00000ec4: POP 00000ec5: POP 00000ec6: POP 00000ec7: POP 00000ec8: PUSH1 0x40 00000eca: MLOAD 00000ecb: RETURNDATASIZE 00000ecc: PUSH1 0x20 00000ece: DUP2 00000ecf: LT 00000ed0: ISZERO 00000ed1: PUSH2 0x0ed9 00000ed4: JUMPI 00000ed5: PUSH1 0x00 00000ed7: DUP1 00000ed8: REVERT 00000ed9: JUMPDEST 00000eda: POP 00000edb: MLOAD 00000edc: LT 00000edd: ISZERO 00000ede: PUSH2 0x0ee6 00000ee1: JUMPI 00000ee2: PUSH1 0x00 00000ee4: DUP1 00000ee5: REVERT 00000ee6: JUMPDEST 00000ee7: PUSH1 0x03 00000ee9: SLOAD 00000eea: PUSH1 0x40 00000eec: DUP1 00000eed: MLOAD 00000eee: PUSH1 0x20 00000ef0: DUP2 00000ef1: ADD 00000ef2: SWAP1 00000ef3: SWAP2 00000ef4: MSTORE 00000ef5: PUSH1 0x00 00000ef7: DUP2 00000ef8: MSTORE 00000ef9: PUSH2 0x0f0f 00000efc: SWAP2 00000efd: CALLER 00000efe: SWAP2 00000eff: DUP5 00000f00: SWAP2 00000f01: PUSH1 0x01 00000f03: PUSH1 0xa0 00000f05: PUSH1 0x02 00000f07: EXP 00000f08: SUB 00000f09: AND 00000f0a: SWAP1 00000f0b: PUSH2 0x109e 00000f0e: JUMP 00000f0f: JUMPDEST 00000f10: POP 00000f11: JUMP 00000f12: JUMPDEST 00000f13: PUSH1 0x01 00000f15: SLOAD 00000f16: PUSH1 0x01 00000f18: PUSH1 0xa0 00000f1a: PUSH1 0x02 00000f1c: EXP 00000f1d: SUB 00000f1e: AND 00000f1f: CALLER 00000f20: EQ 00000f21: PUSH2 0x0f29 00000f24: JUMPI 00000f25: PUSH1 0x00 00000f27: DUP1 00000f28: REVERT 00000f29: JUMPDEST 00000f2a: PUSH1 0x01 00000f2c: SLOAD 00000f2d: PUSH1 0x00 00000f2f: DUP1 00000f30: SLOAD 00000f31: PUSH1 0x40 00000f33: MLOAD 00000f34: PUSH1 0x01 00000f36: PUSH1 0xa0 00000f38: PUSH1 0x02 00000f3a: EXP 00000f3b: SUB 00000f3c: SWAP4 00000f3d: DUP5 00000f3e: AND 00000f3f: SWAP4 00000f40: SWAP1 00000f41: SWAP2 00000f42: AND 00000f43: SWAP2 00000f44: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00000f65: SWAP2 00000f66: LOG3 00000f67: PUSH1 0x01 00000f69: DUP1 00000f6a: SLOAD 00000f6b: PUSH1 0x00 00000f6d: DUP1 00000f6e: SLOAD 00000f6f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f84: NOT 00000f85: SWAP1 00000f86: DUP2 00000f87: AND 00000f88: PUSH1 0x01 00000f8a: PUSH1 0xa0 00000f8c: PUSH1 0x02 00000f8e: EXP 00000f8f: SUB 00000f90: DUP5 00000f91: AND 00000f92: OR 00000f93: SWAP1 00000f94: SWAP2 00000f95: SSTORE 00000f96: AND 00000f97: SWAP1 00000f98: SSTORE 00000f99: JUMP 00000f9a: JUMPDEST 00000f9b: PUSH1 0x00 00000f9d: SLOAD 00000f9e: PUSH1 0x01 00000fa0: PUSH1 0xa0 00000fa2: PUSH1 0x02 00000fa4: EXP 00000fa5: SUB 00000fa6: AND 00000fa7: CALLER 00000fa8: EQ 00000fa9: PUSH2 0x0fb1 00000fac: JUMPI 00000fad: PUSH1 0x00 00000faf: DUP1 00000fb0: REVERT 00000fb1: JUMPDEST 00000fb2: PUSH1 0x00 00000fb4: DUP1 00000fb5: SLOAD 00000fb6: PUSH1 0x40 00000fb8: MLOAD 00000fb9: PUSH1 0x01 00000fbb: PUSH1 0xa0 00000fbd: PUSH1 0x02 00000fbf: EXP 00000fc0: SUB 00000fc1: DUP1 00000fc2: DUP6 00000fc3: AND 00000fc4: SWAP4 00000fc5: SWAP3 00000fc6: AND 00000fc7: SWAP2 00000fc8: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00000fe9: SWAP2 00000fea: LOG3 00000feb: PUSH1 0x00 00000fed: DUP1 00000fee: SLOAD 00000fef: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001004: NOT 00001005: AND 00001006: PUSH1 0x01 00001008: PUSH1 0xa0 0000100a: PUSH1 0x02 0000100c: EXP 0000100d: SUB 0000100e: SWAP3 0000100f: SWAP1 00001010: SWAP3 00001011: AND 00001012: SWAP2 00001013: SWAP1 00001014: SWAP2 00001015: OR 00001016: SWAP1 00001017: SSTORE 00001018: JUMP 00001019: JUMPDEST 0000101a: PUSH1 0x00 0000101c: SLOAD 0000101d: PUSH1 0x01 0000101f: PUSH1 0xa0 00001021: PUSH1 0x02 00001023: EXP 00001024: SUB 00001025: AND 00001026: CALLER 00001027: EQ 00001028: PUSH2 0x1030 0000102b: JUMPI 0000102c: PUSH1 0x00 0000102e: DUP1 0000102f: REVERT 00001030: JUMPDEST 00001031: PUSH1 0x12 00001033: SLOAD 00001034: PUSH1 0xff 00001036: AND 00001037: ISZERO 00001038: PUSH2 0x1040 0000103b: JUMPI 0000103c: PUSH1 0x00 0000103e: DUP1 0000103f: REVERT 00001040: JUMPDEST 00001041: TIMESTAMP 00001042: DUP2 00001043: LT 00001044: ISZERO 00001045: PUSH2 0x104d 00001048: JUMPI 00001049: PUSH1 0x00 0000104b: DUP1 0000104c: REVERT 0000104d: JUMPDEST 0000104e: PUSH1 0x08 00001050: SLOAD 00001051: PUSH1 0x40 00001053: DUP1 00001054: MLOAD 00001055: SWAP2 00001056: DUP3 00001057: MSTORE 00001058: PUSH1 0x20 0000105a: DUP3 0000105b: ADD 0000105c: DUP4 0000105d: SWAP1 0000105e: MSTORE 0000105f: DUP1 00001060: MLOAD 00001061: PUSH32 0xb412a2d7de723b82b0a3cae8b10ae2d255e645dd0231a1a4c83cb8e3ebc05bd8 00001082: SWAP3 00001083: DUP2 00001084: SWAP1 00001085: SUB 00001086: SWAP1 00001087: SWAP2 00001088: ADD 00001089: SWAP1 0000108a: LOG1 0000108b: PUSH1 0x08 0000108d: SSTORE 0000108e: JUMP 0000108f: JUMPDEST 00001090: PUSH1 0x00 00001092: SLOAD 00001093: PUSH1 0x01 00001095: PUSH1 0xa0 00001097: PUSH1 0x02 00001099: EXP 0000109a: SUB 0000109b: AND 0000109c: DUP2 0000109d: JUMP 0000109e: JUMPDEST 0000109f: PUSH1 0x00 000010a1: DUP1 000010a2: PUSH1 0x00 000010a4: DUP1 000010a5: PUSH1 0x00 000010a7: PUSH1 0x08 000010a9: SLOAD 000010aa: TIMESTAMP 000010ab: LT 000010ac: ISZERO 000010ad: DUP1 000010ae: ISZERO 000010af: PUSH2 0x10ba 000010b2: JUMPI 000010b3: POP 000010b4: PUSH1 0x09 000010b6: SLOAD 000010b7: TIMESTAMP 000010b8: GT 000010b9: ISZERO 000010ba: JUMPDEST 000010bb: ISZERO 000010bc: ISZERO 000010bd: PUSH2 0x10c5 000010c0: JUMPI 000010c1: PUSH1 0x00 000010c3: DUP1 000010c4: REVERT 000010c5: JUMPDEST 000010c6: PUSH1 0x03 000010c8: SLOAD 000010c9: PUSH1 0x01 000010cb: PUSH1 0xa0 000010cd: PUSH1 0x02 000010cf: EXP 000010d0: SUB 000010d1: DUP9 000010d2: DUP2 000010d3: AND 000010d4: SWAP2 000010d5: AND 000010d6: EQ 000010d7: PUSH2 0x10df 000010da: JUMPI 000010db: PUSH1 0x00 000010dd: DUP1 000010de: REVERT 000010df: JUMPDEST 000010e0: PUSH1 0x06 000010e2: SLOAD 000010e3: PUSH1 0x40 000010e5: DUP1 000010e6: MLOAD 000010e7: PUSH32 0x9773252a00000000000000000000000000000000000000000000000000000000 00001108: DUP2 00001109: MSTORE 0000110a: PUSH1 0x01 0000110c: PUSH1 0xa0 0000110e: PUSH1 0x02 00001110: EXP 00001111: SUB 00001112: DUP13 00001113: DUP2 00001114: AND 00001115: PUSH1 0x04 00001117: DUP4 00001118: ADD 00001119: MSTORE 0000111a: SWAP2 0000111b: MLOAD 0000111c: SWAP2 0000111d: SWAP1 0000111e: SWAP3 0000111f: AND 00001120: SWAP2 00001121: PUSH4 0x9773252a 00001126: SWAP2 00001127: PUSH1 0x24 00001129: DUP1 0000112a: DUP4 0000112b: ADD 0000112c: SWAP3 0000112d: PUSH1 0x20 0000112f: SWAP3 00001130: SWAP2 00001131: SWAP1 00001132: DUP3 00001133: SWAP1 00001134: SUB 00001135: ADD 00001136: DUP2 00001137: PUSH1 0x00 00001139: DUP8 0000113a: DUP1 0000113b: EXTCODESIZE 0000113c: ISZERO 0000113d: DUP1 0000113e: ISZERO 0000113f: PUSH2 0x1147 00001142: JUMPI 00001143: PUSH1 0x00 00001145: DUP1 00001146: REVERT 00001147: JUMPDEST 00001148: POP 00001149: GAS 0000114a: CALL 0000114b: ISZERO 0000114c: DUP1 0000114d: ISZERO 0000114e: PUSH2 0x115b 00001151: JUMPI 00001152: RETURNDATASIZE 00001153: PUSH1 0x00 00001155: DUP1 00001156: RETURNDATACOPY 00001157: RETURNDATASIZE 00001158: PUSH1 0x00 0000115a: REVERT 0000115b: JUMPDEST 0000115c: POP 0000115d: POP 0000115e: POP 0000115f: POP 00001160: PUSH1 0x40 00001162: MLOAD 00001163: RETURNDATASIZE 00001164: PUSH1 0x20 00001166: DUP2 00001167: LT 00001168: ISZERO 00001169: PUSH2 0x1171 0000116c: JUMPI 0000116d: PUSH1 0x00 0000116f: DUP1 00001170: REVERT 00001171: JUMPDEST 00001172: POP 00001173: MLOAD 00001174: ISZERO 00001175: PUSH2 0x118a 00001178: JUMPI 00001179: PUSH2 0x1180 0000117c: PUSH2 0x18a9 0000117f: JUMP 00001180: JUMPDEST 00001181: SWAP1 00001182: SWAP6 00001183: POP 00001184: SWAP4 00001185: POP 00001186: PUSH2 0x1198 00001189: JUMP 0000118a: JUMPDEST 0000118b: PUSH2 0x1192 0000118e: PUSH2 0x0ce0 00001191: JUMP 00001192: JUMPDEST 00001193: SWAP1 00001194: SWAP6 00001195: POP 00001196: SWAP4 00001197: POP 00001198: JUMPDEST 00001199: DUP4 0000119a: ISZERO 0000119b: ISZERO 0000119c: PUSH2 0x11a4 0000119f: JUMPI 000011a0: PUSH1 0x00 000011a2: DUP1 000011a3: REVERT 000011a4: JUMPDEST 000011a5: PUSH2 0x11b4 000011a8: DUP9 000011a9: DUP7 000011aa: PUSH4 0xffffffff 000011af: PUSH2 0x08b7 000011b2: AND 000011b3: JUMP 000011b4: JUMPDEST 000011b5: SWAP3 000011b6: POP 000011b7: PUSH1 0x0a 000011b9: SLOAD 000011ba: PUSH2 0x11ce 000011bd: DUP5 000011be: PUSH1 0x0f 000011c0: SLOAD 000011c1: PUSH2 0x08d8 000011c4: SWAP1 000011c5: SWAP2 000011c6: SWAP1 000011c7: PUSH4 0xffffffff 000011cc: AND 000011cd: JUMP 000011ce: JUMPDEST 000011cf: LT 000011d0: PUSH2 0x11eb 000011d3: JUMPI 000011d4: PUSH1 0x0f 000011d6: SLOAD 000011d7: PUSH1 0x0a 000011d9: SLOAD 000011da: PUSH2 0x11e8 000011dd: SWAP2 000011de: PUSH4 0xffffffff 000011e3: PUSH2 0x08ee 000011e6: AND 000011e7: JUMP 000011e8: JUMPDEST 000011e9: SWAP3 000011ea: POP 000011eb: JUMPDEST 000011ec: PUSH2 0x11fb 000011ef: DUP4 000011f0: DUP7 000011f1: PUSH4 0xffffffff 000011f6: PUSH2 0x0903 000011f9: AND 000011fa: JUMP 000011fb: JUMPDEST 000011fc: PUSH1 0x10 000011fe: SLOAD 000011ff: SWAP1 00001200: SWAP3 00001201: POP 00001202: PUSH2 0x1211 00001205: SWAP1 00001206: DUP4 00001207: PUSH4 0xffffffff 0000120c: PUSH2 0x08d8 0000120f: AND 00001210: JUMP 00001211: JUMPDEST 00001212: PUSH1 0x10 00001214: SSTORE 00001215: PUSH1 0x07 00001217: SLOAD 00001218: PUSH1 0x40 0000121a: DUP1 0000121b: MLOAD 0000121c: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000 0000123d: DUP2 0000123e: MSTORE 0000123f: PUSH1 0x01 00001241: PUSH1 0xa0 00001243: PUSH1 0x02 00001245: EXP 00001246: SUB 00001247: DUP13 00001248: DUP2 00001249: AND 0000124a: PUSH1 0x04 0000124c: DUP4 0000124d: ADD 0000124e: MSTORE 0000124f: SWAP3 00001250: DUP4 00001251: AND 00001252: PUSH1 0x24 00001254: DUP3 00001255: ADD 00001256: MSTORE 00001257: PUSH1 0x44 00001259: DUP2 0000125a: ADD 0000125b: DUP6 0000125c: SWAP1 0000125d: MSTORE 0000125e: SWAP1 0000125f: MLOAD 00001260: SWAP2 00001261: DUP10 00001262: AND 00001263: SWAP2 00001264: PUSH4 0x23b872dd 00001269: SWAP2 0000126a: PUSH1 0x64 0000126c: DUP1 0000126d: DUP3 0000126e: ADD 0000126f: SWAP3 00001270: PUSH1 0x20 00001272: SWAP3 00001273: SWAP1 00001274: SWAP2 00001275: SWAP1 00001276: DUP3 00001277: SWAP1 00001278: SUB 00001279: ADD 0000127a: DUP2 0000127b: PUSH1 0x00 0000127d: DUP8 0000127e: DUP1 0000127f: EXTCODESIZE 00001280: ISZERO 00001281: DUP1 00001282: ISZERO 00001283: PUSH2 0x128b 00001286: JUMPI 00001287: PUSH1 0x00 00001289: DUP1 0000128a: REVERT 0000128b: JUMPDEST 0000128c: POP 0000128d: GAS 0000128e: CALL 0000128f: ISZERO 00001290: DUP1 00001291: ISZERO 00001292: PUSH2 0x129f 00001295: JUMPI 00001296: RETURNDATASIZE 00001297: PUSH1 0x00 00001299: DUP1 0000129a: RETURNDATACOPY 0000129b: RETURNDATASIZE 0000129c: PUSH1 0x00 0000129e: REVERT 0000129f: JUMPDEST 000012a0: POP 000012a1: POP 000012a2: POP 000012a3: POP 000012a4: PUSH1 0x40 000012a6: MLOAD 000012a7: RETURNDATASIZE 000012a8: PUSH1 0x20 000012aa: DUP2 000012ab: LT 000012ac: ISZERO 000012ad: PUSH2 0x12b5 000012b0: JUMPI 000012b1: PUSH1 0x00 000012b3: DUP1 000012b4: REVERT 000012b5: JUMPDEST 000012b6: POP 000012b7: MLOAD 000012b8: ISZERO 000012b9: ISZERO 000012ba: PUSH2 0x12c2 000012bd: JUMPI 000012be: PUSH1 0x00 000012c0: DUP1 000012c1: REVERT 000012c2: JUMPDEST 000012c3: PUSH2 0x12cc 000012c6: DUP10 000012c7: DUP5 000012c8: PUSH2 0x0928 000012cb: JUMP 000012cc: JUMPDEST 000012cd: PUSH1 0x0f 000012cf: SLOAD 000012d0: PUSH1 0x10 000012d2: SLOAD 000012d3: PUSH1 0x11 000012d5: SLOAD 000012d6: PUSH1 0x40 000012d8: DUP1 000012d9: MLOAD 000012da: DUP9 000012db: DUP2 000012dc: MSTORE 000012dd: PUSH1 0x20 000012df: DUP2 000012e0: ADD 000012e1: DUP9 000012e2: SWAP1 000012e3: MSTORE 000012e4: PUSH1 0x00 000012e6: DUP2 000012e7: DUP4 000012e8: ADD 000012e9: MSTORE 000012ea: PUSH1 0x60 000012ec: DUP2 000012ed: ADD 000012ee: SWAP5 000012ef: SWAP1 000012f0: SWAP5 000012f1: MSTORE 000012f2: PUSH1 0x80 000012f4: DUP5 000012f5: ADD 000012f6: SWAP3 000012f7: SWAP1 000012f8: SWAP3 000012f9: MSTORE 000012fa: PUSH1 0xa0 000012fc: DUP4 000012fd: ADD 000012fe: MSTORE 000012ff: DUP3 00001300: ISZERO 00001301: ISZERO 00001302: PUSH1 0xc0 00001304: DUP4 00001305: ADD 00001306: MSTORE 00001307: MLOAD 00001308: SWAP2 00001309: SWAP3 0000130a: POP 0000130b: PUSH1 0x01 0000130d: PUSH1 0xa0 0000130f: PUSH1 0x02 00001311: EXP 00001312: SUB 00001313: DUP12 00001314: AND 00001315: SWAP2 00001316: PUSH32 0x20fe12028d9f9484cae3903103a15de61b4e2269b7572e5357eed98ecaed54f3 00001337: SWAP2 00001338: DUP2 00001339: SWAP1 0000133a: SUB 0000133b: PUSH1 0xe0 0000133d: ADD 0000133e: SWAP1 0000133f: LOG2 00001340: POP 00001341: POP 00001342: POP 00001343: POP 00001344: POP 00001345: POP 00001346: POP 00001347: POP 00001348: POP 00001349: JUMP 0000134a: JUMPDEST 0000134b: PUSH1 0x05 0000134d: SLOAD 0000134e: PUSH1 0x40 00001350: DUP1 00001351: MLOAD 00001352: PUSH32 0x679aefce00000000000000000000000000000000000000000000000000000000 00001373: DUP2 00001374: MSTORE 00001375: DUP2 00001376: MLOAD 00001377: PUSH1 0x00 00001379: SWAP4 0000137a: DUP5 0000137b: SWAP4 0000137c: PUSH1 0x01 0000137e: PUSH1 0xa0 00001380: PUSH1 0x02 00001382: EXP 00001383: SUB 00001384: SWAP1 00001385: SWAP2 00001386: AND 00001387: SWAP3 00001388: PUSH4 0x679aefce 0000138d: SWAP3 0000138e: PUSH1 0x04 00001390: DUP1 00001391: DUP4 00001392: ADD 00001393: SWAP4 00001394: SWAP3 00001395: DUP3 00001396: SWAP1 00001397: SUB 00001398: ADD 00001399: DUP2 0000139a: DUP8 0000139b: DUP8 0000139c: DUP1 0000139d: EXTCODESIZE 0000139e: ISZERO 0000139f: DUP1 000013a0: ISZERO 000013a1: PUSH2 0x0dfc 000013a4: JUMPI 000013a5: PUSH1 0x00 000013a7: DUP1 000013a8: REVERT 000013a9: JUMPDEST 000013aa: PUSH1 0x0a 000013ac: SLOAD 000013ad: DUP2 000013ae: JUMP 000013af: JUMPDEST 000013b0: PUSH1 0x00 000013b2: SLOAD 000013b3: PUSH1 0x01 000013b5: PUSH1 0xa0 000013b7: PUSH1 0x02 000013b9: EXP 000013ba: SUB 000013bb: AND 000013bc: CALLER 000013bd: EQ 000013be: PUSH2 0x13c6 000013c1: JUMPI 000013c2: PUSH1 0x00 000013c4: DUP1 000013c5: REVERT 000013c6: JUMPDEST 000013c7: PUSH1 0x12 000013c9: SLOAD 000013ca: PUSH1 0xff 000013cc: AND 000013cd: ISZERO 000013ce: PUSH2 0x13d6 000013d1: JUMPI 000013d2: PUSH1 0x00 000013d4: DUP1 000013d5: REVERT 000013d6: JUMPDEST 000013d7: PUSH1 0x0f 000013d9: SLOAD 000013da: DUP2 000013db: LT 000013dc: ISZERO 000013dd: PUSH2 0x13e5 000013e0: JUMPI 000013e1: PUSH1 0x00 000013e3: DUP1 000013e4: REVERT 000013e5: JUMPDEST 000013e6: PUSH1 0x0a 000013e8: SLOAD 000013e9: PUSH1 0x40 000013eb: DUP1 000013ec: MLOAD 000013ed: SWAP2 000013ee: DUP3 000013ef: MSTORE 000013f0: PUSH1 0x20 000013f2: DUP3 000013f3: ADD 000013f4: DUP4 000013f5: SWAP1 000013f6: MSTORE 000013f7: DUP1 000013f8: MLOAD 000013f9: PUSH32 0x8aef90ae96fb6dbf7057a69540eba39446a248c62fd8944fda136b31328980d1 0000141a: SWAP3 0000141b: DUP2 0000141c: SWAP1 0000141d: SUB 0000141e: SWAP1 0000141f: SWAP2 00001420: ADD 00001421: SWAP1 00001422: LOG1 00001423: PUSH1 0x0a 00001425: SSTORE 00001426: JUMP 00001427: JUMPDEST 00001428: PUSH1 0x00 0000142a: SLOAD 0000142b: PUSH1 0x01 0000142d: PUSH1 0xa0 0000142f: PUSH1 0x02 00001431: EXP 00001432: SUB 00001433: AND 00001434: CALLER 00001435: EQ 00001436: PUSH2 0x143e 00001439: JUMPI 0000143a: PUSH1 0x00 0000143c: DUP1 0000143d: REVERT 0000143e: JUMPDEST 0000143f: PUSH1 0x12 00001441: SLOAD 00001442: PUSH1 0xff 00001444: AND 00001445: ISZERO 00001446: PUSH2 0x144e 00001449: JUMPI 0000144a: PUSH1 0x00 0000144c: DUP1 0000144d: REVERT 0000144e: JUMPDEST 0000144f: PUSH1 0x00 00001451: DUP2 00001452: GT 00001453: PUSH2 0x145b 00001456: JUMPI 00001457: PUSH1 0x00 00001459: DUP1 0000145a: REVERT 0000145b: JUMPDEST 0000145c: PUSH1 0x0b 0000145e: SLOAD 0000145f: PUSH1 0x40 00001461: DUP1 00001462: MLOAD 00001463: SWAP2 00001464: DUP3 00001465: MSTORE 00001466: PUSH1 0x20 00001468: DUP3 00001469: ADD 0000146a: DUP4 0000146b: SWAP1 0000146c: MSTORE 0000146d: DUP1 0000146e: MLOAD 0000146f: PUSH32 0x18cc2de91b21e64ed19efed59ce3534bf5f78761345905a5f3c2d5616232d693 00001490: SWAP3 00001491: DUP2 00001492: SWAP1 00001493: SUB 00001494: SWAP1 00001495: SWAP2 00001496: ADD 00001497: SWAP1 00001498: LOG1 00001499: PUSH1 0x0b 0000149b: SSTORE 0000149c: JUMP 0000149d: JUMPDEST 0000149e: PUSH1 0x02 000014a0: SLOAD 000014a1: PUSH1 0x40 000014a3: DUP1 000014a4: MLOAD 000014a5: PUSH32 0x95d89b4100000000000000000000000000000000000000000000000000000000 000014c6: DUP2 000014c7: MSTORE 000014c8: SWAP1 000014c9: MLOAD 000014ca: PUSH1 0x60 000014cc: SWAP3 000014cd: PUSH1 0x01 000014cf: PUSH1 0xa0 000014d1: PUSH1 0x02 000014d3: EXP 000014d4: SUB 000014d5: AND 000014d6: SWAP2 000014d7: PUSH4 0x95d89b41 000014dc: SWAP2 000014dd: PUSH1 0x04 000014df: DUP1 000014e0: DUP4 000014e1: ADD 000014e2: SWAP3 000014e3: PUSH1 0x00 000014e5: SWAP3 000014e6: SWAP2 000014e7: SWAP1 000014e8: DUP3 000014e9: SWAP1 000014ea: SUB 000014eb: ADD 000014ec: DUP2 000014ed: DUP4 000014ee: DUP8 000014ef: DUP1 000014f0: EXTCODESIZE 000014f1: ISZERO 000014f2: DUP1 000014f3: ISZERO 000014f4: PUSH2 0x0ba9 000014f7: JUMPI 000014f8: PUSH1 0x00 000014fa: DUP1 000014fb: REVERT 000014fc: JUMPDEST 000014fd: PUSH1 0x00 000014ff: DUP1 00001500: SLOAD 00001501: PUSH1 0x01 00001503: PUSH1 0xa0 00001505: PUSH1 0x02 00001507: EXP 00001508: SUB 00001509: AND 0000150a: CALLER 0000150b: EQ 0000150c: PUSH2 0x1514 0000150f: JUMPI 00001510: PUSH1 0x00 00001512: DUP1 00001513: REVERT 00001514: JUMPDEST 00001515: PUSH1 0x12 00001517: SLOAD 00001518: PUSH1 0xff 0000151a: AND 0000151b: ISZERO 0000151c: PUSH2 0x1524 0000151f: JUMPI 00001520: PUSH1 0x00 00001522: DUP1 00001523: REVERT 00001524: JUMPDEST 00001525: PUSH1 0x0a 00001527: SLOAD 00001528: PUSH1 0x0f 0000152a: SLOAD 0000152b: PUSH2 0x153a 0000152e: SWAP1 0000152f: DUP5 00001530: PUSH4 0xffffffff 00001535: PUSH2 0x08d8 00001538: AND 00001539: JUMP 0000153a: JUMPDEST 0000153b: LT 0000153c: PUSH2 0x1557 0000153f: JUMPI 00001540: PUSH1 0x0f 00001542: SLOAD 00001543: PUSH1 0x0a 00001545: SLOAD 00001546: PUSH2 0x1554 00001549: SWAP2 0000154a: PUSH4 0xffffffff 0000154f: PUSH2 0x08ee 00001552: AND 00001553: JUMP 00001554: JUMPDEST 00001555: SWAP2 00001556: POP 00001557: JUMPDEST 00001558: PUSH2 0x1561 0000155b: DUP4 0000155c: DUP4 0000155d: PUSH2 0x0928 00001560: JUMP 00001561: JUMPDEST 00001562: PUSH1 0x0f 00001564: SLOAD 00001565: PUSH1 0x10 00001567: SLOAD 00001568: PUSH1 0x11 0000156a: SLOAD 0000156b: PUSH1 0x40 0000156d: DUP1 0000156e: MLOAD 0000156f: DUP8 00001570: DUP2 00001571: MSTORE 00001572: PUSH1 0x00 00001574: PUSH1 0x20 00001576: DUP3 00001577: ADD 00001578: DUP2 00001579: SWAP1 0000157a: MSTORE 0000157b: DUP2 0000157c: DUP4 0000157d: ADD 0000157e: MSTORE 0000157f: PUSH1 0x60 00001581: DUP2 00001582: ADD 00001583: SWAP5 00001584: SWAP1 00001585: SWAP5 00001586: MSTORE 00001587: PUSH1 0x80 00001589: DUP5 0000158a: ADD 0000158b: SWAP3 0000158c: SWAP1 0000158d: SWAP3 0000158e: MSTORE 0000158f: PUSH1 0xa0 00001591: DUP4 00001592: ADD 00001593: MSTORE 00001594: DUP3 00001595: ISZERO 00001596: ISZERO 00001597: PUSH1 0xc0 00001599: DUP4 0000159a: ADD 0000159b: MSTORE 0000159c: MLOAD 0000159d: SWAP2 0000159e: SWAP3 0000159f: POP 000015a0: PUSH1 0x01 000015a2: PUSH1 0xa0 000015a4: PUSH1 0x02 000015a6: EXP 000015a7: SUB 000015a8: DUP6 000015a9: AND 000015aa: SWAP2 000015ab: PUSH32 0x20fe12028d9f9484cae3903103a15de61b4e2269b7572e5357eed98ecaed54f3 000015cc: SWAP2 000015cd: DUP2 000015ce: SWAP1 000015cf: SUB 000015d0: PUSH1 0xe0 000015d2: ADD 000015d3: SWAP1 000015d4: LOG2 000015d5: POP 000015d6: POP 000015d7: POP 000015d8: JUMP 000015d9: JUMPDEST 000015da: PUSH1 0x00 000015dc: SLOAD 000015dd: PUSH1 0x01 000015df: PUSH1 0xa0 000015e1: PUSH1 0x02 000015e3: EXP 000015e4: SUB 000015e5: AND 000015e6: CALLER 000015e7: EQ 000015e8: PUSH2 0x15f0 000015eb: JUMPI 000015ec: PUSH1 0x00 000015ee: DUP1 000015ef: REVERT 000015f0: JUMPDEST 000015f1: PUSH1 0x12 000015f3: SLOAD 000015f4: PUSH1 0xff 000015f6: AND 000015f7: ISZERO 000015f8: PUSH2 0x1600 000015fb: JUMPI 000015fc: PUSH1 0x00 000015fe: DUP1 000015ff: REVERT 00001600: JUMPDEST 00001601: PUSH1 0x09 00001603: SLOAD 00001604: TIMESTAMP 00001605: GT 00001606: DUP1 00001607: PUSH2 0x1614 0000160a: JUMPI 0000160b: POP 0000160c: PUSH1 0x0a 0000160e: SLOAD 0000160f: PUSH1 0x0f 00001611: SLOAD 00001612: LT 00001613: ISZERO 00001614: JUMPDEST 00001615: ISZERO 00001616: ISZERO 00001617: PUSH2 0x161f 0000161a: JUMPI 0000161b: PUSH1 0x00 0000161d: DUP1 0000161e: REVERT 0000161f: JUMPDEST 00001620: PUSH1 0x02 00001622: PUSH1 0x00 00001624: SWAP1 00001625: SLOAD 00001626: SWAP1 00001627: PUSH2 0x0100 0000162a: EXP 0000162b: SWAP1 0000162c: DIV 0000162d: PUSH1 0x01 0000162f: PUSH1 0xa0 00001631: PUSH1 0x02 00001633: EXP 00001634: SUB 00001635: AND 00001636: PUSH1 0x01 00001638: PUSH1 0xa0 0000163a: PUSH1 0x02 0000163c: EXP 0000163d: SUB 0000163e: AND 0000163f: PUSH4 0x7e5cd5c1 00001644: PUSH1 0x40 00001646: MLOAD 00001647: DUP2 00001648: PUSH4 0xffffffff 0000164d: AND 0000164e: PUSH1 0xe0 00001650: PUSH1 0x02 00001652: EXP 00001653: MUL 00001654: DUP2 00001655: MSTORE 00001656: PUSH1 0x04 00001658: ADD 00001659: PUSH1 0x00 0000165b: PUSH1 0x40 0000165d: MLOAD 0000165e: DUP1 0000165f: DUP4 00001660: SUB 00001661: DUP2 00001662: PUSH1 0x00 00001664: DUP8 00001665: DUP1 00001666: EXTCODESIZE 00001667: ISZERO 00001668: DUP1 00001669: ISZERO 0000166a: PUSH2 0x1672 0000166d: JUMPI 0000166e: PUSH1 0x00 00001670: DUP1 00001671: REVERT 00001672: JUMPDEST 00001673: POP 00001674: GAS 00001675: CALL 00001676: ISZERO 00001677: DUP1 00001678: ISZERO 00001679: PUSH2 0x1686 0000167c: JUMPI 0000167d: RETURNDATASIZE 0000167e: PUSH1 0x00 00001680: DUP1 00001681: RETURNDATACOPY 00001682: RETURNDATASIZE 00001683: PUSH1 0x00 00001685: REVERT 00001686: JUMPDEST 00001687: POP 00001688: POP 00001689: PUSH1 0x12 0000168b: DUP1 0000168c: SLOAD 0000168d: PUSH1 0xff 0000168f: NOT 00001690: AND 00001691: PUSH1 0x01 00001693: OR 00001694: SWAP1 00001695: SSTORE 00001696: POP 00001697: POP 00001698: JUMP 00001699: JUMPDEST 0000169a: PUSH1 0x05 0000169c: SLOAD 0000169d: PUSH1 0x01 0000169f: PUSH1 0xa0 000016a1: PUSH1 0x02 000016a3: EXP 000016a4: SUB 000016a5: AND 000016a6: DUP2 000016a7: JUMP 000016a8: JUMPDEST 000016a9: PUSH1 0x10 000016ab: SLOAD 000016ac: DUP2 000016ad: JUMP 000016ae: JUMPDEST 000016af: PUSH1 0x11 000016b1: SLOAD 000016b2: DUP2 000016b3: JUMP 000016b4: JUMPDEST 000016b5: PUSH1 0x0d 000016b7: SLOAD 000016b8: DUP2 000016b9: JUMP 000016ba: JUMPDEST 000016bb: PUSH1 0x00 000016bd: DUP1 000016be: PUSH1 0x00 000016c0: DUP1 000016c1: PUSH1 0x00 000016c3: DUP1 000016c4: PUSH1 0x04 000016c6: PUSH1 0x00 000016c8: SWAP1 000016c9: SLOAD 000016ca: SWAP1 000016cb: PUSH2 0x0100 000016ce: EXP 000016cf: SWAP1 000016d0: DIV 000016d1: PUSH1 0x01 000016d3: PUSH1 0xa0 000016d5: PUSH1 0x02 000016d7: EXP 000016d8: SUB 000016d9: AND 000016da: PUSH1 0x01 000016dc: PUSH1 0xa0 000016de: PUSH1 0x02 000016e0: EXP 000016e1: SUB 000016e2: AND 000016e3: PUSH4 0x679aefce 000016e8: PUSH1 0x40 000016ea: MLOAD 000016eb: DUP2 000016ec: PUSH4 0xffffffff 000016f1: AND 000016f2: PUSH1 0xe0 000016f4: PUSH1 0x02 000016f6: EXP 000016f7: MUL 000016f8: DUP2 000016f9: MSTORE 000016fa: PUSH1 0x04 000016fc: ADD 000016fd: PUSH1 0x40 000016ff: DUP1 00001700: MLOAD 00001701: DUP1 00001702: DUP4 00001703: SUB 00001704: DUP2 00001705: PUSH1 0x00 00001707: DUP8 00001708: DUP1 00001709: EXTCODESIZE 0000170a: ISZERO 0000170b: DUP1 0000170c: ISZERO 0000170d: PUSH2 0x1715 00001710: JUMPI 00001711: PUSH1 0x00 00001713: DUP1 00001714: REVERT 00001715: JUMPDEST 00001716: POP 00001717: GAS 00001718: CALL 00001719: ISZERO 0000171a: DUP1 0000171b: ISZERO 0000171c: PUSH2 0x1729 0000171f: JUMPI 00001720: RETURNDATASIZE 00001721: PUSH1 0x00 00001723: DUP1 00001724: RETURNDATACOPY 00001725: RETURNDATASIZE 00001726: PUSH1 0x00 00001728: REVERT 00001729: JUMPDEST 0000172a: POP 0000172b: POP 0000172c: POP 0000172d: POP 0000172e: PUSH1 0x40 00001730: MLOAD 00001731: RETURNDATASIZE 00001732: PUSH1 0x40 00001734: DUP2 00001735: LT 00001736: ISZERO 00001737: PUSH2 0x173f 0000173a: JUMPI 0000173b: PUSH1 0x00 0000173d: DUP1 0000173e: REVERT 0000173f: JUMPDEST 00001740: POP 00001741: DUP1 00001742: MLOAD 00001743: PUSH1 0x20 00001745: SWAP1 00001746: SWAP2 00001747: ADD 00001748: MLOAD 00001749: PUSH1 0x05 0000174b: SLOAD 0000174c: PUSH1 0x40 0000174e: DUP1 0000174f: MLOAD 00001750: PUSH32 0x679aefce00000000000000000000000000000000000000000000000000000000 00001771: DUP2 00001772: MSTORE 00001773: DUP2 00001774: MLOAD 00001775: SWAP5 00001776: SWAP9 00001777: POP 00001778: SWAP3 00001779: SWAP7 0000177a: POP 0000177b: PUSH1 0x01 0000177d: PUSH1 0xa0 0000177f: PUSH1 0x02 00001781: EXP 00001782: SUB 00001783: SWAP1 00001784: SWAP2 00001785: AND 00001786: SWAP3 00001787: PUSH4 0x679aefce 0000178c: SWAP3 0000178d: PUSH1 0x04 0000178f: DUP1 00001790: DUP3 00001791: ADD 00001792: SWAP4 00001793: SWAP3 00001794: SWAP2 00001795: DUP3 00001796: SWAP1 00001797: SUB 00001798: ADD 00001799: DUP2 0000179a: PUSH1 0x00 0000179c: DUP8 0000179d: DUP1 0000179e: EXTCODESIZE 0000179f: ISZERO 000017a0: DUP1 000017a1: ISZERO 000017a2: PUSH2 0x17aa 000017a5: JUMPI 000017a6: PUSH1 0x00 000017a8: DUP1 000017a9: REVERT 000017aa: JUMPDEST 000017ab: POP 000017ac: GAS 000017ad: CALL 000017ae: ISZERO 000017af: DUP1 000017b0: ISZERO 000017b1: PUSH2 0x17be 000017b4: JUMPI 000017b5: RETURNDATASIZE 000017b6: PUSH1 0x00 000017b8: DUP1 000017b9: RETURNDATACOPY 000017ba: RETURNDATASIZE 000017bb: PUSH1 0x00 000017bd: REVERT 000017be: JUMPDEST 000017bf: POP 000017c0: POP 000017c1: POP 000017c2: POP 000017c3: PUSH1 0x40 000017c5: MLOAD 000017c6: RETURNDATASIZE 000017c7: PUSH1 0x40 000017c9: DUP2 000017ca: LT 000017cb: ISZERO 000017cc: PUSH2 0x17d4 000017cf: JUMPI 000017d0: PUSH1 0x00 000017d2: DUP1 000017d3: REVERT 000017d4: JUMPDEST 000017d5: POP 000017d6: DUP1 000017d7: MLOAD 000017d8: PUSH1 0x20 000017da: SWAP1 000017db: SWAP2 000017dc: ADD 000017dd: MLOAD 000017de: SWAP1 000017df: SWAP3 000017e0: POP 000017e1: SWAP1 000017e2: POP 000017e3: DUP3 000017e4: DUP1 000017e5: ISZERO 000017e6: PUSH2 0x17ec 000017e9: JUMPI 000017ea: POP 000017eb: DUP1 000017ec: JUMPDEST 000017ed: ISZERO 000017ee: PUSH2 0x1814 000017f1: JUMPI 000017f2: PUSH1 0x01 000017f4: SWAP5 000017f5: POP 000017f6: PUSH2 0x1811 000017f9: PUSH8 0x0de0b6b3a7640000 00001802: PUSH2 0x08a3 00001805: DUP7 00001806: DUP6 00001807: PUSH4 0xffffffff 0000180c: PUSH2 0x0903 0000180f: AND 00001810: JUMP 00001811: JUMPDEST 00001812: SWAP6 00001813: POP 00001814: JUMPDEST 00001815: POP 00001816: POP 00001817: POP 00001818: POP 00001819: SWAP1 0000181a: SWAP2 0000181b: JUMP 0000181c: JUMPDEST 0000181d: PUSH1 0x09 0000181f: SLOAD 00001820: DUP2 00001821: JUMP 00001822: JUMPDEST 00001823: PUSH1 0x03 00001825: SLOAD 00001826: PUSH1 0x01 00001828: PUSH1 0xa0 0000182a: PUSH1 0x02 0000182c: EXP 0000182d: SUB 0000182e: AND 0000182f: DUP2 00001830: JUMP 00001831: JUMPDEST 00001832: PUSH1 0x02 00001834: SLOAD 00001835: PUSH1 0x01 00001837: PUSH1 0xa0 00001839: PUSH1 0x02 0000183b: EXP 0000183c: SUB 0000183d: AND 0000183e: DUP2 0000183f: JUMP 00001840: JUMPDEST 00001841: PUSH1 0x00 00001843: SLOAD 00001844: PUSH1 0x01 00001846: PUSH1 0xa0 00001848: PUSH1 0x02 0000184a: EXP 0000184b: SUB 0000184c: AND 0000184d: CALLER 0000184e: EQ 0000184f: PUSH2 0x1857 00001852: JUMPI 00001853: PUSH1 0x00 00001855: DUP1 00001856: REVERT 00001857: JUMPDEST 00001858: PUSH1 0x12 0000185a: SLOAD 0000185b: PUSH1 0xff 0000185d: AND 0000185e: ISZERO 0000185f: PUSH2 0x1867 00001862: JUMPI 00001863: PUSH1 0x00 00001865: DUP1 00001866: REVERT 00001867: JUMPDEST 00001868: PUSH1 0x0e 0000186a: SLOAD 0000186b: PUSH1 0x40 0000186d: DUP1 0000186e: MLOAD 0000186f: SWAP2 00001870: DUP3 00001871: MSTORE 00001872: PUSH1 0x20 00001874: DUP3 00001875: ADD 00001876: DUP4 00001877: SWAP1 00001878: MSTORE 00001879: DUP1 0000187a: MLOAD 0000187b: PUSH32 0xec87206008f9dda024d92dff1cd842c894c3b3b663a142304495bb85aeaa3beb 0000189c: SWAP3 0000189d: DUP2 0000189e: SWAP1 0000189f: SUB 000018a0: SWAP1 000018a1: SWAP2 000018a2: ADD 000018a3: SWAP1 000018a4: LOG1 000018a5: PUSH1 0x0e 000018a7: SSTORE 000018a8: JUMP 000018a9: JUMPDEST 000018aa: PUSH1 0x00 000018ac: DUP1 000018ad: PUSH1 0x00 000018af: PUSH2 0x18b6 000018b2: PUSH2 0x1a3b 000018b5: JUMP 000018b6: JUMPDEST 000018b7: SWAP3 000018b8: POP 000018b9: SWAP1 000018ba: POP 000018bb: DUP2 000018bc: ISZERO 000018bd: PUSH2 0x08b2 000018c0: JUMPI 000018c1: PUSH1 0x0e 000018c3: SLOAD 000018c4: PUSH2 0x08af 000018c7: SWAP1 000018c8: PUSH2 0x0d0f 000018cb: SWAP1 000018cc: PUSH1 0x64 000018ce: PUSH4 0xffffffff 000018d3: PUSH2 0x08d8 000018d6: AND 000018d7: JUMP 000018d8: JUMPDEST 000018d9: PUSH1 0x01 000018db: SLOAD 000018dc: PUSH1 0x01 000018de: PUSH1 0xa0 000018e0: PUSH1 0x02 000018e2: EXP 000018e3: SUB 000018e4: AND 000018e5: DUP2 000018e6: JUMP 000018e7: JUMPDEST 000018e8: PUSH1 0x00 000018ea: SLOAD 000018eb: PUSH1 0x01 000018ed: PUSH1 0xa0 000018ef: PUSH1 0x02 000018f1: EXP 000018f2: SUB 000018f3: AND 000018f4: CALLER 000018f5: EQ 000018f6: PUSH2 0x18fe 000018f9: JUMPI 000018fa: PUSH1 0x00 000018fc: DUP1 000018fd: REVERT 000018fe: JUMPDEST 000018ff: PUSH1 0x12 00001901: SLOAD 00001902: PUSH1 0xff 00001904: AND 00001905: ISZERO 00001906: PUSH2 0x190e 00001909: JUMPI 0000190a: PUSH1 0x00 0000190c: DUP1 0000190d: REVERT 0000190e: JUMPDEST 0000190f: PUSH1 0x01 00001911: PUSH1 0xa0 00001913: PUSH1 0x02 00001915: EXP 00001916: SUB 00001917: DUP2 00001918: AND 00001919: ISZERO 0000191a: ISZERO 0000191b: PUSH2 0x1923 0000191e: JUMPI 0000191f: PUSH1 0x00 00001921: DUP1 00001922: REVERT 00001923: JUMPDEST 00001924: PUSH1 0x07 00001926: SLOAD 00001927: PUSH1 0x40 00001929: MLOAD 0000192a: PUSH1 0x01 0000192c: PUSH1 0xa0 0000192e: PUSH1 0x02 00001930: EXP 00001931: SUB 00001932: DUP1 00001933: DUP5 00001934: AND 00001935: SWAP3 00001936: AND 00001937: SWAP1 00001938: PUSH32 0x0f37c6733428a3a65d46b7f1853a5ce4bfa3cf92d25322507a50bf23a0b5a0a8 00001959: SWAP1 0000195a: PUSH1 0x00 0000195c: SWAP1 0000195d: LOG3 0000195e: PUSH1 0x07 00001960: DUP1 00001961: SLOAD 00001962: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001977: NOT 00001978: AND 00001979: PUSH1 0x01 0000197b: PUSH1 0xa0 0000197d: PUSH1 0x02 0000197f: EXP 00001980: SUB 00001981: SWAP3 00001982: SWAP1 00001983: SWAP3 00001984: AND 00001985: SWAP2 00001986: SWAP1 00001987: SWAP2 00001988: OR 00001989: SWAP1 0000198a: SSTORE 0000198b: JUMP 0000198c: JUMPDEST 0000198d: PUSH1 0x00 0000198f: SLOAD 00001990: PUSH1 0x01 00001992: PUSH1 0xa0 00001994: PUSH1 0x02 00001996: EXP 00001997: SUB 00001998: AND 00001999: CALLER 0000199a: EQ 0000199b: PUSH2 0x19a3 0000199e: JUMPI 0000199f: PUSH1 0x00 000019a1: DUP1 000019a2: REVERT 000019a3: JUMPDEST 000019a4: PUSH1 0x12 000019a6: SLOAD 000019a7: PUSH1 0xff 000019a9: AND 000019aa: ISZERO 000019ab: PUSH2 0x19b3 000019ae: JUMPI 000019af: PUSH1 0x00 000019b1: DUP1 000019b2: REVERT 000019b3: JUMPDEST 000019b4: PUSH1 0x0c 000019b6: SLOAD 000019b7: PUSH1 0x40 000019b9: DUP1 000019ba: MLOAD 000019bb: SWAP2 000019bc: DUP3 000019bd: MSTORE 000019be: PUSH1 0x20 000019c0: DUP3 000019c1: ADD 000019c2: DUP4 000019c3: SWAP1 000019c4: MSTORE 000019c5: DUP1 000019c6: MLOAD 000019c7: PUSH32 0x0b01521689247a403cdcb55b1edbeba4487e4e234e98b7232cc0e4db44ed93f6 000019e8: SWAP3 000019e9: DUP2 000019ea: SWAP1 000019eb: SUB 000019ec: SWAP1 000019ed: SWAP2 000019ee: ADD 000019ef: SWAP1 000019f0: LOG1 000019f1: PUSH1 0x0c 000019f3: SSTORE 000019f4: JUMP 000019f5: JUMPDEST 000019f6: PUSH1 0x00 000019f8: SLOAD 000019f9: PUSH1 0x01 000019fb: PUSH1 0xa0 000019fd: PUSH1 0x02 000019ff: EXP 00001a00: SUB 00001a01: AND 00001a02: CALLER 00001a03: EQ 00001a04: PUSH2 0x1a0c 00001a07: JUMPI 00001a08: PUSH1 0x00 00001a0a: DUP1 00001a0b: REVERT 00001a0c: JUMPDEST 00001a0d: PUSH1 0x01 00001a0f: DUP1 00001a10: SLOAD 00001a11: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a26: NOT 00001a27: AND 00001a28: PUSH1 0x01 00001a2a: PUSH1 0xa0 00001a2c: PUSH1 0x02 00001a2e: EXP 00001a2f: SUB 00001a30: SWAP3 00001a31: SWAP1 00001a32: SWAP3 00001a33: AND 00001a34: SWAP2 00001a35: SWAP1 00001a36: SWAP2 00001a37: OR 00001a38: SWAP1 00001a39: SSTORE 00001a3a: JUMP 00001a3b: JUMPDEST 00001a3c: PUSH1 0x00 00001a3e: DUP1 00001a3f: PUSH1 0x00 00001a41: PUSH2 0x0878 00001a44: PUSH2 0x16ba 00001a47: JUMP 00001a48: STOP 00001a49: LOG1 00001a4a: PUSH6 0x627a7a723058 00001a51: KECCAK256 00001a52: UNKNOWN(0x2F) 00001a53: UNKNOWN(0x29) 00001a54: SWAP3 00001a55: DUP15 00001a56: LOG2 00001a57: UNKNOWN(0xB0) 00001a58: STOP 00001a59: PUSH29
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | yes | yes |
viewtrace_id: 0x00a3fe654dbb29a146e49eeb2b634bac51ad5f4b61398a20afaae814a9b5f674
call_targets:
0x3b0c1b99faafd625aacd70521d8da167807b3b82, 0x5b98a13e7c6aef063551643b0171d5cd681bf4da
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0x00a3fe654dbb29a146e49eeb2b634bac51ad5f4b61398a20afaae814a9b5f674",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x3b0c1b99faafd625aacd70521d8da167807b3b82",
"0x5b98a13e7c6aef063551643b0171d5cd681bf4da"
],
"matched_probe": null,
"target_varies": true,
"classification": "target_varies"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x09a9597a",
"selector": "0x09a9597a",
"calldata_variants": [
"0x09a9597a",
"0x09a9597a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0b97bc86",
"selector": "0x0b97bc86",
"calldata_variants": [
"0x0b97bc86",
"0x0b97bc860000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x214bb60f",
"selector": "0x214bb60f",
"calldata_variants": [
"0x214bb60f",
"0x214bb60f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2a8a8b19",
"selector": "0x2a8a8b19",
"calldata_variants": [
"0x2a8a8b19",
"0x2a8a8b190000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3784f000",
"selector": "0x3784f000",
"calldata_variants": [
"0x3784f000",
"0x3784f0000000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x42f6fb29",
"selector": "0x42f6fb29",
"calldata_variants": [
"0x42f6fb29",
"0x42f6fb290000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x45b8c0c2",
"selector": "0x45b8c0c2",
"calldata_variants": [
"0x45b8c0c2",
"0x45b8c0c20000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 728,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2513,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2701,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 12,
"guards_detected": [],
"untrusted_call_count": 12
}
|
| high | other | detector | ETH value transfer possible | 55 | yes | yes |
viewtrace_id: 0x00a3fe654dbb29a146e49eeb2b634bac51ad5f4b61398a20afaae814a9b5f674
call_targets:
0x3b0c1b99faafd625aacd70521d8da167807b3b82, 0x5b98a13e7c6aef063551643b0171d5cd681bf4da
target_varies:
yes
classification:
target_varies
validation_json{
"sink": "CALL",
"errors": 0,
"status": "confirmed",
"attempts": 1,
"trace_id": "0x00a3fe654dbb29a146e49eeb2b634bac51ad5f4b61398a20afaae814a9b5f674",
"confirmed": true,
"trace_mode": "callTracer",
"call_targets": [
"0x3b0c1b99faafd625aacd70521d8da167807b3b82",
"0x5b98a13e7c6aef063551643b0171d5cd681bf4da"
],
"matched_probe": null,
"target_varies": true,
"classification": "target_varies"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x06fdde03",
"selector": "0x06fdde03",
"calldata_variants": [
"0x06fdde03",
"0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x09a9597a",
"selector": "0x09a9597a",
"calldata_variants": [
"0x09a9597a",
"0x09a9597a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x0b97bc86",
"selector": "0x0b97bc86",
"calldata_variants": [
"0x0b97bc86",
"0x0b97bc860000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x214bb60f",
"selector": "0x214bb60f",
"calldata_variants": [
"0x214bb60f",
"0x214bb60f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2a8a8b19",
"selector": "0x2a8a8b19",
"calldata_variants": [
"0x2a8a8b19",
"0x2a8a8b190000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3784f000",
"selector": "0x3784f000",
"calldata_variants": [
"0x3784f000",
"0x3784f0000000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x42f6fb29",
"selector": "0x42f6fb29",
"calldata_variants": [
"0x42f6fb29",
"0x42f6fb290000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x45b8c0c2",
"selector": "0x45b8c0c2",
"calldata_variants": [
"0x45b8c0c2",
"0x45b8c0c20000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 728,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2513,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2701,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 12,
"guards_detected": []
}
|
| medium | reentrancy | slither | Reentrancy in FxxxLandRush.receiveApproval(address,uint256,address,bytes) (contracts/Contract.sol#359-379): | 75 | no | — |
viewevidence_json{
"impact": "Medium",
"detector": "reentrancy-no-eth",
"elements": [
{
"name": "receiveApproval",
"type": "function",
"source_mapping": {
"lines": [
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379
],
"start": 17069,
"length": 985,
"ending_column": 46,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 19,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "FxxxLandRush",
"type": "contract",
"source_mapping": {
"lines": [
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,
418,
419,
420,
421
],
"start": 9521,
"length": 10663,
"ending_column": 47,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 2,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "receiveApproval(address,uint256,address,bytes)"
}
},
{
"name": "bonusList.isInBonusList(from)",
"type": "node",
"source_mapping": {
"lines": [
363,
364,
365
],
"start": 17321,
"length": 29,
"ending_column": 8,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 46,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "receiveApproval",
"type": "function",
"source_mapping": {
"lines": [
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379
],
"start": 17069,
"length": 985,
"ending_column": 46,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 19,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "FxxxLandRush",
"type": "contract",
"source_mapping": {
"lines": [
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,
418,
419,
420,
421
],
"start": 9521,
"length": 10663,
"ending_column": 47,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 2,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "receiveApproval(address,uint256,address,bytes)"
}
}
}
},
{
"name": "(_parcelGze,_live) = parcelGzeWithBonusOnList()",
"type": "node",
"source_mapping": {
"lines": [
365
],
"start": 17366,
"length": 48,
"ending_column": 72,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 24,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "receiveApproval",
"type": "function",
"source_mapping": {
"lines": [
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379
],
"start": 17069,
"length": 985,
"ending_column": 46,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 19,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "FxxxLandRush",
"type": "contract",
"source_mapping": {
"lines": [
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,
418,
419,
420,
421
],
"start": 9521,
"length": 10663,
"ending_column": 47,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 2,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "receiveApproval(address,uint256,address,bytes)"
}
}
}
},
{
"name": "(_ethUsd,_ethUsdLive) = ethUsdPriceFeed.getRate()",
"type": "node",
"source_mapping": {
"lines": [
308,
309
],
"start": 14949,
"length": 50,
"ending_column": 32,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 28,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls_sending_eth"
},
"type_specific_fields": {
"parent": {
"name": "gzeUsd",
"type": "function",
"source_mapping": {
"lines": [
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315
],
"start": 14828,
"length": 420,
"ending_column": 20,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 27,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "FxxxLandRush",
"type": "contract",
"source_mapping": {
"lines": [
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,
418,
419,
420,
421
],
"start": 9521,
"length": 10663,
"ending_column": 47,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 2,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "gzeUsd()"
}
}
}
},
{
"name": "(_gzeEth,_gzeEthLive) = gzeEthPriceFeed.getRate()",
"type": "node",
"source_mapping": {
"lines": [
310,
311,
312
],
"start": 15057,
"length": 50,
"ending_column": 20,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 20,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls_sending_eth"
},
"type_specific_fields": {
"parent": {
"name": "gzeUsd",
"type": "function",
"source_mapping": {
"lines": [
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315
],
"start": 14828,
"length": 420,
"ending_column": 20,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 27,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "FxxxLandRush",
"type": "contract",
"source_mapping": {
"lines": [
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,
418,
419,
420,
421
],
"start": 9521,
"length": 10663,
"ending_column": 47,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 2,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "gzeUsd()"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "receiveApproval",
"type": "function",
"lines": [
359,
360,
361,
362,
363,
364,
365,
366,
367,
368,
369,
370,
371,
372,
373,
374,
375,
376,
377,
378,
379
]
},
{
"file": "contracts/Contract.sol",
"name": "bonusList.isInBonusList(from)",
"type": "node",
"lines": [
363,
364,
365
]
},
{
"file": "contracts/Contract.sol",
"name": "(_parcelGze,_live) = parcelGzeWithBonusOnList()",
"type": "node",
"lines": [
365
]
},
{
"file": "contracts/Contract.sol",
"name": "(_ethUsd,_ethUsdLive) = ethUsdPriceFeed.getRate()",
"type": "node",
"lines": [
308,
309
]
},
{
"file": "contracts/Contract.sol",
"name": "(_gzeEth,_gzeEthLive) = gzeEthPriceFeed.getRate()",
"type": "node",
"lines": [
310,
311,
312
]
},
{
"file": "contracts/Contract.sol",
"name": "(_parcelGze,_live) = parcelGzeWithBonusOffList()",
"type": "node",
"lines": [
366
]
},
{
"file": "contracts/Contract.sol",
"name": "(_ethUsd,_ethUsdLive) = ethUsdPriceFeed.getRate()",
"type": "node",
"lines": [
308,
309
]
},
{
"file": "contracts/Contract.sol",
"name": "(_gzeEth,_gzeEthLive) = gzeEthPriceFeed.getRate()",
"type": "node",
"lines": [
310,
311,
312
]
},
{
"file": "contracts/Contract.sol",
"name": "require(bool)(ERC20Interface(token).transferFrom(from,wallet,gzeToTransfer))",
"type": "node",
"lines": [
374,
375,
376
]
},
{
"file": "contracts/Contract.sol",
"name": "lock = mintParcelTokens(from,parcels)",
"type": "node",
"lines": [
376,
377
]
},
{
"file": "contracts/Contract.sol",
"name": "_lock = parcelToken.balanceOf(account).add(parcelUsd.mul(parcels)) >= usdLockAccountThreshold",
"type": "node",
"lines": [
413,
414
]
},
{
"file": "contracts/Contract.sol",
"name": "require(bool)(parcelToken.mint(account,parcelUsd.mul(parcels),_lock))",
"type": "node",
"lines": [
414,
415,
416
]
},
{
"file": "contracts/Contract.sol",
"name": "parcelToken.disableMinting()",
"type": "node",
"lines": [
416,
417
]
},
{
"file": "contracts/Contract.sol",
"name": "lock = mintParcelTokens(from,parcels)",
"type": "node",
"lines": [
376,
377
]
},
{
"file": "contracts/Contract.sol",
"name": "parcelsSold = parcelsSold.add(parcels)",
"type": "node",
"lines": [
411,
412,
413
]
}
],
"description": "Reentrancy in FxxxLandRush.receiveApproval(address,uint256,address,bytes) (contracts/Contract.sol#359-379):\n\tExternal calls:\n\t- bonusList.isInBonusList(from) (contracts/Contract.sol#363-365)\n\t- (_parcelGze,_live) = parcelGzeWithBonusOnList() (contracts/Contract.sol#365)\n\t\t- (_ethUsd,_ethUsdLive) = ethUsdPriceFeed.getRate() (contracts/Contract.sol#308-309)\n\t\t- (_gzeEth,_gzeEthLive) = gzeEthPriceFeed.getRate() (contracts/Contract.sol#310-312)\n\t- (_parcelGze,_live) = parcelGzeWithBonusOffList() (contracts/Contract.sol#366)\n\t\t- (_ethUsd,_ethUsdLive) = ethUsdPriceFeed.getRate() (contracts/Contract.sol#308-309)\n\t\t- (_gzeEth,_gzeEthLive) = gzeEthPriceFeed.getRate() (contracts/Contract.sol#310-312)\n\t- require(bool)(ERC20Interface(token).transferFrom(from,wallet,gzeToTransfer)) (contracts/Contract.sol#374-376)\n\t- lock = mintParcelTokens(from,parcels) (contracts/Contract.sol#376-377)\n\t\t- _lock = parcelToken.balanceOf(account).add(parcelUsd.mul(parcels)) >= usdLockAccountThreshold (contracts/Contract.sol#413-414)\n\t\t- require(bool)(parcelToken.mint(account,parcelUsd.mul(parcels),_lock)) (contracts/Contract.sol#414-416)\n\t\t- parcelToken.disableMinting() (contracts/Contract.sol#416-417)\n\tState variables written after the call(s):\n\t- lock = mintParcelTokens(from,parcels) (contracts/Contract.sol#376-377)\n\t\t- parcelsSold = parcelsSold.add(parcels) (contracts/Contract.sol#411-413)\n\tFxxxLandRush.parcelsSold (contracts/Contract.sol#211) can be used in cross function reentrancies:\n\t- FxxxLandRush.fallback() (contracts/Contract.sol#381-398)\n\t- FxxxLandRush.finalise() (contracts/Contract.sol#418-421)\n\t- FxxxLandRush.mintParcelTokens(address,uint256) (contracts/Contract.sol#408-417)\n\t- FxxxLandRush.offlinePurchase(address,uint256) (contracts/Contract.sol#400-407)\n\t- FxxxLandRush.parcelsSold (contracts/Contract.sol#211)\n\t- FxxxLandRush.receiveApproval(address,uint256,address,bytes) (contracts/Contract.sol#359-379)\n\t- FxxxLandRush.setMaxParcels(uint256) (contracts/Contract.sol#260-267)"
}
|
| medium | reentrancy | slither | Reentrancy in FxxxLandRush.finalise() (contracts/Contract.sol#418-421): | 75 | no | — |
viewevidence_json{
"impact": "Medium",
"detector": "reentrancy-no-eth",
"elements": [
{
"name": "finalise",
"type": "function",
"source_mapping": {
"lines": [
418,
419,
420,
421
],
"start": 19984,
"length": 198,
"ending_column": 45,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 31,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "FxxxLandRush",
"type": "contract",
"source_mapping": {
"lines": [
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,
418,
419,
420,
421
],
"start": 9521,
"length": 10663,
"ending_column": 47,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 2,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "finalise()"
}
},
{
"name": "parcelToken.disableMinting()",
"type": "node",
"source_mapping": {
"lines": [
420,
421
],
"start": 20121,
"length": 28,
"ending_column": 12,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 88,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "finalise",
"type": "function",
"source_mapping": {
"lines": [
418,
419,
420,
421
],
"start": 19984,
"length": 198,
"ending_column": 45,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 31,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "FxxxLandRush",
"type": "contract",
"source_mapping": {
"lines": [
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,
418,
419,
420,
421
],
"start": 9521,
"length": 10663,
"ending_column": 47,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 2,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "finalise()"
}
}
}
},
{
"name": "finalised = true",
"type": "node",
"source_mapping": {
"lines": [
421
],
"start": 20159,
"length": 16,
"ending_column": 38,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"variable_name": "finalised",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "finalise",
"type": "function",
"source_mapping": {
"lines": [
418,
419,
420,
421
],
"start": 19984,
"length": 198,
"ending_column": 45,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 31,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "FxxxLandRush",
"type": "contract",
"source_mapping": {
"lines": [
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,
418,
419,
420,
421
],
"start": 9521,
"length": 10663,
"ending_column": 47,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 2,
"filename_absolute": "/tmp/slither-xnry1203/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "finalise()"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "finalise",
"type": "function",
"lines": [
418,
419,
420,
421
]
},
{
"file": "contracts/Contract.sol",
"name": "parcelToken.disableMinting()",
"type": "node",
"lines": [
420,
421
]
},
{
"file": "contracts/Contract.sol",
"name": "finalised = true",
"type": "node",
"lines": [
421
]
}
],
"description": "Reentrancy in FxxxLandRush.finalise() (contracts/Contract.sol#418-421):\n\tExternal calls:\n\t- parcelToken.disableMinting() (contracts/Contract.sol#420-421)\n\tState variables written after the call(s):\n\t- finalised = true (contracts/Contract.sol#421)\n\tFxxxLandRush.finalised (contracts/Contract.sol#212) can be used in cross function reentrancies:\n\t- FxxxLandRush.finalise() (contracts/Contract.sol#418-421)\n\t- FxxxLandRush.finalised (contracts/Contract.sol#212)\n\t- FxxxLandRush.mintParcelTokens(address,uint256) (contracts/Contract.sol#408-417)\n\t- FxxxLandRush.offlinePurchase(address,uint256) (contracts/Contract.sol#400-407)\n\t- FxxxLandRush.setEndDate(uint256) (contracts/Contract.sol#255-260)\n\t- FxxxLandRush.setGzeBonusOffList(uint256) (contracts/Contract.sol#281-284)\n\t- FxxxLandRush.setGzeBonusOnList(uint256) (contracts/Contract.sol#284-288)\n\t- FxxxLandRush.setMaxParcels(uint256) (contracts/Contract.sol#260-267)\n\t- FxxxLandRush.setParcelUsd(uint256) (contracts/Contract.sol#267-272)\n\t- FxxxLandRush.setStartDate(uint256) (contracts/Contract.sol#249-254)\n\t- FxxxLandRush.setUsdLockAccountThreshold(uint256) (contracts/Contract.sol#272-281)\n\t- FxxxLandRush.setWallet(address) (contracts/Contract.sol#244-249)"
}
|