20f8261a-5aab-46d9-81ea-dbd348c1dbea
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 |
|---|---|---|---|---|
| 31768 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 96031 | artifact.fetch | failed | 1 / 3 | 1 week ago |
| 96032 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 96033 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 96034 | capability.graph | complete | 1 / 3 | 1 week ago |
| 96035 | detector.run | complete | 1 / 3 | 1 week ago |
| 96036 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:894262] OpenAI Codex v0.77.0 (research preview)
[codex:894262] --------
[codex:894262] workdir: /tmp/codex-multi-xql16vs6
[codex:894262] model: gpt-5.2-codex
[codex:894262] provider: openai
[codex:894262] approval: never
[codex:894262] sandbox: read-only
[codex:894262] reasoning effort: xhigh
[codex:894262] reasoning summaries: auto
[codex:894262] session id: 019b8ff0-0c79-7043-b502-23f161433f65
[codex:894262] --------
[codex:894262] user
[codex:894262] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:894262]
[codex:894262] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:894262]
[codex:894262] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:894262] - Gas inefficiency, code quality, naming, or best practices
[codex:894262] - Theoretical vulnerabilities without a clear extraction path
[codex:894262] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:894262] - Front-running unless it enables theft beyond MEV
[codex:894262] - DoS, griefing, or issues that don't result in attacker profit
[codex:894262] - Missing events, view function issues, or informational findings
[codex:894262]
[codex:894262] HIGH-VALUE PATTERNS TO HUNT:
[codex:894262] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:894262] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:894262] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:894262] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:894262] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:894262] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:894262] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:894262] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:894262] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:894262]
[codex:894262] For each finding, you MUST provide:
[codex:894262] 1. Exact file and line numbers of vulnerable code
[codex:894262] 2. Step-by-step exploit transaction sequence
[codex:894262] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:894262]
[codex:894262] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:894262]
[codex:894262] Output MUST be valid JSON matching the provided schema.
[codex:894262] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:894262] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:894262] mcp startup: no servers
[codex:894262]
[codex:894262] thinking
[codex:894262] **Preparing to read instructions**
[codex:894262] exec
[codex:894262] /bin/bash -lc ls in /tmp/codex-multi-xql16vs6 succeeded in 10ms:
[codex:894262] AUDIT_BUNDLE.txt
[codex:894262] codex-output-schema.json
[codex:894262] contracts
[codex:894262] exec
[codex:894262] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-xql16vs6 succeeded in 9ms:
[codex:894262] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:894262]
[codex:894262] ================================================================================
[codex:894262] FILE: contracts/contracts/distribution/ITokenDistributor.sol
[codex:894262] ================================================================================
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262]
[codex:894262] import "../tokens/IERC20.sol";
[codex:894262]
[codex:894262] import "../party/Party.sol";
[codex:894262]
[codex:894262] /// @notice Creates token distributions for parties.
[codex:894262] interface ITokenDistributor {
[codex:894262] enum TokenType {
[codex:894262] Native,
[codex:894262] Erc20
[codex:894262] }
[codex:894262]
[codex:894262] // Info on a distribution, created by createDistribution().
[codex:894262]
[codex:894262] thinking
[codex:894262] **Scanning for vulnerability patterns**
[codex:894262] exec
[codex:894262] /bin/bash -lc "rg -n \"initialize|init\\(|initializer|upgrade|UUPS|proxy\" contracts/contracts" in /tmp/codex-multi-xql16vs6 succeeded in 42ms:
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:79: // it will be set in `_initialize()`.
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:84: // Initialize storage for proxy contracts.
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:85: function _initialize(
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:96: PartyGovernance._initialize(
[codex:894262] contracts/contracts/party/IPartyFactory.sol:22: /// @param opts Options used to initialize the party. These are fixed
[codex:894262] contracts/contracts/party/Party.sol:12: // Arguments used to initialize the party.
[codex:894262] contracts/contracts/party/Party.sol:21: // Arguments used to initialize the `PartyGovernanceNFT`.
[codex:894262] contracts/contracts/party/Party.sol:38: /// @param initData Options used to initialize the party governance.
[codex:894262] contracts/contracts/party/Party.sol:39: function initialize(PartyInitData memory initData) external onlyConstructor {
[codex:894262] contracts/contracts/party/Party.sol:40: PartyGovernanceNFT._initialize(
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol:40: abi.encodeCall(IProposalExecutionEngine.initialize, (address(oldImpl), initData))
[codex:894262] contracts/contracts/proposals/IProposalExecutionEngine.sol:18: function initialize(address oldImpl, bytes memory initData) external;
[codex:894262] contracts/contracts/party/PartyGovernance.sol:277: // Initialize storage for proxy contracts and initialize the proposal execution engine.
[codex:894262] contracts/contracts/party/PartyGovernance.sol:278: function _initialize(
[codex:894262]
[codex:894262] thinking
[codex:894262] **Investigating proxy initialization security**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,220p' contracts/contracts/party/Party.sol" in /tmp/codex-multi-xql16vs6 succeeded in 12ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262]
[codex:894262] import "../tokens/IERC721.sol";
[codex:894262]
[codex:894262] import "./PartyGovernanceNFT.sol";
[codex:894262] import "./PartyGovernance.sol";
[codex:894262]
[codex:894262] /// @notice The governance contract that also custodies the precious NFTs. This
[codex:894262] /// is also the Governance NFT 721 contract.
[codex:894262] contract Party is PartyGovernanceNFT {
[codex:894262] // Arguments used to initialize the party.
[codex:894262] struct PartyOptions {
[codex:894262] PartyGovernance.GovernanceOpts governance;
[codex:894262] ProposalStorage.ProposalEngineOpts proposalEngine;
[codex:894262] string name;
[codex:894262] string symbol;
[codex:894262] uint256 customizationPresetId;
[codex:894262] }
[codex:894262]
[codex:894262]
[codex:894262] thinking
[codex:894262] **Checking Proxy initialization guard**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,220p' contracts/contracts/party/PartyGovernanceNFT.sol" in /tmp/codex-multi-xql16vs6 succeeded in 8ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262]
[codex:894262] import "../utils/ReadOnlyDelegateCall.sol";
[codex:894262] import "../utils/LibSafeCast.sol";
[codex:894262] import "../utils/LibAddress.sol";
[codex:894262] import "openzeppelin/contracts/interfaces/IERC2981.sol";
[codex:894262] import "../globals/IGlobals.sol";
[codex:894262] import "../tokens/IERC721.sol";
[codex:894262] import "../vendor/solmate/ERC721.sol";
[codex:894262] import "./PartyGovernance.sol";
[codex:894262] import "../renderers/RendererStorage.sol";
[codex:894262]
[codex:894262] /// @notice ERC721 functionality built on top of `PartyGovernance`.
[codex:894262] contract PartyGovernanceNFT is PartyGovernance, ERC721, IERC2981 {
[codex:894262] using LibSafeCast for uint256;
[codex:894262] using LibSafeCast for uint96;
[codex:894262] using LibERC20Compat for IERC20;
[codex:894262] using LibAddress for address payable;
[codex:894262]
[codex:894262]
[codex:894262] thinking
[codex:894262] **Identifying critical contract functions**
[codex:894262] exec
[codex:894262] /bin/bash -lc 'rg --files contracts/contracts' in /tmp/codex-multi-xql16vs6 succeeded in 36ms:
[codex:894262] contracts/contracts/globals/IGlobals.sol
[codex:894262] contracts/contracts/globals/LibGlobals.sol
[codex:894262] contracts/contracts/party/PartyGovernance.sol
[codex:894262] contracts/contracts/party/Party.sol
[codex:894262] contracts/contracts/party/IPartyFactory.sol
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol
[codex:894262] contracts/contracts/utils/LibAddress.sol
[codex:894262] contracts/contracts/utils/LibERC20Compat.sol
[codex:894262] contracts/contracts/utils/Multicall.sol
[codex:894262] contracts/contracts/utils/LibSafeCast.sol
[codex:894262] contracts/contracts/utils/ReadOnlyDelegateCall.sol
[codex:894262] contracts/contracts/utils/Implementation.sol
[codex:894262] contracts/contracts/utils/LibRawResult.sol
[codex:894262] contracts/contracts/utils/EIP165.sol
[codex:894262] contracts/contracts/distribution/ITokenDistributor.sol
[codex:894262] contracts/contracts/distribution/TokenDistributor.sol
[codex:894262] contracts/contracts/proposals/IProposalExecutionEngine.sol
[codex:894262] contracts/contracts/proposals/LibProposal.sol
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol
[codex:894262] contracts/contracts/renderers/RendererStorage.sol
[codex:894262]
[codex:894262] thinking
[codex:894262] **Inspecting PartyGovernance contract**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,260p' contracts/contracts/party/PartyGovernance.sol" in /tmp/codex-multi-xql16vs6 succeeded in 8ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262]
[codex:894262] import "../distribution/ITokenDistributor.sol";
[codex:894262] import "../utils/ReadOnlyDelegateCall.sol";
[codex:894262] import "../tokens/IERC721.sol";
[codex:894262] import "../tokens/IERC20.sol";
[codex:894262] import "../tokens/IERC1155.sol";
[codex:894262] import "../tokens/ERC721Receiver.sol";
[codex:894262] import "../tokens/ERC1155Receiver.sol";
[codex:894262] import "../utils/LibERC20Compat.sol";
[codex:894262] import "../utils/LibRawResult.sol";
[codex:894262] import "../utils/LibSafeCast.sol";
[codex:894262] import "../globals/IGlobals.sol";
[codex:894262] import "../globals/LibGlobals.sol";
[codex:894262] import "../proposals/IProposalExecutionEngine.sol";
[codex:894262] import "../proposals/LibProposal.sol";
[codex:894262] import "../proposals/ProposalStorage.sol";
[codex:894262]
[codex:894262] import "./Party.sol";
[codex:894262]
[codex:894262] thinking
[codex:894262] **Searching for token transfers in PartyGovernance**
[codex:894262] exec
[codex:894262] /bin/bash -lc "rg -n \"transfer|call\\{|call\\(\" contracts/contracts/party/PartyGovernance.sol" in /tmp/codex-multi-xql16vs6 succeeded in 15ms:
[codex:894262] 450: // Cannot transfer host status to an existing host.
[codex:894262] 791: ).delegatecall(abi.encodeCall(IProposalExecutionEngine.cancelProposal, (proposalId)));
[codex:894262] 809: (bool success, bytes memory res) = targetAddress.call{ value: amountEth }(targetCallData);
[codex:894262] 849: ).delegatecall(
[codex:894262] 897: function _transferVotingPower(address from, address to, uint256 power) internal {
[codex:894262]
[codex:894262] thinking
[codex:894262] **Inspecting emergencyExecute and ragequit functions**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '260,560p' contracts/contracts/party/PartyGovernance.sol" in /tmp/codex-multi-xql16vs6 succeeded in 8ms:
[codex:894262] revert OnlyWhenEmergencyActionsAllowedError();
[codex:894262] }
[codex:894262] _;
[codex:894262] }
[codex:894262]
[codex:894262] modifier onlyWhenNotGloballyDisabled() {
[codex:894262] if (_GLOBALS.getBool(LibGlobals.GLOBAL_DISABLE_PARTY_ACTIONS)) {
[codex:894262] revert OnlyWhenEnabledError();
[codex:894262] }
[codex:894262] _;
[codex:894262] }
[codex:894262]
[codex:894262] // Set the `Globals` contract.
[codex:894262] constructor(IGlobals globals) {
[codex:894262] _GLOBALS = globals;
[codex:894262] }
[codex:894262]
[codex:894262] // Initialize storage for proxy contracts and initialize the proposal execution engine.
[codex:894262] function _initialize(
[codex:894262] GovernanceOpts memory govOpts,
[codex:894262]
[codex:894262] thinking
[codex:894262] **Exploring key functions**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '560,940p' contracts/contracts/party/PartyGovernance.sol" in /tmp/codex-multi-xql16vs6 succeeded in 8ms:
[codex:894262] accept(proposalId, latestSnapIndex);
[codex:894262] }
[codex:894262]
[codex:894262] /// @notice Vote to support a proposed proposal.
[codex:894262] /// @dev The voting power cast will be the effective voting power of the caller
[codex:894262] /// just before `propose()` was called (see `getVotingPowerAt()`).
[codex:894262] /// If the proposal reaches `passThresholdBps` acceptance ratio then the
[codex:894262] /// proposal will be in the `Passed` state and will be executable after
[codex:894262] /// the `executionDelay` has passed, putting it in the `Ready` state.
[codex:894262] /// @param proposalId The ID of the proposal to accept.
[codex:894262] /// @param snapIndex The index of the caller's last voting power snapshot
[codex:894262] /// before the proposal was created. Should be retrieved
[codex:894262] /// off-chain and passed in.
[codex:894262] /// @return totalVotes The total votes cast on the proposal.
[codex:894262] function accept(uint256 proposalId, uint256 snapIndex) public returns (uint256 totalVotes) {
[codex:894262] // Get the information about the proposal.
[codex:894262] ProposalState storage info = _proposalStateByProposalId[proposalId];
[codex:894262] ProposalStateValues memory values = info.values;
[codex:894262]
[codex:894262] // Can only vote in certain proposal statuses.
[codex:894262]
[codex:894262] thinking
[codex:894262] **Searching for rageQuit and withdraw references**
[codex:894262] exec
[codex:894262] /bin/bash -lc 'rg -n "rageQuit|withdraw|claim|transfer" contracts/contracts/party/PartyGovernanceNFT.sol' in /tmp/codex-multi-xql16vs6 succeeded in 9ms:
[codex:894262] 24: error FixedRageQuitTimestampError(uint40 rageQuitTimestamp);
[codex:894262] 25: error CannotRageQuitError(uint40 rageQuitTimestamp);
[codex:894262] 35: event RageQuit(address caller, uint256[] tokenIds, IERC20[] withdrawTokens, address receiver);
[codex:894262] 58: uint40 public rageQuitTimestamp;
[codex:894262] 94: uint40 rageQuitTimestamp_
[codex:894262] 104: rageQuitTimestamp = rageQuitTimestamp_;
[codex:894262] 308: uint40 oldRageQuitTimestamp = rageQuitTimestamp;
[codex:894262] 318: emit RageQuitSet(oldRageQuitTimestamp, rageQuitTimestamp = newRageQuitTimestamp);
[codex:894262] 321: /// @notice Burn a governance NFT and withdraw a fair share of fungible tokens from the party.
[codex:894262] 323: /// @param withdrawTokens The fungible tokens to withdraw. Specify the
[codex:894262] 324: /// `ETH_ADDRESS` value to withdraw ETH.
[codex:894262] 325: /// @param minWithdrawAmounts The minimum amount of to withdraw for each token.
[codex:894262] 326: /// @param receiver The address to receive the withdrawn tokens.
[codex:894262] 327: function rageQuit(
[codex:894262] 329: IERC20[] calldata withdrawTokens,
[codex:894262] 336: uint40 currentRageQuitTimestamp = rageQuitTimestamp;
[codex:894262] 347: rageQuitTimestamp = DISABLE_RAGEQUIT_PERMANENTLY;
[codex:894262] 352: // Sum up total amount of each token to withdraw.
[codex:894262] 353: uint256[] memory withdrawAmounts = new uint256[](withdrawTokens.length);
[codex:894262] 356: for (uint256 i; i < withdrawTokens.length; ++i) {
[codex:894262]
[codex:894262] thinking
[codex:894262] **Reviewing rageQuit for reentrancy**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '280,460p' contracts/contracts/party/PartyGovernanceNFT.sol" in /tmp/codex-multi-xql16vs6 succeeded in 12ms:
[codex:894262]
[codex:894262] // Burn token.
[codex:894262] _burn(tokenId);
[codex:894262]
[codex:894262] emit Burn(msg.sender, tokenId, votingPower);
[codex:894262] }
[codex:894262]
[codex:894262] // Update minted voting power.
[codex:894262] mintedVotingPower -= totalVotingPowerBurned;
[codex:894262] }
[codex:894262]
[codex:894262] /// @notice Burn governance NFT and remove its voting power. Can only be
[codex:894262] /// called by an authority before the party has started.
[codex:894262] /// @param tokenId The ID of the governance NFTs to burn.
[codex:894262] function burn(uint256 tokenId) external {
[codex:894262] uint256[] memory tokenIds = new uint256[](1);
[codex:894262] tokenIds[0] = tokenId;
[codex:894262] burn(tokenIds);
[codex:894262] }
[codex:894262]
[codex:894262]
[codex:894262] thinking
[codex:894262] **Analyzing potential reentrancy risks**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,200p' contracts/contracts/utils/LibAddress.sol" in /tmp/codex-multi-xql16vs6 succeeded in 10ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262]
[codex:894262] library LibAddress {
[codex:894262] error EthTransferFailed(address receiver, bytes errData);
[codex:894262]
[codex:894262] // Transfer ETH with full gas stipend.
[codex:894262] function transferEth(address payable receiver, uint256 amount) internal {
[codex:894262] if (amount == 0) return;
[codex:894262]
[codex:894262] (bool s, bytes memory r) = receiver.call{ value: amount }("");
[codex:894262] if (!s) {
[codex:894262] revert EthTransferFailed(receiver, r);
[codex:894262] }
[codex:894262] }
[codex:894262] }
[codex:894262]
[codex:894262] thinking
[codex:894262] **Analyzing potential reentrancy vulnerabilities**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,220p' contracts/contracts/utils/LibERC20Compat.sol" in /tmp/codex-multi-xql16vs6 succeeded in 16ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262]
[codex:894262] import "../tokens/IERC20.sol";
[codex:894262]
[codex:894262] // Compatibility helpers for ERC20s.
[codex:894262] library LibERC20Compat {
[codex:894262] error NotATokenError(IERC20 token);
[codex:894262] error TokenTransferFailedError(IERC20 token, address to, uint256 amount);
[codex:894262]
[codex:894262] // Perform an `IERC20.transfer()` handling non-compliant implementations.
[codex:894262] function compatTransfer(IERC20 token, address to, uint256 amount) internal {
[codex:894262] (bool s, bytes memory r) = address(token).call(
[codex:894262] abi.encodeCall(IERC20.transfer, (to, amount))
[codex:894262] );
[codex:894262] if (s) {
[codex:894262] if (r.length == 0) {
[codex:894262] uint256 cs;
[codex:894262] assembly {
[codex:894262] cs := extcodesize(token)
[codex:894262]
[codex:894262] thinking
[codex:894262] **Analyzing token transfer reliability**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,200p' contracts/contracts/utils/Implementation.sol" in /tmp/codex-multi-xql16vs6 succeeded in 10ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262]
[codex:894262] // Base contract for all contracts intended to be delegatecalled into.
[codex:894262] abstract contract Implementation {
[codex:894262] error OnlyDelegateCallError();
[codex:894262] error OnlyConstructorError();
[codex:894262]
[codex:894262] address public immutable IMPL;
[codex:894262]
[codex:894262] constructor() {
[codex:894262] IMPL = address(this);
[codex:894262] }
[codex:894262]
[codex:894262] // Reverts if the current function context is not inside of a delegatecall.
[codex:894262] modifier onlyDelegateCall() virtual {
[codex:894262] if (address(this) == IMPL) {
[codex:894262] revert OnlyDelegateCallError();
[codex:894262] }
[codex:894262] _;
[codex:894262]
[codex:894262] thinking
[codex:894262] **Inspecting ProposalStorage for patterns**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,240p' contracts/contracts/proposals/ProposalStorage.sol" in /tmp/codex-multi-xql16vs6 succeeded in 8ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262]
[codex:894262] import "./IProposalExecutionEngine.sol";
[codex:894262] import "../utils/LibRawResult.sol";
[codex:894262]
[codex:894262] // The storage bucket shared by `PartyGovernance` and the `ProposalExecutionEngine`.
[codex:894262] // Read this for more context on the pattern motivating this:
[codex:894262] // https://github.com/dragonfly-xyz/useful-solidity-patterns/tree/main/patterns/explicit-storage-buckets
[codex:894262] abstract contract ProposalStorage {
[codex:894262] using LibRawResult for bytes;
[codex:894262]
[codex:894262] struct SharedProposalStorage {
[codex:894262] IProposalExecutionEngine engineImpl;
[codex:894262] ProposalEngineOpts opts;
[codex:894262] }
[codex:894262]
[codex:894262] struct ProposalEngineOpts {
[codex:894262] // Whether the party can add new authorities with the add authority proposal.
[codex:894262] bool enableAddAuthorityProposal;
[codex:894262]
[codex:894262] thinking
[codex:894262] **Checking IProposalExecutionEngine interface**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,200p' contracts/contracts/proposals/IProposalExecutionEngine.sol" in /tmp/codex-multi-xql16vs6 succeeded in 8ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262]
[codex:894262] import "../tokens/IERC721.sol";
[codex:894262]
[codex:894262] // Upgradeable proposals logic contract interface.
[codex:894262] interface IProposalExecutionEngine {
[codex:894262] struct ExecuteProposalParams {
[codex:894262] uint256 proposalId;
[codex:894262] bytes proposalData;
[codex:894262] bytes progressData;
[codex:894262] bytes extraData;
[codex:894262] uint256 flags;
[codex:894262] IERC721[] preciousTokens;
[codex:894262] uint256[] preciousTokenIds;
[codex:894262] }
[codex:894262]
[codex:894262] function initialize(address oldImpl, bytes memory initData) external;
[codex:894262]
[codex:894262] /// @notice Execute a proposal.
[codex:894262]
[codex:894262] thinking
[codex:894262] **Examining proposal execution engine**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,260p' contracts/contracts/proposals/LibProposal.sol" in /tmp/codex-multi-xql16vs6 succeeded in 12ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262]
[codex:894262] import "../tokens/IERC721.sol";
[codex:894262]
[codex:894262] library LibProposal {
[codex:894262] uint256 internal constant PROPOSAL_FLAG_UNANIMOUS = 0x1;
[codex:894262]
[codex:894262] function isTokenPrecious(
[codex:894262] IERC721 token,
[codex:894262] IERC721[] memory preciousTokens
[codex:894262] ) internal pure returns (bool) {
[codex:894262] for (uint256 i; i < preciousTokens.length; ++i) {
[codex:894262] if (token == preciousTokens[i]) {
[codex:894262] return true;
[codex:894262] }
[codex:894262] }
[codex:894262] return false;
[codex:894262] }
[codex:894262]
[codex:894262]
[codex:894262] thinking
[codex:894262] **Evaluating potential token vulnerabilities**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,200p' contracts/contracts/party/IPartyFactory.sol" in /tmp/codex-multi-xql16vs6 succeeded in 9ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262]
[codex:894262] import "../globals/IGlobals.sol";
[codex:894262] import "../tokens/IERC721.sol";
[codex:894262]
[codex:894262] import "./Party.sol";
[codex:894262]
[codex:894262] // Creates generic Party instances.
[codex:894262] interface IPartyFactory {
[codex:894262] event PartyCreated(
[codex:894262] Party indexed party,
[codex:894262] Party.PartyOptions opts,
[codex:894262] IERC721[] preciousTokens,
[codex:894262] uint256[] preciousTokenIds,
[codex:894262] address creator
[codex:894262] );
[codex:894262]
[codex:894262] /// @notice Deploy a new party instance.
[codex:894262] /// @param partyImpl The implementation of the party to deploy.
[codex:894262]
[codex:894262] thinking
[codex:894262] **Analyzing potential reentrancy and token distribution risks**
[codex:894262]
[codex:894262] I'm exploring whether reentrancy can happen during balanceOf calls on tokens in TokenDistributor, checking if malicious tokens might exploit supply calculations or stored balance updates. I'm also considering deflationary token behavior in transfers and reviewing contract functions related to token or ETH withdrawals, while planning to look for ProposalExecutionEngine implementations that might impact execution control.
[codex:894262] exec
[codex:894262] /bin/bash -lc 'rg -n "ExecutionEngine|ProposalExecution" contracts/contracts' in /tmp/codex-multi-xql16vs6 succeeded in 42ms:
[codex:894262] contracts/contracts/party/PartyGovernance.sol:16:import "../proposals/IProposalExecutionEngine.sol";
[codex:894262] contracts/contracts/party/PartyGovernance.sol:121: // ProposalExecutionEngine for details.
[codex:894262] contracts/contracts/party/PartyGovernance.sol:293: IProposalExecutionEngine(_GLOBALS.getAddress(LibGlobals.GLOBAL_PROPOSAL_ENGINE_IMPL)),
[codex:894262] contracts/contracts/party/PartyGovernance.sol:330: /// @notice Get the current `ProposalExecutionEngine` instance.
[codex:894262] contracts/contracts/party/PartyGovernance.sol:331: function getProposalExecutionEngine() external view returns (IProposalExecutionEngine) {
[codex:894262] contracts/contracts/party/PartyGovernance.sol:665: /// The `ProposalExecutionEngine` enforces that only one `InProgress` proposal
[codex:894262] contracts/contracts/party/PartyGovernance.sol:791: ).delegatecall(abi.encodeCall(IProposalExecutionEngine.cancelProposal, (proposalId)));
[codex:894262] contracts/contracts/party/PartyGovernance.sol:833: IProposalExecutionEngine.ExecuteProposalParams
[codex:894262] contracts/contracts/party/PartyGovernance.sol:834: memory executeParams = IProposalExecutionEngine.ExecuteProposalParams({
[codex:894262] contracts/contracts/party/PartyGovernance.sol:850: abi.encodeCall(IProposalExecutionEngine.executeProposal, (executeParams))
[codex:894262] contracts/contracts/proposals/IProposalExecutionEngine.sol:7:interface IProposalExecutionEngine {
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol:4:import "./IProposalExecutionEngine.sol";
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol:7:// The storage bucket shared by `PartyGovernance` and the `ProposalExecutionEngine`.
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol:14: IProposalExecutionEngine engineImpl;
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol:35: function _initProposalImpl(IProposalExecutionEngine impl, bytes memory initData) internal {
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol:37: IProposalExecutionEngine oldImpl = stor.engineImpl;
[codex:894262] contracts/contracts/proposals/ProposalStorage.sol:40: abi.encodeCall(IProposalExecutionEngine.initialize, (address(oldImpl), initData))
[codex:894262]
[codex:894262] thinking
[codex:894262] **Investigating potential vulnerability sources**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,220p' contracts/contracts/renderers/RendererStorage.sol" in /tmp/codex-multi-xql16vs6 succeeded in 8ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262]
[codex:894262] import "solmate/utils/SSTORE2.sol";
[codex:894262] import "../utils/Multicall.sol";
[codex:894262]
[codex:894262] contract RendererStorage is Multicall {
[codex:894262] error AlreadySetError();
[codex:894262] error NotOwnerError(address caller, address owner);
[codex:894262]
[codex:894262] event OwnershipTransferred(address previousOwner, address newOwner);
[codex:894262]
[codex:894262] uint256 constant CROWDFUND_CARD_DATA = 0;
[codex:894262] uint256 constant PARTY_CARD_DATA = 1;
[codex:894262]
[codex:894262] /// @notice Address allowed to store new data.
[codex:894262] address public owner;
[codex:894262]
[codex:894262] /// @notice Customization presets by ID, used for rendering cards. Begins at
[codex:894262] /// 1, 0 is reserved to indicate in `getPresetFor()` that a
[codex:894262]
[codex:894262] thinking
[codex:894262] **Analyzing delegatecall vulnerabilities and access control**
[codex:894262] exec
[codex:894262] /bin/bash -lc "rg -n \"transferEth|compatTransfer|call\\{ value\" contracts/contracts" in /tmp/codex-multi-xql16vs6 succeeded in 40ms:
[codex:894262] contracts/contracts/party/PartyGovernance.sol:520: IERC20(token).compatTransfer(address(distributor), amount);
[codex:894262] contracts/contracts/party/PartyGovernance.sol:809: (bool success, bytes memory res) = targetAddress.call{ value: amountEth }(targetCallData);
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:402: payable(feeRecipient).transferEth(fee);
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:404: token.compatTransfer(feeRecipient, fee);
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:418: payable(receiver).transferEth(amount);
[codex:894262] contracts/contracts/party/PartyGovernanceNFT.sol:420: token.compatTransfer(receiver, amount);
[codex:894262] contracts/contracts/distribution/TokenDistributor.sol:364: recipient.transferEth(amount);
[codex:894262] contracts/contracts/distribution/TokenDistributor.sol:367: IERC20(token).compatTransfer(recipient, amount);
[codex:894262] contracts/contracts/utils/LibAddress.sol:8: function transferEth(address payable receiver, uint256 amount) internal {
[codex:894262] contracts/contracts/utils/LibAddress.sol:11: (bool s, bytes memory r) = receiver.call{ value: amount }("");
[codex:894262] contracts/contracts/utils/LibERC20Compat.sol:12: function compatTransfer(IERC20 token, address to, uint256 amount) internal {
[codex:894262]
[codex:894262] thinking
[codex:894262] **Analyzing potential distribution vulnerabilities**
[codex:894262] exec
[codex:894262] /bin/bash -lc 'rg -n "function _transfer" -n contracts/contracts/distribution/TokenDistributor.sol' in /tmp/codex-multi-xql16vs6 succeeded in 12ms:
[codex:894262] 344: function _transfer(
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '320,420p' contracts/contracts/distribution/TokenDistributor.sol" in /tmp/codex-multi-xql16vs6 succeeded in 9ms:
[codex:894262] _storedBalances[balanceId] = args.currentTokenBalance;
[codex:894262] }
[codex:894262]
[codex:894262] // Create a distribution.
[codex:894262] uint128 fee = (supply * args.feeBps) / 1e4;
[codex:894262] uint128 memberSupply = supply - fee;
[codex:894262]
[codex:894262] info = DistributionInfo({
[codex:894262] tokenType: args.tokenType,
[codex:894262] distributionId: ++lastDistributionIdPerParty[args.party],
[codex:894262] token: args.token,
[codex:894262] party: args.party,
[codex:894262] memberSupply: memberSupply,
[codex:894262] feeRecipient: args.feeRecipient,
[codex:894262] fee: fee,
[codex:894262] totalShares: args.party.getGovernanceValues().totalVotingPower
[codex:894262] });
[codex:894262] (
[codex:894262] _distributionStates[args.party][info.distributionId].distributionHash,
[codex:894262] _distributionStates[args.party][info.distributionId].remainingMemberSupply
[codex:894262]
[codex:894262] thinking
[codex:894262] **Analyzing potential reentrancy and tokenId ownership issues**
[codex:894262] exec
[codex:894262] /bin/bash -lc "rg -n \"_burnAndUpdateVotingPower|burn\\(\" -n contracts/contracts/party/PartyGovernanceNFT.sol" in /tmp/codex-multi-xql16vs6 succeeded in 10ms:
[codex:894262] 244: function burn(uint256[] memory tokenIds) public onlyAuthority {
[codex:894262] 250: _burnAndUpdateVotingPower(tokenIds, false);
[codex:894262] 253: function _burnAndUpdateVotingPower(
[codex:894262] 282: _burn(tokenId);
[codex:894262] 294: function burn(uint256 tokenId) external {
[codex:894262] 297: burn(tokenIds);
[codex:894262] 383: uint96 totalVotingPowerBurned = _burnAndUpdateVotingPower(tokenIds, true);
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '220,320p' contracts/contracts/party/PartyGovernanceNFT.sol" in /tmp/codex-multi-xql16vs6 succeeded in 9ms:
[codex:894262] // initial crowdfund when there is no total voting power.
[codex:894262] if (totalVotingPower != 0 && totalVotingPower - mintedVotingPower_ < votingPower_) {
[codex:894262] unchecked {
[codex:894262] votingPower_ = totalVotingPower - mintedVotingPower_;
[codex:894262] }
[codex:894262] }
[codex:894262]
[codex:894262] // Update state.
[codex:894262] mintedVotingPower += votingPower_;
[codex:894262] votingPowerByTokenId[tokenId] += votingPower_;
[codex:894262]
[codex:894262] _adjustVotingPower(ownerOf(tokenId), votingPower_.safeCastUint96ToInt192(), address(0));
[codex:894262] }
[codex:894262]
[codex:894262] /// @notice Update the total voting power of the party. Only callable by
[codex:894262] /// an authority.
[codex:894262] /// @param newVotingPower The new total voting power to add.
[codex:894262] function increaseTotalVotingPower(uint96 newVotingPower) external onlyAuthority {
[codex:894262] _governanceValues.totalVotingPower += newVotingPower;
[codex:894262] }
[codex:894262]
[codex:894262] thinking
[codex:894262] **Evaluating reentrancy and delegatecall risks**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '460,740p' contracts/contracts/party/PartyGovernanceNFT.sol" in /tmp/codex-multi-xql16vs6 succeeded in 9ms:
[codex:894262] /// authorities to prevent it from being used anywhere else.
[codex:894262] function addAuthority(address authority) external onlySelf {
[codex:894262] isAuthority[authority] = true;
[codex:894262]
[codex:894262] emit AuthorityAdded(authority);
[codex:894262] }
[codex:894262]
[codex:894262] /// @notice Relinquish the authority role.
[codex:894262] function abdicateAuthority() external onlyAuthority {
[codex:894262] delete isAuthority[msg.sender];
[codex:894262]
[codex:894262] emit AuthorityRemoved(msg.sender);
[codex:894262] }
[codex:894262]
[codex:894262] function _delegateToRenderer() private view {
[codex:894262] _readOnlyDelegateCall(
[codex:894262] // Instance of IERC721Renderer.
[codex:894262] _GLOBALS.getAddress(LibGlobals.GLOBAL_GOVERNANCE_NFT_RENDER_IMPL),
[codex:894262] msg.data
[codex:894262] );
[codex:894262]
[codex:894262] thinking
[codex:894262] **Analyzing token distribution and claim mechanics**
[codex:894262] exec
[codex:894262] /bin/bash -lc 'rg -n "_getProposalStatus|_validateProposalHash|_getProposalFlags" contracts/contracts/party/PartyGovernance.sol' in /tmp/codex-multi-xql16vs6 succeeded in 13ms:
[codex:894262] 374: status = _getProposalStatus(values);
[codex:894262] 581: ProposalStatus status = _getProposalStatus(values);
[codex:894262] 644: ProposalStatus status = _getProposalStatus(values);
[codex:894262] 686: _validateProposalHash(proposal, proposalState.hash);
[codex:894262] 688: ProposalStatus status = _getProposalStatus(values);
[codex:894262] 719: _getProposalFlags(values),
[codex:894262] 742: _validateProposalHash(proposal, proposalState.hash);
[codex:894262] 746: ProposalStatus status = _getProposalStatus(values);
[codex:894262] 1001: function _getProposalFlags(ProposalStateValues memory pv) private pure returns (uint256) {
[codex:894262] 1008: function _getProposalStatus(
[codex:894262] 1099: function _validateProposalHash(Proposal memory proposal, bytes32 expectedHash) private pure {
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '960,1145p' contracts/contracts/party/PartyGovernance.sol" in /tmp/codex-multi-xql16vs6 succeeded in 10ms:
[codex:894262] if (newDelegate == oldDelegate) {
[codex:894262] // If the old and new delegate are the same, subtract the old
[codex:894262] // intrinsic voting power of the voter, or else we will double
[codex:894262] // count a portion of it.
[codex:894262] newDelegateDelegatedVotingPower -= oldSnap.intrinsicVotingPower;
[codex:894262] }
[codex:894262] VotingPowerSnapshot memory updatedNewDelegateSnap = VotingPowerSnapshot({
[codex:894262] timestamp: uint40(block.timestamp),
[codex:894262] delegatedVotingPower: newDelegateDelegatedVotingPower,
[codex:894262] intrinsicVotingPower: newDelegateSnap.intrinsicVotingPower,
[codex:894262] isDelegated: newDelegateSnap.isDelegated
[codex:894262] });
[codex:894262] _insertVotingPowerSnapshot(newDelegate, updatedNewDelegateSnap);
[codex:894262] }
[codex:894262] }
[codex:894262]
[codex:894262] // Append a new voting power snapshot, overwriting the last one if possible.
[codex:894262] function _insertVotingPowerSnapshot(address voter, VotingPowerSnapshot memory snap) private {
[codex:894262] VotingPowerSnapshot[] storage voterSnaps = _votingPowerSnapshotsByVoter[voter];
[codex:894262] uint256 n = voterSnaps.length;
[codex:894262]
[codex:894262] thinking
[codex:894262] **Analyzing potential exploit paths and rounding issues**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,160p' contracts/contracts/tokens/ERC721Receiver.sol" in /tmp/codex-multi-xql16vs6 succeeded in 6ms:
[codex:894262] // SPDX-License-Identifier: Apache-2.0
[codex:894262] pragma solidity ^0.8;
[codex:894262]
[codex:894262] import "./IERC721Receiver.sol";
[codex:894262] import "../utils/EIP165.sol";
[codex:894262] import "../vendor/solmate/ERC721.sol";
[codex:894262]
[codex:894262] /// @notice Mixin for contracts that want to receive ERC721 tokens.
[codex:894262] /// @dev Use this instead of solmate's ERC721TokenReceiver because the
[codex:894262] /// compiler has issues when overriding EIP165/IERC721Receiver functions.
[codex:894262] abstract contract ERC721Receiver is IERC721Receiver, EIP165, ERC721TokenReceiver {
[codex:894262] /// @inheritdoc IERC721Receiver
[codex:894262] function onERC721Received(
[codex:894262] address,
[codex:894262] address,
[codex:894262] uint256,
[codex:894262] bytes memory
[codex:894262] ) public virtual override(IERC721Receiver, ERC721TokenReceiver) returns (bytes4) {
[codex:894262] return IERC721Receiver.onERC721Received.selector;
[codex:894262] }
[codex:894262]
[codex:894262] thinking
[codex:894262] **Analyzing reentrancy and token vulnerabilities**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,200p' contracts/contracts/globals/IGlobals.sol" in /tmp/codex-multi-xql16vs6 succeeded in 7ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262]
[codex:894262] import "../utils/Implementation.sol";
[codex:894262]
[codex:894262] // Single registry of global values controlled by multisig.
[codex:894262] // See `LibGlobals` for all valid keys.
[codex:894262] interface IGlobals {
[codex:894262] function multiSig() external view returns (address);
[codex:894262]
[codex:894262] function getBytes32(uint256 key) external view returns (bytes32);
[codex:894262]
[codex:894262] function getUint256(uint256 key) external view returns (uint256);
[codex:894262]
[codex:894262] function getBool(uint256 key) external view returns (bool);
[codex:894262]
[codex:894262] function getAddress(uint256 key) external view returns (address);
[codex:894262]
[codex:894262] function getImplementation(uint256 key) external view returns (Implementation);
[codex:894262]
[codex:894262]
[codex:894262] thinking
[codex:894262] **Evaluating profit extraction possibilities**
[codex:894262] exec
[codex:894262] /bin/bash -lc "sed -n '1,200p' contracts/contracts/utils/LibRawResult.sol" in /tmp/codex-multi-xql16vs6 succeeded in 7ms:
[codex:894262] // SPDX-License-Identifier: GPL-3.0
[codex:894262] pragma solidity 0.8.20;
[codex:894262]
[codex:894262] library LibRawResult {
[codex:894262] // Revert with the data in `b`.
[codex:894262] function rawRevert(bytes memory b) internal pure {
[codex:894262] assembly {
[codex:894262] revert(add(b, 32), mload(b))
[codex:894262] }
[codex:894262] }
[codex:894262]
[codex:894262] // Return with the data in `b`.
[codex:894262] function rawReturn(bytes memory b) internal pure {
[codex:894262] assembly {
[codex:894262] return(add(b, 32), mload(b))
[codex:894262] }
[codex:894262] }
[codex:894262] }
[codex:894262]
[codex:894262] thinking
[codex:894262] **Confirming security analysis and outputting results**
[codex:894262] codex
[codex:894262] {"no_findings":true,"summary":"No concrete exploitable profit paths found in the provided contracts.","findings":[]}
[codex:894262] tokens used
[codex:894262] 98,349
[codex:894262] {"no_findings":true,"summary":"No concrete exploitable profit paths found in the provided contracts.","findings":[]}
{
"codex": {
"ran_at": "2026-01-05T20:58:21.329474+00:00",
"returncode": 0
},
"summary": "No concrete exploitable profit paths found in the provided contracts.",
"raw_final": {
"summary": "No concrete exploitable profit paths found in the provided contracts.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: ISZERO 0000000a: PUSH2 0x0012 0000000d: JUMPI 0000000e: PUSH1 0x00 00000010: DUP1 00000011: REVERT 00000012: JUMPDEST 00000013: PUSH1 0x00 00000015: CALLDATALOAD 00000016: PUSH1 0xe0 00000018: SHR 00000019: DUP1 0000001a: PUSH4 0x074ae6f1 0000001f: EQ 00000020: PUSH2 0x00f7 00000023: JUMPI 00000024: DUP1 00000025: PUSH4 0x146a7b1a 0000002a: EQ 0000002b: PUSH2 0x00f2 0000002e: JUMPI 0000002f: DUP1 00000030: PUSH4 0x3a32e54e 00000035: EQ 00000036: PUSH2 0x00ed 00000039: JUMPI 0000003a: DUP1 0000003b: PUSH4 0x476f5125 00000040: EQ 00000041: PUSH2 0x00e8 00000044: JUMPI 00000045: DUP1 00000046: PUSH4 0x6984c669 0000004b: EQ 0000004c: PUSH2 0x00e3 0000004f: JUMPI 00000050: DUP1 00000051: PUSH4 0x69a467a4 00000056: EQ 00000057: PUSH2 0x00de 0000005a: JUMPI 0000005b: DUP1 0000005c: PUSH4 0x6e62c47d 00000061: EQ 00000062: PUSH2 0x00d9 00000065: JUMPI 00000066: DUP1 00000067: PUSH4 0xa0321a53 0000006c: EQ 0000006d: PUSH2 0x00d4 00000070: JUMPI 00000071: DUP1 00000072: PUSH4 0xb87db28b 00000077: EQ 00000078: PUSH2 0x00cf 0000007b: JUMPI 0000007c: DUP1 0000007d: PUSH4 0xbd717111 00000082: EQ 00000083: PUSH2 0x00ca 00000086: JUMPI 00000087: DUP1 00000088: PUSH4 0xc827a781 0000008d: EQ 0000008e: PUSH2 0x00c5 00000091: JUMPI 00000092: DUP1 00000093: PUSH4 0xe0af030c 00000098: EQ 00000099: PUSH2 0x00c0 0000009c: JUMPI 0000009d: DUP1 0000009e: PUSH4 0xe3a7ef55 000000a3: EQ 000000a4: PUSH2 0x00bb 000000a7: JUMPI 000000a8: PUSH4 0xeedaf00d 000000ad: EQ 000000ae: PUSH2 0x00b6 000000b1: JUMPI 000000b2: PUSH1 0x00 000000b4: DUP1 000000b5: REVERT 000000b6: JUMPDEST 000000b7: PUSH2 0x07cd 000000ba: JUMP 000000bb: JUMPDEST 000000bc: PUSH2 0x0775 000000bf: JUMP 000000c0: JUMPDEST 000000c1: PUSH2 0x071e 000000c4: JUMP 000000c5: JUMPDEST 000000c6: PUSH2 0x06d1 000000c9: JUMP 000000ca: JUMPDEST 000000cb: PUSH2 0x0694 000000ce: JUMP 000000cf: JUMPDEST 000000d0: PUSH2 0x066a 000000d3: JUMP 000000d4: JUMPDEST 000000d5: PUSH2 0x0546 000000d8: JUMP 000000d9: JUMPDEST 000000da: PUSH2 0x050b 000000dd: JUMP 000000de: JUMPDEST 000000df: PUSH2 0x0463 000000e2: JUMP 000000e3: JUMPDEST 000000e4: PUSH2 0x0345 000000e7: JUMP 000000e8: JUMPDEST 000000e9: PUSH2 0x0300 000000ec: JUMP 000000ed: JUMPDEST 000000ee: PUSH2 0x025a 000000f1: JUMP 000000f2: JUMPDEST 000000f3: PUSH2 0x016e 000000f6: JUMP 000000f7: JUMPDEST 000000f8: CALLVALUE 000000f9: PUSH2 0x0139 000000fc: JUMPI 000000fd: PUSH1 0x00 000000ff: CALLDATASIZE 00000100: PUSH1 0x03 00000102: NOT 00000103: ADD 00000104: SLT 00000105: PUSH2 0x0139 00000108: JUMPI 00000109: PUSH1 0x20 0000010b: PUSH1 0x40 0000010d: MLOAD 0000010e: PUSH5 0xffffffffff 00000114: PUSH32 0x00000000000000000000000000000000000000000000000000000000666b190b 00000135: AND 00000136: DUP2 00000137: MSTORE 00000138: RETURN 00000139: JUMPDEST 0000013a: PUSH1 0x00 0000013c: DUP1 0000013d: REVERT 0000013e: JUMPDEST 0000013f: PUSH2 0x0100 00000142: SWAP1 00000143: PUSH1 0x03 00000145: NOT 00000146: ADD 00000147: SLT 00000148: PUSH2 0x0139 0000014b: JUMPI 0000014c: PUSH1 0x04 0000014e: SWAP1 0000014f: JUMP 00000150: JUMPDEST 00000151: PUSH1 0x01 00000153: PUSH1 0x01 00000155: PUSH1 0xa0 00000157: SHL 00000158: SUB 00000159: DUP2 0000015a: AND 0000015b: SUB 0000015c: PUSH2 0x0139 0000015f: JUMPI 00000160: JUMP 00000161: JUMPDEST 00000162: CALLDATALOAD 00000163: SWAP1 00000164: PUSH2 0x016c 00000167: DUP3 00000168: PUSH2 0x0150 0000016b: JUMP 0000016c: JUMPDEST 0000016d: JUMP 0000016e: JUMPDEST 0000016f: CALLVALUE 00000170: PUSH2 0x0139 00000173: JUMPI 00000174: PUSH2 0x0120 00000177: CALLDATASIZE 00000178: PUSH1 0x03 0000017a: NOT 0000017b: ADD 0000017c: SLT 0000017d: PUSH2 0x0139 00000180: JUMPI 00000181: PUSH2 0x019f 00000184: PUSH2 0x018c 00000187: CALLDATASIZE 00000188: PUSH2 0x013e 0000018b: JUMP 0000018c: JUMPDEST 0000018d: PUSH2 0x0104 00000190: CALLDATALOAD 00000191: SWAP1 00000192: PUSH2 0x019a 00000195: DUP3 00000196: PUSH2 0x0150 00000199: JUMP 0000019a: JUMPDEST 0000019b: PUSH2 0x0ee3 0000019e: JUMP 0000019f: JUMPDEST 000001a0: STOP 000001a1: JUMPDEST 000001a2: PUSH2 0xffff 000001a5: DUP2 000001a6: AND 000001a7: SUB 000001a8: PUSH2 0x0139 000001ab: JUMPI 000001ac: JUMP 000001ad: JUMPDEST 000001ae: PUSH1 0x02 000001b0: GT 000001b1: ISZERO 000001b2: PUSH2 0x01b7 000001b5: JUMPI 000001b6: JUMP 000001b7: JUMPDEST 000001b8: PUSH4 0x4e487b71 000001bd: PUSH1 0xe0 000001bf: SHL 000001c0: PUSH1 0x00 000001c2: MSTORE 000001c3: PUSH1 0x21 000001c5: PUSH1 0x04 000001c7: MSTORE 000001c8: PUSH1 0x24 000001ca: PUSH1 0x00 000001cc: REVERT 000001cd: JUMPDEST 000001ce: SWAP1 000001cf: PUSH1 0x02 000001d1: DUP3 000001d2: LT 000001d3: ISZERO 000001d4: PUSH2 0x01b7 000001d7: JUMPI 000001d8: MSTORE 000001d9: JUMP 000001da: JUMPDEST 000001db: PUSH2 0x016c 000001de: SWAP1 000001df: SWAP3 000001e0: SWAP2 000001e1: SWAP3 000001e2: PUSH1 0xe0 000001e4: DUP1 000001e5: PUSH2 0x0100 000001e8: DUP4 000001e9: ADD 000001ea: SWAP6 000001eb: PUSH2 0x01f5 000001ee: DUP5 000001ef: DUP3 000001f0: MLOAD 000001f1: PUSH2 0x01cd 000001f4: JUMP 000001f5: JUMPDEST 000001f6: PUSH1 0x20 000001f8: DUP2 000001f9: ADD 000001fa: MLOAD 000001fb: PUSH1 0x20 000001fd: DUP6 000001fe: ADD 000001ff: MSTORE 00000200: PUSH1 0x01 00000202: DUP1 00000203: PUSH1 0xa0 00000205: SHL 00000206: SUB 00000207: DUP1 00000208: PUSH1 0x40 0000020a: DUP4 0000020b: ADD 0000020c: MLOAD 0000020d: AND 0000020e: PUSH1 0x40 00000210: DUP7 00000211: ADD 00000212: MSTORE 00000213: DUP1 00000214: PUSH1 0x60 00000216: DUP4 00000217: ADD 00000218: MLOAD 00000219: AND 0000021a: PUSH1 0x60 0000021c: DUP7 0000021d: ADD 0000021e: MSTORE 0000021f: PUSH1 0x80 00000221: DUP3 00000222: ADD 00000223: MLOAD 00000224: AND 00000225: PUSH1 0x80 00000227: DUP6 00000228: ADD 00000229: MSTORE 0000022a: PUSH1 0x01 0000022c: PUSH1 0x01 0000022e: PUSH1 0x80 00000230: SHL 00000231: SUB 00000232: DUP1 00000233: PUSH1 0xa0 00000235: DUP4 00000236: ADD 00000237: MLOAD 00000238: AND 00000239: PUSH1 0xa0 0000023b: DUP7 0000023c: ADD 0000023d: MSTORE 0000023e: PUSH1 0xc0 00000240: DUP3 00000241: ADD 00000242: MLOAD 00000243: AND 00000244: PUSH1 0xc0 00000246: DUP6 00000247: ADD 00000248: MSTORE 00000249: ADD 0000024a: MLOAD 0000024b: SWAP2 0000024c: ADD 0000024d: SWAP1 0000024e: PUSH1 0x01 00000250: PUSH1 0x01 00000252: PUSH1 0x60 00000254: SHL 00000255: SUB 00000256: AND 00000257: SWAP1 00000258: MSTORE 00000259: JUMP 0000025a: JUMPDEST 0000025b: PUSH1 0x60 0000025d: CALLDATASIZE 0000025e: PUSH1 0x03 00000260: NOT 00000261: ADD 00000262: SLT 00000263: PUSH2 0x0139 00000266: JUMPI 00000267: PUSH2 0x02fc 0000026a: PUSH2 0x02f0 0000026d: PUSH1 0x04 0000026f: CALLDATALOAD 00000270: PUSH2 0x0278 00000273: DUP2 00000274: PUSH2 0x0150 00000277: JUMP 00000278: JUMPDEST 00000279: PUSH2 0xffff 0000027c: PUSH1 0x24 0000027e: CALLDATALOAD 0000027f: SWAP2 00000280: PUSH2 0x0288 00000283: DUP4 00000284: PUSH2 0x0150 00000287: JUMP 00000288: JUMPDEST 00000289: PUSH1 0x44 0000028b: CALLDATALOAD 0000028c: SWAP1 0000028d: PUSH2 0x0295 00000290: DUP3 00000291: PUSH2 0x01a1 00000294: JUMP 00000295: JUMPDEST 00000296: PUSH2 0x029d 00000299: PUSH2 0x099e 0000029c: JUMP 0000029d: JUMPDEST 0000029e: POP 0000029f: PUSH1 0x40 000002a1: MLOAD 000002a2: SWAP4 000002a3: SELFBALANCE 000002a4: PUSH2 0x02ac 000002a7: DUP7 000002a8: PUSH2 0x0908 000002ab: JUMP 000002ac: JUMPDEST 000002ad: PUSH1 0x01 000002af: PUSH1 0x01 000002b1: PUSH1 0xa0 000002b3: SHL 000002b4: SUB 000002b5: SWAP3 000002b6: DUP4 000002b7: AND 000002b8: DUP7 000002b9: MSTORE 000002ba: PUSH1 0x00 000002bc: PUSH1 0x20 000002be: DUP8 000002bf: ADD 000002c0: MSTORE 000002c1: PUSH20 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee 000002d6: PUSH1 0x40 000002d8: DUP8 000002d9: ADD 000002da: MSTORE 000002db: PUSH1 0x60 000002dd: DUP7 000002de: ADD 000002df: MSTORE 000002e0: AND 000002e1: PUSH1 0x80 000002e3: DUP5 000002e4: ADD 000002e5: MSTORE 000002e6: AND 000002e7: PUSH1 0xa0 000002e9: DUP3 000002ea: ADD 000002eb: MSTORE 000002ec: PUSH2 0x14e2 000002ef: JUMP 000002f0: JUMPDEST 000002f1: PUSH1 0x40 000002f3: MLOAD 000002f4: SWAP2 000002f5: DUP3 000002f6: SWAP2 000002f7: DUP3 000002f8: PUSH2 0x01da 000002fb: JUMP 000002fc: JUMPDEST 000002fd: SUB 000002fe: SWAP1 000002ff: RETURN 00000300: JUMPDEST 00000301: CALLVALUE 00000302: PUSH2 0x0139 00000305: JUMPI 00000306: PUSH1 0x00 00000308: CALLDATASIZE 00000309: PUSH1 0x03 0000030b: NOT 0000030c: ADD 0000030d: SLT 0000030e: PUSH2 0x0139 00000311: JUMPI 00000312: PUSH1 0x40 00000314: MLOAD 00000315: PUSH32 0x0000000000000000000000001ca20040ce6ad406bc2a6c89976388829e7fbade 00000336: PUSH1 0x01 00000338: PUSH1 0x01 0000033a: PUSH1 0xa0 0000033c: SHL 0000033d: SUB 0000033e: AND 0000033f: DUP2 00000340: MSTORE 00000341: PUSH1 0x20 00000343: SWAP1 00000344: RETURN 00000345: JUMPDEST 00000346: CALLVALUE 00000347: PUSH2 0x0139 0000034a: JUMPI 0000034b: PUSH1 0x40 0000034d: CALLDATASIZE 0000034e: PUSH1 0x03 00000350: NOT 00000351: ADD 00000352: SLT 00000353: PUSH2 0x0139 00000356: JUMPI 00000357: PUSH1 0x04 00000359: CALLDATALOAD 0000035a: PUSH2 0x0362 0000035d: DUP2 0000035e: PUSH2 0x0150 00000361: JUMP 00000362: JUMPDEST 00000363: PUSH1 0x01 00000365: DUP1 00000366: PUSH1 0xa0 00000368: SHL 00000369: SUB 0000036a: AND 0000036b: PUSH1 0x00 0000036d: MSTORE 0000036e: PUSH1 0x02 00000370: PUSH1 0x20 00000372: MSTORE 00000373: PUSH1 0x40 00000375: PUSH1 0x00 00000377: KECCAK256 00000378: PUSH1 0x24 0000037a: CALLDATALOAD 0000037b: PUSH1 0x00 0000037d: MSTORE 0000037e: PUSH1 0x20 00000380: MSTORE 00000381: PUSH1 0x20 00000383: PUSH1 0xff 00000385: PUSH1 0x01 00000387: PUSH1 0x40 00000389: PUSH1 0x00 0000038b: KECCAK256 0000038c: ADD 0000038d: SLOAD 0000038e: PUSH1 0x80 00000390: SHR 00000391: AND 00000392: PUSH1 0x40 00000394: MLOAD 00000395: SWAP1 00000396: ISZERO 00000397: ISZERO 00000398: DUP2 00000399: MSTORE 0000039a: RETURN 0000039b: JUMPDEST 0000039c: PUSH1 0x40 0000039e: PUSH1 0x03 000003a0: NOT 000003a1: DUP3 000003a2: ADD 000003a3: SLT 000003a4: PUSH2 0x0139 000003a7: JUMPI 000003a8: PUSH1 0x04 000003aa: CALLDATALOAD 000003ab: SWAP2 000003ac: PUSH8 0xffffffffffffffff 000003b5: SWAP1 000003b6: DUP2 000003b7: DUP5 000003b8: GT 000003b9: PUSH2 0x0139 000003bc: JUMPI 000003bd: DUP3 000003be: PUSH1 0x23 000003c0: DUP6 000003c1: ADD 000003c2: SLT 000003c3: ISZERO 000003c4: PUSH2 0x0139 000003c7: JUMPI 000003c8: DUP4 000003c9: PUSH1 0x04 000003cb: ADD 000003cc: CALLDATALOAD 000003cd: SWAP4 000003ce: DUP3 000003cf: DUP6 000003d0: GT 000003d1: PUSH2 0x0139 000003d4: JUMPI 000003d5: DUP4 000003d6: PUSH1 0x24 000003d8: DUP7 000003d9: PUSH1 0x08 000003db: SHL 000003dc: DUP4 000003dd: ADD 000003de: ADD 000003df: GT 000003e0: PUSH2 0x0139 000003e3: JUMPI 000003e4: PUSH1 0x24 000003e6: ADD 000003e7: SWAP4 000003e8: SWAP3 000003e9: PUSH1 0x24 000003eb: CALLDATALOAD 000003ec: SWAP1 000003ed: DUP4 000003ee: DUP3 000003ef: GT 000003f0: PUSH2 0x0139 000003f3: JUMPI 000003f4: DUP1 000003f5: PUSH1 0x23 000003f7: DUP4 000003f8: ADD 000003f9: SLT 000003fa: ISZERO 000003fb: PUSH2 0x0139 000003fe: JUMPI 000003ff: DUP2 00000400: PUSH1 0x04 00000402: ADD 00000403: CALLDATALOAD 00000404: SWAP4 00000405: DUP5 00000406: GT 00000407: PUSH2 0x0139 0000040a: JUMPI 0000040b: PUSH1 0x24 0000040d: DUP5 0000040e: PUSH1 0x05 00000410: SHL 00000411: DUP4 00000412: ADD 00000413: ADD 00000414: GT 00000415: PUSH2 0x0139 00000418: JUMPI 00000419: PUSH1 0x24 0000041b: ADD 0000041c: SWAP2 0000041d: SWAP1 0000041e: JUMP 0000041f: JUMPDEST 00000420: PUSH1 0x20 00000422: SWAP1 00000423: DUP2 00000424: PUSH1 0x40 00000426: DUP2 00000427: DUP4 00000428: ADD 00000429: SWAP3 0000042a: DUP3 0000042b: DUP2 0000042c: MSTORE 0000042d: DUP6 0000042e: MLOAD 0000042f: DUP1 00000430: SWAP5 00000431: MSTORE 00000432: ADD 00000433: SWAP4 00000434: ADD 00000435: SWAP2 00000436: PUSH1 0x00 00000438: JUMPDEST 00000439: DUP3 0000043a: DUP2 0000043b: LT 0000043c: PUSH2 0x0446 0000043f: JUMPI 00000440: POP 00000441: POP 00000442: POP 00000443: POP 00000444: SWAP1 00000445: JUMP 00000446: JUMPDEST 00000447: DUP4 00000448: MLOAD 00000449: PUSH1 0x01 0000044b: PUSH1 0x01 0000044d: PUSH1 0x80 0000044f: SHL 00000450: SUB 00000451: AND 00000452: DUP6 00000453: MSTORE 00000454: SWAP4 00000455: DUP2 00000456: ADD 00000457: SWAP4 00000458: SWAP3 00000459: DUP2 0000045a: ADD 0000045b: SWAP3 0000045c: PUSH1 0x01 0000045e: ADD 0000045f: PUSH2 0x0438 00000462: JUMP 00000463: JUMPDEST 00000464: CALLVALUE 00000465: PUSH2 0x0139 00000468: JUMPI 00000469: PUSH2 0x0471 0000046c: CALLDATASIZE 0000046d: PUSH2 0x039b 00000470: JUMP 00000471: JUMPDEST 00000472: SWAP2 00000473: SWAP3 00000474: SWAP1 00000475: PUSH2 0x047d 00000478: DUP5 00000479: PUSH2 0x108a 0000047c: JUMP 0000047d: JUMPDEST 0000047e: SWAP3 0000047f: PUSH2 0x048b 00000482: PUSH1 0x40 00000484: MLOAD 00000485: SWAP5 00000486: DUP6 00000487: PUSH2 0x0962 0000048a: JUMP 0000048b: JUMPDEST 0000048c: DUP5 0000048d: DUP5 0000048e: MSTORE 0000048f: PUSH1 0x1f 00000491: NOT 00000492: PUSH2 0x049a 00000495: DUP7 00000496: PUSH2 0x108a 00000499: JUMP 0000049a: JUMPDEST 0000049b: ADD 0000049c: SWAP5 0000049d: PUSH1 0x20 0000049f: SWAP6 000004a0: CALLDATASIZE 000004a1: DUP8 000004a2: DUP8 000004a3: ADD 000004a4: CALLDATACOPY 000004a5: PUSH1 0x00 000004a7: JUMPDEST 000004a8: DUP2 000004a9: DUP2 000004aa: LT 000004ab: PUSH2 0x04bc 000004ae: JUMPI 000004af: PUSH1 0x40 000004b1: MLOAD 000004b2: DUP1 000004b3: PUSH2 0x02fc 000004b6: DUP9 000004b7: DUP3 000004b8: PUSH2 0x041f 000004bb: JUMP 000004bc: JUMPDEST 000004bd: PUSH2 0x04dc 000004c0: PUSH2 0x04ca 000004c3: DUP3 000004c4: DUP5 000004c5: DUP9 000004c6: PUSH2 0x10c7 000004c9: JUMP 000004ca: JUMPDEST 000004cb: PUSH2 0x04d5 000004ce: DUP4 000004cf: DUP7 000004d0: DUP9 000004d1: PUSH2 0x10d7 000004d4: JUMP 000004d5: JUMPDEST 000004d6: CALLDATALOAD 000004d7: SWAP1 000004d8: PUSH2 0x0c54 000004db: JUMP 000004dc: JUMPDEST 000004dd: SWAP1 000004de: DUP7 000004df: MLOAD 000004e0: DUP2 000004e1: LT 000004e2: ISZERO 000004e3: PUSH2 0x0506 000004e6: JUMPI 000004e7: PUSH1 0x01 000004e9: PUSH1 0x01 000004eb: PUSH1 0x80 000004ed: SHL 000004ee: SUB 000004ef: PUSH2 0x0501 000004f2: SWAP3 000004f3: AND 000004f4: DUP9 000004f5: DUP3 000004f6: PUSH1 0x05 000004f8: SHL 000004f9: DUP10 000004fa: ADD 000004fb: ADD 000004fc: MSTORE 000004fd: PUSH2 0x10a2 00000500: JUMP 00000501: JUMPDEST 00000502: PUSH2 0x04a7 00000505: JUMP 00000506: JUMPDEST 00000507: PUSH2 0x10b1 0000050a: JUMP 0000050b: JUMPDEST 0000050c: CALLVALUE 0000050d: PUSH2 0x0139 00000510: JUMPI 00000511: PUSH2 0x0120 00000514: CALLDATASIZE 00000515: PUSH1 0x03 00000517: NOT 00000518: ADD 00000519: SLT 0000051a: PUSH2 0x0139 0000051d: JUMPI 0000051e: PUSH1 0x20 00000520: PUSH2 0x0535 00000523: PUSH2 0x052b 00000526: CALLDATASIZE 00000527: PUSH2 0x013e 0000052a: JUMP 0000052b: JUMPDEST 0000052c: PUSH2 0x0104 0000052f: CALLDATALOAD 00000530: SWAP1 00000531: PUSH2 0x11ab 00000534: JUMP 00000535: JUMPDEST 00000536: PUSH1 0x01 00000538: PUSH1 0x01 0000053a: PUSH1 0x80 0000053c: SHL 0000053d: SUB 0000053e: PUSH1 0x40 00000540: MLOAD 00000541: SWAP2 00000542: AND 00000543: DUP2 00000544: MSTORE 00000545: RETURN 00000546: JUMPDEST 00000547: CALLVALUE 00000548: PUSH2 0x0139 0000054b: JUMPI 0000054c: PUSH1 0x40 0000054e: CALLDATASIZE 0000054f: PUSH1 0x03 00000551: NOT 00000552: ADD 00000553: SLT 00000554: PUSH2 0x0139 00000557: JUMPI 00000558: PUSH1 0x04 0000055a: CALLDATALOAD 0000055b: PUSH2 0x0563 0000055e: DUP2 0000055f: PUSH2 0x0150 00000562: JUMP 00000563: JUMPDEST 00000564: PUSH1 0x24 00000566: CALLDATALOAD 00000567: SWAP1 00000568: PUSH8 0xffffffffffffffff 00000571: SWAP1 00000572: DUP2 00000573: DUP4 00000574: GT 00000575: PUSH2 0x0139 00000578: JUMPI 00000579: CALLDATASIZE 0000057a: PUSH1 0x23 0000057c: DUP5 0000057d: ADD 0000057e: SLT 0000057f: ISZERO 00000580: PUSH2 0x0139 00000583: JUMPI 00000584: DUP3 00000585: PUSH1 0x04 00000587: ADD 00000588: CALLDATALOAD 00000589: SWAP2 0000058a: DUP3 0000058b: GT 0000058c: PUSH2 0x0139 0000058f: JUMPI 00000590: CALLDATASIZE 00000591: PUSH1 0x24 00000593: DUP4 00000594: DUP6 00000595: ADD 00000596: ADD 00000597: GT 00000598: PUSH2 0x0139 0000059b: JUMPI 0000059c: PUSH1 0x40 0000059e: MLOAD 0000059f: PUSH4 0x5c9fcd85 000005a4: PUSH1 0xe1 000005a6: SHL 000005a7: DUP2 000005a8: MSTORE 000005a9: PUSH1 0x0b 000005ab: PUSH1 0x04 000005ad: DUP3 000005ae: ADD 000005af: MSTORE 000005b0: PUSH1 0x01 000005b2: PUSH1 0x01 000005b4: PUSH1 0xa0 000005b6: SHL 000005b7: SUB 000005b8: PUSH1 0x20 000005ba: DUP3 000005bb: PUSH1 0x24 000005bd: DUP2 000005be: PUSH32 0x0000000000000000000000001ca20040ce6ad406bc2a6c89976388829e7fbade 000005df: DUP6 000005e0: AND 000005e1: GAS 000005e2: STATICCALL 000005e3: SWAP2 000005e4: DUP3 000005e5: ISZERO 000005e6: PUSH2 0x0665 000005e9: JUMPI 000005ea: PUSH1 0x00 000005ec: SWAP3 000005ed: PUSH2 0x0635 000005f0: JUMPI 000005f1: JUMPDEST 000005f2: POP 000005f3: DUP2 000005f4: AND 000005f5: CALLER 000005f6: SUB 000005f7: PUSH2 0x0608 000005fa: JUMPI 000005fb: POP 000005fc: PUSH1 0x24 000005fe: PUSH2 0x019f 00000601: SWAP4 00000602: ADD 00000603: SWAP1 00000604: PUSH2 0x1366 00000607: JUMP 00000608: JUMPDEST 00000609: PUSH1 0x40 0000060b: MLOAD 0000060c: PUSH4 0x520b6b75 00000611: PUSH1 0xe0 00000613: SHL 00000614: DUP2 00000615: MSTORE 00000616: CALLER 00000617: PUSH1 0x04 00000619: DUP3 0000061a: ADD 0000061b: MSTORE 0000061c: PUSH1 0x01 0000061e: PUSH1 0x01 00000620: PUSH1 0xa0 00000622: SHL 00000623: SUB 00000624: SWAP2 00000625: SWAP1 00000626: SWAP2 00000627: AND 00000628: PUSH1 0x24 0000062a: DUP3 0000062b: ADD 0000062c: MSTORE 0000062d: PUSH1 0x44 0000062f: SWAP1 00000630: REVERT 00000631: JUMPDEST 00000632: SUB 00000633: SWAP1 00000634: REVERT 00000635: JUMPDEST 00000636: PUSH2 0x0657 00000639: SWAP2 0000063a: SWAP3 0000063b: POP 0000063c: PUSH1 0x20 0000063e: RETURNDATASIZE 0000063f: DUP2 00000640: GT 00000641: PUSH2 0x065e 00000644: JUMPI 00000645: JUMPDEST 00000646: PUSH2 0x064f 00000649: DUP2 0000064a: DUP4 0000064b: PUSH2 0x0962 0000064e: JUMP 0000064f: JUMPDEST 00000650: DUP2 00000651: ADD 00000652: SWAP1 00000653: PUSH2 0x0a10 00000656: JUMP 00000657: JUMPDEST 00000658: SWAP1 00000659: CODESIZE 0000065a: PUSH2 0x05f1 0000065d: JUMP 0000065e: JUMPDEST 0000065f: POP 00000660: RETURNDATASIZE 00000661: PUSH2 0x0645 00000664: JUMP 00000665: JUMPDEST 00000666: PUSH2 0x09f7 00000669: JUMP 0000066a: JUMPDEST 0000066b: CALLVALUE 0000066c: PUSH2 0x0139 0000066f: JUMPI 00000670: PUSH2 0x0120 00000673: CALLDATASIZE 00000674: PUSH1 0x03 00000676: NOT 00000677: ADD 00000678: SLT 00000679: PUSH2 0x0139 0000067c: JUMPI 0000067d: PUSH1 0x20 0000067f: PUSH2 0x0535 00000682: PUSH2 0x068a 00000685: CALLDATASIZE 00000686: PUSH2 0x013e 00000689: JUMP 0000068a: JUMPDEST 0000068b: PUSH2 0x0104 0000068e: CALLDATALOAD 0000068f: SWAP1 00000690: PUSH2 0x0c54 00000693: JUMP 00000694: JUMPDEST 00000695: CALLVALUE 00000696: PUSH2 0x0139 00000699: JUMPI 0000069a: PUSH1 0x20 0000069c: CALLDATASIZE 0000069d: PUSH1 0x03 0000069f: NOT 000006a0: ADD 000006a1: SLT 000006a2: PUSH2 0x0139 000006a5: JUMPI 000006a6: PUSH1 0x04 000006a8: CALLDATALOAD 000006a9: PUSH2 0x06b1 000006ac: DUP2 000006ad: PUSH2 0x0150 000006b0: JUMP 000006b1: JUMPDEST 000006b2: PUSH1 0x01 000006b4: DUP1 000006b5: PUSH1 0xa0 000006b7: SHL 000006b8: SUB 000006b9: AND 000006ba: PUSH1 0x00 000006bc: MSTORE 000006bd: PUSH1 0x00 000006bf: PUSH1 0x20 000006c1: MSTORE 000006c2: PUSH1 0x20 000006c4: PUSH1 0x40 000006c6: PUSH1 0x00 000006c8: KECCAK256 000006c9: SLOAD 000006ca: PUSH1 0x40 000006cc: MLOAD 000006cd: SWAP1 000006ce: DUP2 000006cf: MSTORE 000006d0: RETURN 000006d1: JUMPDEST 000006d2: CALLVALUE 000006d3: PUSH2 0x0139 000006d6: JUMPI 000006d7: PUSH2 0x06df 000006da: CALLDATASIZE 000006db: PUSH2 0x039b 000006de: JUMP 000006df: JUMPDEST 000006e0: SWAP1 000006e1: PUSH1 0x00 000006e3: JUMPDEST 000006e4: DUP4 000006e5: DUP2 000006e6: LT 000006e7: PUSH2 0x06ec 000006ea: JUMPI 000006eb: STOP 000006ec: JUMPDEST 000006ed: DUP1 000006ee: PUSH2 0x0714 000006f1: PUSH2 0x06fe 000006f4: PUSH2 0x0719 000006f7: SWAP4 000006f8: DUP8 000006f9: DUP10 000006fa: PUSH2 0x10c7 000006fd: JUMP 000006fe: JUMPDEST 000006ff: PUSH2 0x0709 00000702: DUP4 00000703: DUP8 00000704: DUP8 00000705: PUSH2 0x10d7 00000708: JUMP 00000709: JUMPDEST 0000070a: CALLDATALOAD 0000070b: SWAP1 0000070c: PUSH2 0x019a 0000070f: DUP3 00000710: PUSH2 0x0150 00000713: JUMP 00000714: JUMPDEST 00000715: PUSH2 0x10a2 00000718: JUMP 00000719: JUMPDEST 0000071a: PUSH2 0x06e3 0000071d: JUMP 0000071e: JUMPDEST 0000071f: CALLVALUE 00000720: PUSH2 0x0139 00000723: JUMPI 00000724: PUSH1 0x40 00000726: CALLDATASIZE 00000727: PUSH1 0x03 00000729: NOT 0000072a: ADD 0000072b: SLT 0000072c: PUSH2 0x0139 0000072f: JUMPI 00000730: PUSH1 0x04 00000732: CALLDATALOAD 00000733: PUSH2 0x073b 00000736: DUP2 00000737: PUSH2 0x0150 0000073a: JUMP 0000073b: JUMPDEST 0000073c: PUSH1 0x01 0000073e: DUP1 0000073f: PUSH1 0xa0 00000741: SHL 00000742: SUB 00000743: AND 00000744: PUSH1 0x00 00000746: MSTORE 00000747: PUSH1 0x02 00000749: PUSH1 0x20 0000074b: MSTORE 0000074c: PUSH1 0x40 0000074e: PUSH1 0x00 00000750: KECCAK256 00000751: PUSH1 0x24 00000753: CALLDATALOAD 00000754: PUSH1 0x00 00000756: MSTORE 00000757: PUSH1 0x20 00000759: MSTORE 0000075a: PUSH1 0x20 0000075c: PUSH1 0x01 0000075e: PUSH1 0x01 00000760: PUSH1 0x80 00000762: SHL 00000763: SUB 00000764: PUSH1 0x01 00000766: PUSH1 0x40 00000768: PUSH1 0x00 0000076a: KECCAK256 0000076b: ADD 0000076c: SLOAD 0000076d: AND 0000076e: PUSH1 0x40 00000770: MLOAD 00000771: SWAP1 00000772: DUP2 00000773: MSTORE 00000774: RETURN 00000775: JUMPDEST 00000776: CALLVALUE 00000777: PUSH2 0x0139 0000077a: JUMPI 0000077b: PUSH1 0x60 0000077d: CALLDATASIZE 0000077e: PUSH1 0x03 00000780: NOT 00000781: ADD 00000782: SLT 00000783: PUSH2 0x0139 00000786: JUMPI 00000787: PUSH1 0x20 00000789: PUSH1 0xff 0000078b: PUSH1 0x40 0000078d: PUSH1 0x04 0000078f: CALLDATALOAD 00000790: PUSH2 0x0798 00000793: DUP2 00000794: PUSH2 0x0150 00000797: JUMP 00000798: JUMPDEST 00000799: PUSH1 0x01 0000079b: PUSH1 0x01 0000079d: PUSH1 0xa0 0000079f: SHL 000007a0: SUB 000007a1: AND 000007a2: PUSH1 0x00 000007a4: SWAP1 000007a5: DUP2 000007a6: MSTORE 000007a7: PUSH1 0x02 000007a9: DUP1 000007aa: DUP6 000007ab: MSTORE 000007ac: DUP3 000007ad: DUP3 000007ae: KECCAK256 000007af: PUSH1 0x44 000007b1: CALLDATALOAD 000007b2: DUP4 000007b3: MSTORE 000007b4: DUP6 000007b5: MSTORE 000007b6: DUP3 000007b7: DUP3 000007b8: KECCAK256 000007b9: PUSH1 0x24 000007bb: CALLDATALOAD 000007bc: DUP4 000007bd: MSTORE 000007be: ADD 000007bf: DUP5 000007c0: MSTORE 000007c1: KECCAK256 000007c2: SLOAD 000007c3: PUSH1 0x40 000007c5: MLOAD 000007c6: SWAP2 000007c7: AND 000007c8: ISZERO 000007c9: ISZERO 000007ca: DUP2 000007cb: MSTORE 000007cc: RETURN 000007cd: JUMPDEST 000007ce: CALLVALUE 000007cf: PUSH2 0x0139 000007d2: JUMPI 000007d3: PUSH1 0x80 000007d5: CALLDATASIZE 000007d6: PUSH1 0x03 000007d8: NOT 000007d9: ADD 000007da: SLT 000007db: PUSH2 0x0139 000007de: JUMPI 000007df: PUSH1 0x04 000007e1: CALLDATALOAD 000007e2: PUSH2 0x07ea 000007e5: DUP2 000007e6: PUSH2 0x0150 000007e9: JUMP 000007ea: JUMPDEST 000007eb: PUSH1 0x24 000007ed: CALLDATALOAD 000007ee: SWAP1 000007ef: PUSH2 0x07f7 000007f2: DUP3 000007f3: PUSH2 0x0150 000007f6: JUMP 000007f7: JUMPDEST 000007f8: PUSH1 0x44 000007fa: CALLDATALOAD 000007fb: SWAP2 000007fc: PUSH2 0x0804 000007ff: DUP4 00000800: PUSH2 0x0150 00000803: JUMP 00000804: JUMPDEST 00000805: PUSH1 0x64 00000807: CALLDATALOAD 00000808: SWAP2 00000809: PUSH2 0x0811 0000080c: DUP4 0000080d: PUSH2 0x01a1 00000810: JUMP 00000811: JUMPDEST 00000812: PUSH2 0x0819 00000815: PUSH2 0x099e 00000818: JUMP 00000819: JUMPDEST 0000081a: POP 0000081b: PUSH1 0x40 0000081d: MLOAD 0000081e: PUSH4 0x70a08231 00000823: PUSH1 0xe0 00000825: SHL 00000826: DUP2 00000827: MSTORE 00000828: ADDRESS 00000829: PUSH1 0x04 0000082b: DUP3 0000082c: ADD 0000082d: MSTORE 0000082e: SWAP3 0000082f: PUSH1 0x01 00000831: PUSH1 0x01 00000833: PUSH1 0xa0 00000835: SHL 00000836: SUB 00000837: SWAP2 00000838: SWAP1 00000839: SWAP2 0000083a: AND 0000083b: SWAP1 0000083c: PUSH1 0x20 0000083e: DUP5 0000083f: PUSH1 0x24 00000841: DUP2 00000842: DUP6 00000843: GAS 00000844: STATICCALL 00000845: SWAP4 00000846: DUP5 00000847: ISZERO 00000848: PUSH2 0x0665 0000084b: JUMPI 0000084c: PUSH2 0x02fc 0000084f: SWAP6 00000850: PUSH2 0x02f0 00000853: SWAP6 00000854: PUSH2 0x08b9 00000857: SWAP5 00000858: PUSH2 0x08ae 0000085b: SWAP4 0000085c: PUSH1 0x00 0000085e: SWAP3 0000085f: PUSH2 0x08be 00000862: JUMPI 00000863: JUMPDEST 00000864: POP 00000865: PUSH2 0x0899 00000868: SWAP1 00000869: PUSH2 0x0882 0000086c: PUSH2 0x0873 0000086f: PUSH2 0x0984 00000872: JUMP 00000873: JUMPDEST 00000874: PUSH1 0x01 00000876: PUSH1 0x01 00000878: PUSH1 0xa0 0000087a: SHL 0000087b: SUB 0000087c: SWAP1 0000087d: SWAP10 0000087e: AND 0000087f: DUP10 00000880: MSTORE 00000881: JUMP 00000882: JUMPDEST 00000883: PUSH1 0x01 00000885: PUSH1 0x20 00000887: DUP10 00000888: ADD 00000889: MSTORE 0000088a: PUSH1 0x01 0000088c: PUSH1 0x01 0000088e: PUSH1 0xa0 00000890: SHL 00000891: SUB 00000892: AND 00000893: PUSH1 0x40 00000895: DUP9 00000896: ADD 00000897: MSTORE 00000898: JUMP 00000899: JUMPDEST 0000089a: PUSH1 0x60 0000089c: DUP7 0000089d: ADD 0000089e: MSTORE 0000089f: PUSH1 0x01 000008a1: PUSH1 0x01 000008a3: PUSH1 0xa0 000008a5: SHL 000008a6: SUB 000008a7: AND 000008a8: PUSH1 0x80 000008aa: DUP6 000008ab: ADD 000008ac: MSTORE 000008ad: JUMP 000008ae: JUMPDEST 000008af: PUSH2 0xffff 000008b2: AND 000008b3: PUSH1 0xa0 000008b5: DUP4 000008b6: ADD 000008b7: MSTORE 000008b8: JUMP 000008b9: JUMPDEST 000008ba: PUSH2 0x14e2 000008bd: JUMP 000008be: JUMPDEST 000008bf: PUSH2 0x0899 000008c2: SWAP2 000008c3: SWAP3 000008c4: POP 000008c5: PUSH2 0x08e4 000008c8: SWAP1 000008c9: PUSH1 0x20 000008cb: RETURNDATASIZE 000008cc: DUP2 000008cd: GT 000008ce: PUSH2 0x08eb 000008d1: JUMPI 000008d2: JUMPDEST 000008d3: PUSH2 0x08dc 000008d6: DUP2 000008d7: DUP4 000008d8: PUSH2 0x0962 000008db: JUMP 000008dc: JUMPDEST 000008dd: DUP2 000008de: ADD 000008df: SWAP1 000008e0: PUSH2 0x09e8 000008e3: JUMP 000008e4: JUMPDEST 000008e5: SWAP2 000008e6: SWAP1 000008e7: PUSH2 0x0863 000008ea: JUMP 000008eb: JUMPDEST 000008ec: POP 000008ed: RETURNDATASIZE 000008ee: PUSH2 0x08d2 000008f1: JUMP 000008f2: JUMPDEST 000008f3: PUSH4 0x4e487b71 000008f8: PUSH1 0xe0 000008fa: SHL 000008fb: PUSH1 0x00 000008fd: MSTORE 000008fe: PUSH1 0x41 00000900: PUSH1 0x04 00000902: MSTORE 00000903: PUSH1 0x24 00000905: PUSH1 0x00 00000907: REVERT 00000908: JUMPDEST 00000909: PUSH1 0xc0 0000090b: DUP2 0000090c: ADD 0000090d: SWAP1 0000090e: DUP2 0000090f: LT 00000910: PUSH8 0xffffffffffffffff 00000919: DUP3 0000091a: GT 0000091b: OR 0000091c: PUSH2 0x0924 0000091f: JUMPI 00000920: PUSH1 0x40 00000922: MSTORE 00000923: JUMP 00000924: JUMPDEST 00000925: PUSH2 0x08f2 00000928: JUMP 00000929: JUMPDEST 0000092a: PUSH2 0x0100 0000092d: DUP2 0000092e: ADD 0000092f: SWAP1 00000930: DUP2 00000931: LT 00000932: PUSH8 0xffffffffffffffff 0000093b: DUP3 0000093c: GT 0000093d: OR 0000093e: PUSH2 0x0924 00000941: JUMPI 00000942: PUSH1 0x40 00000944: MSTORE 00000945: JUMP 00000946: JUMPDEST 00000947: PUSH1 0x40 00000949: DUP2 0000094a: ADD 0000094b: SWAP1 0000094c: DUP2 0000094d: LT 0000094e: PUSH8 0xffffffffffffffff 00000957: DUP3 00000958: GT 00000959: OR 0000095a: PUSH2 0x0924 0000095d: JUMPI 0000095e: PUSH1 0x40 00000960: MSTORE 00000961: JUMP 00000962: JUMPDEST 00000963: SWAP1 00000964: PUSH1 0x1f 00000966: DUP1 00000967: NOT 00000968: SWAP2 00000969: ADD 0000096a: AND 0000096b: DUP2 0000096c: ADD 0000096d: SWAP1 0000096e: DUP2 0000096f: LT 00000970: PUSH8 0xffffffffffffffff 00000979: DUP3 0000097a: GT 0000097b: OR 0000097c: PUSH2 0x0924 0000097f: JUMPI 00000980: PUSH1 0x40 00000982: MSTORE 00000983: JUMP 00000984: JUMPDEST 00000985: PUSH1 0x40 00000987: MLOAD 00000988: SWAP1 00000989: PUSH2 0x016c 0000098c: DUP3 0000098d: PUSH2 0x0908 00000990: JUMP 00000991: JUMPDEST 00000992: PUSH1 0x40 00000994: MLOAD 00000995: SWAP1 00000996: PUSH2 0x016c 00000999: DUP3 0000099a: PUSH2 0x0929 0000099d: JUMP 0000099e: JUMPDEST 0000099f: PUSH1 0x40 000009a1: MLOAD 000009a2: SWAP1 000009a3: PUSH2 0x09ab 000009a6: DUP3 000009a7: PUSH2 0x0929 000009aa: JUMP 000009ab: JUMPDEST 000009ac: DUP2 000009ad: PUSH1 0xe0 000009af: PUSH1 0x00 000009b1: SWAP2 000009b2: DUP3 000009b3: DUP2 000009b4: MSTORE 000009b5: DUP3 000009b6: PUSH1 0x20 000009b8: DUP3 000009b9: ADD 000009ba: MSTORE 000009bb: DUP3 000009bc: PUSH1 0x40 000009be: DUP3 000009bf: ADD 000009c0: MSTORE 000009c1: DUP3 000009c2: PUSH1 0x60 000009c4: DUP3 000009c5: ADD 000009c6: MSTORE 000009c7: DUP3 000009c8: PUSH1 0x80 000009ca: DUP3 000009cb: ADD 000009cc: MSTORE 000009cd: DUP3 000009ce: PUSH1 0xa0 000009d0: DUP3 000009d1: ADD 000009d2: MSTORE 000009d3: DUP3 000009d4: PUSH1 0xc0 000009d6: DUP3 000009d7: ADD 000009d8: MSTORE 000009d9: ADD 000009da: MSTORE 000009db: JUMP 000009dc: JUMPDEST 000009dd: PUSH1 0x02 000009df: DUP3 000009e0: LT 000009e1: ISZERO 000009e2: PUSH2 0x01b7 000009e5: JUMPI 000009e6: MSTORE 000009e7: JUMP 000009e8: JUMPDEST 000009e9: SWAP1 000009ea: DUP2 000009eb: PUSH1 0x20 000009ed: SWAP2 000009ee: SUB 000009ef: SLT 000009f0: PUSH2 0x0139 000009f3: JUMPI 000009f4: MLOAD 000009f5: SWAP1 000009f6: JUMP 000009f7: JUMPDEST 000009f8: PUSH1 0x40 000009fa: MLOAD 000009fb: RETURNDATASIZE 000009fc: PUSH1 0x00 000009fe: DUP3 000009ff: RETURNDATACOPY 00000a00: RETURNDATASIZE 00000a01: SWAP1 00000a02: REVERT 00000a03: JUMPDEST 00000a04: CALLDATALOAD 00000a05: PUSH2 0x0a0d 00000a08: DUP2 00000a09: PUSH2 0x0150 00000a0c: JUMP 00000a0d: JUMPDEST 00000a0e: SWAP1 00000a0f: JUMP 00000a10: JUMPDEST 00000a11: SWAP1 00000a12: DUP2 00000a13: PUSH1 0x20 00000a15: SWAP2 00000a16: SUB 00000a17: SLT 00000a18: PUSH2 0x0139 00000a1b: JUMPI 00000a1c: MLOAD 00000a1d: PUSH2 0x0a0d 00000a20: DUP2 00000a21: PUSH2 0x0150 00000a24: JUMP 00000a25: JUMPDEST 00000a26: PUSH1 0x00 00000a28: MSTORE 00000a29: PUSH1 0x01 00000a2b: PUSH1 0x20 00000a2d: MSTORE 00000a2e: PUSH1 0x40 00000a30: PUSH1 0x00 00000a32: KECCAK256 00000a33: SWAP1 00000a34: JUMP 00000a35: JUMPDEST 00000a36: PUSH1 0x02 00000a38: GT 00000a39: ISZERO 00000a3a: PUSH2 0x0139 00000a3d: JUMPI 00000a3e: JUMP 00000a3f: JUMPDEST 00000a40: PUSH1 0x01 00000a42: PUSH1 0x01 00000a44: PUSH1 0x80 00000a46: SHL 00000a47: SUB 00000a48: DUP2 00000a49: AND 00000a4a: SUB 00000a4b: PUSH2 0x0139 00000a4e: JUMPI 00000a4f: JUMP 00000a50: JUMPDEST 00000a51: CALLDATALOAD 00000a52: SWAP1 00000a53: PUSH2 0x016c 00000a56: DUP3 00000a57: PUSH2 0x0a3f 00000a5a: JUMP 00000a5b: JUMPDEST 00000a5c: PUSH1 0x01 00000a5e: PUSH1 0x01 00000a60: PUSH1 0x60 00000a62: SHL 00000a63: SUB 00000a64: DUP2 00000a65: AND 00000a66: SUB 00000a67: PUSH2 0x0139 00000a6a: JUMPI 00000a6b: JUMP 00000a6c: JUMPDEST 00000a6d: CALLDATALOAD 00000a6e: SWAP1 00000a6f: PUSH2 0x016c 00000a72: DUP3 00000a73: PUSH2 0x0a5b 00000a76: JUMP 00000a77: JUMPDEST 00000a78: SWAP2 00000a79: SWAP1 00000a7a: DUP3 00000a7b: PUSH2 0x0100 00000a7e: SWAP2 00000a7f: SUB 00000a80: SLT 00000a81: PUSH2 0x0139 00000a84: JUMPI 00000a85: PUSH1 0x40 00000a87: MLOAD 00000a88: PUSH2 0x0a90 00000a8b: DUP2 00000a8c: PUSH2 0x0929 00000a8f: JUMP 00000a90: JUMPDEST 00000a91: PUSH1 0xe0 00000a93: PUSH2 0x0b0a 00000a96: DUP2 00000a97: DUP4 00000a98: SWAP6 00000a99: DUP1 00000a9a: CALLDATALOAD 00000a9b: PUSH2 0x0aa3 00000a9e: DUP2 00000a9f: PUSH2 0x0a35 00000aa2: JUMP 00000aa3: JUMPDEST 00000aa4: DUP6 00000aa5: MSTORE 00000aa6: PUSH1 0x20 00000aa8: DUP2 00000aa9: ADD 00000aaa: CALLDATALOAD 00000aab: PUSH1 0x20 00000aad: DUP7 00000aae: ADD 00000aaf: MSTORE 00000ab0: PUSH2 0x0abb 00000ab3: PUSH1 0x40 00000ab5: DUP3 00000ab6: ADD 00000ab7: PUSH2 0x0161 00000aba: JUMP 00000abb: JUMPDEST 00000abc: PUSH1 0x40 00000abe: DUP7 00000abf: ADD 00000ac0: MSTORE 00000ac1: PUSH2 0x0acc 00000ac4: PUSH1 0x60 00000ac6: DUP3 00000ac7: ADD 00000ac8: PUSH2 0x0161 00000acb: JUMP 00000acc: JUMPDEST 00000acd: PUSH1 0x60 00000acf: DUP7 00000ad0: ADD 00000ad1: MSTORE 00000ad2: PUSH2 0x0add 00000ad5: PUSH1 0x80 00000ad7: DUP3 00000ad8: ADD 00000ad9: PUSH2 0x0161 00000adc: JUMP 00000add: JUMPDEST 00000ade: PUSH1 0x80 00000ae0: DUP7 00000ae1: ADD 00000ae2: MSTORE 00000ae3: PUSH2 0x0aee 00000ae6: PUSH1 0xa0 00000ae8: DUP3 00000ae9: ADD 00000aea: PUSH2 0x0a50 00000aed: JUMP 00000aee: JUMPDEST 00000aef: PUSH1 0xa0 00000af1: DUP7 00000af2: ADD 00000af3: MSTORE 00000af4: PUSH2 0x0aff 00000af7: PUSH1 0xc0 00000af9: DUP3 00000afa: ADD 00000afb: PUSH2 0x0a50 00000afe: JUMP 00000aff: JUMPDEST 00000b00: PUSH1 0xc0 00000b02: DUP7 00000b03: ADD 00000b04: MSTORE 00000b05: ADD 00000b06: PUSH2 0x0a6c 00000b09: JUMP 00000b0a: JUMPDEST 00000b0b: SWAP2 00000b0c: ADD 00000b0d: MSTORE 00000b0e: JUMP 00000b0f: JUMPDEST 00000b10: PUSH2 0x016c 00000b13: SWAP1 00000b14: SWAP3 00000b15: SWAP2 00000b16: SWAP3 00000b17: PUSH1 0xe0 00000b19: PUSH2 0x0bd7 00000b1c: DUP2 00000b1d: PUSH2 0x0100 00000b20: DUP5 00000b21: ADD 00000b22: SWAP7 00000b23: PUSH2 0x0b36 00000b26: DUP6 00000b27: DUP3 00000b28: CALLDATALOAD 00000b29: PUSH2 0x0b31 00000b2c: DUP2 00000b2d: PUSH2 0x0a35 00000b30: JUMP 00000b31: JUMPDEST 00000b32: PUSH2 0x01cd 00000b35: JUMP 00000b36: JUMPDEST 00000b37: PUSH1 0x20 00000b39: DUP2 00000b3a: ADD 00000b3b: CALLDATALOAD 00000b3c: PUSH1 0x20 00000b3e: DUP7 00000b3f: ADD 00000b40: MSTORE 00000b41: PUSH1 0x40 00000b43: DUP2 00000b44: ADD 00000b45: CALLDATALOAD 00000b46: PUSH2 0x0b4e 00000b49: DUP2 00000b4a: PUSH2 0x0150 00000b4d: JUMP 00000b4e: JUMPDEST 00000b4f: PUSH1 0x01 00000b51: PUSH1 0x01 00000b53: PUSH1 0xa0 00000b55: SHL 00000b56: SUB 00000b57: SWAP1 00000b58: DUP2 00000b59: AND 00000b5a: PUSH1 0x40 00000b5c: DUP8 00000b5d: ADD 00000b5e: MSTORE 00000b5f: PUSH1 0x60 00000b61: DUP3 00000b62: ADD 00000b63: CALLDATALOAD 00000b64: PUSH2 0x0b6c 00000b67: DUP2 00000b68: PUSH2 0x0150 00000b6b: JUMP 00000b6c: JUMPDEST 00000b6d: AND 00000b6e: PUSH1 0x60 00000b70: DUP7 00000b71: ADD 00000b72: MSTORE 00000b73: PUSH2 0x0b93 00000b76: PUSH1 0x80 00000b78: DUP3 00000b79: ADD 00000b7a: CALLDATALOAD 00000b7b: PUSH2 0x0b83 00000b7e: DUP2 00000b7f: PUSH2 0x0150 00000b82: JUMP 00000b83: JUMPDEST 00000b84: PUSH1 0x01 00000b86: PUSH1 0x01 00000b88: PUSH1 0xa0 00000b8a: SHL 00000b8b: SUB 00000b8c: AND 00000b8d: PUSH1 0x80 00000b8f: DUP8 00000b90: ADD 00000b91: MSTORE 00000b92: JUMP 00000b93: JUMPDEST 00000b94: PUSH2 0x0bb2 00000b97: PUSH2 0x0ba2 00000b9a: PUSH1 0xa0 00000b9c: DUP4 00000b9d: ADD 00000b9e: PUSH2 0x0a50 00000ba1: JUMP 00000ba2: JUMPDEST 00000ba3: PUSH1 0x01 00000ba5: PUSH1 0x01 00000ba7: PUSH1 0x80 00000ba9: SHL 00000baa: SUB 00000bab: AND 00000bac: PUSH1 0xa0 00000bae: DUP8 00000baf: ADD 00000bb0: MSTORE 00000bb1: JUMP 00000bb2: JUMPDEST 00000bb3: PUSH2 0x0bd1 00000bb6: PUSH2 0x0bc1 00000bb9: PUSH1 0xc0 00000bbb: DUP4 00000bbc: ADD 00000bbd: PUSH2 0x0a50 00000bc0: JUMP 00000bc1: JUMPDEST 00000bc2: PUSH1 0x01 00000bc4: PUSH1 0x01 00000bc6: PUSH1 0x80 00000bc8: SHL 00000bc9: SUB 00000bca: AND 00000bcb: PUSH1 0xc0 00000bcd: DUP8 00000bce: ADD 00000bcf: MSTORE 00000bd0: JUMP 00000bd1: JUMPDEST 00000bd2: ADD 00000bd3: PUSH2 0x0a6c 00000bd6: JUMP 00000bd7: JUMPDEST 00000bd8: PUSH1 0x01 00000bda: PUSH1 0x01 00000bdc: PUSH1 0x60 00000bde: SHL 00000bdf: SUB 00000be0: AND 00000be1: SWAP2 00000be2: ADD 00000be3: MSTORE 00000be4: JUMP 00000be5: JUMPDEST 00000be6: PUSH4 0x4e487b71 00000beb: PUSH1 0xe0 00000bed: SHL 00000bee: PUSH1 0x00 00000bf0: MSTORE 00000bf1: PUSH1 0x11 00000bf3: PUSH1 0x04 00000bf5: MSTORE 00000bf6: PUSH1 0x24 00000bf8: PUSH1 0x00 00000bfa: REVERT 00000bfb: JUMPDEST 00000bfc: PUSH1 0x01 00000bfe: PUSH1 0x01 00000c00: PUSH1 0x80 00000c02: SHL 00000c03: SUB 00000c04: SWAP2 00000c05: DUP3 00000c06: AND 00000c07: SWAP1 00000c08: DUP3 00000c09: AND 00000c0a: SUB 00000c0b: SWAP2 00000c0c: SWAP1 00000c0d: DUP3 00000c0e: GT 00000c0f: PUSH2 0x0c14 00000c12: JUMPI 00000c13: JUMP 00000c14: JUMPDEST 00000c15: PUSH2 0x0be5 00000c18: JUMP 00000c19: JUMPDEST 00000c1a: CALLDATALOAD 00000c1b: PUSH2 0x0a0d 00000c1e: DUP2 00000c1f: PUSH2 0x0a35 00000c22: JUMP 00000c23: JUMPDEST 00000c24: SWAP2 00000c25: PUSH1 0x40 00000c27: SWAP2 00000c28: SWAP5 00000c29: SWAP4 00000c2a: PUSH1 0x01 00000c2c: PUSH1 0x01 00000c2e: PUSH1 0x80 00000c30: SHL 00000c31: SUB 00000c32: SWAP2 00000c33: PUSH2 0x0c40 00000c36: DUP6 00000c37: PUSH1 0x60 00000c39: DUP2 00000c3a: ADD 00000c3b: SWAP9 00000c3c: PUSH2 0x01cd 00000c3f: JUMP 00000c40: JUMPDEST 00000c41: PUSH1 0x01 00000c43: PUSH1 0x01 00000c45: PUSH1 0xa0 00000c47: SHL 00000c48: SUB 00000c49: AND 00000c4a: PUSH1 0x20 00000c4c: DUP6 00000c4d: ADD 00000c4e: MSTORE 00000c4f: AND 00000c50: SWAP2 00000c51: ADD 00000c52: MSTORE 00000c53: JUMP 00000c54: JUMPDEST 00000c55: PUSH1 0x40 00000c57: DUP1 00000c58: DUP3 00000c59: ADD 00000c5a: SWAP4 00000c5b: SWAP3 00000c5c: SWAP1 00000c5d: PUSH2 0x0c74 00000c60: PUSH2 0x0c68 00000c63: DUP7 00000c64: PUSH2 0x0a03 00000c67: JUMP 00000c68: JUMPDEST 00000c69: PUSH1 0x01 00000c6b: PUSH1 0x01 00000c6d: PUSH1 0xa0 00000c6f: SHL 00000c70: SUB 00000c71: AND 00000c72: SWAP1 00000c73: JUMP 00000c74: JUMPDEST 00000c75: DUP2 00000c76: MLOAD 00000c77: PUSH4 0x31a9108f 00000c7c: PUSH1 0xe1 00000c7e: SHL 00000c7f: DUP2 00000c80: MSTORE 00000c81: PUSH1 0x04 00000c83: DUP2 00000c84: ADD 00000c85: DUP5 00000c86: SWAP1 00000c87: MSTORE 00000c88: SWAP6 00000c89: SWAP1 00000c8a: PUSH1 0x20 00000c8c: SWAP1 00000c8d: DUP8 00000c8e: SWAP1 00000c8f: PUSH1 0x24 00000c91: SWAP1 00000c92: DUP3 00000c93: SWAP1 00000c94: GAS 00000c95: STATICCALL 00000c96: SWAP6 00000c97: DUP7 00000c98: ISZERO 00000c99: PUSH2 0x0665 00000c9c: JUMPI 00000c9d: PUSH1 0x00 00000c9f: SWAP7 00000ca0: PUSH2 0x0eb9 00000ca3: JUMPI 00000ca4: JUMPDEST 00000ca5: POP 00000ca6: PUSH1 0x01 00000ca8: PUSH1 0x01 00000caa: PUSH1 0xa0 00000cac: SHL 00000cad: SUB 00000cae: SWAP6 00000caf: DUP1 00000cb0: DUP8 00000cb1: AND 00000cb2: CALLER 00000cb3: SUB 00000cb4: PUSH2 0x0e89 00000cb7: JUMPI 00000cb8: POP 00000cb9: PUSH2 0x0cde 00000cbc: PUSH2 0x0cc4 00000cbf: DUP3 00000cc0: PUSH2 0x0a03 00000cc3: JUMP 00000cc4: JUMPDEST 00000cc5: PUSH1 0x01 00000cc7: PUSH1 0x01 00000cc9: PUSH1 0xa0 00000ccb: SHL 00000ccc: SUB 00000ccd: AND 00000cce: PUSH1 0x00 00000cd0: SWAP1 00000cd1: DUP2 00000cd2: MSTORE 00000cd3: PUSH1 0x02 00000cd5: PUSH1 0x20 00000cd7: MSTORE 00000cd8: PUSH1 0x40 00000cda: SWAP1 00000cdb: KECCAK256 00000cdc: SWAP1 00000cdd: JUMP 00000cde: JUMPDEST 00000cdf: SWAP6 00000ce0: PUSH2 0x0cf8 00000ce3: PUSH1 0x20 00000ce5: DUP7 00000ce6: ADD 00000ce7: CALLDATALOAD 00000ce8: DUP1 00000ce9: SWAP9 00000cea: SWAP1 00000ceb: PUSH1 0x00 00000ced: MSTORE 00000cee: PUSH1 0x20 00000cf0: MSTORE 00000cf1: PUSH1 0x40 00000cf3: PUSH1 0x00 00000cf5: KECCAK256 00000cf6: SWAP1 00000cf7: JUMP 00000cf8: JUMPDEST 00000cf9: SWAP7 00000cfa: DUP8 00000cfb: SLOAD 00000cfc: PUSH2 0x0d10 00000cff: PUSH2 0x0d08 00000d02: CALLDATASIZE 00000d03: DUP10 00000d04: PUSH2 0x0a77 00000d07: JUMP 00000d08: JUMPDEST 00000d09: PUSH2 0x0100 00000d0c: SWAP1 00000d0d: KECCAK256 00000d0e: SWAP1 00000d0f: JUMP 00000d10: JUMPDEST 00000d11: SUB 00000d12: PUSH2 0x0e6f 00000d15: JUMPI 00000d16: PUSH1 0x02 00000d18: DUP9 00000d19: ADD 00000d1a: SWAP1 00000d1b: PUSH2 0x0d38 00000d1e: PUSH2 0x0d31 00000d21: DUP8 00000d22: DUP5 00000d23: SWAP1 00000d24: PUSH1 0x00 00000d26: MSTORE 00000d27: PUSH1 0x20 00000d29: MSTORE 00000d2a: PUSH1 0x40 00000d2c: PUSH1 0x00 00000d2e: KECCAK256 00000d2f: SWAP1 00000d30: JUMP 00000d31: JUMPDEST 00000d32: SLOAD 00000d33: PUSH1 0xff 00000d35: AND 00000d36: SWAP1 00000d37: JUMP 00000d38: JUMPDEST 00000d39: PUSH2 0x0e4f 00000d3c: JUMPI 00000d3d: POP 00000d3e: PUSH2 0x0d54 00000d41: DUP6 00000d42: PUSH2 0x0d61 00000d45: SWAP3 00000d46: SWAP1 00000d47: PUSH1 0x00 00000d49: MSTORE 00000d4a: PUSH1 0x20 00000d4c: MSTORE 00000d4d: PUSH1 0x40 00000d4f: PUSH1 0x00 00000d51: KECCAK256 00000d52: SWAP1 00000d53: JUMP 00000d54: JUMPDEST 00000d55: DUP1 00000d56: SLOAD 00000d57: PUSH1 0xff 00000d59: NOT 00000d5a: AND 00000d5b: PUSH1 0x01 00000d5d: OR 00000d5e: SWAP1 00000d5f: SSTORE 00000d60: JUMP 00000d61: JUMPDEST 00000d62: PUSH1 0x01 00000d64: PUSH2 0x0d6d 00000d67: DUP6 00000d68: DUP8 00000d69: PUSH2 0x11ab 00000d6c: JUMP 00000d6d: JUMPDEST 00000d6e: SWAP8 00000d6f: ADD 00000d70: SWAP7 00000d71: PUSH2 0x0d81 00000d74: DUP9 00000d75: SLOAD 00000d76: PUSH1 0x01 00000d78: PUSH1 0x01 00000d7a: PUSH1 0x80 00000d7c: SHL 00000d7d: SUB 00000d7e: AND 00000d7f: SWAP1 00000d80: JUMP 00000d81: JUMPDEST 00000d82: SWAP3 00000d83: PUSH1 0x01 00000d85: PUSH1 0x01 00000d87: PUSH1 0x80 00000d89: SHL 00000d8a: SUB 00000d8b: SWAP2 00000d8c: DUP3 00000d8d: DUP6 00000d8e: AND 00000d8f: DUP2 00000d90: DUP5 00000d91: AND 00000d92: GT 00000d93: ISZERO 00000d94: PUSH2 0x0e47 00000d97: JUMPI 00000d98: POP 00000d99: DUP4 00000d9a: SWAP9 00000d9b: DUP10 00000d9c: SWAP5 00000d9d: JUMPDEST 00000d9e: DUP6 00000d9f: SWAP11 00000da0: PUSH2 0x0da8 00000da3: SWAP2 00000da4: PUSH2 0x0bfb 00000da7: JUMP 00000da8: JUMPDEST 00000da9: DUP2 00000daa: SLOAD 00000dab: PUSH16 0xffffffffffffffffffffffffffffffff 00000dbc: NOT 00000dbd: AND 00000dbe: PUSH1 0x01 00000dc0: PUSH1 0x01 00000dc2: PUSH1 0x80 00000dc4: SHL 00000dc5: SUB 00000dc6: SWAP1 00000dc7: SWAP2 00000dc8: AND 00000dc9: OR 00000dca: SWAP1 00000dcb: SSTORE 00000dcc: PUSH2 0x0dd4 00000dcf: DUP8 00000dd0: PUSH2 0x0c19 00000dd3: JUMP 00000dd4: JUMPDEST 00000dd5: PUSH1 0x80 00000dd7: DUP9 00000dd8: ADD 00000dd9: SWAP3 00000dda: PUSH2 0x0de2 00000ddd: DUP5 00000dde: PUSH2 0x0a03 00000de1: JUMP 00000de2: JUMPDEST 00000de3: SWAP1 00000de4: DUP7 00000de5: AND 00000de6: SWAP1 00000de7: CALLER 00000de8: SWAP1 00000de9: PUSH2 0x0df1 00000dec: SWAP4 00000ded: PUSH2 0x182b 00000df0: JUMP 00000df1: JUMPDEST 00000df2: PUSH2 0x0dfa 00000df5: SWAP1 00000df6: PUSH2 0x0a03 00000df9: JUMP 00000dfa: JUMPDEST 00000dfb: SWAP6 00000dfc: PUSH2 0x0e04 00000dff: SWAP1 00000e00: PUSH2 0x0c19 00000e03: JUMP 00000e04: JUMPDEST 00000e05: SWAP1 00000e06: PUSH2 0x0e0e 00000e09: SWAP1 00000e0a: PUSH2 0x0a03 00000e0d: JUMP 00000e0e: JUMPDEST 00000e0f: SWAP4 00000e10: MLOAD 00000e11: SWAP3 00000e12: DUP4 00000e13: SWAP3 00000e14: CALLER 00000e15: SWAP8 00000e16: AND 00000e17: SWAP5 00000e18: PUSH2 0x0e21 00000e1b: SWAP3 00000e1c: DUP5 00000e1d: PUSH2 0x0c23 00000e20: JUMP 00000e21: JUMPDEST 00000e22: SUB 00000e23: PUSH32 0x1ef0986161a82a71426dec04dd3ef55fbf8e44e3cfebccb087acb2f97839c05d 00000e44: SWAP2 00000e45: LOG4 00000e46: JUMP 00000e47: JUMPDEST 00000e48: SWAP9 00000e49: DUP10 00000e4a: SWAP5 00000e4b: PUSH2 0x0d9d 00000e4e: JUMP 00000e4f: JUMPDEST 00000e50: DUP5 00000e51: MLOAD 00000e52: PUSH4 0x671e4309 00000e57: PUSH1 0xe0 00000e59: SHL 00000e5a: DUP2 00000e5b: MSTORE 00000e5c: PUSH1 0x04 00000e5e: DUP2 00000e5f: ADD 00000e60: SWAP2 00000e61: SWAP1 00000e62: SWAP2 00000e63: MSTORE 00000e64: PUSH1 0x24 00000e66: DUP2 00000e67: ADD 00000e68: DUP7 00000e69: SWAP1 00000e6a: MSTORE 00000e6b: PUSH1 0x44 00000e6d: SWAP1 00000e6e: REVERT 00000e6f: JUMPDEST 00000e70: DUP4 00000e71: MLOAD 00000e72: PUSH4 0x7d21f895 00000e77: PUSH1 0xe0 00000e79: SHL 00000e7a: DUP2 00000e7b: MSTORE 00000e7c: DUP1 00000e7d: PUSH2 0x0631 00000e80: DUP9 00000e81: PUSH1 0x04 00000e83: DUP4 00000e84: ADD 00000e85: PUSH2 0x0b0f 00000e88: JUMP 00000e89: JUMPDEST 00000e8a: SWAP2 00000e8b: MLOAD 00000e8c: PUSH4 0x2a48cd05 00000e91: PUSH1 0xe0 00000e93: SHL 00000e94: DUP2 00000e95: MSTORE 00000e96: CALLER 00000e97: PUSH1 0x04 00000e99: DUP3 00000e9a: ADD 00000e9b: MSTORE 00000e9c: PUSH1 0x01 00000e9e: PUSH1 0x01 00000ea0: PUSH1 0xa0 00000ea2: SHL 00000ea3: SUB 00000ea4: SWAP1 00000ea5: SWAP3 00000ea6: AND 00000ea7: PUSH1 0x24 00000ea9: DUP4 00000eaa: ADD 00000eab: MSTORE 00000eac: POP 00000ead: PUSH1 0x44 00000eaf: DUP2 00000eb0: ADD 00000eb1: SWAP2 00000eb2: SWAP1 00000eb3: SWAP2 00000eb4: MSTORE 00000eb5: PUSH1 0x64 00000eb7: SWAP1 00000eb8: REVERT 00000eb9: JUMPDEST 00000eba: PUSH2 0x0ed2 00000ebd: SWAP2 00000ebe: SWAP7 00000ebf: POP 00000ec0: PUSH1 0x20 00000ec2: RETURNDATASIZE 00000ec3: DUP2 00000ec4: GT 00000ec5: PUSH2 0x065e 00000ec8: JUMPI 00000ec9: PUSH2 0x064f 00000ecc: DUP2 00000ecd: DUP4 00000ece: PUSH2 0x0962 00000ed1: JUMP 00000ed2: JUMPDEST 00000ed3: SWAP5 00000ed4: CODESIZE 00000ed5: PUSH2 0x0ca4 00000ed8: JUMP 00000ed9: JUMPDEST 00000eda: CALLDATALOAD 00000edb: PUSH2 0x0a0d 00000ede: DUP2 00000edf: PUSH2 0x0a3f 00000ee2: JUMP 00000ee3: JUMPDEST 00000ee4: PUSH1 0x40 00000ee6: DUP2 00000ee7: ADD 00000ee8: SWAP1 00000ee9: PUSH2 0x0ef4 00000eec: PUSH2 0x0cc4 00000eef: DUP4 00000ef0: PUSH2 0x0a03 00000ef3: JUMP 00000ef4: JUMPDEST 00000ef5: SWAP3 00000ef6: PUSH2 0x0f0e 00000ef9: PUSH1 0x20 00000efb: DUP4 00000efc: ADD 00000efd: CALLDATALOAD 00000efe: DUP1 00000eff: SWAP6 00000f00: SWAP1 00000f01: PUSH1 0x00 00000f03: MSTORE 00000f04: PUSH1 0x20 00000f06: MSTORE 00000f07: PUSH1 0x40 00000f09: PUSH1 0x00 00000f0b: KECCAK256 00000f0c: SWAP1 00000f0d: JUMP 00000f0e: JUMPDEST 00000f0f: SWAP3 00000f10: DUP4 00000f11: SLOAD 00000f12: PUSH2 0x0f1e 00000f15: PUSH2 0x0d08 00000f18: CALLDATASIZE 00000f19: DUP7 00000f1a: PUSH2 0x0a77 00000f1d: JUMP 00000f1e: JUMPDEST 00000f1f: SUB 00000f20: PUSH2 0x106f 00000f23: JUMPI 00000f24: PUSH1 0x60 00000f26: DUP4 00000f27: ADD 00000f28: SWAP5 00000f29: PUSH2 0x0f31 00000f2c: DUP7 00000f2d: PUSH2 0x0a03 00000f30: JUMP 00000f31: JUMPDEST 00000f32: PUSH1 0x01 00000f34: PUSH1 0x01 00000f36: PUSH1 0xa0 00000f38: SHL 00000f39: SUB 00000f3a: SWAP6 00000f3b: SWAP1 00000f3c: CALLER 00000f3d: SWAP1 00000f3e: DUP8 00000f3f: AND 00000f40: SUB 00000f41: PUSH2 0x1036 00000f44: JUMPI 00000f45: PUSH1 0x01 00000f47: ADD 00000f48: SWAP1 00000f49: PUSH2 0x0f57 00000f4c: DUP3 00000f4d: SLOAD 00000f4e: PUSH1 0xff 00000f50: SWAP1 00000f51: PUSH1 0x80 00000f53: SHR 00000f54: AND 00000f55: SWAP1 00000f56: JUMP 00000f57: JUMPDEST 00000f58: PUSH2 0x101c 00000f5b: JUMPI 00000f5c: POP 00000f5d: PUSH2 0x0fc4 00000f60: SWAP5 00000f61: SWAP3 00000f62: PUSH2 0x1005 00000f65: PUSH2 0x0fff 00000f68: PUSH2 0x0ff9 00000f6b: PUSH2 0x0ff3 00000f6e: PUSH2 0x0fed 00000f71: PUSH32 0x9ee811b8d470c07207b34bef36a0706a357a2e82032798c9bf96dd3d5b7f637c 00000f92: SWAP10 00000f93: SWAP8 00000f94: PUSH2 0x0fad 00000f97: PUSH2 0x1017 00000f9a: SWAP9 00000f9b: PUSH1 0x01 00000f9d: PUSH1 0x80 00000f9f: SHL 00000fa0: PUSH1 0xff 00000fa2: PUSH1 0x80 00000fa4: SHL 00000fa5: NOT 00000fa6: DUP3 00000fa7: SLOAD 00000fa8: AND 00000fa9: OR 00000faa: SWAP1 00000fab: SSTORE 00000fac: JUMP 00000fad: JUMPDEST 00000fae: PUSH2 0x0fe8 00000fb1: PUSH2 0x0fb9 00000fb4: DUP11 00000fb5: PUSH2 0x0c19 00000fb8: JUMP 00000fb9: JUMPDEST 00000fba: PUSH1 0x80 00000fbc: DUP12 00000fbd: ADD 00000fbe: SWAP14 00000fbf: DUP15 00000fc0: PUSH2 0x0a03 00000fc3: JUMP 00000fc4: JUMPDEST 00000fc5: SWAP9 00000fc6: PUSH1 0xc0 00000fc8: DUP13 00000fc9: ADD 00000fca: SWAP10 00000fcb: PUSH2 0x0fe2 00000fce: PUSH2 0x0fd6 00000fd1: DUP13 00000fd2: PUSH2 0x0ed9 00000fd5: JUMP 00000fd6: JUMPDEST 00000fd7: PUSH1 0x01 00000fd9: PUSH1 0x01 00000fdb: PUSH1 0x80 00000fdd: SHL 00000fde: SUB 00000fdf: AND 00000fe0: SWAP1 00000fe1: JUMP 00000fe2: JUMPDEST 00000fe3: SWAP3 00000fe4: PUSH2 0x182b 00000fe7: JUMP 00000fe8: JUMPDEST 00000fe9: PUSH2 0x0a03 00000fec: JUMP 00000fed: JUMPDEST 00000fee: SWAP11 00000fef: PUSH2 0x0a03 00000ff2: JUMP 00000ff3: JUMPDEST 00000ff4: SWAP6 00000ff5: PUSH2 0x0c19 00000ff8: JUMP 00000ff9: JUMPDEST 00000ffa: SWAP8 00000ffb: PUSH2 0x0a03 00000ffe: JUMP 00000fff: JUMPDEST 00001000: SWAP2 00001001: PUSH2 0x0ed9 00001004: JUMP 00001005: JUMPDEST 00001006: SWAP1 00001007: DUP5 00001008: PUSH1 0x40 0000100a: MLOAD 0000100b: SWAP6 0000100c: DUP7 0000100d: SWAP6 0000100e: AND 0000100f: SWAP9 00001010: AND 00001011: SWAP7 00001012: DUP5 00001013: PUSH2 0x0c23 00001016: JUMP 00001017: JUMPDEST 00001018: SUB 00001019: SWAP1 0000101a: LOG3 0000101b: JUMP 0000101c: JUMPDEST 0000101d: PUSH1 0x40 0000101f: MLOAD 00001020: PUSH4 0x08a63473 00001025: PUSH1 0xe1 00001027: SHL 00001028: DUP2 00001029: MSTORE 0000102a: PUSH1 0x04 0000102c: DUP2 0000102d: ADD 0000102e: SWAP2 0000102f: SWAP1 00001030: SWAP2 00001031: MSTORE 00001032: PUSH1 0x24 00001034: SWAP1 00001035: REVERT 00001036: JUMPDEST 00001037: PUSH2 0x0631 0000103a: PUSH2 0x1042 0000103d: DUP9 0000103e: PUSH2 0x0a03 00001041: JUMP 00001042: JUMPDEST 00001043: PUSH1 0x40 00001045: MLOAD 00001046: PUSH4 0x16fcee07 0000104b: PUSH1 0xe3 0000104d: SHL 0000104e: DUP2 0000104f: MSTORE 00001050: CALLER 00001051: PUSH1 0x04 00001053: DUP3 00001054: ADD 00001055: MSTORE 00001056: PUSH1 0x01 00001058: PUSH1 0x01 0000105a: PUSH1 0xa0 0000105c: SHL 0000105d: SUB 0000105e: SWAP1 0000105f: SWAP2 00001060: AND 00001061: PUSH1 0x24 00001063: DUP3 00001064: ADD 00001065: MSTORE 00001066: SWAP1 00001067: DUP2 00001068: SWAP1 00001069: PUSH1 0x44 0000106b: DUP3 0000106c: ADD 0000106d: SWAP1 0000106e: JUMP 0000106f: JUMPDEST 00001070: PUSH1 0x40 00001072: MLOAD 00001073: PUSH4 0x7d21f895 00001078: PUSH1 0xe0 0000107a: SHL 0000107b: DUP2 0000107c: MSTORE 0000107d: DUP1 0000107e: PUSH2 0x0631 00001081: DUP6 00001082: PUSH1 0x04 00001084: DUP4 00001085: ADD 00001086: PUSH2 0x0b0f 00001089: JUMP 0000108a: JUMPDEST 0000108b: PUSH8 0xffffffffffffffff 00001094: DUP2 00001095: GT 00001096: PUSH2 0x0924 00001099: JUMPI 0000109a: PUSH1 0x05 0000109c: SHL 0000109d: PUSH1 0x20 0000109f: ADD 000010a0: SWAP1 000010a1: JUMP 000010a2: JUMPDEST 000010a3: PUSH1 0x00 000010a5: NOT 000010a6: DUP2 000010a7: EQ 000010a8: PUSH2 0x0c14 000010ab: JUMPI 000010ac: PUSH1 0x01 000010ae: ADD 000010af: SWAP1 000010b0: JUMP 000010b1: JUMPDEST 000010b2: PUSH4 0x4e487b71 000010b7: PUSH1 0xe0 000010b9: SHL 000010ba: PUSH1 0x00 000010bc: MSTORE 000010bd: PUSH1 0x32 000010bf: PUSH1 0x04 000010c1: MSTORE 000010c2: PUSH1 0x24 000010c4: PUSH1 0x00 000010c6: REVERT 000010c7: JUMPDEST 000010c8: SWAP2 000010c9: SWAP1 000010ca: DUP2 000010cb: LT 000010cc: ISZERO 000010cd: PUSH2 0x0506 000010d0: JUMPI 000010d1: PUSH1 0x08 000010d3: SHL 000010d4: ADD 000010d5: SWAP1 000010d6: JUMP 000010d7: JUMPDEST 000010d8: SWAP2 000010d9: SWAP1 000010da: DUP2 000010db: LT 000010dc: ISZERO 000010dd: PUSH2 0x0506 000010e0: JUMPI 000010e1: PUSH1 0x05 000010e3: SHL 000010e4: ADD 000010e5: SWAP1 000010e6: JUMP 000010e7: JUMPDEST 000010e8: RETURNDATASIZE 000010e9: ISZERO 000010ea: PUSH2 0x1122 000010ed: JUMPI 000010ee: RETURNDATASIZE 000010ef: SWAP1 000010f0: PUSH8 0xffffffffffffffff 000010f9: DUP3 000010fa: GT 000010fb: PUSH2 0x0924 000010fe: JUMPI 000010ff: PUSH1 0x40 00001101: MLOAD 00001102: SWAP2 00001103: PUSH2 0x1116 00001106: PUSH1 0x1f 00001108: DUP3 00001109: ADD 0000110a: PUSH1 0x1f 0000110c: NOT 0000110d: AND 0000110e: PUSH1 0x20 00001110: ADD 00001111: DUP5 00001112: PUSH2 0x0962 00001115: JUMP 00001116: JUMPDEST 00001117: DUP3 00001118: MSTORE 00001119: RETURNDATASIZE 0000111a: PUSH1 0x00 0000111c: PUSH1 0x20 0000111e: DUP5 0000111f: ADD 00001120: RETURNDATACOPY 00001121: JUMP 00001122: JUMPDEST 00001123: PUSH1 0x60 00001125: SWAP1 00001126: JUMP 00001127: JUMPDEST 00001128: SWAP1 00001129: DUP2 0000112a: PUSH1 0x20 0000112c: SWAP2 0000112d: SUB 0000112e: SLT 0000112f: PUSH2 0x0139 00001132: JUMPI 00001133: MLOAD 00001134: PUSH2 0x0a0d 00001137: DUP2 00001138: PUSH2 0x01a1 0000113b: JUMP 0000113c: JUMPDEST 0000113d: SWAP1 0000113e: PUSH8 0x0de0b6b3a7640000 00001147: SWAP2 00001148: DUP3 00001149: DUP2 0000114a: MUL 0000114b: SWAP3 0000114c: DUP2 0000114d: DUP5 0000114e: DIV 0000114f: EQ 00001150: SWAP1 00001151: ISZERO 00001152: OR 00001153: ISZERO 00001154: PUSH2 0x0c14 00001157: JUMPI 00001158: JUMP 00001159: JUMPDEST 0000115a: DUP2 0000115b: DUP2 0000115c: MUL 0000115d: SWAP3 0000115e: SWAP2 0000115f: DUP2 00001160: ISZERO 00001161: SWAP2 00001162: DUP5 00001163: DIV 00001164: EQ 00001165: OR 00001166: ISZERO 00001167: PUSH2 0x0c14 0000116a: JUMPI 0000116b: JUMP 0000116c: JUMPDEST 0000116d: SWAP1 0000116e: PUSH8 0x0de0b6b3a763ffff 00001177: DUP3 00001178: ADD 00001179: DUP1 0000117a: SWAP3 0000117b: GT 0000117c: PUSH2 0x0c14 0000117f: JUMPI 00001180: JUMP 00001181: JUMPDEST 00001182: DUP2 00001183: ISZERO 00001184: PUSH2 0x118b 00001187: JUMPI 00001188: DIV 00001189: SWAP1 0000118a: JUMP 0000118b: JUMPDEST 0000118c: PUSH4 0x4e487b71 00001191: PUSH1 0xe0 00001193: SHL 00001194: PUSH1 0x00 00001196: MSTORE 00001197: PUSH1 0x12 00001199: PUSH1 0x04 0000119b: MSTORE 0000119c: PUSH1 0x24 0000119e: PUSH1 0x00 000011a0: REVERT 000011a1: JUMPDEST 000011a2: CALLDATALOAD 000011a3: PUSH2 0x0a0d 000011a6: DUP2 000011a7: PUSH2 0x0a5b 000011aa: JUMP 000011ab: JUMPDEST 000011ac: PUSH1 0x40 000011ae: DUP2 000011af: ADD 000011b0: SWAP2 000011b1: PUSH2 0x11bc 000011b4: PUSH2 0x0c68 000011b7: DUP5 000011b8: PUSH2 0x0a03 000011bb: JUMP 000011bc: JUMPDEST 000011bd: SWAP3 000011be: PUSH1 0x40 000011c0: MLOAD 000011c1: SWAP4 000011c2: PUSH1 0x00 000011c4: DUP1 000011c5: PUSH1 0x20 000011c7: SWAP7 000011c8: DUP8 000011c9: DUP2 000011ca: ADD 000011cb: SWAP1 000011cc: PUSH4 0x663dce83 000011d1: PUSH1 0xe1 000011d3: SHL 000011d4: DUP3 000011d5: MSTORE 000011d6: PUSH1 0x04 000011d8: DUP2 000011d9: MSTORE 000011da: PUSH2 0x11e2 000011dd: DUP2 000011de: PUSH2 0x0946 000011e1: JUMP 000011e2: JUMPDEST 000011e3: MLOAD 000011e4: SWAP1 000011e5: DUP5 000011e6: GAS 000011e7: STATICCALL 000011e8: PUSH2 0x11ef 000011eb: PUSH2 0x10e7 000011ee: JUMP 000011ef: JUMPDEST 000011f0: DUP2 000011f1: PUSH2 0x1344 000011f4: JUMPI 000011f5: JUMPDEST 000011f6: POP 000011f7: ISZERO 000011f8: PUSH2 0x12c9 000011fb: JUMPI 000011fc: POP 000011fd: SWAP3 000011fe: DUP1 000011ff: SWAP2 00001200: PUSH2 0x120f 00001203: PUSH2 0x0c68 00001206: PUSH2 0x122f 00001209: SWAP6 0000120a: SWAP7 0000120b: PUSH2 0x0a03 0000120e: JUMP 0000120f: JUMPDEST 00001210: PUSH1 0x40 00001212: MLOAD 00001213: DUP1 00001214: DUP1 00001215: SWAP7 00001216: DUP2 00001217: SWAP5 00001218: PUSH4 0x1e33eaeb 0000121d: PUSH1 0xe2 0000121f: SHL 00001220: DUP4 00001221: MSTORE 00001222: PUSH1 0x04 00001224: DUP4 00001225: ADD 00001226: SWAP2 00001227: SWAP1 00001228: PUSH1 0x20 0000122a: DUP4 0000122b: ADD 0000122c: SWAP3 0000122d: MSTORE 0000122e: JUMP 0000122f: JUMPDEST 00001230: SUB 00001231: SWAP2 00001232: GAS 00001233: STATICCALL 00001234: DUP1 00001235: ISZERO 00001236: PUSH2 0x0665 00001239: JUMPI 0000123a: PUSH2 0x0a0d 0000123d: SWAP4 0000123e: PUSH2 0x128e 00001241: PUSH2 0x0fd6 00001244: PUSH1 0xa0 00001246: PUSH2 0x1287 00001249: PUSH2 0x1266 0000124c: PUSH2 0x1294 0000124f: SWAP7 00001250: PUSH2 0x12a7 00001253: SWAP10 00001254: PUSH2 0x1299 00001257: SWAP10 00001258: PUSH1 0x00 0000125a: SWAP3 0000125b: PUSH2 0x12ac 0000125e: JUMPI 0000125f: JUMPDEST 00001260: POP 00001261: POP 00001262: PUSH2 0x113c 00001265: JUMP 00001266: JUMPDEST 00001267: PUSH2 0x1281 0000126a: PUSH2 0x1275 0000126d: PUSH1 0xe0 0000126f: DUP9 00001270: ADD 00001271: PUSH2 0x11a1 00001274: JUMP 00001275: JUMPDEST 00001276: PUSH1 0x01 00001278: PUSH1 0x01 0000127a: PUSH1 0x60 0000127c: SHL 0000127d: SUB 0000127e: AND 0000127f: SWAP1 00001280: JUMP 00001281: JUMPDEST 00001282: SWAP1 00001283: PUSH2 0x1181 00001286: JUMP 00001287: JUMPDEST 00001288: SWAP4 00001289: ADD 0000128a: PUSH2 0x0ed9 0000128d: JUMP 0000128e: JUMPDEST 0000128f: SWAP1 00001290: PUSH2 0x1159 00001293: JUMP 00001294: JUMPDEST 00001295: PUSH2 0x116c 00001298: JUMP 00001299: JUMPDEST 0000129a: PUSH8 0x0de0b6b3a7640000 000012a3: SWAP1 000012a4: DIV 000012a5: SWAP1 000012a6: JUMP 000012a7: JUMPDEST 000012a8: PUSH2 0x1a7e 000012ab: JUMP 000012ac: JUMPDEST 000012ad: PUSH2 0x12c2 000012b0: SWAP3 000012b1: POP 000012b2: DUP1 000012b3: RETURNDATASIZE 000012b4: LT 000012b5: PUSH2 0x08eb 000012b8: JUMPI 000012b9: PUSH2 0x08dc 000012bc: DUP2 000012bd: DUP4 000012be: PUSH2 0x0962 000012c1: JUMP 000012c2: JUMPDEST 000012c3: CODESIZE 000012c4: DUP1 000012c5: PUSH2 0x125f 000012c8: JUMP 000012c9: JUMPDEST 000012ca: PUSH1 0x40 000012cc: MLOAD 000012cd: PUSH4 0x1e33eaeb 000012d2: PUSH1 0xe2 000012d4: SHL 000012d5: DUP2 000012d6: MSTORE 000012d7: PUSH1 0x04 000012d9: DUP2 000012da: ADD 000012db: SWAP4 000012dc: SWAP1 000012dd: SWAP4 000012de: MSTORE 000012df: DUP5 000012e0: SWAP2 000012e1: POP 000012e2: DUP3 000012e3: SWAP1 000012e4: PUSH1 0x24 000012e6: SWAP1 000012e7: DUP3 000012e8: SWAP1 000012e9: GAS 000012ea: STATICCALL 000012eb: SWAP3 000012ec: DUP4 000012ed: ISZERO 000012ee: PUSH2 0x0665 000012f1: JUMPI 000012f2: PUSH2 0x0a0d 000012f5: SWAP4 000012f6: PUSH2 0x12a7 000012f9: SWAP4 000012fa: PUSH2 0x1299 000012fd: SWAP4 000012fe: PUSH2 0x1294 00001301: SWAP4 00001302: PUSH1 0x00 00001304: SWAP4 00001305: PUSH2 0x131a 00001308: JUMPI 00001309: JUMPDEST 0000130a: POP 0000130b: POP 0000130c: PUSH2 0x0fd6 0000130f: PUSH1 0xa0 00001311: PUSH2 0x128e 00001314: SWAP3 00001315: ADD 00001316: PUSH2 0x0ed9 00001319: JUMP 0000131a: JUMPDEST 0000131b: PUSH2 0x128e 0000131e: SWAP3 0000131f: SWAP4 00001320: POP 00001321: PUSH2 0x133c 00001324: PUSH2 0x0fd6 00001327: SWAP3 00001328: DUP3 00001329: PUSH1 0xa0 0000132b: SWAP4 0000132c: SWAP1 0000132d: RETURNDATASIZE 0000132e: LT 0000132f: PUSH2 0x08eb 00001332: JUMPI 00001333: PUSH2 0x08dc 00001336: DUP2 00001337: DUP4 00001338: PUSH2 0x0962 0000133b: JUMP 0000133c: JUMPDEST 0000133d: SWAP4 0000133e: SWAP3 0000133f: POP 00001340: PUSH2 0x1309 00001343: JUMP 00001344: JUMPDEST 00001345: PUSH1 0x01 00001347: SWAP2 00001348: POP 00001349: PUSH2 0x135d 0000134c: DUP2 0000134d: DUP9 0000134e: DUP1 0000134f: PUSH2 0xffff 00001352: SWAP5 00001353: MLOAD 00001354: DUP4 00001355: ADD 00001356: ADD 00001357: SWAP2 00001358: ADD 00001359: PUSH2 0x1127 0000135c: JUMP 0000135d: JUMPDEST 0000135e: AND 0000135f: LT 00001360: ISZERO 00001361: CODESIZE 00001362: PUSH2 0x11f5 00001365: JUMP 00001366: JUMPDEST 00001367: SWAP1 00001368: SWAP2 00001369: PUSH5 0xffffffffff 0000136f: PUSH32 0x00000000000000000000000000000000000000000000000000000000666b190b 00001390: AND 00001391: TIMESTAMP 00001392: GT 00001393: PUSH2 0x1424 00001396: JUMPI 00001397: PUSH1 0x00 00001399: DUP1 0000139a: PUSH1 0x40 0000139c: MLOAD 0000139d: DUP4 0000139e: DUP7 0000139f: DUP3 000013a0: CALLDATACOPY 000013a1: DUP1 000013a2: DUP5 000013a3: DUP2 000013a4: ADD 000013a5: DUP4 000013a6: DUP2 000013a7: MSTORE 000013a8: SUB 000013a9: SWAP1 000013aa: DUP6 000013ab: GAS 000013ac: DELEGATECALL 000013ad: PUSH2 0x13b4 000013b0: PUSH2 0x10e7 000013b3: JUMP 000013b4: JUMPDEST 000013b5: SWAP1 000013b6: ISZERO 000013b7: PUSH2 0x141c 000013ba: JUMPI 000013bb: POP 000013bc: PUSH1 0x40 000013be: DUP1 000013bf: MLOAD 000013c0: PUSH1 0x01 000013c2: PUSH1 0x01 000013c4: PUSH1 0xa0 000013c6: SHL 000013c7: SUB 000013c8: SWAP1 000013c9: SWAP4 000013ca: AND 000013cb: DUP4 000013cc: MSTORE 000013cd: PUSH1 0x20 000013cf: DUP4 000013d0: ADD 000013d1: DUP2 000013d2: SWAP1 000013d3: MSTORE 000013d4: DUP3 000013d5: ADD 000013d6: DUP2 000013d7: SWAP1 000013d8: MSTORE 000013d9: PUSH32 0x14558cdd2442ce65f94cbb821f6ab6b96098fb84a9b0e73fb770ecf12402823c 000013fa: SWAP3 000013fb: PUSH1 0x60 000013fd: SWAP2 000013fe: DUP4 000013ff: SWAP2 00001400: DUP2 00001401: SWAP1 00001402: DUP4 00001403: DUP6 00001404: ADD 00001405: CALLDATACOPY 00001406: PUSH1 0x00 00001408: DUP3 00001409: DUP3 0000140a: ADD 0000140b: DUP5 0000140c: ADD 0000140d: MSTORE 0000140e: PUSH1 0x1f 00001410: ADD 00001411: PUSH1 0x1f 00001413: NOT 00001414: AND 00001415: DUP2 00001416: ADD 00001417: SUB 00001418: ADD 00001419: SWAP1 0000141a: LOG1 0000141b: JUMP 0000141c: JUMPDEST 0000141d: PUSH1 0x20 0000141f: DUP2 00001420: MLOAD 00001421: SWAP2 00001422: ADD 00001423: REVERT 00001424: JUMPDEST 00001425: PUSH1 0x40 00001427: MLOAD 00001428: PUSH4 0x024780c7 0000142d: PUSH1 0xe1 0000142f: SHL 00001430: DUP2 00001431: MSTORE 00001432: PUSH1 0x04 00001434: SWAP1 00001435: REVERT 00001436: JUMPDEST 00001437: SWAP2 00001438: SWAP1 00001439: DUP3 0000143a: SUB 0000143b: SWAP2 0000143c: DUP3 0000143d: GT 0000143e: PUSH2 0x0c14 00001441: JUMPI 00001442: JUMP 00001443: JUMPDEST 00001444: SWAP2 00001445: SWAP1 00001446: SWAP2 00001447: PUSH1 0x01 00001449: PUSH1 0x01 0000144b: PUSH1 0x80 0000144d: SHL 0000144e: SUB 0000144f: DUP1 00001450: DUP1 00001451: SWAP5 00001452: AND 00001453: SWAP2 00001454: AND 00001455: MUL 00001456: SWAP2 00001457: DUP3 00001458: AND 00001459: SWAP2 0000145a: DUP3 0000145b: SUB 0000145c: PUSH2 0x0c14 0000145f: JUMPI 00001460: JUMP 00001461: JUMPDEST 00001462: MLOAD 00001463: SWAP1 00001464: PUSH5 0xffffffffff 0000146a: DUP3 0000146b: AND 0000146c: DUP3 0000146d: SUB 0000146e: PUSH2 0x0139 00001471: JUMPI 00001472: JUMP 00001473: JUMPDEST 00001474: SWAP1 00001475: DUP2 00001476: PUSH1 0x80 00001478: SWAP2 00001479: SUB 0000147a: SLT 0000147b: PUSH2 0x0139 0000147e: JUMPI 0000147f: PUSH1 0x40 00001481: MLOAD 00001482: SWAP1 00001483: PUSH1 0x80 00001485: DUP3 00001486: ADD 00001487: SWAP1 00001488: DUP3 00001489: DUP3 0000148a: LT 0000148b: PUSH8 0xffffffffffffffff 00001494: DUP4 00001495: GT 00001496: OR 00001497: PUSH2 0x0924 0000149a: JUMPI 0000149b: PUSH1 0x60 0000149d: SWAP2 0000149e: PUSH1 0x40 000014a0: MSTORE 000014a1: PUSH2 0x14a9 000014a4: DUP2 000014a5: PUSH2 0x1461 000014a8: JUMP 000014a9: JUMPDEST 000014aa: DUP4 000014ab: MSTORE 000014ac: PUSH2 0x14b7 000014af: PUSH1 0x20 000014b1: DUP3 000014b2: ADD 000014b3: PUSH2 0x1461 000014b6: JUMP 000014b7: JUMPDEST 000014b8: PUSH1 0x20 000014ba: DUP5 000014bb: ADD 000014bc: MSTORE 000014bd: PUSH1 0x40 000014bf: DUP2 000014c0: ADD 000014c1: MLOAD 000014c2: PUSH2 0x14ca 000014c5: DUP2 000014c6: PUSH2 0x01a1 000014c9: JUMP 000014ca: JUMPDEST 000014cb: PUSH1 0x40 000014cd: DUP5 000014ce: ADD 000014cf: MSTORE 000014d0: ADD 000014d1: MLOAD 000014d2: PUSH2 0x14da 000014d5: DUP2 000014d6: PUSH2 0x0a5b 000014d9: JUMP 000014da: JUMPDEST 000014db: PUSH1 0x60 000014dd: DUP3 000014de: ADD 000014df: MSTORE 000014e0: SWAP1 000014e1: JUMP 000014e2: JUMPDEST 000014e3: SWAP1 000014e4: PUSH2 0x14eb 000014e7: PUSH2 0x099e 000014ea: JUMP 000014eb: JUMPDEST 000014ec: POP 000014ed: PUSH1 0xa0 000014ef: DUP3 000014f0: ADD 000014f1: DUP1 000014f2: MLOAD 000014f3: PUSH2 0xffff 000014f6: AND 000014f7: PUSH2 0x2710 000014fa: DUP2 000014fb: GT 000014fc: PUSH2 0x17f0 000014ff: JUMPI 00001500: POP 00001501: PUSH1 0x20 00001503: DUP4 00001504: ADD 00001505: SWAP3 00001506: DUP4 00001507: MLOAD 00001508: SWAP4 00001509: PUSH2 0x1511 0000150c: DUP6 0000150d: PUSH2 0x01ad 00001510: JUMP 00001511: JUMPDEST 00001512: PUSH1 0x40 00001514: DUP3 00001515: ADD 00001516: DUP1 00001517: MLOAD 00001518: SWAP1 00001519: SWAP6 0000151a: PUSH2 0x152c 0000151d: SWAP2 0000151e: PUSH1 0x01 00001520: PUSH1 0x01 00001522: PUSH1 0xa0 00001524: SHL 00001525: SUB 00001526: AND 00001527: SWAP1 00001528: PUSH2 0x18b1 0000152b: JUMP 0000152c: JUMPDEST 0000152d: SWAP3 0000152e: PUSH1 0x60 00001530: DUP4 00001531: ADD 00001532: SWAP4 00001533: PUSH2 0x1555 00001536: PUSH2 0x12a7 00001539: DUP7 0000153a: MLOAD 0000153b: PUSH2 0x154e 0000153e: DUP5 0000153f: PUSH1 0x00 00001541: MSTORE 00001542: PUSH1 0x01 00001544: PUSH1 0x20 00001546: MSTORE 00001547: PUSH1 0x40 00001549: PUSH1 0x00 0000154b: KECCAK256 0000154c: SWAP1 0000154d: JUMP 0000154e: JUMPDEST 0000154f: SLOAD 00001550: SWAP1 00001551: PUSH2 0x1436 00001554: JUMP 00001555: JUMPDEST 00001556: SWAP5 00001557: PUSH1 0x01 00001559: PUSH1 0x01 0000155b: PUSH1 0x80 0000155d: SHL 0000155e: SUB 0000155f: DUP7 00001560: AND 00001561: ISZERO 00001562: PUSH2 0x17cf 00001565: JUMPI 00001566: PUSH2 0x159c 00001569: PUSH2 0x1595 0000156c: PUSH2 0x15ba 0000156f: SWAP5 00001570: PUSH2 0x15b3 00001573: SWAP5 00001574: PUSH2 0x158c 00001577: PUSH2 0x15a2 0000157a: SWAP6 0000157b: MLOAD 0000157c: SWAP2 0000157d: PUSH1 0x00 0000157f: MSTORE 00001580: PUSH1 0x01 00001582: PUSH1 0x20 00001584: MSTORE 00001585: PUSH1 0x40 00001587: PUSH1 0x00 00001589: KECCAK256 0000158a: SWAP1 0000158b: JUMP 0000158c: JUMPDEST 0000158d: SSTORE 0000158e: MLOAD 0000158f: PUSH2 0xffff 00001592: AND 00001593: SWAP1 00001594: JUMP 00001595: JUMPDEST 00001596: PUSH2 0xffff 00001599: AND 0000159a: SWAP1 0000159b: JUMP 0000159c: JUMPDEST 0000159d: DUP7 0000159e: PUSH2 0x1443 000015a1: JUMP 000015a2: JUMPDEST 000015a3: PUSH1 0x01 000015a5: PUSH1 0x01 000015a7: PUSH1 0x80 000015a9: SHL 000015aa: SUB 000015ab: PUSH2 0x2710 000015ae: SWAP2 000015af: AND 000015b0: DIV 000015b1: SWAP1 000015b2: JUMP 000015b3: JUMPDEST 000015b4: DUP1 000015b5: SWAP5 000015b6: PUSH2 0x0bfb 000015b9: JUMP 000015ba: JUMPDEST 000015bb: SWAP1 000015bc: MLOAD 000015bd: SWAP3 000015be: PUSH2 0x15c6 000015c1: DUP5 000015c2: PUSH2 0x01ad 000015c5: JUMP 000015c6: JUMPDEST 000015c7: DUP3 000015c8: MLOAD 000015c9: PUSH1 0x01 000015cb: PUSH1 0x01 000015cd: PUSH1 0xa0 000015cf: SHL 000015d0: SUB 000015d1: AND 000015d2: PUSH1 0x00 000015d4: SWAP1 000015d5: DUP2 000015d6: MSTORE 000015d7: PUSH1 0x20 000015d9: DUP2 000015da: SWAP1 000015db: MSTORE 000015dc: PUSH1 0x40 000015de: SWAP1 000015df: KECCAK256 000015e0: PUSH2 0x15ff 000015e3: SWAP1 000015e4: SWAP7 000015e5: PUSH2 0x15ee 000015e8: DUP9 000015e9: SLOAD 000015ea: PUSH2 0x10a2 000015ed: JUMP 000015ee: JUMPDEST 000015ef: SWAP8 000015f0: DUP9 000015f1: SWAP1 000015f2: SSTORE 000015f3: MLOAD 000015f4: PUSH1 0x01 000015f6: PUSH1 0x01 000015f8: PUSH1 0xa0 000015fa: SHL 000015fb: SUB 000015fc: AND 000015fd: SWAP1 000015fe: JUMP 000015ff: JUMPDEST 00001600: DUP4 00001601: MLOAD 00001602: SWAP1 00001603: SWAP2 00001604: SWAP1 00001605: PUSH1 0x01 00001607: PUSH1 0x01 00001609: PUSH1 0xa0 0000160b: SHL 0000160c: SUB 0000160d: AND 0000160e: PUSH1 0x80 00001610: DUP6 00001611: ADD 00001612: MLOAD 00001613: SWAP1 00001614: SWAP3 00001615: SWAP1 00001616: PUSH1 0x01 00001618: PUSH1 0x01 0000161a: PUSH1 0xa0 0000161c: SHL 0000161d: SUB 0000161e: AND 0000161f: PUSH1 0x40 00001621: MLOAD 00001622: PUSH4 0x59012077 00001627: PUSH1 0xe1 00001629: SHL 0000162a: DUP2 0000162b: MSTORE 0000162c: PUSH1 0x80 0000162e: DUP2 0000162f: PUSH1 0x04 00001631: DUP2 00001632: PUSH1 0x01 00001634: PUSH1 0x01 00001636: PUSH1 0xa0 00001638: SHL 00001639: SUB 0000163a: DUP10 0000163b: AND 0000163c: GAS 0000163d: STATICCALL 0000163e: DUP1 0000163f: ISZERO 00001640: PUSH2 0x0665 00001643: JUMPI 00001644: PUSH1 0x60 00001646: SWAP2 00001647: PUSH1 0x00 00001649: SWAP2 0000164a: PUSH2 0x17a1 0000164d: JUMPI 0000164e: JUMPDEST 0000164f: POP 00001650: ADD 00001651: MLOAD 00001652: PUSH1 0x01 00001654: PUSH1 0x01 00001656: PUSH1 0x60 00001658: SHL 00001659: SUB 0000165a: AND 0000165b: SWAP4 0000165c: PUSH2 0x1663 0000165f: PUSH2 0x0991 00001662: JUMP 00001663: JUMPDEST 00001664: SWAP8 00001665: PUSH2 0x166e 00001668: SWAP1 00001669: DUP10 0000166a: PUSH2 0x09dc 0000166d: JUMP 0000166e: JUMPDEST 0000166f: PUSH1 0x20 00001671: DUP9 00001672: ADD 00001673: SWAP10 00001674: DUP11 00001675: MSTORE 00001676: PUSH1 0x01 00001678: PUSH1 0x01 0000167a: PUSH1 0xa0 0000167c: SHL 0000167d: SUB 0000167e: AND 0000167f: PUSH1 0x40 00001681: DUP9 00001682: ADD 00001683: MSTORE 00001684: PUSH1 0x01 00001686: PUSH1 0x01 00001688: PUSH1 0xa0 0000168a: SHL 0000168b: SUB 0000168c: AND 0000168d: PUSH1 0x60 0000168f: DUP8 00001690: ADD 00001691: MSTORE 00001692: PUSH1 0x01 00001694: PUSH1 0x01 00001696: PUSH1 0xa0 00001698: SHL 00001699: SUB 0000169a: AND 0000169b: PUSH1 0x80 0000169d: DUP7 0000169e: ADD 0000169f: MSTORE 000016a0: PUSH1 0x01 000016a2: PUSH1 0x01 000016a4: PUSH1 0x80 000016a6: SHL 000016a7: SUB 000016a8: DUP4 000016a9: AND 000016aa: PUSH1 0xa0 000016ac: DUP7 000016ad: ADD 000016ae: MSTORE 000016af: PUSH1 0x01 000016b1: PUSH1 0x01 000016b3: PUSH1 0x80 000016b5: SHL 000016b6: SUB 000016b7: AND 000016b8: PUSH1 0xc0 000016ba: DUP6 000016bb: ADD 000016bc: MSTORE 000016bd: PUSH1 0x01 000016bf: PUSH1 0x01 000016c1: PUSH1 0x60 000016c3: SHL 000016c4: SUB 000016c5: AND 000016c6: PUSH1 0xe0 000016c8: DUP5 000016c9: ADD 000016ca: MSTORE 000016cb: PUSH2 0x0100 000016ce: DUP4 000016cf: KECCAK256 000016d0: DUP3 000016d1: MLOAD 000016d2: SWAP4 000016d3: SWAP6 000016d4: DUP7 000016d5: SWAP5 000016d6: SWAP2 000016d7: SWAP3 000016d8: SWAP1 000016d9: SWAP2 000016da: PUSH1 0x01 000016dc: PUSH1 0x01 000016de: PUSH1 0xa0 000016e0: SHL 000016e1: SUB 000016e2: AND 000016e3: PUSH1 0x01 000016e5: PUSH1 0x01 000016e7: PUSH1 0xa0 000016e9: SHL 000016ea: SUB 000016eb: AND 000016ec: PUSH1 0x00 000016ee: SWAP1 000016ef: DUP2 000016f0: MSTORE 000016f1: PUSH1 0x02 000016f3: PUSH1 0x20 000016f5: MSTORE 000016f6: PUSH1 0x40 000016f8: SWAP1 000016f9: KECCAK256 000016fa: DUP3 000016fb: MLOAD 000016fc: PUSH2 0x170e 000016ff: SWAP2 00001700: SWAP1 00001701: PUSH1 0x00 00001703: MSTORE 00001704: PUSH1 0x20 00001706: MSTORE 00001707: PUSH1 0x40 00001709: PUSH1 0x00 0000170b: KECCAK256 0000170c: SWAP1 0000170d: JUMP 0000170e: JUMPDEST 0000170f: DUP5 00001710: MLOAD 00001711: PUSH1 0x01 00001713: PUSH1 0x01 00001715: PUSH1 0xa0 00001717: SHL 00001718: SUB 00001719: AND 0000171a: PUSH1 0x00 0000171c: SWAP1 0000171d: DUP2 0000171e: MSTORE 0000171f: PUSH1 0x02 00001721: PUSH1 0x20 00001723: SWAP1 00001724: DUP2 00001725: MSTORE 00001726: PUSH1 0x40 00001728: DUP1 00001729: DUP4 0000172a: KECCAK256 0000172b: SWAP6 0000172c: MLOAD 0000172d: DUP4 0000172e: MSTORE 0000172f: SWAP5 00001730: SWAP1 00001731: MSTORE 00001732: SWAP3 00001733: SWAP1 00001734: SWAP3 00001735: KECCAK256 00001736: PUSH1 0x01 00001738: ADD 00001739: SWAP1 0000173a: PUSH2 0x1758 0000173d: SWAP2 0000173e: SWAP1 0000173f: PUSH1 0x01 00001741: PUSH1 0x01 00001743: PUSH1 0x80 00001745: SHL 00001746: SUB 00001747: AND 00001748: PUSH1 0x01 0000174a: PUSH1 0x01 0000174c: PUSH1 0x80 0000174e: SHL 0000174f: SUB 00001750: NOT 00001751: DUP3 00001752: SLOAD 00001753: AND 00001754: OR 00001755: SWAP1 00001756: SSTORE 00001757: JUMP 00001758: JUMPDEST 00001759: SSTORE 0000175a: MLOAD 0000175b: PUSH1 0x01 0000175d: PUSH1 0x01 0000175f: PUSH1 0xa0 00001761: SHL 00001762: SUB 00001763: AND 00001764: PUSH1 0x01 00001766: PUSH1 0x01 00001768: PUSH1 0xa0 0000176a: SHL 0000176b: SUB 0000176c: AND 0000176d: SWAP1 0000176e: PUSH1 0x40 00001770: MLOAD 00001771: PUSH2 0x177b 00001774: DUP2 00001775: SWAP3 00001776: DUP3 00001777: PUSH2 0x01da 0000177a: JUMP 0000177b: JUMPDEST 0000177c: SUB 0000177d: PUSH32 0xaad37e6445e4886d31aad66580be3aef14d33b5d09551ccb6cd6560d3ad95061 0000179e: SWAP2 0000179f: LOG2 000017a0: JUMP 000017a1: JUMPDEST 000017a2: PUSH2 0x17c2 000017a5: SWAP2 000017a6: POP 000017a7: PUSH1 0x80 000017a9: RETURNDATASIZE 000017aa: DUP2 000017ab: GT 000017ac: PUSH2 0x17c8 000017af: JUMPI 000017b0: JUMPDEST 000017b1: PUSH2 0x17ba 000017b4: DUP2 000017b5: DUP4 000017b6: PUSH2 0x0962 000017b9: JUMP 000017ba: JUMPDEST 000017bb: DUP2 000017bc: ADD 000017bd: SWAP1 000017be: PUSH2 0x1473 000017c1: JUMP 000017c2: JUMPDEST 000017c3: CODESIZE 000017c4: PUSH2 0x164e 000017c7: JUMP 000017c8: JUMPDEST 000017c9: POP 000017ca: RETURNDATASIZE 000017cb: PUSH2 0x17b0 000017ce: JUMP 000017cf: JUMPDEST 000017d0: PUSH1 0x40 000017d2: MLOAD 000017d3: PUSH4 0x971d978d 000017d8: PUSH1 0xe0 000017da: SHL 000017db: DUP2 000017dc: MSTORE 000017dd: PUSH1 0x01 000017df: PUSH1 0x01 000017e1: PUSH1 0x80 000017e3: SHL 000017e4: SUB 000017e5: DUP8 000017e6: AND 000017e7: PUSH1 0x04 000017e9: DUP3 000017ea: ADD 000017eb: MSTORE 000017ec: PUSH1 0x24 000017ee: SWAP1 000017ef: REVERT 000017f0: JUMPDEST 000017f1: PUSH1 0x40 000017f3: MLOAD 000017f4: PUSH4 0x1c5d6947 000017f9: PUSH1 0xe2 000017fb: SHL 000017fc: DUP2 000017fd: MSTORE 000017fe: PUSH2 0xffff 00001801: SWAP2 00001802: SWAP1 00001803: SWAP2 00001804: AND 00001805: PUSH1 0x04 00001807: DUP3 00001808: ADD 00001809: MSTORE 0000180a: PUSH1 0x24 0000180c: SWAP1 0000180d: REVERT 0000180e: JUMPDEST 0000180f: ISZERO 00001810: PUSH2 0x1815 00001813: JUMPI 00001814: JUMP 00001815: JUMPDEST 00001816: PUSH4 0x4e487b71 0000181b: PUSH1 0xe0 0000181d: SHL 0000181e: PUSH1 0x00 00001820: MSTORE 00001821: PUSH1 0x01 00001823: PUSH1 0x04 00001825: MSTORE 00001826: PUSH1 0x24 00001828: PUSH1 0x00 0000182a: REVERT 0000182b: JUMPDEST 0000182c: SWAP2 0000182d: SWAP3 0000182e: SWAP1 0000182f: SWAP3 00001830: PUSH2 0x1839 00001833: DUP5 00001834: DUP5 00001835: PUSH2 0x18b1 00001838: JUMP 00001839: JUMPDEST 0000183a: SWAP2 0000183b: DUP3 0000183c: PUSH1 0x00 0000183e: MSTORE 0000183f: PUSH1 0x01 00001841: PUSH1 0x20 00001843: MSTORE 00001844: PUSH1 0x40 00001846: PUSH1 0x00 00001848: KECCAK256 00001849: SLOAD 0000184a: SWAP5 0000184b: DUP2 0000184c: DUP7 0000184d: SUB 0000184e: SWAP6 0000184f: DUP7 00001850: GT 00001851: PUSH2 0x0c14 00001854: JUMPI 00001855: PUSH2 0x1883 00001858: SWAP5 00001859: DUP5 0000185a: PUSH1 0x00 0000185c: MSTORE 0000185d: PUSH1 0x01 0000185f: PUSH1 0x20 00001861: MSTORE 00001862: PUSH1 0x00 00001864: NOT 00001865: PUSH1 0x40 00001867: PUSH1 0x00 00001869: KECCAK256 0000186a: SSTORE 0000186b: PUSH2 0x1873 0000186e: DUP2 0000186f: PUSH2 0x01ad 00001872: JUMP 00001873: JUMPDEST 00001874: DUP1 00001875: PUSH2 0x1886 00001878: JUMPI 00001879: POP 0000187a: POP 0000187b: PUSH2 0x0a25 0000187e: SWAP2 0000187f: PUSH2 0x18e9 00001882: JUMP 00001883: JUMPDEST 00001884: SSTORE 00001885: JUMP 00001886: JUMPDEST 00001887: SWAP3 00001888: PUSH2 0x189f 0000188b: PUSH1 0x01 0000188d: DUP6 0000188e: PUSH2 0x1899 00001891: PUSH2 0x0a25 00001894: SWAP8 00001895: PUSH2 0x01ad 00001898: JUMP 00001899: JUMPDEST 0000189a: EQ 0000189b: PUSH2 0x180e 0000189e: JUMP 0000189f: JUMPDEST 000018a0: PUSH1 0x01 000018a2: PUSH1 0x01 000018a4: PUSH1 0xa0 000018a6: SHL 000018a7: SUB 000018a8: SWAP1 000018a9: DUP2 000018aa: AND 000018ab: SWAP2 000018ac: AND 000018ad: PUSH2 0x1993 000018b0: JUMP 000018b1: JUMPDEST 000018b2: PUSH1 0x02 000018b4: DUP2 000018b5: LT 000018b6: ISZERO 000018b7: PUSH2 0x01b7 000018ba: JUMPI 000018bb: DUP1 000018bc: ISZERO 000018bd: PUSH2 0x18cf 000018c0: JUMPI 000018c1: PUSH1 0x01 000018c3: DUP2 000018c4: PUSH2 0x1899 000018c7: PUSH2 0x0c68 000018ca: SWAP4 000018cb: PUSH2 0x01ad 000018ce: JUMP 000018cf: JUMPDEST 000018d0: POP 000018d1: POP 000018d2: PUSH20 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee 000018e7: SWAP1 000018e8: JUMP 000018e9: JUMPDEST 000018ea: DUP2 000018eb: ISZERO 000018ec: PUSH2 0x1977 000018ef: JUMPI 000018f0: PUSH1 0x01 000018f2: DUP1 000018f3: PUSH1 0xa0 000018f5: SHL 000018f6: SUB 000018f7: AND 000018f8: SWAP1 000018f9: PUSH1 0x00 000018fb: DUP1 000018fc: DUP1 000018fd: DUP1 000018fe: DUP1 000018ff: SWAP5 00001900: DUP7 00001901: GAS 00001902: CALL 00001903: SWAP1 00001904: PUSH2 0x190b 00001907: PUSH2 0x10e7 0000190a: JUMP 0000190b: JUMPDEST 0000190c: SWAP2 0000190d: ISZERO 0000190e: PUSH2 0x1916 00001911: JUMPI 00001912: POP 00001913: POP 00001914: POP 00001915: JUMP 00001916: JUMPDEST 00001917: SWAP2 00001918: PUSH1 0x40 0000191a: MLOAD 0000191b: SWAP3 0000191c: DUP4 0000191d: SWAP2 0000191e: PUSH4 0x354db697 00001923: PUSH1 0xe0 00001925: SHL 00001926: DUP4 00001927: MSTORE 00001928: PUSH1 0x04 0000192a: DUP4 0000192b: ADD 0000192c: MSTORE 0000192d: PUSH1 0x40 0000192f: PUSH1 0x24 00001931: DUP4 00001932: ADD 00001933: MSTORE 00001934: DUP3 00001935: MLOAD 00001936: SWAP3 00001937: DUP4 00001938: PUSH1 0x44 0000193a: DUP5 0000193b: ADD 0000193c: MSTORE 0000193d: DUP2 0000193e: JUMPDEST 0000193f: DUP5 00001940: DUP2 00001941: LT 00001942: PUSH2 0x195f 00001945: JUMPI 00001946: POP 00001947: POP 00001948: SWAP2 00001949: PUSH1 0x64 0000194b: SWAP3 0000194c: DUP4 0000194d: DUP3 0000194e: DUP5 0000194f: ADD 00001950: ADD 00001951: MSTORE 00001952: PUSH1 0x1f 00001954: DUP1 00001955: NOT 00001956: SWAP2 00001957: ADD 00001958: AND 00001959: DUP2 0000195a: ADD 0000195b: SUB 0000195c: ADD 0000195d: SWAP1 0000195e: REVERT 0000195f: JUMPDEST 00001960: PUSH1 0x20 00001962: DUP3 00001963: DUP3 00001964: ADD 00001965: DUP2 00001966: ADD 00001967: MLOAD 00001968: PUSH1 0x64 0000196a: DUP9 0000196b: DUP5 0000196c: ADD 0000196d: ADD 0000196e: MSTORE 0000196f: DUP7 00001970: SWAP5 00001971: POP 00001972: ADD 00001973: PUSH2 0x193e 00001976: JUMP 00001977: JUMPDEST 00001978: POP 00001979: POP 0000197a: JUMP 0000197b: JUMPDEST 0000197c: SWAP1 0000197d: DUP2 0000197e: PUSH1 0x20 00001980: SWAP2 00001981: SUB 00001982: SLT 00001983: PUSH2 0x0139 00001986: JUMPI 00001987: MLOAD 00001988: DUP1 00001989: ISZERO 0000198a: ISZERO 0000198b: DUP2 0000198c: SUB 0000198d: PUSH2 0x0139 00001990: JUMPI 00001991: SWAP1 00001992: JUMP 00001993: JUMPDEST 00001994: PUSH1 0x40 00001996: MLOAD 00001997: PUSH4 0xa9059cbb 0000199c: PUSH1 0xe0 0000199e: SHL 0000199f: PUSH1 0x20 000019a1: DUP3 000019a2: ADD 000019a3: SWAP1 000019a4: DUP2 000019a5: MSTORE 000019a6: PUSH1 0x01 000019a8: PUSH1 0x01 000019aa: PUSH1 0xa0 000019ac: SHL 000019ad: SUB 000019ae: DUP5 000019af: AND 000019b0: PUSH1 0x24 000019b2: DUP4 000019b3: ADD 000019b4: MSTORE 000019b5: PUSH1 0x44 000019b7: DUP1 000019b8: DUP4 000019b9: ADD 000019ba: DUP7 000019bb: SWAP1 000019bc: MSTORE 000019bd: DUP3 000019be: MSTORE 000019bf: SWAP3 000019c0: SWAP5 000019c1: SWAP2 000019c2: SWAP4 000019c3: SWAP3 000019c4: PUSH1 0x00 000019c6: SWAP2 000019c7: DUP3 000019c8: SWAP2 000019c9: SWAP1 000019ca: PUSH2 0x19d4 000019cd: PUSH1 0x64 000019cf: DUP3 000019d0: PUSH2 0x0962 000019d3: JUMP 000019d4: JUMPDEST 000019d5: MLOAD 000019d6: SWAP1 000019d7: DUP3 000019d8: PUSH1 0x01 000019da: PUSH1 0x01 000019dc: PUSH1 0xa0 000019de: SHL 000019df: SUB 000019e0: DUP9 000019e1: AND 000019e2: GAS 000019e3: CALL 000019e4: PUSH2 0x19eb 000019e7: PUSH2 0x10e7 000019ea: JUMP 000019eb: JUMPDEST 000019ec: SWAP1 000019ed: PUSH2 0x1a23 000019f0: JUMPI 000019f1: JUMPDEST 000019f2: POP 000019f3: POP 000019f4: PUSH1 0x40 000019f6: MLOAD 000019f7: PUSH4 0x1702a987 000019fc: PUSH1 0xe1 000019fe: SHL 000019ff: DUP2 00001a00: MSTORE 00001a01: PUSH1 0x01 00001a03: PUSH1 0x01 00001a05: PUSH1 0xa0 00001a07: SHL 00001a08: SUB 00001a09: SWAP3 00001a0a: DUP4 00001a0b: AND 00001a0c: PUSH1 0x04 00001a0e: DUP3 00001a0f: ADD 00001a10: MSTORE 00001a11: SWAP3 00001a12: SWAP1 00001a13: SWAP2 00001a14: AND 00001a15: PUSH1 0x24 00001a17: DUP4 00001a18: ADD 00001a19: MSTORE 00001a1a: PUSH1 0x44 00001a1c: DUP3 00001a1d: ADD 00001a1e: MSTORE 00001a1f: PUSH1 0x64 00001a21: SWAP1 00001a22: REVERT 00001a23: JUMPDEST 00001a24: DUP1 00001a25: MLOAD 00001a26: ISZERO 00001a27: PUSH2 0x1a4d 00001a2a: JUMPI 00001a2b: DUP1 00001a2c: PUSH1 0x20 00001a2e: DUP1 00001a2f: PUSH2 0x1a3d 00001a32: SWAP4 00001a33: MLOAD 00001a34: DUP4 00001a35: ADD 00001a36: ADD 00001a37: SWAP2 00001a38: ADD 00001a39: PUSH2 0x197b 00001a3c: JUMP 00001a3d: JUMPDEST 00001a3e: PUSH2 0x1a47 00001a41: JUMPI 00001a42: DUP1 00001a43: PUSH2 0x19f1 00001a46: JUMP 00001a47: JUMPDEST 00001a48: SWAP3 00001a49: POP 00001a4a: POP 00001a4b: POP 00001a4c: JUMP 00001a4d: JUMPDEST 00001a4e: POP 00001a4f: SWAP3 00001a50: POP 00001a51: POP 00001a52: DUP1 00001a53: EXTCODESIZE 00001a54: ISZERO 00001a55: PUSH2 0x1a5b 00001a58: JUMPI 00001a59: POP 00001a5a: JUMP 00001a5b: JUMPDEST 00001a5c: PUSH1 0x40 00001a5e: MLOAD 00001a5f: PUSH4 0x9fe23a39 00001a64: PUSH1 0xe0 00001a66: SHL 00001a67: DUP2 00001a68: MSTORE 00001a69: PUSH1 0x01 00001a6b: PUSH1 0x01 00001a6d: PUSH1 0xa0 00001a6f: SHL 00001a70: SUB 00001a71: SWAP2 00001a72: SWAP1 00001a73: SWAP2 00001a74: AND 00001a75: PUSH1 0x04 00001a77: DUP3 00001a78: ADD 00001a79: MSTORE 00001a7a: PUSH1 0x24 00001a7c: SWAP1 00001a7d: REVERT 00001a7e: JUMPDEST 00001a7f: PUSH1 0x01 00001a81: PUSH1 0x01 00001a83: PUSH1 0x80 00001a85: SHL 00001a86: SUB 00001a87: SWAP1 00001a88: DUP2 00001a89: DUP2 00001a8a: GT 00001a8b: PUSH2 0x1a92 00001a8e: JUMPI 00001a8f: AND 00001a90: SWAP1 00001a91: JUMP 00001a92: JUMPDEST 00001a93: PUSH1 0x24 00001a95: SWAP1 00001a96: PUSH1 0x40 00001a98: MLOAD 00001a99: SWAP1 00001a9a: PUSH4 0x2dc9adf3 00001a9f: PUSH1 0xe0 00001aa1: SHL 00001aa2: DUP3 00001aa3: MSTORE 00001aa4: PUSH1 0x04 00001aa6: DUP3 00001aa7: ADD 00001aa8: MSTORE 00001aa9: REVERT 00001aaa: INVALID 00001aab: LOG2 00001aac: PUSH5 0x6970667358 00001ab2: UNKNOWN(0x22) 00001ab3: SLT 00001ab4: KECCAK256 00001ab5: STATICCALL 00001ab6: PUSH32 0x4b202850327abf83d68f0bfaf397cd2ac0ac4cd6a6c10332fe30e768cc896473 00001ad7: PUSH16
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | detector | Untrusted DELEGATECALL target reachable | 70 | no | no |
viewtrace_id: 0xdc152d8bb8fec9241f516703e02d710913c1b3271c1b6afeec64a5a2480ffb82
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "unknown",
"attempts": 168,
"trace_id": "0xdc152d8bb8fec9241f516703e02d710913c1b3271c1b6afeec64a5a2480ffb82",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x074ae6f1",
"selector": "0x074ae6f1",
"calldata_variants": [
"0x074ae6f1",
"0x074ae6f10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x146a7b1a",
"selector": "0x146a7b1a",
"calldata_variants": [
"0x146a7b1a",
"0x146a7b1a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3a32e54e",
"selector": "0x3a32e54e",
"calldata_variants": [
"0x3a32e54e",
"0x3a32e54e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x476f5125",
"selector": "0x476f5125",
"calldata_variants": [
"0x476f5125",
"0x476f51250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6984c669",
"selector": "0x6984c669",
"calldata_variants": [
"0x6984c669",
"0x6984c6690000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x69a467a4",
"selector": "0x69a467a4",
"calldata_variants": [
"0x69a467a4",
"0x69a467a40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6e62c47d",
"selector": "0x6e62c47d",
"calldata_variants": [
"0x6e62c47d",
"0x6e62c47d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa0321a53",
"selector": "0xa0321a53",
"calldata_variants": [
"0xa0321a53",
"0xa0321a530000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5036,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [],
"delegatecall_count": 1,
"untrusted_delegatecall_count": 1
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0xf5b775b5e00dda31483091e43a7dca11d1b191edcdc22faf05b20afb5d55fb17
call_targets:
0x49a3caab781f711ad74c9d2f34c3cbd835d6a608
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xf5b775b5e00dda31483091e43a7dca11d1b191edcdc22faf05b20afb5d55fb17",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x49a3caab781f711ad74c9d2f34c3cbd835d6a608"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x074ae6f1",
"selector": "0x074ae6f1",
"calldata_variants": [
"0x074ae6f1",
"0x074ae6f10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x146a7b1a",
"selector": "0x146a7b1a",
"calldata_variants": [
"0x146a7b1a",
"0x146a7b1a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3a32e54e",
"selector": "0x3a32e54e",
"calldata_variants": [
"0x3a32e54e",
"0x3a32e54e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x476f5125",
"selector": "0x476f5125",
"calldata_variants": [
"0x476f5125",
"0x476f51250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6984c669",
"selector": "0x6984c669",
"calldata_variants": [
"0x6984c669",
"0x6984c6690000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x69a467a4",
"selector": "0x69a467a4",
"calldata_variants": [
"0x69a467a4",
"0x69a467a40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6e62c47d",
"selector": "0x6e62c47d",
"calldata_variants": [
"0x6e62c47d",
"0x6e62c47d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa0321a53",
"selector": "0xa0321a53",
"calldata_variants": [
"0xa0321a53",
"0xa0321a530000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 6402,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 6627,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [],
"untrusted_call_count": 2
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0xf5b775b5e00dda31483091e43a7dca11d1b191edcdc22faf05b20afb5d55fb17
call_targets:
0x49a3caab781f711ad74c9d2f34c3cbd835d6a608
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xf5b775b5e00dda31483091e43a7dca11d1b191edcdc22faf05b20afb5d55fb17",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x49a3caab781f711ad74c9d2f34c3cbd835d6a608"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0x074ae6f1",
"selector": "0x074ae6f1",
"calldata_variants": [
"0x074ae6f1",
"0x074ae6f10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x146a7b1a",
"selector": "0x146a7b1a",
"calldata_variants": [
"0x146a7b1a",
"0x146a7b1a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x3a32e54e",
"selector": "0x3a32e54e",
"calldata_variants": [
"0x3a32e54e",
"0x3a32e54e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x476f5125",
"selector": "0x476f5125",
"calldata_variants": [
"0x476f5125",
"0x476f51250000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6984c669",
"selector": "0x6984c669",
"calldata_variants": [
"0x6984c669",
"0x6984c6690000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x69a467a4",
"selector": "0x69a467a4",
"calldata_variants": [
"0x69a467a4",
"0x69a467a40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6e62c47d",
"selector": "0x6e62c47d",
"calldata_variants": [
"0x6e62c47d",
"0x6e62c47d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xa0321a53",
"selector": "0xa0321a53",
"calldata_variants": [
"0xa0321a53",
"0xa0321a530000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 6402,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 6627,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": []
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 1
}
|