6625d03d-07b7-460c-b8f4-4fc0c7f1ad3b
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 |
|---|---|---|---|---|
| 30293 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 73942 | artifact.fetch | failed | 1 / 3 | 1 week ago |
| 73943 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 73944 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 73945 | capability.graph | complete | 1 / 3 | 1 week ago |
| 73946 | detector.run | complete | 1 / 3 | 1 week ago |
| 73947 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:496142] OpenAI Codex v0.77.0 (research preview)
[codex:496142] --------
[codex:496142] workdir: /tmp/codex-multi-iwsjvaqi
[codex:496142] model: gpt-5.2-codex
[codex:496142] provider: openai
[codex:496142] approval: never
[codex:496142] sandbox: read-only
[codex:496142] reasoning effort: xhigh
[codex:496142] reasoning summaries: auto
[codex:496142] session id: 019b6512-103a-75e0-8fea-bb811427d5f3
[codex:496142] --------
[codex:496142] user
[codex:496142] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:496142] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:496142] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:496142]
[codex:496142] Scope rules:
[codex:496142] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:496142] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:496142]
[codex:496142] Output MUST be valid JSON matching the provided schema.
[codex:496142] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:496142] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:496142]
[codex:496142] Output constraints (IMPORTANT):
[codex:496142] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:496142] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:496142] mcp startup: no servers
[codex:496142]
[codex:496142] thinking
[codex:496142] **Preparing to read AUDIT_BUNDLE.txt**
[codex:496142] exec
[codex:496142] /bin/bash -lc ls in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] AUDIT_BUNDLE.txt
[codex:496142] codex-output-schema.json
[codex:496142] contracts
[codex:496142] exec
[codex:496142] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:496142]
[codex:496142] ================================================================================
[codex:496142] FILE: contracts/@openzeppelin/contracts/utils/SafeCast.sol
[codex:496142] ================================================================================
[codex:496142] // SPDX-License-Identifier: MIT
[codex:496142]
[codex:496142] pragma solidity ^0.6.0;
[codex:496142]
[codex:496142]
[codex:496142] /**
[codex:496142] * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow
[codex:496142] * checks.
[codex:496142] *
[codex:496142] * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can
[codex:496142] * easily result in undesired exploitation or bugs, since developers usually
[codex:496142] * assume that overflows raise errors. `SafeCast` restores this intuition by
[codex:496142] * reverting the transaction when such an operation overflows.
[codex:496142] *
[codex:496142] * Using this library instead of the unchecked operations eliminates an entire
[codex:496142]
[codex:496142] thinking
[codex:496142] **Planning vulnerability scan approach**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg --files contracts' in /tmp/codex-multi-iwsjvaqi succeeded in 10ms:
[codex:496142] contracts/cache/solpp-generated-contracts/ERC1155Token.sol
[codex:496142] contracts/cache/solpp-generated-contracts/CashMarket.sol
[codex:496142] contracts/@openzeppelin/contracts/utils/SafeCast.sol
[codex:496142] contracts/cache/solpp-generated-contracts/Portfolios.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/ERC1155Base.sol
[codex:496142] contracts/cache/solpp-generated-contracts/storage/StorageSlot.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/Directory.sol
[codex:496142] contracts/cache/solpp-generated-contracts/storage/PortfoliosStorage.sol
[codex:496142] contracts/cache/solpp-generated-contracts/storage/EscrowStorage.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/RiskFramework.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/Common.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/MockLiquidation.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/Governed.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/Liquidation.sol
[codex:496142] contracts/cache/solpp-generated-contracts/utils/ExchangeRate.sol
[codex:496142] contracts/cache/solpp-generated-contracts/Escrow.sol
[codex:496142] contracts/cache/solpp-generated-contracts/ERC1155Trade.sol
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/InitializableUpgradeabilityProxy.sol
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/Ownable.sol
[codex:496142]
[codex:496142] thinking
[codex:496142] **Preparing to audit core contracts**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,220p' contracts/cache/solpp-generated-contracts/utils/Governed.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142]
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] import "../interface/IEscrowCallable.sol";
[codex:496142] import "../interface/IPortfoliosCallable.sol";
[codex:496142]
[codex:496142] import "../upgradeable/Ownable.sol";
[codex:496142] import "../upgradeable/Initializable.sol";
[codex:496142]
[codex:496142] import "./Directory.sol";
[codex:496142]
[codex:496142] /**
[codex:496142] * @title Governed
[codex:496142] * A base contract to set the contract references on each contract.
[codex:496142] */
[codex:496142] contract Governed is OpenZeppelinUpgradesOwnable, Initializable {
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing Ownable initialization risks**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,240p' contracts/cache/solpp-generated-contracts/utils/Directory.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142]
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] import "./Governed.sol";
[codex:496142] import "../upgradeable/Ownable.sol";
[codex:496142] import "../upgradeable/Initializable.sol";
[codex:496142]
[codex:496142] /**
[codex:496142] * @title Directory
[codex:496142] * Stores the addresses and the dependency map for the entire Notional system. Allows
[codex:496142] * for the system to upgrade other contracts in the system.
[codex:496142] */
[codex:496142] contract Directory is OpenZeppelinUpgradesOwnable, Initializable {
[codex:496142] mapping(uint256 => address) public contracts;
[codex:496142] event SetContract(Governed.CoreContracts name, address contractAddress);
[codex:496142]
[codex:496142]
[codex:496142] thinking
[codex:496142] **Assessing potential reentrancy and access control risks**
[codex:496142]
[codex:496142] I'm reviewing key contracts focusing on reentrancy and access control, especially around upgradeable components like Directory and CashMarket. I notice `initializeDependencies` in CashMarket can be called by anyone multiple times—potentially resetting dependencies—but it may not be harmful since addresses come from Directory. Still, timing gaps before Directory is set might allow griefing by setting zero addresses. I’m shifting focus now to Escrow, which interacts with external tokens and might have more typical reentrancy risks. Let's keep digging!
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/Escrow.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142]
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] import "./utils/Governed.sol";
[codex:496142] import "./utils/Liquidation.sol";
[codex:496142]
[codex:496142] import "./lib/SafeInt256.sol";
[codex:496142] import "./lib/SafeMath.sol";
[codex:496142] import "./lib/SafeUInt128.sol";
[codex:496142] import "./lib/SafeERC20.sol";
[codex:496142]
[codex:496142] import "./interface/IERC20.sol";
[codex:496142] import "./interface/IERC777.sol";
[codex:496142] import "./interface/IERC777Recipient.sol";
[codex:496142] import "./interface/IERC1820Registry.sol";
[codex:496142] import "./interface/IAggregator.sol";
[codex:496142]
[codex:496142] thinking
[codex:496142] **Continuing to review external functions**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '260,640p' contracts/cache/solpp-generated-contracts/Escrow.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 8ms:
[codex:496142]
[codex:496142] /**
[codex:496142] * @notice Evaluates whether or not a currency id is valid
[codex:496142] * @param currency currency id
[codex:496142] * @return true if the currency is valid
[codex:496142] */
[codex:496142] function isValidCurrency(uint16 currency) public override view returns (bool) {
[codex:496142] return currency <= maxCurrencyId;
[codex:496142] }
[codex:496142]
[codex:496142] /**
[codex:496142] * @notice Getter method for exchange rates
[codex:496142] * @param base token address for the base currency
[codex:496142] * @param quote token address for the quote currency
[codex:496142] * @return ExchangeRate struct
[codex:496142] */
[codex:496142] function getExchangeRate(uint16 base, uint16 quote) external view returns (ExchangeRate.Rate memory) {
[codex:496142] return exchangeRateOracles[base][quote];
[codex:496142] }
[codex:496142]
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing reentrancy risks around token transfers**
[codex:496142]
[codex:496142] I'm examining potential reentrancy issues in deposit and withdraw logic, focusing on external token calls after state updates. I'm considering how ERC777 hooks like `tokensToSend` and `tokensReceived` could enable reentrancy, especially since no reentrancy guard is present. The sequence of balance updates before external calls may mitigate some risks, but cross-calls during token transfers could still be problematic. I also spotted a suspicious ERC1820 registry call with `address(0)` instead of the contract's address for implementing the tokens recipient interface, which might be a bug worth investigating by checking related storage constants.
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,220p' contracts/cache/solpp-generated-contracts/storage/EscrowStorage.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142]
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142]
[codex:496142]
[codex:496142] import "./StorageSlot.sol";
[codex:496142] import "../utils/ExchangeRate.sol";
[codex:496142]
[codex:496142] library EscrowStorageSlot {
[codex:496142] bytes32 internal constant S_LIQUIDTION_DISCOUNT = 0xc59867f3ae9774eb97a98f3fbbe736c1ee23580155c8697cd969a2d1f3968653;
[codex:496142] bytes32 internal constant S_SETTLEMENT_DISCOUNT = 0xdafe5151c63bd8d33bc03c4916ccca379c56861736a985b1918a3e0c0347707b;
[codex:496142] bytes32 internal constant S_LIQUIDITY_TOKEN_REPO_INCENTIVE = 0x86f55df6f3f1d5533a992d6e1355f3adb2afe0c3064672910d2518432c35e770;
[codex:496142] bytes32 internal constant S_LIQUIDITY_HAIRCUT = 0x28971522a5177c8ac90bf7d9be4d04d6bc61da2e7623c4392f5b9494ac42e4d0;
[codex:496142]
[codex:496142] function _liquidationDiscount() internal view returns (uint128) {
[codex:496142] return uint128(StorageSlot._getStorageUint(S_LIQUIDTION_DISCOUNT));
[codex:496142] }
[codex:496142]
[codex:496142] function _settlementDiscount() internal view returns (uint128) {
[codex:496142] return uint128(StorageSlot._getStorageUint(S_SETTLEMENT_DISCOUNT));
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing ERC1820 registry usage in Escrow**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,240p' contracts/cache/solpp-generated-contracts/ERC1155Trade.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142]
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] import "./utils/Common.sol";
[codex:496142] import "./utils/ERC1155Base.sol";
[codex:496142] import "./lib/SafeUInt128.sol";
[codex:496142]
[codex:496142] import "./interface/IERC1155TokenReceiver.sol";
[codex:496142]
[codex:496142] import "./CashMarket.sol";
[codex:496142]
[codex:496142] /**
[codex:496142] * @notice Implements the ERC1155 token standard for trading OTC and batch operations over Notional markets.
[codex:496142] */
[codex:496142] contract ERC1155Trade is ERC1155Base {
[codex:496142] using SafeUInt128 for uint128;
[codex:496142]
[codex:496142] thinking
[codex:496142] **Continuing near withdraw or callback**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '240,520p' contracts/cache/solpp-generated-contracts/ERC1155Trade.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] (minRate, maxRate) = abi.decode(trades[i].slippageData, (uint32, uint32));
[codex:496142] maxfCash = Common.MAX_UINT_128;
[codex:496142] } else if (trades[i].slippageData.length == 96) {
[codex:496142] (minRate, maxRate, maxfCash) = abi.decode(trades[i].slippageData, (uint32, uint32, uint128));
[codex:496142] } else {
[codex:496142] maxRate = Common.MAX_UINT_32;
[codex:496142] maxfCash = Common.MAX_UINT_128;
[codex:496142] }
[codex:496142]
[codex:496142] // Add Liquidity always adds the specified amount of cash or it fails out.
[codex:496142] tradeRecord[i].currencyId = fcg.currency;
[codex:496142] tradeRecord[i].tradeType = Common.TradeType.AddLiquidity;
[codex:496142] tradeRecord[i].cash = trades[i].amount;
[codex:496142] fc.addLiquidityOnBehalf(account, trades[i].maturity, trades[i].amount, maxfCash, minRate, maxRate);
[codex:496142] } else if (trades[i].tradeType == Common.TradeType.RemoveLiquidity) {
[codex:496142] tradeRecord[i].currencyId = fcg.currency;
[codex:496142] tradeRecord[i].tradeType = Common.TradeType.RemoveLiquidity;
[codex:496142] tradeRecord[i].cash = fc.removeLiquidityOnBehalf(account, trades[i].maturity, trades[i].amount);
[codex:496142] }
[codex:496142] }
[codex:496142]
[codex:496142] thinking
[codex:496142] **Reviewing ERC1155Trade and ERC1155Base relation**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/utils/ERC1155Base.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142]
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] import "../utils/Common.sol";
[codex:496142] import "../utils/Governed.sol";
[codex:496142]
[codex:496142] import "../interface/IERC165.sol";
[codex:496142] import "../interface/IERC1155.sol";
[codex:496142]
[codex:496142] /**
[codex:496142] * @notice Base class for ERC1155 contracts. Implements balanceOf and operator methods.
[codex:496142] */
[codex:496142] abstract contract ERC1155Base is Governed, IERC1155, IERC165 {
[codex:496142] // bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))
[codex:496142] bytes4 internal constant ERC1155_ACCEPTED = 0xf23a6e61;
[codex:496142] // bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing ERC1155Trade transfer logic and potential risks**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/Portfolios.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 8ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142]
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] import "./utils/Common.sol";
[codex:496142] import "./utils/Governed.sol";
[codex:496142]
[codex:496142] import "./lib/SafeMath.sol";
[codex:496142] import "./lib/SafeInt256.sol";
[codex:496142] import "./lib/SafeUInt128.sol";
[codex:496142] import "./utils/RiskFramework.sol";
[codex:496142]
[codex:496142] import "./interface/IRateOracle.sol";
[codex:496142] import "./interface/IPortfoliosCallable.sol";
[codex:496142]
[codex:496142] import "./storage/PortfoliosStorage.sol";
[codex:496142] import "./CashMarket.sol";
[codex:496142]
[codex:496142] thinking
[codex:496142] **Inspecting external functions in Portfolios**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "external" contracts/cache/solpp-generated-contracts/Portfolios.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 82: function initialize(address directory, address owner, uint16 numCurrencies, uint256 maxAssets) external initializer {
[codex:496142] 103: function setHaircuts(uint128 liquidityHaircut, uint128 fCashHaircut, uint128 fCashMaxHaircut) external onlyOwner {
[codex:496142] 116: function setNumCurrencies(uint16 numCurrencies) external override {
[codex:496142] 127: function setMaxAssets(uint256 maxAssets) external onlyOwner {
[codex:496142] 149: ) external onlyOwner {
[codex:496142] 192: ) external onlyOwner {
[codex:496142] 287: * the free collateral parameters. Generally, external developers should not need to call this function. It is used
[codex:496142] 398: ) external override {
[codex:496142] 426: ) external override {
[codex:496142] 475: ) external override {
[codex:496142] 516: ) external override {
[codex:496142] 575: * have negative cash and counterparties need to settle against them. Generally, external developers
[codex:496142] 589: * @notice Settle a batch of accounts. See note for `settleMaturedAssets`, external developers should not need
[codex:496142] 593: function settleMaturedAssetsBatch(address[] calldata accounts) external override {
[codex:496142] 689: ) external override returns (uint128) {
[codex:496142] 715: ) external override returns (uint128, uint128) {
[codex:496142]
[codex:496142] thinking
[codex:496142] **Inspecting functions near line 287**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '260,420p' contracts/cache/solpp-generated-contracts/Portfolios.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] * @notice Public method for searching for a asset in an account.
[codex:496142] * @param account account to search
[codex:496142] * @param assetType the type of asset to search for
[codex:496142] * @param cashGroupId the cash group id
[codex:496142] * @param instrumentId the instrument id
[codex:496142] * @param maturity the maturity timestamp of the asset
[codex:496142] * @return (asset, index of asset)
[codex:496142] */
[codex:496142] function searchAccountAsset(
[codex:496142] address account,
[codex:496142] bytes1 assetType,
[codex:496142] uint8 cashGroupId,
[codex:496142] uint16 instrumentId,
[codex:496142] uint32 maturity
[codex:496142] ) public override view returns (Common.Asset memory, uint256) {
[codex:496142] Common.Asset[] storage portfolio = _accountAssets[account];
[codex:496142] (
[codex:496142] bool found, uint256 index, /* uint128 */, /* bool */
[codex:496142] ) = _searchAsset(portfolio, assetType, cashGroupId, instrumentId, maturity, false);
[codex:496142]
[codex:496142]
[codex:496142] thinking
[codex:496142] **Continuing to explore upsertAccountAssetBatch**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '420,620p' contracts/cache/solpp-generated-contracts/Portfolios.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] * @param checkFreeCollateral allows free collateral check to be skipped (BE CAREFUL WITH THIS!)
[codex:496142] */
[codex:496142] function upsertAccountAssetBatch(
[codex:496142] address account,
[codex:496142] Common.Asset[] calldata assets,
[codex:496142] bool checkFreeCollateral
[codex:496142] ) external override {
[codex:496142] if (assets.length == 0) {
[codex:496142] return;
[codex:496142] }
[codex:496142]
[codex:496142] // Here we check that all the cash group ids are the same if the liquidation auction
[codex:496142] // is not calling this function. If this is not the case then we have an issue. Cash markets
[codex:496142] // should only ever call this function with the same cash group id for all the assets
[codex:496142] // they submit.
[codex:496142] uint16 id = assets[0].cashGroupId;
[codex:496142] for (uint256 i = 1; i < assets.length; i++) {
[codex:496142] require(assets[i].cashGroupId == id, "53");
[codex:496142] }
[codex:496142]
[codex:496142]
[codex:496142] thinking
[codex:496142] **Checking external call order**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '620,980p' contracts/cache/solpp-generated-contracts/Portfolios.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] uint256 length = portfolio.length;
[codex:496142]
[codex:496142] // Loop through the portfolio and find the assets that have matured.
[codex:496142] for (uint256 i; i < length; i++) {
[codex:496142] if (portfolio[i].maturity <= blockTime) {
[codex:496142] Common.Asset memory asset = portfolio[i];
[codex:496142] // Here we are dealing with a matured asset. We get the appropriate currency for
[codex:496142] // the instrument. We may want to cache this somehow, but in all likelihood there
[codex:496142] // will not be multiple matured assets in the same cash group.
[codex:496142] Common.CashGroup memory fcg = cashGroups[asset.cashGroupId];
[codex:496142] uint16 currency = fcg.currency;
[codex:496142]
[codex:496142] if (Common.isCashPayer(asset.assetType)) {
[codex:496142] // If the asset is a payer, we subtract from the cash balance
[codex:496142] settledCash[currency] = settledCash[currency].sub(asset.notional);
[codex:496142] } else if (Common.isCashReceiver(asset.assetType)) {
[codex:496142] // If the asset is a receiver, we add to the cash balance
[codex:496142] settledCash[currency] = settledCash[currency].add(asset.notional);
[codex:496142] } else if (Common.isLiquidityToken(asset.assetType)) {
[codex:496142] // Settling liquidity tokens is a bit more involved since we need to remove
[codex:496142]
[codex:496142] thinking
[codex:496142] **Investigating potential reentrancy in escrow cash unlocking**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "unlockCurrentCash" -n contracts/cache/solpp-generated-contracts/Escrow.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 638: function unlockCurrentCash(
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '620,760p' contracts/cache/solpp-generated-contracts/Escrow.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] cashBalances[cg.currency][G_RESERVE_ACCOUNT] = cashBalances[cg.currency][G_RESERVE_ACCOUNT]
[codex:496142] .add(fee);
[codex:496142] }
[codex:496142]
[codex:496142] cashBalances[cg.currency][account] = cashBalances[cg.currency][account].add(value.sub(fee));
[codex:496142]
[codex:496142] int256 balance = cashBalances[cg.currency][msg.sender];
[codex:496142] cashBalances[cg.currency][msg.sender] = balance.subNoNeg(value);
[codex:496142] }
[codex:496142]
[codex:496142] /**
[codex:496142] * @notice Adds or removes collateral from the fCash market when the portfolio is trading positions
[codex:496142] * as a result of settlement or liquidation.
[codex:496142] * @dev skip
[codex:496142] * @param currency the currency group of the collateral
[codex:496142] * @param cashMarket the address of the fCash market to transfer between
[codex:496142] * @param amount the amount to transfer
[codex:496142] */
[codex:496142] function unlockCurrentCash(
[codex:496142] uint16 currency,
[codex:496142]
[codex:496142] thinking
[codex:496142] **Checking for security vulnerabilities**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "delegatecall" contracts/cache/solpp-generated-contracts' in /tmp/codex-multi-iwsjvaqi succeeded in 8ms:
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/Proxy.sol:41: let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/Proxy.sol:47: // delegatecall returns 0 on error.
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/InitializableUpgradeabilityProxy.sol:26: (bool success,) = _logic.delegatecall(_data);
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/UpgradeabilityProxy.sol:25: (bool success,) = _logic.delegatecall(_data);
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/BaseAdminUpgradeabilityProxy.sol:89: (bool success,) = newImplementation.delegatecall(data);
[codex:496142]
[codex:496142] thinking
[codex:496142] **Reviewing proxy upgrade patterns**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/upgradeable/InitializableAdminUpgradeabilityProxy.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] import './BaseAdminUpgradeabilityProxy.sol';
[codex:496142] import './InitializableUpgradeabilityProxy.sol';
[codex:496142]
[codex:496142] /**
[codex:496142] * @title InitializableAdminUpgradeabilityProxy
[codex:496142] * @dev Extends from BaseAdminUpgradeabilityProxy with an initializer for
[codex:496142] * initializing the implementation, admin, and init data.
[codex:496142] */
[codex:496142] contract InitializableAdminUpgradeabilityProxy is BaseAdminUpgradeabilityProxy, InitializableUpgradeabilityProxy {
[codex:496142] /**
[codex:496142] * Contract initializer.
[codex:496142] * @param _logic address of the initial implementation.
[codex:496142] * @param _admin Address of the proxy administrator.
[codex:496142] * @param _data Data to send as msg.data to the implementation to initialize the proxied contract.
[codex:496142] * It should include the signature and the parameters of the function to be called, as described in
[codex:496142] * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
[codex:496142]
[codex:496142] thinking
[codex:496142] **Evaluating upgradeable proxy initialization risks**
[codex:496142]
[codex:496142] I'll consider how unprotected initialization in upgradeable proxies is typical but risky if deployment misses calling initializers, noting that it’s more a deployment concern than a direct code flaw. I’m weighing whether to treat the upgradeable folder as first-party or third-party and deciding to focus more on potential issues in the user’s own ERC1155Token code next.
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/ERC1155Token.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142]
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] import "./utils/Common.sol";
[codex:496142] import "./utils/ERC1155Base.sol";
[codex:496142]
[codex:496142] import "./interface/IERC1155TokenReceiver.sol";
[codex:496142]
[codex:496142] import "./CashMarket.sol";
[codex:496142]
[codex:496142] /**
[codex:496142] * @notice Implements the ERC1155 token standard for transferring fCash tokens within Notional. ERC1155 ids
[codex:496142] * encode an identifier that represents assets that are fungible with each other. For example, two fCash tokens
[codex:496142] * that asset in the same market and mature at the same time are fungible with each other and therefore will have the
[codex:496142] * same id. `CASH_PAYER` tokens are not transferrable because they have negative value.
[codex:496142] */
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing potential reentrancy risks in token transfers and deposit flows**
[codex:496142]
[codex:496142] I'm examining how ERC1155 transfers and ERC777 token deposits handle reentrancy, noting that state changes usually happen before external calls, which should help prevent double spending. Still, reentrancy via tokensReceived in Escrow might allow callbacks before deposits finalize, though balances seem safe from premature use. I'm curious whether other modules like ExchangeRate or Liquidation might present oracle or calculation vulnerabilities, so I'll explore those next.
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/utils/ExchangeRate.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142]
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] import "../lib/SafeInt256.sol";
[codex:496142] import "../lib/SafeMath.sol";
[codex:496142] import "../utils/Common.sol";
[codex:496142] import "../interface/IAggregator.sol";
[codex:496142]
[codex:496142] import "@openzeppelin/contracts/utils/SafeCast.sol";
[codex:496142]
[codex:496142]
[codex:496142] library ExchangeRate {
[codex:496142] using SafeInt256 for int256;
[codex:496142] using SafeMath for uint256;
[codex:496142]
[codex:496142] /**
[codex:496142]
[codex:496142] thinking
[codex:496142] **Assessing oracle data risks**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,120p' contracts/cache/solpp-generated-contracts/interface/IAggregator.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142]
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142]
[codex:496142]
[codex:496142] /** Chainlink Aggregator Price Feed Interface */
[codex:496142] interface IAggregator {
[codex:496142] function latestAnswer() external view returns (int256);
[codex:496142] function latestTimestamp() external view returns (uint256);
[codex:496142] function latestRound() external view returns (uint256);
[codex:496142] function getAnswer(uint256 roundId) external view returns (int256);
[codex:496142] function getTimestamp(uint256 roundId) external view returns (uint256);
[codex:496142]
[codex:496142] event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 timestamp);
[codex:496142] event NewRound(uint256 indexed roundId, address indexed startedBy);
[codex:496142] }
[codex:496142]
[codex:496142] thinking
[codex:496142] **Inspecting Liquidation.sol for oracle usage**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/utils/Liquidation.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.4;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142]
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] import "./Common.sol";
[codex:496142] import "./ExchangeRate.sol";
[codex:496142]
[codex:496142] import "../lib/SafeInt256.sol";
[codex:496142] import "../lib/SafeMath.sol";
[codex:496142] import "../lib/SafeUInt128.sol";
[codex:496142]
[codex:496142] import "../interface/IPortfoliosCallable.sol";
[codex:496142] import "../storage/EscrowStorage.sol";
[codex:496142]
[codex:496142] import "@openzeppelin/contracts/utils/SafeCast.sol";
[codex:496142]
[codex:496142] library Liquidation {
[codex:496142]
[codex:496142] thinking
[codex:496142] **Inspecting Escrow for reentrancy risks**
[codex:496142] exec
[codex:496142] /bin/bash -lc "rg -n \"safeTransfer|send\\(|call\\{value\" contracts/cache/solpp-generated-contracts/Escrow.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 387: (bool success, ) = to.call{value: amount}("");
[codex:496142] 426: SafeERC20.safeTransferFrom(IERC20(token), from, address(this), amount);
[codex:496142] 433: SafeERC20.safeTransferFrom(IERC20(token), from, address(this), amount);
[codex:496142] 498: IERC777(token).send(to, amount, "0x");
[codex:496142] 500: SafeERC20.safeTransfer(IERC20(token), to, amount);
[codex:496142]
[codex:496142] thinking
[codex:496142] **Assessing potential contract vulnerabilities**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "ECDSA|ecrecover|signature" contracts/cache/solpp-generated-contracts' in /tmp/codex-multi-iwsjvaqi succeeded in 9ms:
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:6:import "./ECDSA.sol";
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:44: function deploySigned(uint256 _salt, address _logic, address _admin, bytes memory _data, bytes memory _signature) public returns (address) {
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:45: address signer = getSigner(_salt, _logic, _admin, _data, _signature);
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:46: require(signer != address(0), "Invalid signature");
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:65: function getSigner(uint256 _salt, address _logic, address _admin, bytes memory _data, bytes memory _signature) public view returns (address) {
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:66: bytes32 msgHash = OpenZeppelinUpgradesECDSA.toEthSignedMessageHash(
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:74: return OpenZeppelinUpgradesECDSA.recover(msgHash, _signature);
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/InitializableAdminUpgradeabilityProxy.sol:19: * It should include the signature and the parameters of the function to be called, as described in
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/InitializableUpgradeabilityProxy.sol:17: * It should include the signature and the parameters of the function to be called, as described in
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/BaseAdminUpgradeabilityProxy.sol:84: * It should include the signature and the parameters of the function to be called, as described in
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ProxyAdmin.sol:64: * It should include the signature and the parameters of the function to be called, as described in
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/UpgradeabilityProxy.sol:17: * It should include the signature and the parameters of the function to be called, as described in
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:6: * @title Elliptic curve signature operations
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:8: * TODO Remove this library once solidity supports passing a signature to ecrecover.
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:11: * Source https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/79dd498b16b957399f84b9aa7e720f98f9eb83e3/contracts/cryptography/ECDSA.sol
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:17:library OpenZeppelinUpgradesECDSA {
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:19: * @dev Recover signer address from a message by using their signature
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:21: * @param signature bytes signature, the signature is generated using web3.eth.sign()
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:23: function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol:24: // Check the signature length
[codex:496142]
[codex:496142] thinking
[codex:496142] **Checking signature validation in proxy factory**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,200p' contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] import "./InitializableAdminUpgradeabilityProxy.sol";
[codex:496142] import "./ECDSA.sol";
[codex:496142]
[codex:496142] // Renamed from ProxyFactory because of name clash with Typechain
[codex:496142] contract CreateProxyFactory {
[codex:496142]
[codex:496142] event ProxyCreated(address proxy);
[codex:496142]
[codex:496142] bytes32 private contractCodeHash;
[codex:496142]
[codex:496142] constructor() public {
[codex:496142] contractCodeHash = keccak256(
[codex:496142] type(InitializableAdminUpgradeabilityProxy).creationCode
[codex:496142] );
[codex:496142] }
[codex:496142]
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing potential signature and reentrancy risks**
[codex:496142]
[codex:496142] I'm examining how CreateProxyFactory handles signatures, focusing on whether `abi.encodePacked` with dynamic `_data` could cause signature collisions or ambiguities. It seems fixed-length fields before `_data` prevent ambiguity, and the fixed address at the end helps avoid collisions there. However, I notice possible cross-chain replay risks since chain IDs aren’t incorporated, plus some concerns about unchecked external calls and reentrancy, especially involving collateral checks and functions in CashMarket and Escrow contracts. I'll drill into CashMarket functions next to understand state update orders and external interactions better.
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "takeCurrentCash|takefCash|trade" contracts/cache/solpp-generated-contracts/CashMarket.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 27: // This is used in _tradeCalculation to shift the ln calculation
[codex:496142] 60: // This is the implied rate that we use to smooth the anchor rate between trades.
[codex:496142] 77: // The maximum trade size denominated in local currency
[codex:496142] 86: // The fee as a percentage of the cash traded given to the protocol
[codex:496142] 134: * @notice Sets the maximum amount that can be traded in a single trade.
[codex:496142] 136: * @param amount the max trade size
[codex:496142] 145: * @notice Sets fee parameters for the market. Liquidity Fees are set as basis points and shift the traded
[codex:496142] 150: * @param liquidityFee a change in the traded exchange rate paid to liquidity providers
[codex:496142] 171: * @notice Emitted when max trade size is updated, takes effect immediately
[codex:496142] 172: * @param maxTradeSize the new max trade size
[codex:496142] 185: * @param account the account that performed the trade
[codex:496142] 186: * @param maturity the maturity that this trade affects
[codex:496142] 201: * @param account the account that performed the trade
[codex:496142] 202: * @param maturity the maturity that this trade affects
[codex:496142] 217: * @param account the account that performed the trade
[codex:496142] 218: * @param maturity the maturity that this trade affects
[codex:496142] 227: * @param account the account that performed the trade
[codex:496142] 228: * @param maturity the maturity that this trade affects
[codex:496142] 253: * @param maxTime after this time the trade will fail
[codex:496142] 379: // Move the cash into the contract's cash balances account. This must happen before the trade
[codex:496142]
[codex:496142] thinking
[codex:496142] **Investigating trade functions for reentrancy**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '600,780p' contracts/cache/solpp-generated-contracts/CashMarket.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] * @return the amount of cash this would purchase, returns 0 if the trade will fail
[codex:496142] */
[codex:496142] function getfCashToCurrentCashAtTime(
[codex:496142] uint32 maturity,
[codex:496142] uint128 fCashAmount,
[codex:496142] uint32 blockTime
[codex:496142] ) public view returns (uint128) {
[codex:496142] Market memory interimMarket = markets[maturity];
[codex:496142] require(blockTime < maturity, "41");
[codex:496142]
[codex:496142] uint32 timeToMaturity = maturity - blockTime;
[codex:496142]
[codex:496142] ( /* market */, uint128 cash) = _tradeCalculation(interimMarket, int256(fCashAmount), timeToMaturity);
[codex:496142] // On trade failure, we will simply return 0
[codex:496142] uint128 fee = _calculateTransactionFee(cash, timeToMaturity);
[codex:496142] return cash.sub(fee);
[codex:496142] }
[codex:496142]
[codex:496142] /**
[codex:496142] * @notice Receive cash in exchange for a fCash obligation. Equivalent to borrowing
[codex:496142]
[codex:496142] thinking
[codex:496142] **Continuing the process**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '780,940p' contracts/cache/solpp-generated-contracts/CashMarket.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] // This will do a free collateral check before it adds to the portfolio.
[codex:496142] Portfolios().upsertAccountAsset(msg.sender, asset, CHECK_FC);
[codex:496142]
[codex:496142] return cash;
[codex:496142] }
[codex:496142]
[codex:496142] /**
[codex:496142] * @notice Used by ERC1155 contract to take fCash
[codex:496142] * @dev skip
[codex:496142] */
[codex:496142] function takefCashOnBehalf(
[codex:496142] address account,
[codex:496142] uint32 maturity,
[codex:496142] uint128 fCashAmount,
[codex:496142] uint32 minImpliedRate
[codex:496142] ) external returns (uint128) {
[codex:496142] require(calledByERC1155Trade(), "20");
[codex:496142]
[codex:496142] (Common.Asset memory asset, uint128 cash) = _takefCash(
[codex:496142] account,
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing potential reentrancy and access controls**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "initializeDependencies" contracts/cache/solpp-generated-contracts' in /tmp/codex-multi-iwsjvaqi succeeded in 9ms:
[codex:496142] contracts/cache/solpp-generated-contracts/CashMarket.sol:37: function initializeDependencies() external {
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing ERC1155 transfer methods**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,260p' contracts/cache/solpp-generated-contracts/utils/Common.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.4;
[codex:496142] pragma experimental ABIEncoderV2;
[codex:496142]
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] import "../lib/SafeMath.sol";
[codex:496142]
[codex:496142] /**
[codex:496142] * @notice Contains all the structs and convenience methods for Notional contracts.
[codex:496142] */
[codex:496142] library Common {
[codex:496142] using SafeMath for uint256;
[codex:496142]
[codex:496142] bytes1 internal constant MASK_POOL = 0x01; // 0000 0001
[codex:496142] bytes1 internal constant MASK_NET = 0x02; // 0000 0010
[codex:496142] bytes1 internal constant MASK_ORDER = 0x04; // 0000 0100
[codex:496142] bytes1 internal constant MASK_CASH = 0x08; // 0000 1000
[codex:496142]
[codex:496142]
[codex:496142] thinking
[codex:496142] **Investigating potential vulnerabilities in asset methods**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "_upsertAsset|_reduceAsset|_removeAsset" contracts/cache/solpp-generated-contracts/Portfolios.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 404: _upsertAsset(portfolio, asset, false);
[codex:496142] 445: _upsertAsset(portfolio, assets[i], false);
[codex:496142] 486: _reduceAsset(fromPortfolio, fromPortfolio[index], index, value);
[codex:496142] 489: _upsertAsset(
[codex:496142] 539: _upsertAsset(
[codex:496142] 552: _upsertAsset(
[codex:496142] 655: _removeAsset(portfolio, i);
[codex:496142] 780: _removeAsset(portfolio, i);
[codex:496142] 786: _reduceAsset(portfolio, portfolio[i], i, notionalToTransfer);
[codex:496142] 790: _upsertAsset(liquidatorPortfolio, asset, false);
[codex:496142] 909: _upsertAsset(accountStorage, state.portfolioChanges[i], true);
[codex:496142] 1013: function _upsertAsset(
[codex:496142] 1047: _reduceAsset(portfolio, portfolio[index], index, asset.notional);
[codex:496142] 1068: function _reduceAsset(
[codex:496142] 1078: _removeAsset(portfolio, index);
[codex:496142] 1086: * @notice Removes a asset from a portfolio, used when assets are transferred by _reduceAsset
[codex:496142] 1091: function _removeAsset(Common.Asset[] storage portfolio, uint256 index) internal {
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '980,1140p' contracts/cache/solpp-generated-contracts/Portfolios.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] uint16 instrumentId,
[codex:496142] uint32 maturity,
[codex:496142] bool findCounterparty
[codex:496142] ) internal view returns (bool, uint256, uint128, bool) {
[codex:496142] uint256 length = portfolio.length;
[codex:496142] if (length == 0) {
[codex:496142] return (false, length, 0, false);
[codex:496142] }
[codex:496142]
[codex:496142] for (uint256 i; i < length; i++) {
[codex:496142] Common.Asset storage t = portfolio[i];
[codex:496142] if (t.cashGroupId != cashGroupId) continue;
[codex:496142] if (t.instrumentId != instrumentId) continue;
[codex:496142] if (t.maturity != maturity) continue;
[codex:496142]
[codex:496142] bytes1 s = t.assetType;
[codex:496142] if (s == assetType) {
[codex:496142] return (true, i, t.notional, false);
[codex:496142] } else if (findCounterparty && s == Common.makeCounterparty(assetType)) {
[codex:496142] return (true, i, t.notional, true);
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing off-by-one asset limit and settlement logic**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "settleLiquidityToken" -n contracts/cache/solpp-generated-contracts/CashMarket.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 7ms:
[codex:496142] 531: function settleLiquidityToken(
[codex:496142] 538: (uint128 cash, uint128 fCash) = _settleLiquidityToken(tokenAmount, maturity);
[codex:496142] 558: function _settleLiquidityToken(uint128 tokenAmount, uint32 maturity) internal returns (uint128, uint128) {
[codex:496142] 920: (cashAmount, fCashAmount) = _settleLiquidityToken(tokensToRemove, maturity);
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '500,580p' contracts/cache/solpp-generated-contracts/CashMarket.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] CASH_GROUP,
[codex:496142] 0,
[codex:496142] maturity,
[codex:496142] // We mark this as a "PAYER" liquidity token so the portfolio reduces the balance
[codex:496142] Common.makeCounterparty(Common.getLiquidityToken()),
[codex:496142] 0,
[codex:496142] amount
[codex:496142] );
[codex:496142]
[codex:496142] // This is the CASH_RECEIVER
[codex:496142] assets[1] = Common.Asset(
[codex:496142] CASH_GROUP,
[codex:496142] 0,
[codex:496142] maturity,
[codex:496142] Common.getCashReceiver(),
[codex:496142] 0,
[codex:496142] fCashAmount
[codex:496142] );
[codex:496142]
[codex:496142] emit RemoveLiquidity(account, maturity, amount, fCashAmount, cash);
[codex:496142]
[codex:496142] thinking
[codex:496142] **Investigating potential vulnerabilities in CashMarket**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "_isValidBlock" contracts/cache/solpp-generated-contracts/CashMarket.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 313: _isValidBlock(maturity, maxTime);
[codex:496142] 686: _isValidBlock(maturity, maxTime);
[codex:496142] 818: _isValidBlock(maturity, maxTime);
[codex:496142] 1036: function _isValidBlock(uint32 maturity, uint32 maxTime) internal view returns (bool) {
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1000,1080p' contracts/cache/solpp-generated-contracts/CashMarket.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] return ids;
[codex:496142] }
[codex:496142]
[codex:496142] /*********** Internal Methods ********************/
[codex:496142]
[codex:496142] function _calculateTransactionFee(uint128 cash, uint32 timeToMaturity) internal view returns (uint128) {
[codex:496142] return SafeCast.toUint128(
[codex:496142] uint256(cash)
[codex:496142] .mul(G_TRANSACTION_FEE)
[codex:496142] .mul(timeToMaturity)
[codex:496142] .div(G_MATURITY_LENGTH)
[codex:496142] .div(Common.DECIMALS)
[codex:496142] );
[codex:496142] }
[codex:496142]
[codex:496142] function _updateMarket(uint32 maturity, int256 fCashAmount) internal returns (uint128) {
[codex:496142] Market memory interimMarket = markets[maturity];
[codex:496142] uint32 timeToMaturity = maturity - uint32(block.timestamp);
[codex:496142] uint128 cash;
[codex:496142] // Here we are selling fCash in return for cash
[codex:496142]
[codex:496142] thinking
[codex:496142] **Examining maturity and rateScalar checks**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "rateScalar" contracts/cache/solpp-generated-contracts/CashMarket.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 58: uint16 rateScalar;
[codex:496142] 123: * @param rateScalar the sensitivity of the liquidity curve to changes
[codex:496142] 125: function setRateFactors(uint32 rateAnchor, uint16 rateScalar) external onlyOwner {
[codex:496142] 126: require(rateScalar > 0 && rateAnchor > 0, "14");
[codex:496142] 127: G_RATE_SCALAR = rateScalar;
[codex:496142] 130: emit UpdateRateFactors(rateAnchor, rateScalar);
[codex:496142] 166: * @param rateScalar the new rate scalar
[codex:496142] 168: event UpdateRateFactors(uint32 rateAnchor, uint16 rateScalar);
[codex:496142] 320: // We check the rateScalar to determine if the market exists or not. The reason for this is that once we
[codex:496142] 321: // initialize a market we will set the rateScalar and rateAnchor based on global values for the duration
[codex:496142] 323: // determine the initial exchange rate of the market (taking into account rateScalar and rateAnchor, of course).
[codex:496142] 324: // Governance will never allow rateScalar to be set to 0.
[codex:496142] 325: if (market.rateScalar == 0) {
[codex:496142] 326: market.rateScalar = G_RATE_SCALAR;
[codex:496142] 936: * - `rateScalar`: determines the slippage rate during trading
[codex:496142] 1223: int256 rateScalar = int256(market.rateScalar).mul(G_MATURITY_LENGTH).div(timeToMaturity);
[codex:496142] 1224: if (rateScalar > Common.MAX_UINT_32) return (0, false);
[codex:496142] 1228: int256 rate = ((abdkResult - LN_1E18) / rateScalar) + market.rateAnchor;
[codex:496142]
[codex:496142] thinking
[codex:496142] **Reviewing market initialization and trade calculations**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "_getNewRateAnchor|_getExchangeRate" -n contracts/cache/solpp-generated-contracts/CashMarket.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 8ms:
[codex:496142] 962: (market.rateAnchor, success) = _getNewRateAnchor(market, timeToMaturity);
[codex:496142] 965: (rate, success) = _getExchangeRate(market, timeToMaturity, 0);
[codex:496142] 1069: (interimMarket.rateAnchor, success) = _getNewRateAnchor(interimMarket, timeToMaturity);
[codex:496142] 1075: (tradeExchangeRate, success) = _getExchangeRate(interimMarket, timeToMaturity, fCashAmount);
[codex:496142] 1134: function _getNewRateAnchor(Market memory market, uint32 timeToMaturity) internal view returns (uint32, bool) {
[codex:496142] 1155: (uint32 exchangeRate, bool success) = _getExchangeRate(market, timeToMaturity, 0);
[codex:496142] 1198: function _getExchangeRate(
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1120,1220p' contracts/cache/solpp-generated-contracts/CashMarket.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] interimMarket.lastImpliedRate = impliedRate;
[codex:496142]
[codex:496142] return (interimMarket, cash);
[codex:496142] }
[codex:496142]
[codex:496142] /**
[codex:496142] * The rate anchor will update as the market rolls down to maturity. The calculation is:
[codex:496142] * newAnchor = anchor - [currentImpliedRate - lastImpliedRate] * (timeToMaturity / MATURITY_SIZE)
[codex:496142] * where:
[codex:496142] * lastImpliedRate = (exchangeRate' - 1) * (MATURITY_SIZE / timeToMaturity')
[codex:496142] * (calculated when the last trade in the market was made)
[codex:496142] * timeToMaturity = maturity - currentBlockTime
[codex:496142] * @return the new rate anchor and a boolean that signifies success
[codex:496142] */
[codex:496142] function _getNewRateAnchor(Market memory market, uint32 timeToMaturity) internal view returns (uint32, bool) {
[codex:496142] (uint32 impliedRate, bool success) = _getImpliedRate(market, timeToMaturity);
[codex:496142]
[codex:496142] if (!success) return (0, false);
[codex:496142]
[codex:496142] int256 rateDifference = int256(impliedRate)
[codex:496142]
[codex:496142] thinking
[codex:496142] **Evaluating potential smart contract vulnerabilities**
[codex:496142]
[codex:496142] I've analyzed various contract behaviors, focusing on trade failure conditions, proxy patterns, ERC1155 transfer logic, ERC777 quirks, token decimals handling, and reentrancy scenarios. I'm especially exploring reentrancy risks around token transfers and withdrawal ordering, signature replay risks without domain separation, and potential issues in exchange rate use and free collateral checks. There is a lot to unpack here, so I'll keep probing these nuanced cases to pinpoint any subtle vulnerabilities.
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "_validateCurrencies" -n contracts/cache/solpp-generated-contracts/Escrow.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 7ms:
[codex:496142] 702: Liquidation.RateParameters memory rateParam = _validateCurrencies(localCurrency, collateralCurrency);
[codex:496142] 748: Liquidation.RateParameters memory rateParam = _validateCurrencies(localCurrency, collateralCurrency);
[codex:496142] 828: Liquidation.RateParameters memory rateParam = _validateCurrencies(localCurrency, collateralCurrency);
[codex:496142] 866: Liquidation.RateParameters memory rateParam = _validateCurrencies(localCurrency, collateralCurrency);
[codex:496142] 965: Liquidation.RateParameters memory rateParam = _validateCurrencies(localCurrency, collateralCurrency);
[codex:496142] 1004: Liquidation.RateParameters memory rateParam = _validateCurrencies(localCurrency, collateralCurrency);
[codex:496142] 1057: function _validateCurrencies(
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1040,1120p' contracts/cache/solpp-generated-contracts/Escrow.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142]
[codex:496142] require(accountLocalBalance < 0, "21");
[codex:496142]
[codex:496142] if (accountLocalBalance.neg() < reserveLocalBalance) {
[codex:496142] cashBalances[localCurrency][account] = 0;
[codex:496142] cashBalances[localCurrency][G_RESERVE_ACCOUNT] = reserveLocalBalance.subNoNeg(accountLocalBalance.neg());
[codex:496142] } else {
[codex:496142] cashBalances[localCurrency][account] = accountLocalBalance.add(reserveLocalBalance);
[codex:496142] cashBalances[localCurrency][G_RESERVE_ACCOUNT] = 0;
[codex:496142] }
[codex:496142] }
[codex:496142]
[codex:496142] /********** Settle Cash / Liquidation *************/
[codex:496142]
[codex:496142] /********** Internal Methods *********************/
[codex:496142]
[codex:496142] /** @notice Validates currencies and returns their rate parameters object */
[codex:496142] function _validateCurrencies(
[codex:496142] uint16 localCurrency,
[codex:496142] uint16 collateralCurrency
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing potential vulnerabilities and external calls**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,200p' contracts/cache/solpp-generated-contracts/upgradeable/Initializable.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity >=0.4.24 <0.7.0;
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] /**
[codex:496142] * @title Initializable
[codex:496142] *
[codex:496142] * @dev Helper contract to support initializer functions. To use it, replace
[codex:496142] * the constructor with a function that has the `initializer` modifier.
[codex:496142] * WARNING: Unlike constructors, initializer functions must be manually
[codex:496142] * invoked. This applies both to deploying an Initializable contract, as well
[codex:496142] * as extending an Initializable contract via inheritance.
[codex:496142] * WARNING: When used with inheritance, manual care must be taken to not invoke
[codex:496142] * a parent initializer twice, or ensure that all initializers are idempotent,
[codex:496142] * because this is not dealt with automatically as with constructors.
[codex:496142] */
[codex:496142] contract Initializable {
[codex:496142]
[codex:496142] /**
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing potential vulnerabilities**
[codex:496142] exec
[codex:496142] /bin/bash -lc "rg -n \"\\.call\\{|\\.call\\(\" contracts/cache/solpp-generated-contracts" in /tmp/codex-multi-iwsjvaqi succeeded in 11ms:
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/CreateProxyFactory.sol:35: (bool success,) = proxy.call(_data);
[codex:496142] contracts/cache/solpp-generated-contracts/Escrow.sol:387: (bool success, ) = to.call{value: amount}("");
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/Address.sol:59: (bool success, ) = recipient.call{ value: amount }("");
[codex:496142] contracts/cache/solpp-generated-contracts/upgradeable/Address.sol:125: (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing potential reentrancy in Escrow with ERC777 tokens**
[codex:496142]
[codex:496142] I'm examining how Escrow interacts with ERC777 tokens, especially focusing on whether callbacks like tokensReceived could allow reentrancy attacks during withdrawals or liquidation settlement. I want to confirm if internal balances are safely updated before external calls to avoid exploitation. I'll check related functions like _settleCashBalance and liquidate to understand the full sequence of state updates and external calls.
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '760,1040p' contracts/cache/solpp-generated-contracts/Escrow.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] * @param valueToSettle the amount of collateral to transfer
[codex:496142] * @param rateParam rate params for the liquidation library
[codex:496142] */
[codex:496142] function _settleCashBalance(
[codex:496142] address payer,
[codex:496142] uint128 valueToSettle,
[codex:496142] Liquidation.RateParameters memory rateParam
[codex:496142] ) internal returns (uint128, uint128, uint128) {
[codex:496142] require(payer != msg.sender, "48");
[codex:496142] if (valueToSettle == 0) return (0, 0, 0);
[codex:496142] Common.FreeCollateralFactors memory fc = _freeCollateralFactors(
[codex:496142] payer,
[codex:496142] rateParam.localCurrency,
[codex:496142] rateParam.collateralCurrency
[codex:496142] );
[codex:496142]
[codex:496142] int256 payerLocalBalance = cashBalances[rateParam.localCurrency][payer];
[codex:496142] int256 payerCollateralBalance = cashBalances[rateParam.collateralCurrency][payer];
[codex:496142]
[codex:496142] // This cash account must have enough negative cash to settle against
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing token transfer and liquidation logic**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,200p' contracts/cache/solpp-generated-contracts/upgradeable/ProxyAdmin.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] import "./Ownable.sol";
[codex:496142] import "./AdminUpgradeabilityProxy.sol";
[codex:496142]
[codex:496142] /**
[codex:496142] * @title ProxyAdmin
[codex:496142] * @dev This contract is the admin of a proxy, and is in charge
[codex:496142] * of upgrading it as well as transferring it to another admin.
[codex:496142] */
[codex:496142] contract ProxyAdmin is OpenZeppelinUpgradesOwnable {
[codex:496142]
[codex:496142] /**
[codex:496142] * @dev Returns the current implementation of a proxy.
[codex:496142] * This is needed because only the proxy admin can query it.
[codex:496142] * @return The address of the current implementation of the proxy.
[codex:496142] */
[codex:496142] function getProxyImplementation(AdminUpgradeabilityProxy proxy) public view returns (address) {
[codex:496142]
[codex:496142] thinking
[codex:496142] **Checking Ownable upgradeable for access control**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,200p' contracts/cache/solpp-generated-contracts/upgradeable/Ownable.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] /**
[codex:496142] * @title Ownable
[codex:496142] * @dev The Ownable contract has an owner address, and provides basic authorization control
[codex:496142] * functions, this simplifies the implementation of "user permissions".
[codex:496142] *
[codex:496142] * Source https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/v2.1.3/contracts/ownership/Ownable.sol
[codex:496142] * This contract is copied here and renamed from the original to avoid clashes in the compiled artifacts
[codex:496142] * when the user imports a zos-lib contract (that transitively causes this contract to be compiled and added to the
[codex:496142] * build/artifacts folder) as well as the vanilla Ownable implementation from an openzeppelin version.
[codex:496142] */
[codex:496142] contract OpenZeppelinUpgradesOwnable {
[codex:496142] address internal _owner;
[codex:496142]
[codex:496142] event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
[codex:496142]
[codex:496142] /**
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing Ownable and ERC1155Trade behaviors**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,220p' contracts/cache/solpp-generated-contracts/lib/SafeInt256.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142]
[codex:496142] // SPDX-License-Identifier: GPL-3.0-only
[codex:496142]
[codex:496142]
[codex:496142] library SafeInt256 {
[codex:496142] int256 constant private _INT256_MIN = -2**255;
[codex:496142]
[codex:496142] /**
[codex:496142] * @dev Returns the multiplication of two signed integers, reverting on
[codex:496142] * overflow.
[codex:496142] *
[codex:496142] * Counterpart to Solidity's `*` operator.
[codex:496142] *
[codex:496142] * Requirements:
[codex:496142] *
[codex:496142] * - Multiplication cannot overflow.
[codex:496142] */
[codex:496142] function mul(int256 a, int256 b) internal pure returns (int256) {
[codex:496142] // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing potential division by zero in trade calculation**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "tradeCashReceiver|_tradefCash|raiseCurrentCashViaCashReceiver" contracts/cache/solpp-generated-contracts/utils/Liquidation.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 678: return _tradefCash(
[codex:496142] 719: return _tradefCash(
[codex:496142] 731: function _tradefCash(
[codex:496142] 754: (uint128 shortfall, uint128 liquidatorPayment) = IPortfoliosCallable(Portfolios).raiseCurrentCashViaCashReceiver(
[codex:496142]
[codex:496142] thinking
[codex:496142] **Inspecting trade fCash functions**
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '640,780p' contracts/cache/solpp-generated-contracts/utils/Liquidation.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] amountToRaise
[codex:496142] );
[codex:496142]
[codex:496142] if (creditBalance) {
[codex:496142] balance = balance.add(amountToRaise).sub(remainder);
[codex:496142] } else {
[codex:496142] // Generally we expect remainder to equal zero but this can be off by small amounts due
[codex:496142] // to truncation in the different calculations on the liquidity token haircuts. The upper bound on
[codex:496142] // amountToRaise is based on collateralCurrencyAvailable and the balance. Also note that when removing
[codex:496142] // liquidity tokens some amount of cash receiver is credited back to the account as well. The concern
[codex:496142] // here is that if this is not true then remainder could put the account into a debt that it cannot pay off.
[codex:496142] require(remainder <= 1, "52");
[codex:496142] balance = balance.sub(remainder);
[codex:496142] }
[codex:496142] }
[codex:496142]
[codex:496142] return balance;
[codex:496142] }
[codex:496142]
[codex:496142] /**
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing fCash liquidation methods**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "tradeCashReceiver" contracts/cache/solpp-generated-contracts' in /tmp/codex-multi-iwsjvaqi succeeded in 9ms:
[codex:496142] contracts/cache/solpp-generated-contracts/CashMarket.sol:862: function tradeCashReceiver(
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing CashMarket function usage and risks**
[codex:496142] exec
[codex:496142] /bin/bash -lc 'rg -n "getMarket" -n contracts/cache/solpp-generated-contracts/CashMarket.sol' in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 941: function getMarket(uint32 maturity) external view returns (Market memory) {
[codex:496142] 976: function getMarketRates() external view returns (uint32[] memory) {
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '940,1008p' contracts/cache/solpp-generated-contracts/CashMarket.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] */
[codex:496142] function getMarket(uint32 maturity) external view returns (Market memory) {
[codex:496142] return markets[maturity];
[codex:496142] }
[codex:496142]
[codex:496142] /**
[codex:496142] * @notice Returns the current mid exchange rate of cash to fCash. This is NOT the rate that users will be able to trade it, those
[codex:496142] * calculations depend on trade size and you must use the `getCurrentCashTofCash` or `getfCashToCurrentCash` methods.
[codex:496142] * @param maturity the maturity to get the rate for
[codex:496142] * @return a tuple where the first value is the exchange rate and the second value is a boolean indicating
[codex:496142] * whether or not the maturity is active
[codex:496142] */
[codex:496142] function getRate(uint32 maturity) public view returns (uint32, bool) {
[codex:496142] Market memory market = markets[maturity];
[codex:496142] if (block.timestamp >= maturity) {
[codex:496142] // The exchange rate is 1 after we hit maturity for the fCash market.
[codex:496142] return (INSTRUMENT_PRECISION, true);
[codex:496142] } else {
[codex:496142] uint32 timeToMaturity = maturity - uint32(block.timestamp);
[codex:496142] bool success;
[codex:496142]
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing contract vulnerabilities and edge cases**
[codex:496142]
[codex:496142] I'll carefully review token deposit logic, access controls, reentrancy risks, and loop handling to identify vulnerabilities or risky edge cases—especially around ERC777 handling, external calls before state updates, and subtle bugs in array manipulation. I'll also consider oracle data freshness and permissions on dependency updates to assess possible exploit paths.
[codex:496142] thinking
[codex:496142] **Evaluating signature validation and replay concerns**
[codex:496142]
[codex:496142] I'll examine the proxy factory’s signature handling, focusing on replay risks, signer validation, and whether the ECDSA checks properly prevent malleable or invalid signatures, especially in the absence of nonce or expiry mechanisms.
[codex:496142] exec
[codex:496142] /bin/bash -lc "sed -n '1,140p' contracts/cache/solpp-generated-contracts/upgradeable/ECDSA.sol" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] pragma solidity ^0.6.0;
[codex:496142]
[codex:496142]
[codex:496142]
[codex:496142] /**
[codex:496142] * @title Elliptic curve signature operations
[codex:496142] * @dev Based on https://gist.github.com/axic/5b33912c6f61ae6fd96d6c4a47afde6d
[codex:496142] * TODO Remove this library once solidity supports passing a signature to ecrecover.
[codex:496142] * See https://github.com/ethereum/solidity/issues/864
[codex:496142] *
[codex:496142] * Source https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/79dd498b16b957399f84b9aa7e720f98f9eb83e3/contracts/cryptography/ECDSA.sol
[codex:496142] * This contract is copied here and renamed from the original to avoid clashes in the compiled artifacts
[codex:496142] * when the user imports a zos-lib contract (that transitively causes this contract to be compiled and added to the
[codex:496142] * build/artifacts folder) as well as the vanilla implementation from an openzeppelin version.
[codex:496142] */
[codex:496142]
[codex:496142] library OpenZeppelinUpgradesECDSA {
[codex:496142] /**
[codex:496142] * @dev Recover signer address from a message by using their signature
[codex:496142] * @param hash bytes32 message, the hash is the signed message. What is recovered is the signer address.
[codex:496142]
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing ERC777 reentrancy and accounting bug**
[codex:496142]
[codex:496142] I'm examining how ERC777 tokens interact with escrow during liquidation and settlement, focusing on an accounting inconsistency: when liquidators pay with ERC777 tokens, the tokensReceived hook credits their internal balance, effectively giving them credit for tokens they just paid. This differs from ERC20 tokens, where no such credit occurs. That discrepancy could let liquidators exploit the system by paying tokens but still retaining internal balance, enabling potential free collateral extraction. This looks like a serious reentrancy and accounting flaw tied to ERC777 hooks during settlement.
[codex:496142] thinking
[codex:496142] **Investigating ERC777 token handling nuances**
[codex:496142]
[codex:496142] I'm confirming that the vulnerability surfaces specifically for ERC777 tokens without transfer fees, where the tokensReceived hook improperly credits liquidators’ internal balances during settlement. This mismatch could enable free collateral extraction. I'm also exploring how tokens with both ERC777 and transfer fee flags behave during transfers, detecting complex interactions in _tokenDeposit and cash balance updates that might cause further accounting inconsistencies. To verify details, I'll retrieve exact line references for tokensReceived and _finishLiquidateSettle in the Escrow contract.
[codex:496142] exec
[codex:496142] /bin/bash -lc "nl -ba contracts/cache/solpp-generated-contracts/Escrow.sol | sed -n '430,560p'" in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 430 } else if (options.isERC777) {
[codex:496142] 431 IERC777(token).operatorSend(from, address(this), amount, "0x", "0x");
[codex:496142] 432 }else {
[codex:496142] 433 SafeERC20.safeTransferFrom(IERC20(token), from, address(this), amount);
[codex:496142] 434 }
[codex:496142] 435
[codex:496142] 436 return amount;
[codex:496142] 437 }
[codex:496142] 438
[codex:496142] 439 /**
[codex:496142] 440 * @notice Withdraws from an account's collateral holdings back to their account. Checks if the
[codex:496142] 441 * account has sufficient free collateral after the withdraw or else it fails.
[codex:496142] 442 * @dev - INSUFFICIENT_BALANCE: not enough balance in account
[codex:496142] 443 * - INVALID_CURRENCY: token address supplied is not a valid currency
[codex:496142] 444 * - INSUFFICIENT_FREE_COLLATERAL: not enough free collateral to withdraw
[codex:496142] 445 * @param token collateral type to withdraw
[codex:496142] 446 * @param amount total value to withdraw
[codex:496142] 447 */
[codex:496142] 448 function withdraw(address token, uint128 amount) external {
[codex:496142] 449 bool didWithdraw = _withdraw(msg.sender, msg.sender, token, amount, true);
[codex:496142]
[codex:496142] thinking
[codex:496142] **Extending token counter**
[codex:496142] exec
[codex:496142] /bin/bash -lc "nl -ba contracts/cache/solpp-generated-contracts/Escrow.sol | sed -n '540,620p'" in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 540 // We skip the free collateral check here because ERC1155.batchOperation will do the check
[codex:496142] 541 // before it exits.
[codex:496142] 542 _withdraw(account, withdraws[i].to, tokenAddress, amount, false);
[codex:496142] 543 }
[codex:496142] 544 }
[codex:496142] 545
[codex:496142] 546 /**
[codex:496142] 547 * @notice Receives tokens from an ERC777 send message.
[codex:496142] 548 * @dev skip
[codex:496142] 549 * @param from address the tokens are being sent from (!= msg.sender)
[codex:496142] 550 * @param amount amount
[codex:496142] 551 */
[codex:496142] 552 function tokensReceived(
[codex:496142] 553 address, /*operator*/
[codex:496142] 554 address from,
[codex:496142] 555 address, /*to*/
[codex:496142] 556 uint256 amount,
[codex:496142] 557 bytes calldata, /*userData*/
[codex:496142] 558 bytes calldata /*operatorData*/
[codex:496142] 559 ) external override {
[codex:496142]
[codex:496142] thinking
[codex:496142] **Searching for function line numbers**
[codex:496142] exec
[codex:496142] /bin/bash -lc "nl -ba contracts/cache/solpp-generated-contracts/Escrow.sol | sed -n '1080,1160p'" in /tmp/codex-multi-iwsjvaqi succeeded in 6ms:
[codex:496142] 1080 );
[codex:496142] 1081 }
[codex:496142] 1082
[codex:496142] 1083 function _finishLiquidateSettle(
[codex:496142] 1084 uint16 currency,
[codex:496142] 1085 int256 netAmount
[codex:496142] 1086 ) internal {
[codex:496142] 1087 address token = currencyIdToAddress[currency];
[codex:496142] 1088 if (netAmount > 0) {
[codex:496142] 1089 TokenOptions memory options = tokenOptions[token];
[codex:496142] 1090 if (options.hasTransferFee) {
[codex:496142] 1091 // If the token has transfer fees then we cannot use _tokenDeposit to get an accurate amount of local
[codex:496142] 1092 // currency. The liquidator must have a sufficient balance inside the system. When transferring collateral
[codex:496142] 1093 // internally within the system we must always check free collateral.
[codex:496142] 1094 cashBalances[currency][msg.sender] = cashBalances[currency][msg.sender].subNoNeg(netAmount);
[codex:496142] 1095 require(_freeCollateral(msg.sender) >= 0, "37");
[codex:496142] 1096 } else {
[codex:496142] 1097 _tokenDeposit(token, msg.sender, uint128(netAmount), options);
[codex:496142] 1098 }
[codex:496142] 1099 } else if (netAmount < 0) {
[codex:496142]
[codex:496142] thinking
[codex:496142] **Analyzing ERC777 liquidation double-credit vulnerability**
[codex:496142] exec
[codex:496142] /bin/bash -lc "nl -ba contracts/cache/solpp-generated-contracts/utils/ExchangeRate.sol | sed -n '50,140p'" in /tmp/codex-multi-iwsjvaqi succeeded in 5ms:
[codex:496142] 50 // Fetches the latest answer from the chainlink oracle and buffer it by the apporpriate amount.
[codex:496142] 51 uint256 rate = _fetchExchangeRate(er, false);
[codex:496142] 52 uint128 absBalance = uint128(balance.abs());
[codex:496142] 53
[codex:496142] 54 // We are converting to ETH here so we know that it has Common.DECIMAL precision. The calculation here is:
[codex:496142] 55 // baseDecimals * rateDecimals * Common.DECIMAL / (rateDecimals * baseDecimals)
[codex:496142] 56 // er.buffer is in Common.DECIMAL precision
[codex:496142] 57 // We use uint256 to do the calculation and then cast back to int256 to avoid overflows.
[codex:496142] 58 int256 result = int256(
[codex:496142] 59 SafeCast.toUint128(rate
[codex:496142] 60 .mul(absBalance)
[codex:496142] 61 // Buffer has 18 decimal places of precision
[codex:496142] 62 .mul(buffer ? er.buffer : Common.DECIMALS)
[codex:496142] 63 .div(er.rateDecimals)
[codex:496142] 64 .div(baseDecimals)
[codex:496142] 65 )
[codex:496142] 66 );
[codex:496142] 67
[codex:496142] 68 return balance > 0 ? result : result.neg();
[codex:496142] 69 }
[codex:496142]
[codex:496142] thinking
[codex:496142] **Summarizing audit findings**
[codex:496142]
[codex:496142] I'm gathering the key vulnerabilities to report: a high-severity ERC777 liquidation accounting bug that allows liquidators to extract free collateral by exploiting tokensReceived credits, and a medium-severity oracle freshness issue where Chainlink rates are used without proper staleness validation, risking mispricing during outages. I'll prepare a JSON report covering these findings with scenarios, recommendations, evidence, and precise locations.
[codex:496142] codex
[codex:496142] {"no_findings":false,"summary":"Found 2 issues: an ERC777 liquidation/settlement accounting bug that can grant free collateral, and missing oracle freshness checks on Chainlink feeds.","findings":[{"severity":"high","category":"other","title":"ERC777 liquidation payments credit liquidator balance, enabling free collateral extraction","exploit_scenario":"If a listed currency uses ERC777 (isERC777=true), a liquidator can call `liquidate`/`settleCashBalance` so `_finishLiquidateSettle` executes `_tokenDeposit` with netAmount>0. The ERC777 `operatorSend` triggers `tokensReceived`, which credits `cashBalances` for the liquidator. The payer’s debt is reduced and collateral is transferred to the liquidator, yet the liquidator retains an internal balance equal to the payment and can withdraw it, effectively receiving collateral for free.","recommendation":"During liquidation/settlement flows, bypass ERC777 hooks or neutralize the credit. For example: use a dedicated transfer path that does not trigger `tokensReceived`, add a guarded flag to ignore credits for protocol-initiated payments, or subtract the credited amount after the ERC777 transfer completes.","evidence":"`_finishLiquidateSettle` calls `_tokenDeposit` on netAmount>0; `_tokenDeposit` calls `IERC777.operatorSend`; `tokensReceived` unconditionally credits `cashBalances` for `from`.","locations":["contracts/cache/solpp-generated-contracts/Escrow.sol:1083","contracts/cache/solpp-generated-contracts/Escrow.sol:430","contracts/cache/solpp-generated-contracts/Escrow.sol:552"]},{"severity":"medium","category":"oracle","title":"Chainlink price reads lack freshness/round validation","exploit_scenario":"If a Chainlink feed stalls, lags, or is manipulated temporarily, `latestAnswer()` may return stale data. Borrowing, settlement, or liquidation can then be executed against outdated prices, enabling under-collateralized positions or value extraction until feeds update.","recommendation":"Use `latestRoundData()` (or equivalent) and validate `updatedAt` against a staleness threshold and `answeredInRound >= roundId`. On L2s, add a sequencer-uptime check. Consider pausing or restricting actions when feeds are stale.","evidence":"`ExchangeRate._fetchExchangeRate` uses `IAggregator.latestAnswer()` and only checks `rate > 0`, with no staleness/round checks.","locations":["contracts/cache/solpp-generated-contracts/utils/ExchangeRate.sol:101"]}]}
[codex:496142] tokens used
[codex:496142] 177,715
[codex:496142] {"no_findings":false,"summary":"Found 2 issues: an ERC777 liquidation/settlement accounting bug that can grant free collateral, and missing oracle freshness checks on Chainlink feeds.","findings":[{"severity":"high","category":"other","title":"ERC777 liquidation payments credit liquidator balance, enabling free collateral extraction","exploit_scenario":"If a listed currency uses ERC777 (isERC777=true), a liquidator can call `liquidate`/`settleCashBalance` so `_finishLiquidateSettle` executes `_tokenDeposit` with netAmount>0. The ERC777 `operatorSend` triggers `tokensReceived`, which credits `cashBalances` for the liquidator. The payer’s debt is reduced and collateral is transferred to the liquidator, yet the liquidator retains an internal balance equal to the payment and can withdraw it, effectively receiving collateral for free.","recommendation":"During liquidation/settlement flows, bypass ERC777 hooks or neutralize the credit. For example: use a dedicated transfer path that does not trigger `tokensReceived`, add a guarded flag to ignore credits for protocol-initiated payments, or subtract the credited amount after the ERC777 transfer completes.","evidence":"`_finishLiquidateSettle` calls `_tokenDeposit` on netAmount>0; `_tokenDeposit` calls `IERC777.operatorSend`; `tokensReceived` unconditionally credits `cashBalances` for `from`.","locations":["contracts/cache/solpp-generated-contracts/Escrow.sol:1083","contracts/cache/solpp-generated-contracts/Escrow.sol:430","contracts/cache/solpp-generated-contracts/Escrow.sol:552"]},{"severity":"medium","category":"oracle","title":"Chainlink price reads lack freshness/round validation","exploit_scenario":"If a Chainlink feed stalls, lags, or is manipulated temporarily, `latestAnswer()` may return stale data. Borrowing, settlement, or liquidation can then be executed against outdated prices, enabling under-collateralized positions or value extraction until feeds update.","recommendation":"Use `latestRoundData()` (or equivalent) and validate `updatedAt` against a staleness threshold and `answeredInRound >= roundId`. On L2s, add a sequencer-uptime check. Consider pausing or restricting actions when feeds are stale.","evidence":"`ExchangeRate._fetchExchangeRate` uses `IAggregator.latestAnswer()` and only checks `rate > 0`, with no staleness/round checks.","locations":["contracts/cache/solpp-generated-contracts/utils/ExchangeRate.sol:101"]}]}
{
"codex": {
"ran_at": "2025-12-28T13:20:01.039877+00:00",
"returncode": 0
},
"summary": "Found 2 issues: an ERC777 liquidation/settlement accounting bug that can grant free collateral, and missing oracle freshness checks on Chainlink feeds.",
"raw_final": {
"summary": "Found 2 issues: an ERC777 liquidation/settlement accounting bug that can grant free collateral, and missing oracle freshness checks on Chainlink feeds.",
"findings": [
{
"title": "ERC777 liquidation payments credit liquidator balance, enabling free collateral extraction",
"category": "other",
"evidence": "`_finishLiquidateSettle` calls `_tokenDeposit` on netAmount>0; `_tokenDeposit` calls `IERC777.operatorSend`; `tokensReceived` unconditionally credits `cashBalances` for `from`.",
"severity": "high",
"locations": [
"contracts/cache/solpp-generated-contracts/Escrow.sol:1083",
"contracts/cache/solpp-generated-contracts/Escrow.sol:430",
"contracts/cache/solpp-generated-contracts/Escrow.sol:552"
],
"recommendation": "During liquidation/settlement flows, bypass ERC777 hooks or neutralize the credit. For example: use a dedicated transfer path that does not trigger `tokensReceived`, add a guarded flag to ignore credits for protocol-initiated payments, or subtract the credited amount after the ERC777 transfer completes.",
"exploit_scenario": "If a listed currency uses ERC777 (isERC777=true), a liquidator can call `liquidate`/`settleCashBalance` so `_finishLiquidateSettle` executes `_tokenDeposit` with netAmount>0. The ERC777 `operatorSend` triggers `tokensReceived`, which credits `cashBalances` for the liquidator. The payer\u2019s debt is reduced and collateral is transferred to the liquidator, yet the liquidator retains an internal balance equal to the payment and can withdraw it, effectively receiving collateral for free."
},
{
"title": "Chainlink price reads lack freshness/round validation",
"category": "oracle",
"evidence": "`ExchangeRate._fetchExchangeRate` uses `IAggregator.latestAnswer()` and only checks `rate > 0`, with no staleness/round checks.",
"severity": "medium",
"locations": [
"contracts/cache/solpp-generated-contracts/utils/ExchangeRate.sol:101"
],
"recommendation": "Use `latestRoundData()` (or equivalent) and validate `updatedAt` against a staleness threshold and `answeredInRound >= roundId`. On L2s, add a sequencer-uptime check. Consider pausing or restricting actions when feeds are stale.",
"exploit_scenario": "If a Chainlink feed stalls, lags, or is manipulated temporarily, `latestAnswer()` may return stale data. Borrowing, settlement, or liquidation can then be executed against outdated prices, enabling under-collateralized positions or value extraction until feeds update."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x0295 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x9fdd1f7e 00000019: GT 0000001a: PUSH2 0x015a 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xc84aae17 00000024: GT 00000025: PUSH2 0x00c1 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xe4db4250 0000002f: GT 00000030: PUSH2 0x007a 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xe4db4250 0000003a: EQ 0000003b: PUSH2 0x07d9 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xebebf742 00000045: EQ 00000046: PUSH2 0x07f9 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xee0c7a76 00000050: EQ 00000051: PUSH2 0x0819 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf2fde38b 0000005b: EQ 0000005c: PUSH2 0x0839 0000005f: JUMPI 00000060: DUP1 00000061: PUSH4 0xf8c8765e 00000066: EQ 00000067: PUSH2 0x0859 0000006a: JUMPI 0000006b: DUP1 0000006c: PUSH4 0xfc3b52cb 00000071: EQ 00000072: PUSH2 0x0879 00000075: JUMPI 00000076: PUSH2 0x02b0 00000079: JUMP 0000007a: JUMPDEST 0000007b: DUP1 0000007c: PUSH4 0xc84aae17 00000081: EQ 00000082: PUSH2 0x0724 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0xc8f38dc0 0000008c: EQ 0000008d: PUSH2 0x0744 00000090: JUMPI 00000091: DUP1 00000092: PUSH4 0xdbc8a9f0 00000097: EQ 00000098: PUSH2 0x0771 0000009b: JUMPI 0000009c: DUP1 0000009d: PUSH4 0xe0d48838 000000a2: EQ 000000a3: PUSH2 0x0786 000000a6: JUMPI 000000a7: DUP1 000000a8: PUSH4 0xe13dc218 000000ad: EQ 000000ae: PUSH2 0x07a6 000000b1: JUMPI 000000b2: DUP1 000000b3: PUSH4 0xe4a83300 000000b8: EQ 000000b9: PUSH2 0x07c6 000000bc: JUMPI 000000bd: PUSH2 0x02b0 000000c0: JUMP 000000c1: JUMPDEST 000000c2: DUP1 000000c3: PUSH4 0xad5c4648 000000c8: GT 000000c9: PUSH2 0x0113 000000cc: JUMPI 000000cd: DUP1 000000ce: PUSH4 0xad5c4648 000000d3: EQ 000000d4: PUSH2 0x067a 000000d7: JUMPI 000000d8: DUP1 000000d9: PUSH4 0xb233103c 000000de: EQ 000000df: PUSH2 0x068f 000000e2: JUMPI 000000e3: DUP1 000000e4: PUSH4 0xb3fb6564 000000e9: EQ 000000ea: PUSH2 0x06af 000000ed: JUMPI 000000ee: DUP1 000000ef: PUSH4 0xb84a7d4d 000000f4: EQ 000000f5: PUSH2 0x06cf 000000f8: JUMPI 000000f9: DUP1 000000fa: PUSH4 0xbf7dec13 000000ff: EQ 00000100: PUSH2 0x06e4 00000103: JUMPI 00000104: DUP1 00000105: PUSH4 0xbf86a66b 0000010a: EQ 0000010b: PUSH2 0x0704 0000010e: JUMPI 0000010f: PUSH2 0x02b0 00000112: JUMP 00000113: JUMPDEST 00000114: DUP1 00000115: PUSH4 0x9fdd1f7e 0000011a: EQ 0000011b: PUSH2 0x05c5 0000011e: JUMPI 0000011f: DUP1 00000120: PUSH4 0xa29b1e41 00000125: EQ 00000126: PUSH2 0x05e5 00000129: JUMPI 0000012a: DUP1 0000012b: PUSH4 0xa46858cc 00000130: EQ 00000131: PUSH2 0x0605 00000134: JUMPI 00000135: DUP1 00000136: PUSH4 0xa73fd391 0000013b: EQ 0000013c: PUSH2 0x0625 0000013f: JUMPI 00000140: DUP1 00000141: PUSH4 0xa8173894 00000146: EQ 00000147: PUSH2 0x063a 0000014a: JUMPI 0000014b: DUP1 0000014c: PUSH4 0xad12da7f 00000151: EQ 00000152: PUSH2 0x065a 00000155: JUMPI 00000156: PUSH2 0x02b0 00000159: JUMP 0000015a: JUMPDEST 0000015b: DUP1 0000015c: PUSH4 0x715018a6 00000161: GT 00000162: PUSH2 0x01fe 00000165: JUMPI 00000166: DUP1 00000167: PUSH4 0x8da5cb5b 0000016c: GT 0000016d: PUSH2 0x01b7 00000170: JUMPI 00000171: DUP1 00000172: PUSH4 0x8da5cb5b 00000177: EQ 00000178: PUSH2 0x050c 0000017b: JUMPI 0000017c: DUP1 0000017d: PUSH4 0x8f32d59b 00000182: EQ 00000183: PUSH2 0x0521 00000186: JUMPI 00000187: DUP1 00000188: PUSH4 0x97e770df 0000018d: EQ 0000018e: PUSH2 0x0543 00000191: JUMPI 00000192: DUP1 00000193: PUSH4 0x9b492fab 00000198: EQ 00000199: PUSH2 0x0570 0000019c: JUMPI 0000019d: DUP1 0000019e: PUSH4 0x9f0f5061 000001a3: EQ 000001a4: PUSH2 0x0585 000001a7: JUMPI 000001a8: DUP1 000001a9: PUSH4 0x9f1a944f 000001ae: EQ 000001af: PUSH2 0x05a5 000001b2: JUMPI 000001b3: PUSH2 0x02b0 000001b6: JUMP 000001b7: JUMPDEST 000001b8: DUP1 000001b9: PUSH4 0x715018a6 000001be: EQ 000001bf: PUSH2 0x0460 000001c2: JUMPI 000001c3: DUP1 000001c4: PUSH4 0x82c4bd3d 000001c9: EQ 000001ca: PUSH2 0x0475 000001cd: JUMPI 000001ce: DUP1 000001cf: PUSH4 0x833758f5 000001d4: EQ 000001d5: PUSH2 0x04a2 000001d8: JUMPI 000001d9: DUP1 000001da: PUSH4 0x865e6fd3 000001df: EQ 000001e0: PUSH2 0x04c2 000001e3: JUMPI 000001e4: DUP1 000001e5: PUSH4 0x86678242 000001ea: EQ 000001eb: PUSH2 0x04e2 000001ee: JUMPI 000001ef: DUP1 000001f0: PUSH4 0x88bc2ef3 000001f5: EQ 000001f6: PUSH2 0x04f7 000001f9: JUMPI 000001fa: PUSH2 0x02b0 000001fd: JUMP 000001fe: JUMPDEST 000001ff: DUP1 00000200: PUSH4 0x439370b1 00000205: GT 00000206: PUSH2 0x0250 00000209: JUMPI 0000020a: DUP1 0000020b: PUSH4 0x439370b1 00000210: EQ 00000211: PUSH2 0x039b 00000214: JUMPI 00000215: DUP1 00000216: PUSH4 0x45f3cfea 0000021b: EQ 0000021c: PUSH2 0x03a3 0000021f: JUMPI 00000220: DUP1 00000221: PUSH4 0x485cc955 00000226: EQ 00000227: PUSH2 0x03c3 0000022a: JUMPI 0000022b: DUP1 0000022c: PUSH4 0x536f732d 00000231: EQ 00000232: PUSH2 0x03e3 00000235: JUMPI 00000236: DUP1 00000237: PUSH4 0x63a900d3 0000023c: EQ 0000023d: PUSH2 0x0410 00000240: JUMPI 00000241: DUP1 00000242: PUSH4 0x6fd559e0 00000247: EQ 00000248: PUSH2 0x0440 0000024b: JUMPI 0000024c: PUSH2 0x02b0 0000024f: JUMP 00000250: JUMPDEST 00000251: DUP1 00000252: PUSH3 0x23de29 00000256: EQ 00000257: PUSH2 0x02b5 0000025a: JUMPI 0000025b: DUP1 0000025c: PUSH3 0xff1fe6 00000260: EQ 00000261: PUSH2 0x02d5 00000264: JUMPI 00000265: DUP1 00000266: PUSH4 0x08fab167 0000026b: EQ 0000026c: PUSH2 0x0300 0000026f: JUMPI 00000270: DUP1 00000271: PUSH4 0x0a3f6f35 00000276: EQ 00000277: PUSH2 0x0320 0000027a: JUMPI 0000027b: DUP1 0000027c: PUSH4 0x215b92fe 00000281: EQ 00000282: PUSH2 0x034e 00000285: JUMPI 00000286: DUP1 00000287: PUSH4 0x422c32cd 0000028c: EQ 0000028d: PUSH2 0x037b 00000290: JUMPI 00000291: PUSH2 0x02b0 00000294: JUMP 00000295: JUMPDEST 00000296: CALLDATASIZE 00000297: PUSH2 0x02b0 0000029a: JUMPI 0000029b: PUSH1 0x00 0000029d: SLOAD 0000029e: PUSH1 0x01 000002a0: PUSH1 0x01 000002a2: PUSH1 0xa0 000002a4: SHL 000002a5: SUB 000002a6: AND 000002a7: CALLER 000002a8: EQ 000002a9: PUSH2 0x02ae 000002ac: JUMPI 000002ad: INVALID 000002ae: JUMPDEST 000002af: STOP 000002b0: JUMPDEST 000002b1: PUSH1 0x00 000002b3: DUP1 000002b4: REVERT 000002b5: JUMPDEST 000002b6: CALLVALUE 000002b7: DUP1 000002b8: ISZERO 000002b9: PUSH2 0x02c1 000002bc: JUMPI 000002bd: PUSH1 0x00 000002bf: DUP1 000002c0: REVERT 000002c1: JUMPDEST 000002c2: POP 000002c3: PUSH2 0x02ae 000002c6: PUSH2 0x02d0 000002c9: CALLDATASIZE 000002ca: PUSH1 0x04 000002cc: PUSH2 0x49e0 000002cf: JUMP 000002d0: JUMPDEST 000002d1: PUSH2 0x0899 000002d4: JUMP 000002d5: JUMPDEST 000002d6: CALLVALUE 000002d7: DUP1 000002d8: ISZERO 000002d9: PUSH2 0x02e1 000002dc: JUMPI 000002dd: PUSH1 0x00 000002df: DUP1 000002e0: REVERT 000002e1: JUMPDEST 000002e2: POP 000002e3: PUSH2 0x02ea 000002e6: PUSH2 0x098d 000002e9: JUMP 000002ea: JUMPDEST 000002eb: PUSH1 0x40 000002ed: MLOAD 000002ee: PUSH2 0x02f7 000002f1: SWAP2 000002f2: SWAP1 000002f3: PUSH2 0x5d4b 000002f6: JUMP 000002f7: JUMPDEST 000002f8: PUSH1 0x40 000002fa: MLOAD 000002fb: DUP1 000002fc: SWAP2 000002fd: SUB 000002fe: SWAP1 000002ff: RETURN 00000300: JUMPDEST 00000301: CALLVALUE 00000302: DUP1 00000303: ISZERO 00000304: PUSH2 0x030c 00000307: JUMPI 00000308: PUSH1 0x00 0000030a: DUP1 0000030b: REVERT 0000030c: JUMPDEST 0000030d: POP 0000030e: PUSH2 0x02ae 00000311: PUSH2 0x031b 00000314: CALLDATASIZE 00000315: PUSH1 0x04 00000317: PUSH2 0x4cdf 0000031a: JUMP 0000031b: JUMPDEST 0000031c: PUSH2 0x099c 0000031f: JUMP 00000320: JUMPDEST 00000321: CALLVALUE 00000322: DUP1 00000323: ISZERO 00000324: PUSH2 0x032c 00000327: JUMPI 00000328: PUSH1 0x00 0000032a: DUP1 0000032b: REVERT 0000032c: JUMPDEST 0000032d: POP 0000032e: PUSH2 0x0340 00000331: PUSH2 0x033b 00000334: CALLDATASIZE 00000335: PUSH1 0x04 00000337: PUSH2 0x4931 0000033a: JUMP 0000033b: JUMPDEST 0000033c: PUSH2 0x09d0 0000033f: JUMP 00000340: JUMPDEST 00000341: PUSH1 0x40 00000343: MLOAD 00000344: PUSH2 0x02f7 00000347: SWAP3 00000348: SWAP2 00000349: SWAP1 0000034a: PUSH2 0x58bb 0000034d: JUMP 0000034e: JUMPDEST 0000034f: CALLVALUE 00000350: DUP1 00000351: ISZERO 00000352: PUSH2 0x035a 00000355: JUMPI 00000356: PUSH1 0x00 00000358: DUP1 00000359: REVERT 0000035a: JUMPDEST 0000035b: POP 0000035c: PUSH2 0x036e 0000035f: PUSH2 0x0369 00000362: CALLDATASIZE 00000363: PUSH1 0x04 00000365: PUSH2 0x4ebe 00000368: JUMP 00000369: JUMPDEST 0000036a: PUSH2 0x09ee 0000036d: JUMP 0000036e: JUMPDEST 0000036f: PUSH1 0x40 00000371: MLOAD 00000372: PUSH2 0x02f7 00000375: SWAP2 00000376: SWAP1 00000377: PUSH2 0x586c 0000037a: JUMP 0000037b: JUMPDEST 0000037c: CALLVALUE 0000037d: DUP1 0000037e: ISZERO 0000037f: PUSH2 0x0387 00000382: JUMPI 00000383: PUSH1 0x00 00000385: DUP1 00000386: REVERT 00000387: JUMPDEST 00000388: POP 00000389: PUSH2 0x02ae 0000038c: PUSH2 0x0396 0000038f: CALLDATASIZE 00000390: PUSH1 0x04 00000392: PUSH2 0x4bc1 00000395: JUMP 00000396: JUMPDEST 00000397: PUSH2 0x0ca2 0000039a: JUMP 0000039b: JUMPDEST 0000039c: PUSH2 0x02ae 0000039f: PUSH2 0x0d99 000003a2: JUMP 000003a3: JUMPDEST 000003a4: CALLVALUE 000003a5: DUP1 000003a6: ISZERO 000003a7: PUSH2 0x03af 000003aa: JUMPI 000003ab: PUSH1 0x00 000003ad: DUP1 000003ae: REVERT 000003af: JUMPDEST 000003b0: POP 000003b1: PUSH2 0x02ae 000003b4: PUSH2 0x03be 000003b7: CALLDATASIZE 000003b8: PUSH1 0x04 000003ba: PUSH2 0x4e23 000003bd: JUMP 000003be: JUMPDEST 000003bf: PUSH2 0x0da4 000003c2: JUMP 000003c3: JUMPDEST 000003c4: CALLVALUE 000003c5: DUP1 000003c6: ISZERO 000003c7: PUSH2 0x03cf 000003ca: JUMPI 000003cb: PUSH1 0x00 000003cd: DUP1 000003ce: REVERT 000003cf: JUMPDEST 000003d0: POP 000003d1: PUSH2 0x02ae 000003d4: PUSH2 0x03de 000003d7: CALLDATASIZE 000003d8: PUSH1 0x04 000003da: PUSH2 0x494d 000003dd: JUMP 000003de: JUMPDEST 000003df: PUSH2 0x0fd6 000003e2: JUMP 000003e3: JUMPDEST 000003e4: CALLVALUE 000003e5: DUP1 000003e6: ISZERO 000003e7: PUSH2 0x03ef 000003ea: JUMPI 000003eb: PUSH1 0x00 000003ed: DUP1 000003ee: REVERT 000003ef: JUMPDEST 000003f0: POP 000003f1: PUSH2 0x0403 000003f4: PUSH2 0x03fe 000003f7: CALLDATASIZE 000003f8: PUSH1 0x04 000003fa: PUSH2 0x4931 000003fd: JUMP 000003fe: JUMPDEST 000003ff: PUSH2 0x10a1 00000402: JUMP 00000403: JUMPDEST 00000404: PUSH1 0x40 00000406: MLOAD 00000407: PUSH2 0x02f7 0000040a: SWAP2 0000040b: SWAP1 0000040c: PUSH2 0x5d82 0000040f: JUMP 00000410: JUMPDEST 00000411: CALLVALUE 00000412: DUP1 00000413: ISZERO 00000414: PUSH2 0x041c 00000417: JUMPI 00000418: PUSH1 0x00 0000041a: DUP1 0000041b: REVERT 0000041c: JUMPDEST 0000041d: POP 0000041e: PUSH2 0x0430 00000421: PUSH2 0x042b 00000424: CALLDATASIZE 00000425: PUSH1 0x04 00000427: PUSH2 0x5284 0000042a: JUMP 0000042b: JUMPDEST 0000042c: PUSH2 0x10b7 0000042f: JUMP 00000430: JUMPDEST 00000431: PUSH1 0x40 00000433: MLOAD 00000434: PUSH2 0x02f7 00000437: SWAP5 00000438: SWAP4 00000439: SWAP3 0000043a: SWAP2 0000043b: SWAP1 0000043c: PUSH2 0x57ca 0000043f: JUMP 00000440: JUMPDEST 00000441: CALLVALUE 00000442: DUP1 00000443: ISZERO 00000444: PUSH2 0x044c 00000447: JUMPI 00000448: PUSH1 0x00 0000044a: DUP1 0000044b: REVERT 0000044c: JUMPDEST 0000044d: POP 0000044e: PUSH2 0x02ae 00000451: PUSH2 0x045b 00000454: CALLDATASIZE 00000455: PUSH1 0x04 00000457: PUSH2 0x5362 0000045a: JUMP 0000045b: JUMPDEST 0000045c: PUSH2 0x1105 0000045f: JUMP 00000460: JUMPDEST 00000461: CALLVALUE 00000462: DUP1 00000463: ISZERO 00000464: PUSH2 0x046c 00000467: JUMPI 00000468: PUSH1 0x00 0000046a: DUP1 0000046b: REVERT 0000046c: JUMPDEST 0000046d: POP 0000046e: PUSH2 0x02ae 00000471: PUSH2 0x1281 00000474: JUMP 00000475: JUMPDEST 00000476: CALLVALUE 00000477: DUP1 00000478: ISZERO 00000479: PUSH2 0x0481 0000047c: JUMPI 0000047d: PUSH1 0x00 0000047f: DUP1 00000480: REVERT 00000481: JUMPDEST 00000482: POP 00000483: PUSH2 0x0495 00000486: PUSH2 0x0490 00000489: CALLDATASIZE 0000048a: PUSH1 0x04 0000048c: PUSH2 0x520b 0000048f: JUMP 00000490: JUMPDEST 00000491: PUSH2 0x12dc 00000494: JUMP 00000495: JUMPDEST 00000496: PUSH1 0x40 00000498: MLOAD 00000499: PUSH2 0x02f7 0000049c: SWAP2 0000049d: SWAP1 0000049e: PUSH2 0x5575 000004a1: JUMP 000004a2: JUMPDEST 000004a3: CALLVALUE 000004a4: DUP1 000004a5: ISZERO 000004a6: PUSH2 0x04ae 000004a9: JUMPI 000004aa: PUSH1 0x00 000004ac: DUP1 000004ad: REVERT 000004ae: JUMPDEST 000004af: POP 000004b0: PUSH2 0x02ae 000004b3: PUSH2 0x04bd 000004b6: CALLDATASIZE 000004b7: PUSH1 0x04 000004b9: PUSH2 0x4e63 000004bc: JUMP 000004bd: JUMPDEST 000004be: PUSH2 0x12f7 000004c1: JUMP 000004c2: JUMPDEST 000004c3: CALLVALUE 000004c4: DUP1 000004c5: ISZERO 000004c6: PUSH2 0x04ce 000004c9: JUMPI 000004ca: PUSH1 0x00 000004cc: DUP1 000004cd: REVERT 000004ce: JUMPDEST 000004cf: POP 000004d0: PUSH2 0x02ae 000004d3: PUSH2 0x04dd 000004d6: CALLDATASIZE 000004d7: PUSH1 0x04 000004d9: PUSH2 0x5002 000004dc: JUMP 000004dd: JUMPDEST 000004de: PUSH2 0x1449 000004e1: JUMP 000004e2: JUMPDEST 000004e3: CALLVALUE 000004e4: DUP1 000004e5: ISZERO 000004e6: PUSH2 0x04ee 000004e9: JUMPI 000004ea: PUSH1 0x00 000004ec: DUP1 000004ed: REVERT 000004ee: JUMPDEST 000004ef: POP 000004f0: PUSH2 0x02ea 000004f3: PUSH2 0x14ba 000004f6: JUMP 000004f7: JUMPDEST 000004f8: CALLVALUE 000004f9: DUP1 000004fa: ISZERO 000004fb: PUSH2 0x0503 000004fe: JUMPI 000004ff: PUSH1 0x00 00000501: DUP1 00000502: REVERT 00000503: JUMPDEST 00000504: POP 00000505: PUSH2 0x0495 00000508: PUSH2 0x14c4 0000050b: JUMP 0000050c: JUMPDEST 0000050d: CALLVALUE 0000050e: DUP1 0000050f: ISZERO 00000510: PUSH2 0x0518 00000513: JUMPI 00000514: PUSH1 0x00 00000516: DUP1 00000517: REVERT 00000518: JUMPDEST 00000519: POP 0000051a: PUSH2 0x0495 0000051d: PUSH2 0x14d3 00000520: JUMP 00000521: JUMPDEST 00000522: CALLVALUE 00000523: DUP1 00000524: ISZERO 00000525: PUSH2 0x052d 00000528: JUMPI 00000529: PUSH1 0x00 0000052b: DUP1 0000052c: REVERT 0000052d: JUMPDEST 0000052e: POP 0000052f: PUSH2 0x0536 00000532: PUSH2 0x14e2 00000535: JUMP 00000536: JUMPDEST 00000537: PUSH1 0x40 00000539: MLOAD 0000053a: PUSH2 0x02f7 0000053d: SWAP2 0000053e: SWAP1 0000053f: PUSH2 0x58b0 00000542: JUMP 00000543: JUMPDEST 00000544: CALLVALUE 00000545: DUP1 00000546: ISZERO 00000547: PUSH2 0x054f 0000054a: JUMPI 0000054b: PUSH1 0x00 0000054d: DUP1 0000054e: REVERT 0000054f: JUMPDEST 00000550: POP 00000551: PUSH2 0x0563 00000554: PUSH2 0x055e 00000557: CALLDATASIZE 00000558: PUSH1 0x04 0000055a: PUSH2 0x5227 0000055d: JUMP 0000055e: JUMPDEST 0000055f: PUSH2 0x14f3 00000562: JUMP 00000563: JUMPDEST 00000564: PUSH1 0x40 00000566: MLOAD 00000567: PUSH2 0x02f7 0000056a: SWAP2 0000056b: SWAP1 0000056c: PUSH2 0x58cd 0000056f: JUMP 00000570: JUMPDEST 00000571: CALLVALUE 00000572: DUP1 00000573: ISZERO 00000574: PUSH2 0x057c 00000577: JUMPI 00000578: PUSH1 0x00 0000057a: DUP1 0000057b: REVERT 0000057c: JUMPDEST 0000057d: POP 0000057e: PUSH2 0x02ea 00000581: PUSH2 0x1510 00000584: JUMP 00000585: JUMPDEST 00000586: CALLVALUE 00000587: DUP1 00000588: ISZERO 00000589: PUSH2 0x0591 0000058c: JUMPI 0000058d: PUSH1 0x00 0000058f: DUP1 00000590: REVERT 00000591: JUMPDEST 00000592: POP 00000593: PUSH2 0x02ae 00000596: PUSH2 0x05a0 00000599: CALLDATASIZE 0000059a: PUSH1 0x04 0000059c: PUSH2 0x5182 0000059f: JUMP 000005a0: JUMPDEST 000005a1: PUSH2 0x151a 000005a4: JUMP 000005a5: JUMPDEST 000005a6: CALLVALUE 000005a7: DUP1 000005a8: ISZERO 000005a9: PUSH2 0x05b1 000005ac: JUMPI 000005ad: PUSH1 0x00 000005af: DUP1 000005b0: REVERT 000005b1: JUMPDEST 000005b2: POP 000005b3: PUSH2 0x02ae 000005b6: PUSH2 0x05c0 000005b9: CALLDATASIZE 000005ba: PUSH1 0x04 000005bc: PUSH2 0x5244 000005bf: JUMP 000005c0: JUMPDEST 000005c1: PUSH2 0x1527 000005c4: JUMP 000005c5: JUMPDEST 000005c6: CALLVALUE 000005c7: DUP1 000005c8: ISZERO 000005c9: PUSH2 0x05d1 000005cc: JUMPI 000005cd: PUSH1 0x00 000005cf: DUP1 000005d0: REVERT 000005d1: JUMPDEST 000005d2: POP 000005d3: PUSH2 0x02ae 000005d6: PUSH2 0x05e0 000005d9: CALLDATASIZE 000005da: PUSH1 0x04 000005dc: PUSH2 0x4d89 000005df: JUMP 000005e0: JUMPDEST 000005e1: PUSH2 0x15b6 000005e4: JUMP 000005e5: JUMPDEST 000005e6: CALLVALUE 000005e7: DUP1 000005e8: ISZERO 000005e9: PUSH2 0x05f1 000005ec: JUMPI 000005ed: PUSH1 0x00 000005ef: DUP1 000005f0: REVERT 000005f1: JUMPDEST 000005f2: POP 000005f3: PUSH2 0x02ae 000005f6: PUSH2 0x0600 000005f9: CALLDATASIZE 000005fa: PUSH1 0x04 000005fc: PUSH2 0x4a8e 000005ff: JUMP 00000600: JUMPDEST 00000601: PUSH2 0x1791 00000604: JUMP 00000605: JUMPDEST 00000606: CALLVALUE 00000607: DUP1 00000608: ISZERO 00000609: PUSH2 0x0611 0000060c: JUMPI 0000060d: PUSH1 0x00 0000060f: DUP1 00000610: REVERT 00000611: JUMPDEST 00000612: POP 00000613: PUSH2 0x02ae 00000616: PUSH2 0x0620 00000619: CALLDATASIZE 0000061a: PUSH1 0x04 0000061c: PUSH2 0x4d5c 0000061f: JUMP 00000620: JUMPDEST 00000621: PUSH2 0x188c 00000624: JUMP 00000625: JUMPDEST 00000626: CALLVALUE 00000627: DUP1 00000628: ISZERO 00000629: PUSH2 0x0631 0000062c: JUMPI 0000062d: PUSH1 0x00 0000062f: DUP1 00000630: REVERT 00000631: JUMPDEST 00000632: POP 00000633: PUSH2 0x02ea 00000636: PUSH2 0x1a5e 00000639: JUMP 0000063a: JUMPDEST 0000063b: CALLVALUE 0000063c: DUP1 0000063d: ISZERO 0000063e: PUSH2 0x0646 00000641: JUMPI 00000642: PUSH1 0x00 00000644: DUP1 00000645: REVERT 00000646: JUMPDEST 00000647: POP 00000648: PUSH2 0x0563 0000064b: PUSH2 0x0655 0000064e: CALLDATASIZE 0000064f: PUSH1 0x04 00000651: PUSH2 0x520b 00000654: JUMP 00000655: JUMPDEST 00000656: PUSH2 0x1a68 00000659: JUMP 0000065a: JUMPDEST 0000065b: CALLVALUE 0000065c: DUP1 0000065d: ISZERO 0000065e: PUSH2 0x0666 00000661: JUMPI 00000662: PUSH1 0x00 00000664: DUP1 00000665: REVERT 00000666: JUMPDEST 00000667: POP 00000668: PUSH2 0x02ae 0000066b: PUSH2 0x0675 0000066e: CALLDATASIZE 0000066f: PUSH1 0x04 00000671: PUSH2 0x4c75 00000674: JUMP 00000675: JUMPDEST 00000676: PUSH2 0x1a7a 00000679: JUMP 0000067a: JUMPDEST 0000067b: CALLVALUE 0000067c: DUP1 0000067d: ISZERO 0000067e: PUSH2 0x0686 00000681: JUMPI 00000682: PUSH1 0x00 00000684: DUP1 00000685: REVERT 00000686: JUMPDEST 00000687: POP 00000688: PUSH2 0x0495 0000068b: PUSH2 0x1cc5 0000068e: JUMP 0000068f: JUMPDEST 00000690: CALLVALUE 00000691: DUP1 00000692: ISZERO 00000693: PUSH2 0x069b 00000696: JUMPI 00000697: PUSH1 0x00 00000699: DUP1 0000069a: REVERT 0000069b: JUMPDEST 0000069c: POP 0000069d: PUSH2 0x02ae 000006a0: PUSH2 0x06aa 000006a3: CALLDATASIZE 000006a4: PUSH1 0x04 000006a6: PUSH2 0x4d0c 000006a9: JUMP 000006aa: JUMPDEST 000006ab: PUSH2 0x1cd4 000006ae: JUMP 000006af: JUMPDEST 000006b0: CALLVALUE 000006b1: DUP1 000006b2: ISZERO 000006b3: PUSH2 0x06bb 000006b6: JUMPI 000006b7: PUSH1 0x00 000006b9: DUP1 000006ba: REVERT 000006bb: JUMPDEST 000006bc: POP 000006bd: PUSH2 0x02ae 000006c0: PUSH2 0x06ca 000006c3: CALLDATASIZE 000006c4: PUSH1 0x04 000006c6: PUSH2 0x4cdf 000006c9: JUMP 000006ca: JUMPDEST 000006cb: PUSH2 0x1d56 000006ce: JUMP 000006cf: JUMPDEST 000006d0: CALLVALUE 000006d1: DUP1 000006d2: ISZERO 000006d3: PUSH2 0x06db 000006d6: JUMPI 000006d7: PUSH1 0x00 000006d9: DUP1 000006da: REVERT 000006db: JUMPDEST 000006dc: POP 000006dd: PUSH2 0x0495 000006e0: PUSH2 0x1d65 000006e3: JUMP 000006e4: JUMPDEST 000006e5: CALLVALUE 000006e6: DUP1 000006e7: ISZERO 000006e8: PUSH2 0x06f0 000006eb: JUMPI 000006ec: PUSH1 0x00 000006ee: DUP1 000006ef: REVERT 000006f0: JUMPDEST 000006f1: POP 000006f2: PUSH2 0x02ae 000006f5: PUSH2 0x06ff 000006f8: CALLDATASIZE 000006f9: PUSH1 0x04 000006fb: PUSH2 0x4dd3 000006fe: JUMP 000006ff: JUMPDEST 00000700: PUSH2 0x1d74 00000703: JUMP 00000704: JUMPDEST 00000705: CALLVALUE 00000706: DUP1 00000707: ISZERO 00000708: PUSH2 0x0710 0000070b: JUMPI 0000070c: PUSH1 0x00 0000070e: DUP1 0000070f: REVERT 00000710: JUMPDEST 00000711: POP 00000712: PUSH2 0x02ae 00000715: PUSH2 0x071f 00000718: CALLDATASIZE 00000719: PUSH1 0x04 0000071b: PUSH2 0x5182 0000071e: JUMP 0000071f: JUMPDEST 00000720: PUSH2 0x2123 00000723: JUMP 00000724: JUMPDEST 00000725: CALLVALUE 00000726: DUP1 00000727: ISZERO 00000728: PUSH2 0x0730 0000072b: JUMPI 0000072c: PUSH1 0x00 0000072e: DUP1 0000072f: REVERT 00000730: JUMPDEST 00000731: POP 00000732: PUSH2 0x036e 00000735: PUSH2 0x073f 00000738: CALLDATASIZE 00000739: PUSH1 0x04 0000073b: PUSH2 0x4931 0000073e: JUMP 0000073f: JUMPDEST 00000740: PUSH2 0x2150 00000743: JUMP 00000744: JUMPDEST 00000745: CALLVALUE 00000746: DUP1 00000747: ISZERO 00000748: PUSH2 0x0750 0000074b: JUMPI 0000074c: PUSH1 0x00 0000074e: DUP1 0000074f: REVERT 00000750: JUMPDEST 00000751: POP 00000752: PUSH2 0x0764 00000755: PUSH2 0x075f 00000758: CALLDATASIZE 00000759: PUSH1 0x04 0000075b: PUSH2 0x5284 0000075e: JUMP 0000075f: JUMPDEST 00000760: PUSH2 0x21ec 00000763: JUMP 00000764: JUMPDEST 00000765: PUSH1 0x40 00000767: MLOAD 00000768: PUSH2 0x02f7 0000076b: SWAP2 0000076c: SWAP1 0000076d: PUSH2 0x5d3d 00000770: JUMP 00000771: JUMPDEST 00000772: CALLVALUE 00000773: DUP1 00000774: ISZERO 00000775: PUSH2 0x077d 00000778: JUMPI 00000779: PUSH1 0x00 0000077b: DUP1 0000077c: REVERT 0000077d: JUMPDEST 0000077e: POP 0000077f: PUSH2 0x0403 00000782: PUSH2 0x2268 00000785: JUMP 00000786: JUMPDEST 00000787: CALLVALUE 00000788: DUP1 00000789: ISZERO 0000078a: PUSH2 0x0792 0000078d: JUMPI 0000078e: PUSH1 0x00 00000790: DUP1 00000791: REVERT 00000792: JUMPDEST 00000793: POP 00000794: PUSH2 0x02ae 00000797: PUSH2 0x07a1 0000079a: CALLDATASIZE 0000079b: PUSH1 0x04 0000079d: PUSH2 0x4e23 000007a0: JUMP 000007a1: JUMPDEST 000007a2: PUSH2 0x2279 000007a5: JUMP 000007a6: JUMPDEST 000007a7: CALLVALUE 000007a8: DUP1 000007a9: ISZERO 000007aa: PUSH2 0x07b2 000007ad: JUMPI 000007ae: PUSH1 0x00 000007b0: DUP1 000007b1: REVERT 000007b2: JUMPDEST 000007b3: POP 000007b4: PUSH2 0x0536 000007b7: PUSH2 0x07c1 000007ba: CALLDATASIZE 000007bb: PUSH1 0x04 000007bd: PUSH2 0x520b 000007c0: JUMP 000007c1: JUMPDEST 000007c2: PUSH2 0x24ab 000007c5: JUMP 000007c6: JUMPDEST 000007c7: PUSH2 0x02ae 000007ca: PUSH2 0x07d4 000007cd: CALLDATASIZE 000007ce: PUSH1 0x04 000007d0: PUSH2 0x4ae1 000007d3: JUMP 000007d4: JUMPDEST 000007d5: PUSH2 0x24c2 000007d8: JUMP 000007d9: JUMPDEST 000007da: CALLVALUE 000007db: DUP1 000007dc: ISZERO 000007dd: PUSH2 0x07e5 000007e0: JUMPI 000007e1: PUSH1 0x00 000007e3: DUP1 000007e4: REVERT 000007e5: JUMPDEST 000007e6: POP 000007e7: PUSH2 0x02ae 000007ea: PUSH2 0x07f4 000007ed: CALLDATASIZE 000007ee: PUSH1 0x04 000007f0: PUSH2 0x51cc 000007f3: JUMP 000007f4: JUMPDEST 000007f5: PUSH2 0x2576 000007f8: JUMP 000007f9: JUMPDEST 000007fa: CALLVALUE 000007fb: DUP1 000007fc: ISZERO 000007fd: PUSH2 0x0805 00000800: JUMPI 00000801: PUSH1 0x00 00000803: DUP1 00000804: REVERT 00000805: JUMPDEST 00000806: POP 00000807: PUSH2 0x02ae 0000080a: PUSH2 0x0814 0000080d: CALLDATASIZE 0000080e: PUSH1 0x04 00000810: PUSH2 0x4931 00000813: JUMP 00000814: JUMPDEST 00000815: PUSH2 0x25e2 00000818: JUMP 00000819: JUMPDEST 0000081a: CALLVALUE 0000081b: DUP1 0000081c: ISZERO 0000081d: PUSH2 0x0825 00000820: JUMPI 00000821: PUSH1 0x00 00000823: DUP1 00000824: REVERT 00000825: JUMPDEST 00000826: POP 00000827: PUSH2 0x02ae 0000082a: PUSH2 0x0834 0000082d: CALLDATASIZE 0000082e: PUSH1 0x04 00000830: PUSH2 0x52e1 00000833: JUMP 00000834: JUMPDEST 00000835: PUSH2 0x2649 00000838: JUMP 00000839: JUMPDEST 0000083a: CALLVALUE 0000083b: DUP1 0000083c: ISZERO 0000083d: PUSH2 0x0845 00000840: JUMPI 00000841: PUSH1 0x00 00000843: DUP1 00000844: REVERT 00000845: JUMPDEST 00000846: POP 00000847: PUSH2 0x02ae 0000084a: PUSH2 0x0854 0000084d: CALLDATASIZE 0000084e: PUSH1 0x04 00000850: PUSH2 0x4931 00000853: JUMP 00000854: JUMPDEST 00000855: PUSH2 0x27ec 00000858: JUMP 00000859: JUMPDEST 0000085a: CALLVALUE 0000085b: DUP1 0000085c: ISZERO 0000085d: PUSH2 0x0865 00000860: JUMPI 00000861: PUSH1 0x00 00000863: DUP1 00000864: REVERT 00000865: JUMPDEST 00000866: POP 00000867: PUSH2 0x02ae 0000086a: PUSH2 0x0874 0000086d: CALLDATASIZE 0000086e: PUSH1 0x04 00000870: PUSH2 0x4985 00000873: JUMP 00000874: JUMPDEST 00000875: PUSH2 0x2806 00000878: JUMP 00000879: JUMPDEST 0000087a: CALLVALUE 0000087b: DUP1 0000087c: ISZERO 0000087d: PUSH2 0x0885 00000880: JUMPI 00000881: PUSH1 0x00 00000883: DUP1 00000884: REVERT 00000885: JUMPDEST 00000886: POP 00000887: PUSH2 0x02ae 0000088a: PUSH2 0x0894 0000088d: CALLDATASIZE 0000088e: PUSH1 0x04 00000890: PUSH2 0x52a1 00000893: JUMP 00000894: JUMPDEST 00000895: PUSH2 0x29f4 00000898: JUMP 00000899: JUMPDEST 0000089a: CALLER 0000089b: PUSH1 0x00 0000089d: SWAP1 0000089e: DUP2 0000089f: MSTORE 000008a0: PUSH1 0x03 000008a2: PUSH1 0x20 000008a4: MSTORE 000008a5: PUSH1 0x40 000008a7: SWAP1 000008a8: KECCAK256 000008a9: SLOAD 000008aa: PUSH2 0xffff 000008ad: AND 000008ae: DUP1 000008af: PUSH2 0x08d3 000008b2: JUMPI 000008b3: PUSH1 0x40 000008b5: MLOAD 000008b6: PUSH3 0x461bcd 000008ba: PUSH1 0xe5 000008bc: SHL 000008bd: DUP2 000008be: MSTORE 000008bf: PUSH1 0x04 000008c1: ADD 000008c2: PUSH2 0x08ca 000008c5: SWAP1 000008c6: PUSH2 0x5aec 000008c9: JUMP 000008ca: JUMPDEST 000008cb: PUSH1 0x40 000008cd: MLOAD 000008ce: DUP1 000008cf: SWAP2 000008d0: SUB 000008d1: SWAP1 000008d2: REVERT 000008d3: JUMPDEST 000008d4: PUSH2 0x091c 000008d7: PUSH2 0x08df 000008da: DUP8 000008db: PUSH2 0x2a84 000008de: JUMP 000008df: JUMPDEST 000008e0: PUSH2 0xffff 000008e3: DUP4 000008e4: AND 000008e5: PUSH1 0x00 000008e7: SWAP1 000008e8: DUP2 000008e9: MSTORE 000008ea: PUSH1 0x06 000008ec: PUSH1 0x20 000008ee: SWAP1 000008ef: DUP2 000008f0: MSTORE 000008f1: PUSH1 0x40 000008f3: DUP1 000008f4: DUP4 000008f5: KECCAK256 000008f6: PUSH1 0x01 000008f8: PUSH1 0x01 000008fa: PUSH1 0xa0 000008fc: SHL 000008fd: SUB 000008fe: DUP15 000008ff: AND 00000900: DUP5 00000901: MSTORE 00000902: SWAP1 00000903: SWAP2 00000904: MSTORE 00000905: SWAP1 00000906: KECCAK256 00000907: SLOAD 00000908: SWAP1 00000909: PUSH1 0x01 0000090b: PUSH1 0x01 0000090d: PUSH1 0x80 0000090f: SHL 00000910: SUB 00000911: AND 00000912: PUSH4 0xffffffff 00000917: PUSH2 0x2aad 0000091a: AND 0000091b: JUMP 0000091c: JUMPDEST 0000091d: PUSH2 0xffff 00000920: DUP3 00000921: AND 00000922: PUSH1 0x00 00000924: DUP2 00000925: DUP2 00000926: MSTORE 00000927: PUSH1 0x06 00000929: PUSH1 0x20 0000092b: SWAP1 0000092c: DUP2 0000092d: MSTORE 0000092e: PUSH1 0x40 00000930: DUP1 00000931: DUP4 00000932: KECCAK256 00000933: PUSH1 0x01 00000935: PUSH1 0x01 00000937: PUSH1 0xa0 00000939: SHL 0000093a: SUB 0000093b: DUP15 0000093c: AND 0000093d: DUP5 0000093e: MSTORE 0000093f: SWAP1 00000940: SWAP2 00000941: MSTORE 00000942: SWAP1 00000943: DUP2 00000944: SWAP1 00000945: KECCAK256 00000946: SWAP3 00000947: SWAP1 00000948: SWAP3 00000949: SSTORE 0000094a: SWAP1 0000094b: MLOAD 0000094c: PUSH32 0x1ebdf9946bb1531759f2100f77d6319f8f0a70663c87f0e3c4976cf417c6ec07 0000096d: SWAP1 0000096e: PUSH2 0x097a 00000971: SWAP1 00000972: DUP12 00000973: SWAP1 00000974: DUP11 00000975: SWAP1 00000976: PUSH2 0x5853 00000979: JUMP 0000097a: JUMPDEST 0000097b: PUSH1 0x40 0000097d: MLOAD 0000097e: DUP1 0000097f: SWAP2 00000980: SUB 00000981: SWAP1 00000982: LOG2 00000983: POP 00000984: POP 00000985: POP 00000986: POP 00000987: POP 00000988: POP 00000989: POP 0000098a: POP 0000098b: POP 0000098c: JUMP 0000098d: JUMPDEST 0000098e: PUSH1 0x00 00000990: PUSH2 0x0997 00000993: PUSH2 0x2afa 00000996: JUMP 00000997: JUMPDEST 00000998: SWAP1 00000999: POP 0000099a: SWAP1 0000099b: JUMP 0000099c: JUMPDEST 0000099d: PUSH1 0x00 0000099f: PUSH2 0x09ac 000009a2: CALLER 000009a3: CALLER 000009a4: DUP6 000009a5: DUP6 000009a6: PUSH1 0x01 000009a8: PUSH2 0x2b25 000009ab: JUMP 000009ac: JUMPDEST 000009ad: SWAP1 000009ae: POP 000009af: DUP1 000009b0: PUSH2 0x09cb 000009b3: JUMPI 000009b4: PUSH1 0x40 000009b6: MLOAD 000009b7: PUSH3 0x461bcd 000009bb: PUSH1 0xe5 000009bd: SHL 000009be: DUP2 000009bf: MSTORE 000009c0: PUSH1 0x04 000009c2: ADD 000009c3: PUSH2 0x08ca 000009c6: SWAP1 000009c7: PUSH2 0x5cd1 000009ca: JUMP 000009cb: JUMPDEST 000009cc: POP 000009cd: POP 000009ce: POP 000009cf: JUMP 000009d0: JUMPDEST 000009d1: PUSH1 0x04 000009d3: PUSH1 0x20 000009d5: MSTORE 000009d6: PUSH1 0x00 000009d8: SWAP1 000009d9: DUP2 000009da: MSTORE 000009db: PUSH1 0x40 000009dd: SWAP1 000009de: KECCAK256 000009df: SLOAD 000009e0: PUSH1 0xff 000009e2: DUP1 000009e3: DUP3 000009e4: AND 000009e5: SWAP2 000009e6: PUSH2 0x0100 000009e9: SWAP1 000009ea: DIV 000009eb: AND 000009ec: DUP3 000009ed: JUMP 000009ee: JUMPDEST 000009ef: PUSH1 0x00 000009f1: SLOAD 000009f2: DUP2 000009f3: MLOAD 000009f4: PUSH1 0x60 000009f6: SWAP2 000009f7: PUSH1 0x01 000009f9: PUSH2 0xffff 000009fc: PUSH1 0x01 000009fe: PUSH1 0xa0 00000a00: SHL 00000a01: SWAP1 00000a02: SWAP3 00000a03: DIV 00000a04: DUP3 00000a05: AND 00000a06: ADD 00000a07: AND 00000a08: EQ 00000a09: PUSH2 0x0a24 00000a0c: JUMPI 00000a0d: PUSH1 0x40 00000a0f: MLOAD 00000a10: PUSH3 0x461bcd 00000a14: PUSH1 0xe5 00000a16: SHL 00000a17: DUP2 00000a18: MSTORE 00000a19: PUSH1 0x04 00000a1b: ADD 00000a1c: PUSH2 0x08ca 00000a1f: SWAP1 00000a20: PUSH2 0x5aec 00000a23: JUMP 00000a24: JUMPDEST 00000a25: PUSH1 0x60 00000a27: DUP3 00000a28: MLOAD 00000a29: PUSH1 0x40 00000a2b: MLOAD 00000a2c: SWAP1 00000a2d: DUP1 00000a2e: DUP3 00000a2f: MSTORE 00000a30: DUP1 00000a31: PUSH1 0x20 00000a33: MUL 00000a34: PUSH1 0x20 00000a36: ADD 00000a37: DUP3 00000a38: ADD 00000a39: PUSH1 0x40 00000a3b: MSTORE 00000a3c: DUP1 00000a3d: ISZERO 00000a3e: PUSH2 0x0a51 00000a41: JUMPI 00000a42: DUP2 00000a43: PUSH1 0x20 00000a45: ADD 00000a46: PUSH1 0x20 00000a48: DUP3 00000a49: MUL 00000a4a: DUP1 00000a4b: CALLDATASIZE 00000a4c: DUP4 00000a4d: CALLDATACOPY 00000a4e: ADD 00000a4f: SWAP1 00000a50: POP 00000a51: JUMPDEST 00000a52: POP 00000a53: SWAP1 00000a54: POP 00000a55: PUSH1 0x00 00000a57: DUP4 00000a58: PUSH1 0x00 00000a5a: DUP2 00000a5b: MLOAD 00000a5c: DUP2 00000a5d: LT 00000a5e: PUSH2 0x0a63 00000a61: JUMPI 00000a62: INVALID 00000a63: JUMPDEST 00000a64: PUSH1 0x20 00000a66: MUL 00000a67: PUSH1 0x20 00000a69: ADD 00000a6a: ADD 00000a6b: MLOAD 00000a6c: SLT 00000a6d: ISZERO 00000a6e: PUSH2 0x0b27 00000a71: JUMPI 00000a72: PUSH1 0x00 00000a74: DUP1 00000a75: DUP1 00000a76: MSTORE 00000a77: PUSH32 0x05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc 00000a98: PUSH1 0x20 00000a9a: MSTORE 00000a9b: PUSH32 0x45d21ede0cb86a9bc9f3a728b8ad730cd840abb3d7468e2d1713e27e21c48d2a 00000abc: SLOAD 00000abd: DUP5 00000abe: MLOAD 00000abf: PUSH1 0x01 00000ac1: PUSH1 0x01 00000ac3: PUSH1 0x80 00000ac5: SHL 00000ac6: SUB 00000ac7: SWAP1 00000ac8: SWAP2 00000ac9: AND 00000aca: SWAP2 00000acb: PUSH2 0x0b08 00000ace: SWAP2 00000acf: PUSH8 0x0de0b6b3a7640000 00000ad8: SWAP2 00000ad9: PUSH2 0x0afc 00000adc: SWAP2 00000add: DUP6 00000ade: SWAP2 00000adf: DUP10 00000ae0: SWAP2 00000ae1: PUSH2 0x0ae6 00000ae4: JUMPI 00000ae5: INVALID 00000ae6: JUMPDEST 00000ae7: PUSH1 0x20 00000ae9: MUL 00000aea: PUSH1 0x20 00000aec: ADD 00000aed: ADD 00000aee: MLOAD 00000aef: PUSH2 0x2d68 00000af2: SWAP1 00000af3: SWAP2 00000af4: SWAP1 00000af5: PUSH4 0xffffffff 00000afa: AND 00000afb: JUMP 00000afc: JUMPDEST 00000afd: SWAP1 00000afe: PUSH4 0xffffffff 00000b03: PUSH2 0x2dd3 00000b06: AND 00000b07: JUMP 00000b08: JUMPDEST 00000b09: DUP3 00000b0a: PUSH1 0x00 00000b0c: DUP2 00000b0d: MLOAD 00000b0e: DUP2 00000b0f: LT 00000b10: PUSH2 0x0b15 00000b13: JUMPI 00000b14: INVALID 00000b15: JUMPDEST 00000b16: PUSH1 0x20 00000b18: MUL 00000b19: PUSH1 0x20 00000b1b: ADD 00000b1c: ADD 00000b1d: DUP2 00000b1e: DUP2 00000b1f: MSTORE 00000b20: POP 00000b21: POP 00000b22: POP 00000b23: PUSH2 0x0b56 00000b26: JUMP 00000b27: JUMPDEST 00000b28: DUP3 00000b29: PUSH1 0x00 00000b2b: DUP2 00000b2c: MLOAD 00000b2d: DUP2 00000b2e: LT 00000b2f: PUSH2 0x0b34 00000b32: JUMPI 00000b33: INVALID 00000b34: JUMPDEST 00000b35: PUSH1 0x20 00000b37: MUL 00000b38: PUSH1 0x20 00000b3a: ADD 00000b3b: ADD 00000b3c: MLOAD 00000b3d: DUP2 00000b3e: PUSH1 0x00 00000b40: DUP2 00000b41: MLOAD 00000b42: DUP2 00000b43: LT 00000b44: PUSH2 0x0b49 00000b47: JUMPI 00000b48: INVALID 00000b49: JUMPDEST 00000b4a: PUSH1 0x20 00000b4c: MUL 00000b4d: PUSH1 0x20 00000b4f: ADD 00000b50: ADD 00000b51: DUP2 00000b52: DUP2 00000b53: MSTORE 00000b54: POP 00000b55: POP 00000b56: JUMPDEST 00000b57: PUSH1 0x01 00000b59: JUMPDEST 00000b5a: DUP4 00000b5b: MLOAD 00000b5c: DUP2 00000b5d: LT 00000b5e: ISZERO 00000b5f: PUSH2 0x0c99 00000b62: JUMPI 00000b63: DUP4 00000b64: DUP2 00000b65: DUP2 00000b66: MLOAD 00000b67: DUP2 00000b68: LT 00000b69: PUSH2 0x0b6e 00000b6c: JUMPI 00000b6d: INVALID 00000b6e: JUMPDEST 00000b6f: PUSH1 0x20 00000b71: MUL 00000b72: PUSH1 0x20 00000b74: ADD 00000b75: ADD 00000b76: MLOAD 00000b77: PUSH1 0x00 00000b79: EQ 00000b7a: ISZERO 00000b7b: PUSH2 0x0b83 00000b7e: JUMPI 00000b7f: PUSH2 0x0c91 00000b82: JUMP 00000b83: JUMPDEST 00000b84: PUSH2 0x0b8b 00000b87: PUSH2 0x4688 00000b8a: JUMP 00000b8b: JUMPDEST 00000b8c: POP 00000b8d: PUSH2 0xffff 00000b90: DUP2 00000b91: AND 00000b92: PUSH1 0x00 00000b94: DUP2 00000b95: DUP2 00000b96: MSTORE 00000b97: PUSH1 0x05 00000b99: PUSH1 0x20 00000b9b: SWAP1 00000b9c: DUP2 00000b9d: MSTORE 00000b9e: PUSH1 0x40 00000ba0: DUP1 00000ba1: DUP4 00000ba2: KECCAK256 00000ba3: DUP4 00000ba4: DUP1 00000ba5: MSTORE 00000ba6: DUP3 00000ba7: MSTORE 00000ba8: DUP1 00000ba9: DUP4 00000baa: KECCAK256 00000bab: DUP2 00000bac: MLOAD 00000bad: PUSH1 0x80 00000baf: DUP2 00000bb0: ADD 00000bb1: DUP4 00000bb2: MSTORE 00000bb3: DUP2 00000bb4: SLOAD 00000bb5: PUSH1 0x01 00000bb7: PUSH1 0x01 00000bb9: PUSH1 0xa0 00000bbb: SHL 00000bbc: SUB 00000bbd: AND 00000bbe: DUP2 00000bbf: MSTORE 00000bc0: PUSH1 0x01 00000bc2: DUP3 00000bc3: ADD 00000bc4: SLOAD 00000bc5: PUSH1 0x01 00000bc7: PUSH1 0x01 00000bc9: PUSH1 0x80 00000bcb: SHL 00000bcc: SUB 00000bcd: DUP1 00000bce: DUP3 00000bcf: AND 00000bd0: DUP4 00000bd1: DUP8 00000bd2: ADD 00000bd3: MSTORE 00000bd4: PUSH1 0x01 00000bd6: PUSH1 0x80 00000bd8: SHL 00000bd9: SWAP1 00000bda: SWAP2 00000bdb: DIV 00000bdc: PUSH1 0xff 00000bde: AND 00000bdf: ISZERO 00000be0: ISZERO 00000be1: DUP3 00000be2: DUP6 00000be3: ADD 00000be4: MSTORE 00000be5: PUSH1 0x02 00000be7: SWAP3 00000be8: DUP4 00000be9: ADD 00000bea: SLOAD 00000beb: AND 00000bec: PUSH1 0x60 00000bee: DUP3 00000bef: ADD 00000bf0: MSTORE 00000bf1: SWAP5 00000bf2: DUP5 00000bf3: MSTORE 00000bf4: SWAP1 00000bf5: SWAP2 00000bf6: MSTORE 00000bf7: DUP2 00000bf8: KECCAK256 00000bf9: SLOAD 00000bfa: DUP7 00000bfb: MLOAD 00000bfc: SWAP1 00000bfd: SWAP2 00000bfe: SWAP1 00000bff: DUP8 00000c00: SWAP1 00000c01: DUP6 00000c02: SWAP1 00000c03: DUP2 00000c04: LT 00000c05: PUSH2 0x0c0a 00000c08: JUMPI 00000c09: INVALID 00000c0a: JUMPDEST 00000c0b: PUSH1 0x20 00000c0d: MUL 00000c0e: PUSH1 0x20 00000c10: ADD 00000c11: ADD 00000c12: MLOAD 00000c13: SLT 00000c14: ISZERO 00000c15: PUSH2 0x0c55 00000c18: JUMPI 00000c19: PUSH2 0x0c38 00000c1c: DUP3 00000c1d: DUP3 00000c1e: DUP9 00000c1f: DUP7 00000c20: DUP2 00000c21: MLOAD 00000c22: DUP2 00000c23: LT 00000c24: PUSH2 0x0c29 00000c27: JUMPI 00000c28: INVALID 00000c29: JUMPDEST 00000c2a: PUSH1 0x20 00000c2c: MUL 00000c2d: PUSH1 0x20 00000c2f: ADD 00000c30: ADD 00000c31: MLOAD 00000c32: PUSH1 0x01 00000c34: PUSH2 0x2e37 00000c37: JUMP 00000c38: JUMPDEST 00000c39: DUP5 00000c3a: DUP5 00000c3b: DUP2 00000c3c: MLOAD 00000c3d: DUP2 00000c3e: LT 00000c3f: PUSH2 0x0c44 00000c42: JUMPI 00000c43: INVALID 00000c44: JUMPDEST 00000c45: PUSH1 0x20 00000c47: MUL 00000c48: PUSH1 0x20 00000c4a: ADD 00000c4b: ADD 00000c4c: DUP2 00000c4d: DUP2 00000c4e: MSTORE 00000c4f: POP 00000c50: POP 00000c51: PUSH2 0x0c8e 00000c54: JUMP 00000c55: JUMPDEST 00000c56: PUSH2 0x0c75 00000c59: DUP3 00000c5a: DUP3 00000c5b: DUP9 00000c5c: DUP7 00000c5d: DUP2 00000c5e: MLOAD 00000c5f: DUP2 00000c60: LT 00000c61: PUSH2 0x0c66 00000c64: JUMPI 00000c65: INVALID 00000c66: JUMPDEST 00000c67: PUSH1 0x20 00000c69: MUL 00000c6a: PUSH1 0x20 00000c6c: ADD 00000c6d: ADD 00000c6e: MLOAD 00000c6f: PUSH1 0x00 00000c71: PUSH2 0x2e37 00000c74: JUMP 00000c75: JUMPDEST 00000c76: DUP5 00000c77: DUP5 00000c78: DUP2 00000c79: MLOAD 00000c7a: DUP2 00000c7b: LT 00000c7c: PUSH2 0x0c81 00000c7f: JUMPI 00000c80: INVALID 00000c81: JUMPDEST 00000c82: PUSH1 0x20 00000c84: MUL 00000c85: PUSH1 0x20 00000c87: ADD 00000c88: ADD 00000c89: DUP2 00000c8a: DUP2 00000c8b: MSTORE 00000c8c: POP 00000c8d: POP 00000c8e: JUMPDEST 00000c8f: POP 00000c90: POP 00000c91: JUMPDEST 00000c92: PUSH1 0x01 00000c94: ADD 00000c95: PUSH2 0x0b59 00000c98: JUMP 00000c99: JUMPDEST 00000c9a: POP 00000c9b: SWAP1 00000c9c: POP 00000c9d: JUMPDEST 00000c9e: SWAP2 00000c9f: SWAP1 00000ca0: POP 00000ca1: JUMP 00000ca2: JUMPDEST 00000ca3: PUSH2 0x0caa 00000ca6: PUSH2 0x2efd 00000ca9: JUMP 00000caa: JUMPDEST 00000cab: PUSH2 0x0cc6 00000cae: JUMPI 00000caf: PUSH1 0x40 00000cb1: MLOAD 00000cb2: PUSH3 0x461bcd 00000cb6: PUSH1 0xe5 00000cb8: SHL 00000cb9: DUP2 00000cba: MSTORE 00000cbb: PUSH1 0x04 00000cbd: ADD 00000cbe: PUSH2 0x08ca 00000cc1: SWAP1 00000cc2: PUSH2 0x5a3a 00000cc5: JUMP 00000cc6: JUMPDEST 00000cc7: PUSH1 0x00 00000cc9: JUMPDEST 00000cca: DUP2 00000ccb: MLOAD 00000ccc: DUP2 00000ccd: LT 00000cce: ISZERO 00000ccf: PUSH2 0x09cb 00000cd2: JUMPI 00000cd3: PUSH1 0x00 00000cd5: PUSH1 0x01 00000cd7: PUSH1 0x00 00000cd9: DUP5 00000cda: DUP5 00000cdb: DUP2 00000cdc: MLOAD 00000cdd: DUP2 00000cde: LT 00000cdf: PUSH2 0x0ce4 00000ce2: JUMPI 00000ce3: INVALID 00000ce4: JUMPDEST 00000ce5: PUSH1 0x20 00000ce7: MUL 00000ce8: PUSH1 0x20 00000cea: ADD 00000ceb: ADD 00000cec: MLOAD 00000ced: PUSH1 0x20 00000cef: ADD 00000cf0: MLOAD 00000cf1: PUSH2 0xffff 00000cf4: AND 00000cf5: PUSH2 0xffff 00000cf8: AND 00000cf9: DUP2 00000cfa: MSTORE 00000cfb: PUSH1 0x20 00000cfd: ADD 00000cfe: SWAP1 00000cff: DUP2 00000d00: MSTORE 00000d01: PUSH1 0x20 00000d03: ADD 00000d04: PUSH1 0x00 00000d06: KECCAK256 00000d07: PUSH1 0x00 00000d09: SWAP1 00000d0a: SLOAD 00000d0b: SWAP1 00000d0c: PUSH2 0x0100 00000d0f: EXP 00000d10: SWAP1 00000d11: DIV 00000d12: PUSH1 0x01 00000d14: PUSH1 0x01 00000d16: PUSH1 0xa0 00000d18: SHL 00000d19: SUB 00000d1a: AND 00000d1b: SWAP1 00000d1c: POP 00000d1d: PUSH1 0x00 00000d1f: DUP4 00000d20: DUP4 00000d21: DUP2 00000d22: MLOAD 00000d23: DUP2 00000d24: LT 00000d25: PUSH2 0x0d2a 00000d28: JUMPI 00000d29: INVALID 00000d2a: JUMPDEST 00000d2b: PUSH1 0x20 00000d2d: MUL 00000d2e: PUSH1 0x20 00000d30: ADD 00000d31: ADD 00000d32: MLOAD 00000d33: PUSH1 0x40 00000d35: ADD 00000d36: MLOAD 00000d37: PUSH1 0x01 00000d39: PUSH1 0x01 00000d3b: PUSH1 0x80 00000d3d: SHL 00000d3e: SUB 00000d3f: AND 00000d40: PUSH1 0x00 00000d42: EQ 00000d43: ISZERO 00000d44: PUSH2 0x0d4e 00000d47: JUMPI 00000d48: POP 00000d49: POP 00000d4a: PUSH2 0x0d91 00000d4d: JUMP 00000d4e: JUMPDEST 00000d4f: DUP4 00000d50: DUP4 00000d51: DUP2 00000d52: MLOAD 00000d53: DUP2 00000d54: LT 00000d55: PUSH2 0x0d5a 00000d58: JUMPI 00000d59: INVALID 00000d5a: JUMPDEST 00000d5b: PUSH1 0x20 00000d5d: MUL 00000d5e: PUSH1 0x20 00000d60: ADD 00000d61: ADD 00000d62: MLOAD 00000d63: PUSH1 0x40 00000d65: ADD 00000d66: MLOAD 00000d67: SWAP1 00000d68: POP 00000d69: PUSH2 0x0d8d 00000d6c: DUP6 00000d6d: DUP6 00000d6e: DUP6 00000d6f: DUP2 00000d70: MLOAD 00000d71: DUP2 00000d72: LT 00000d73: PUSH2 0x0d78 00000d76: JUMPI 00000d77: INVALID 00000d78: JUMPDEST 00000d79: PUSH1 0x20 00000d7b: MUL 00000d7c: PUSH1 0x20 00000d7e: ADD 00000d7f: ADD 00000d80: MLOAD 00000d81: PUSH1 0x00 00000d83: ADD 00000d84: MLOAD 00000d85: DUP5 00000d86: DUP5 00000d87: PUSH1 0x00 00000d89: PUSH2 0x2b25 00000d8c: JUMP 00000d8d: JUMPDEST 00000d8e: POP 00000d8f: POP 00000d90: POP 00000d91: JUMPDEST 00000d92: PUSH1 0x01 00000d94: ADD 00000d95: PUSH2 0x0cc9 00000d98: JUMP 00000d99: JUMPDEST 00000d9a: PUSH2 0x0da2 00000d9d: CALLER 00000d9e: PUSH2 0x2f26 00000da1: JUMP 00000da2: JUMPDEST 00000da3: JUMP 00000da4: JUMPDEST 00000da5: PUSH2 0x0dac 00000da8: PUSH2 0x46af 00000dab: JUMP 00000dac: JUMPDEST 00000dad: PUSH2 0x0db4 00000db0: PUSH2 0x304a 00000db3: JUMP 00000db4: JUMPDEST 00000db5: PUSH1 0x01 00000db7: PUSH1 0x01 00000db9: PUSH1 0xa0 00000dbb: SHL 00000dbc: SUB 00000dbd: AND 00000dbe: PUSH4 0x6dab47fd 00000dc3: DUP6 00000dc4: PUSH1 0x40 00000dc6: MLOAD 00000dc7: DUP3 00000dc8: PUSH4 0xffffffff 00000dcd: AND 00000dce: PUSH1 0xe0 00000dd0: SHL 00000dd1: DUP2 00000dd2: MSTORE 00000dd3: PUSH1 0x04 00000dd5: ADD 00000dd6: PUSH2 0x0ddf 00000dd9: SWAP2 00000dda: SWAP1 00000ddb: PUSH2 0x5e67 00000dde: JUMP 00000ddf: JUMPDEST 00000de0: PUSH1 0xa0 00000de2: PUSH1 0x40 00000de4: MLOAD 00000de5: DUP1 00000de6: DUP4 00000de7: SUB 00000de8: DUP2 00000de9: DUP7 00000dea: DUP1 00000deb: EXTCODESIZE 00000dec: ISZERO 00000ded: DUP1 00000dee: ISZERO 00000def: PUSH2 0x0df7 00000df2: JUMPI 00000df3: PUSH1 0x00 00000df5: DUP1 00000df6: REVERT 00000df7: JUMPDEST 00000df8: POP 00000df9: GAS 00000dfa: STATICCALL 00000dfb: ISZERO 00000dfc: DUP1 00000dfd: ISZERO 00000dfe: PUSH2 0x0e0b 00000e01: JUMPI 00000e02: RETURNDATASIZE 00000e03: PUSH1 0x00 00000e05: DUP1 00000e06: RETURNDATACOPY 00000e07: RETURNDATASIZE 00000e08: PUSH1 0x00 00000e0a: REVERT 00000e0b: JUMPDEST 00000e0c: POP 00000e0d: POP 00000e0e: POP 00000e0f: POP 00000e10: PUSH1 0x40 00000e12: MLOAD 00000e13: RETURNDATASIZE 00000e14: PUSH1 0x1f 00000e16: NOT 00000e17: PUSH1 0x1f 00000e19: DUP3 00000e1a: ADD 00000e1b: AND 00000e1c: DUP3 00000e1d: ADD 00000e1e: DUP1 00000e1f: PUSH1 0x40 00000e21: MSTORE 00000e22: POP 00000e23: DUP2 00000e24: ADD 00000e25: SWAP1 00000e26: PUSH2 0x0e2f 00000e29: SWAP2 00000e2a: SWAP1 00000e2b: PUSH2 0x505e 00000e2e: JUMP 00000e2f: JUMPDEST 00000e30: SWAP1 00000e31: POP 00000e32: DUP1 00000e33: PUSH1 0x60 00000e35: ADD 00000e36: MLOAD 00000e37: PUSH1 0x01 00000e39: PUSH1 0x01 00000e3b: PUSH1 0xa0 00000e3d: SHL 00000e3e: SUB 00000e3f: AND 00000e40: CALLER 00000e41: PUSH1 0x01 00000e43: PUSH1 0x01 00000e45: PUSH1 0xa0 00000e47: SHL 00000e48: SUB 00000e49: AND 00000e4a: EQ 00000e4b: PUSH2 0x0e66 00000e4e: JUMPI 00000e4f: PUSH1 0x40 00000e51: MLOAD 00000e52: PUSH3 0x461bcd 00000e56: PUSH1 0xe5 00000e58: SHL 00000e59: DUP2 00000e5a: MSTORE 00000e5b: PUSH1 0x04 00000e5d: ADD 00000e5e: PUSH2 0x08ca 00000e61: SWAP1 00000e62: PUSH2 0x5a3a 00000e65: JUMP 00000e66: JUMPDEST 00000e67: PUSH1 0x01 00000e69: PUSH1 0x01 00000e6b: PUSH1 0x80 00000e6d: SHL 00000e6e: SUB 00000e6f: DUP3 00000e70: AND 00000e71: ISZERO 00000e72: PUSH2 0x0eeb 00000e75: JUMPI 00000e76: PUSH1 0x80 00000e78: DUP2 00000e79: ADD 00000e7a: MLOAD 00000e7b: PUSH2 0xffff 00000e7e: AND 00000e7f: PUSH1 0x00 00000e81: SWAP1 00000e82: DUP2 00000e83: MSTORE 00000e84: PUSH1 0x06 00000e86: PUSH1 0x20 00000e88: SWAP1 00000e89: DUP2 00000e8a: MSTORE 00000e8b: PUSH1 0x40 00000e8d: DUP1 00000e8e: DUP4 00000e8f: KECCAK256 00000e90: PUSH1 0x07 00000e92: SLOAD 00000e93: PUSH1 0x01 00000e95: PUSH1 0x01 00000e97: PUSH1 0xa0 00000e99: SHL 00000e9a: SUB 00000e9b: AND 00000e9c: DUP5 00000e9d: MSTORE 00000e9e: SWAP1 00000e9f: SWAP2 00000ea0: MSTORE 00000ea1: SWAP1 00000ea2: KECCAK256 00000ea3: SLOAD 00000ea4: PUSH2 0x0ebc 00000ea7: SWAP1 00000ea8: PUSH1 0x01 00000eaa: PUSH1 0x01 00000eac: PUSH1 0x80 00000eae: SHL 00000eaf: SUB 00000eb0: DUP5 00000eb1: AND 00000eb2: PUSH4 0xffffffff 00000eb7: PUSH2 0x2aad 00000eba: AND 00000ebb: JUMP 00000ebc: JUMPDEST 00000ebd: PUSH1 0x80 00000ebf: DUP3 00000ec0: ADD 00000ec1: MLOAD 00000ec2: PUSH2 0xffff 00000ec5: AND 00000ec6: PUSH1 0x00 00000ec8: SWAP1 00000ec9: DUP2 00000eca: MSTORE 00000ecb: PUSH1 0x06 00000ecd: PUSH1 0x20 00000ecf: SWAP1 00000ed0: DUP2 00000ed1: MSTORE 00000ed2: PUSH1 0x40 00000ed4: DUP1 00000ed5: DUP4 00000ed6: KECCAK256 00000ed7: PUSH1 0x07 00000ed9: SLOAD 00000eda: PUSH1 0x01 00000edc: PUSH1 0x01 00000ede: PUSH1 0xa0 00000ee0: SHL 00000ee1: SUB 00000ee2: AND 00000ee3: DUP5 00000ee4: MSTORE 00000ee5: SWAP1 00000ee6: SWAP2 00000ee7: MSTORE 00000ee8: SWAP1 00000ee9: KECCAK256 00000eea: SSTORE 00000eeb: JUMPDEST 00000eec: PUSH1 0x80 00000eee: DUP2 00000eef: ADD 00000ef0: MLOAD 00000ef1: PUSH2 0xffff 00000ef4: AND 00000ef5: PUSH1 0x00 00000ef7: SWAP1 00000ef8: DUP2 00000ef9: MSTORE 00000efa: PUSH1 0x06 00000efc: PUSH1 0x20 00000efe: SWAP1 00000eff: DUP2 00000f00: MSTORE 00000f01: PUSH1 0x40 00000f03: DUP1 00000f04: DUP4 00000f05: KECCAK256 00000f06: CALLER 00000f07: DUP5 00000f08: MSTORE 00000f09: SWAP1 00000f0a: SWAP2 00000f0b: MSTORE 00000f0c: SWAP1 00000f0d: KECCAK256 00000f0e: SLOAD 00000f0f: PUSH2 0x0f27 00000f12: SWAP1 00000f13: PUSH1 0x01 00000f15: PUSH1 0x01 00000f17: PUSH1 0x80 00000f19: SHL 00000f1a: SUB 00000f1b: DUP6 00000f1c: AND 00000f1d: PUSH4 0xffffffff 00000f22: PUSH2 0x2aad 00000f25: AND 00000f26: JUMP 00000f27: JUMPDEST 00000f28: PUSH1 0x80 00000f2a: DUP3 00000f2b: ADD 00000f2c: DUP1 00000f2d: MLOAD 00000f2e: PUSH2 0xffff 00000f31: SWAP1 00000f32: DUP2 00000f33: AND 00000f34: PUSH1 0x00 00000f36: SWAP1 00000f37: DUP2 00000f38: MSTORE 00000f39: PUSH1 0x06 00000f3b: PUSH1 0x20 00000f3d: DUP2 00000f3e: DUP2 00000f3f: MSTORE 00000f40: PUSH1 0x40 00000f42: DUP1 00000f43: DUP5 00000f44: KECCAK256 00000f45: CALLER 00000f46: DUP6 00000f47: MSTORE 00000f48: DUP3 00000f49: MSTORE 00000f4a: DUP1 00000f4b: DUP5 00000f4c: KECCAK256 00000f4d: SWAP7 00000f4e: SWAP1 00000f4f: SWAP7 00000f50: SSTORE 00000f51: SWAP4 00000f52: MLOAD 00000f53: SWAP1 00000f54: SWAP3 00000f55: AND 00000f56: DUP2 00000f57: MSTORE 00000f58: SWAP1 00000f59: DUP3 00000f5a: MSTORE 00000f5b: DUP3 00000f5c: DUP2 00000f5d: KECCAK256 00000f5e: PUSH1 0x01 00000f60: PUSH1 0x01 00000f62: PUSH1 0xa0 00000f64: SHL 00000f65: SUB 00000f66: DUP10 00000f67: AND 00000f68: DUP3 00000f69: MSTORE 00000f6a: SWAP1 00000f6b: SWAP2 00000f6c: MSTORE 00000f6d: KECCAK256 00000f6e: SLOAD 00000f6f: PUSH2 0x0fa0 00000f72: PUSH2 0x0f8a 00000f75: PUSH1 0x01 00000f77: PUSH1 0x01 00000f79: PUSH1 0x80 00000f7b: SHL 00000f7c: SUB 00000f7d: DUP7 00000f7e: AND 00000f7f: DUP6 00000f80: PUSH4 0xffffffff 00000f85: PUSH2 0x3082 00000f88: AND 00000f89: JUMP 00000f8a: JUMPDEST 00000f8b: DUP3 00000f8c: SWAP1 00000f8d: PUSH1 0x01 00000f8f: PUSH1 0x01 00000f91: PUSH1 0x80 00000f93: SHL 00000f94: SUB 00000f95: AND 00000f96: PUSH4 0xffffffff 00000f9b: PUSH2 0x30b3 00000f9e: AND 00000f9f: JUMP 00000fa0: JUMPDEST 00000fa1: PUSH1 0x80 00000fa3: SWAP1 00000fa4: SWAP3 00000fa5: ADD 00000fa6: MLOAD 00000fa7: PUSH2 0xffff 00000faa: AND 00000fab: PUSH1 0x00 00000fad: SWAP1 00000fae: DUP2 00000faf: MSTORE 00000fb0: PUSH1 0x06 00000fb2: PUSH1 0x20 00000fb4: SWAP1 00000fb5: DUP2 00000fb6: MSTORE 00000fb7: PUSH1 0x40 00000fb9: DUP1 00000fba: DUP4 00000fbb: KECCAK256 00000fbc: PUSH1 0x01 00000fbe: PUSH1 0x01 00000fc0: PUSH1 0xa0 00000fc2: SHL 00000fc3: SUB 00000fc4: SWAP1 00000fc5: SWAP10 00000fc6: AND 00000fc7: DUP4 00000fc8: MSTORE 00000fc9: SWAP8 00000fca: SWAP1 00000fcb: MSTORE 00000fcc: SWAP6 00000fcd: SWAP1 00000fce: SWAP6 00000fcf: KECCAK256 00000fd0: SSTORE 00000fd1: POP 00000fd2: POP 00000fd3: POP 00000fd4: POP 00000fd5: JUMP 00000fd6: JUMPDEST 00000fd7: PUSH1 0x08 00000fd9: SLOAD 00000fda: PUSH1 0x01 00000fdc: PUSH1 0xa8 00000fde: SHL 00000fdf: SWAP1 00000fe0: DIV 00000fe1: PUSH1 0xff 00000fe3: AND 00000fe4: DUP1 00000fe5: PUSH2 0x0ff1 00000fe8: JUMPI 00000fe9: POP 00000fea: PUSH2 0x0ff1 00000fed: PUSH2 0x30e3 00000ff0: JUMP 00000ff1: JUMPDEST 00000ff2: DUP1 00000ff3: PUSH2 0x1006 00000ff6: JUMPI 00000ff7: POP 00000ff8: PUSH1 0x08 00000ffa: SLOAD 00000ffb: PUSH1 0x01 00000ffd: PUSH1 0xa0 00000fff: SHL 00001000: SWAP1 00001001: DIV 00001002: PUSH1 0xff 00001004: AND 00001005: ISZERO 00001006: JUMPDEST 00001007: PUSH2 0x1022 0000100a: JUMPI 0000100b: PUSH1 0x40 0000100d: MLOAD 0000100e: PUSH3 0x461bcd 00001012: PUSH1 0xe5 00001014: SHL 00001015: DUP2 00001016: MSTORE 00001017: PUSH1 0x04 00001019: ADD 0000101a: PUSH2 0x08ca 0000101d: SWAP1 0000101e: PUSH2 0x5b24 00001021: JUMP 00001022: JUMPDEST 00001023: PUSH1 0x08 00001025: SLOAD 00001026: PUSH1 0x01 00001028: PUSH1 0xa8 0000102a: SHL 0000102b: SWAP1 0000102c: DIV 0000102d: PUSH1 0xff 0000102f: AND 00001030: ISZERO 00001031: DUP1 00001032: ISZERO 00001033: PUSH2 0x1059 00001036: JUMPI 00001037: PUSH1 0x08 00001039: DUP1 0000103a: SLOAD 0000103b: PUSH1 0xff 0000103d: PUSH1 0xa0 0000103f: SHL 00001040: NOT 00001041: PUSH1 0xff 00001043: PUSH1 0xa8 00001045: SHL 00001046: NOT 00001047: SWAP1 00001048: SWAP2 00001049: AND 0000104a: PUSH1 0x01 0000104c: PUSH1 0xa8 0000104e: SHL 0000104f: OR 00001050: AND 00001051: PUSH1 0x01 00001053: PUSH1 0xa0 00001055: SHL 00001056: OR 00001057: SWAP1 00001058: SSTORE 00001059: JUMPDEST 0000105a: PUSH1 0x08 0000105c: DUP1 0000105d: SLOAD 0000105e: PUSH1 0x01 00001060: PUSH1 0x01 00001062: PUSH1 0xa0 00001064: SHL 00001065: SUB 00001066: DUP1 00001067: DUP6 00001068: AND 00001069: PUSH1 0x01 0000106b: PUSH1 0x01 0000106d: PUSH1 0xa0 0000106f: SHL 00001070: SUB 00001071: NOT 00001072: SWAP3 00001073: DUP4 00001074: AND 00001075: OR 00001076: SWAP1 00001077: SWAP3 00001078: SSTORE 00001079: PUSH1 0x3b 0000107b: DUP1 0000107c: SLOAD 0000107d: SWAP3 0000107e: DUP7 0000107f: AND 00001080: SWAP3 00001081: SWAP1 00001082: SWAP2 00001083: AND 00001084: SWAP2 00001085: SWAP1 00001086: SWAP2 00001087: OR 00001088: SWAP1 00001089: SSTORE 0000108a: DUP1 0000108b: ISZERO 0000108c: PUSH2 0x09cb 0000108f: JUMPI 00001090: PUSH1 0x08 00001092: DUP1 00001093: SLOAD 00001094: PUSH1 0xff 00001096: PUSH1 0xa8 00001098: SHL 00001099: NOT 0000109a: AND 0000109b: SWAP1 0000109c: SSTORE 0000109d: POP 0000109e: POP 0000109f: POP 000010a0: JUMP 000010a1: JUMPDEST 000010a2: PUSH1 0x03 000010a4: PUSH1 0x20 000010a6: MSTORE 000010a7: PUSH1 0x00 000010a9: SWAP1 000010aa: DUP2 000010ab: MSTORE 000010ac: PUSH1 0x40 000010ae: SWAP1 000010af: KECCAK256 000010b0: SLOAD 000010b1: PUSH2 0xffff 000010b4: AND 000010b5: DUP2 000010b6: JUMP 000010b7: JUMPDEST 000010b8: PUSH1 0x05 000010ba: PUSH1 0x20 000010bc: SWAP1 000010bd: DUP2 000010be: MSTORE 000010bf: PUSH1 0x00 000010c1: SWAP3 000010c2: DUP4 000010c3: MSTORE 000010c4: PUSH1 0x40 000010c6: DUP1 000010c7: DUP5 000010c8: KECCAK256 000010c9: SWAP1 000010ca: SWAP2 000010cb: MSTORE 000010cc: SWAP1 000010cd: DUP3 000010ce: MSTORE 000010cf: SWAP1 000010d0: KECCAK256 000010d1: DUP1 000010d2: SLOAD 000010d3: PUSH1 0x01 000010d5: DUP3 000010d6: ADD 000010d7: SLOAD 000010d8: PUSH1 0x02 000010da: SWAP1 000010db: SWAP3 000010dc: ADD 000010dd: SLOAD 000010de: PUSH1 0x01 000010e0: PUSH1 0x01 000010e2: PUSH1 0xa0 000010e4: SHL 000010e5: SUB 000010e6: SWAP1 000010e7: SWAP2 000010e8: AND 000010e9: SWAP2 000010ea: PUSH1 0x01 000010ec: PUSH1 0x01 000010ee: PUSH1 0x80 000010f0: SHL 000010f1: SUB 000010f2: DUP1 000010f3: DUP3 000010f4: AND 000010f5: SWAP3 000010f6: PUSH1 0x01 000010f8: PUSH1 0x80 000010fa: SHL 000010fb: SWAP1 000010fc: SWAP3 000010fd: DIV 000010fe: PUSH1 0xff 00001100: AND 00001101: SWAP2 00001102: AND 00001103: DUP5 00001104: JUMP 00001105: JUMPDEST 00001106: PUSH2 0x110d 00001109: PUSH2 0x46dd 0000110c: JUMP 0000110d: JUMPDEST 0000110e: PUSH2 0x1117 00001111: DUP8 00001112: DUP8 00001113: PUSH2 0x30e9 00001116: JUMP 00001117: JUMPDEST 00001118: SWAP1 00001119: POP 0000111a: PUSH1 0x60 0000111c: DUP4 0000111d: DUP4 0000111e: SWAP1 0000111f: POP 00001120: PUSH1 0x40 00001122: MLOAD 00001123: SWAP1 00001124: DUP1 00001125: DUP3 00001126: MSTORE 00001127: DUP1 00001128: PUSH1 0x20 0000112a: MUL 0000112b: PUSH1 0x20 0000112d: ADD 0000112e: DUP3 0000112f: ADD 00001130: PUSH1 0x40 00001132: MSTORE 00001133: DUP1 00001134: ISZERO 00001135: PUSH2 0x1148 00001138: JUMPI 00001139: DUP2 0000113a: PUSH1 0x20 0000113c: ADD 0000113d: PUSH1 0x20 0000113f: DUP3 00001140: MUL 00001141: DUP1 00001142: CALLDATASIZE 00001143: DUP4 00001144: CALLDATACOPY 00001145: ADD 00001146: SWAP1 00001147: POP 00001148: JUMPDEST 00001149: POP 0000114a: SWAP1 0000114b: POP 0000114c: PUSH1 0x00 0000114e: DUP1 0000114f: PUSH1 0x00 00001151: JUMPDEST 00001152: DUP8 00001153: DUP2 00001154: LT 00001155: ISZERO 00001156: PUSH2 0x1207 00001159: JUMPI 0000115a: PUSH1 0x00 0000115c: DUP1 0000115d: PUSH2 0x11a7 00001160: DUP12 00001161: DUP12 00001162: DUP6 00001163: DUP2 00001164: DUP2 00001165: LT 00001166: PUSH2 0x116b 00001169: JUMPI 0000116a: INVALID 0000116b: JUMPDEST 0000116c: SWAP1 0000116d: POP 0000116e: PUSH1 0x20 00001170: MUL 00001171: ADD 00001172: PUSH1 0x20 00001174: DUP2 00001175: ADD 00001176: SWAP1 00001177: PUSH2 0x1180 0000117a: SWAP2 0000117b: SWAP1 0000117c: PUSH2 0x4931 0000117f: JUMP 00001180: JUMPDEST 00001181: DUP11 00001182: DUP11 00001183: DUP7 00001184: DUP2 00001185: DUP2 00001186: LT 00001187: PUSH2 0x118c 0000118a: JUMPI 0000118b: INVALID 0000118c: JUMPDEST 0000118d: SWAP1 0000118e: POP 0000118f: PUSH1 0x20 00001191: MUL 00001192: ADD 00001193: PUSH1 0x20 00001195: DUP2 00001196: ADD 00001197: SWAP1 00001198: PUSH2 0x11a1 0000119b: SWAP2 0000119c: SWAP1 0000119d: PUSH2 0x5182 000011a0: JUMP 000011a1: JUMPDEST 000011a2: DUP10 000011a3: PUSH2 0x32b1 000011a6: JUMP 000011a7: JUMPDEST 000011a8: DUP9 000011a9: DUP7 000011aa: DUP2 000011ab: MLOAD 000011ac: DUP2 000011ad: LT 000011ae: PUSH2 0x11b3 000011b1: JUMPI 000011b2: INVALID 000011b3: JUMPDEST 000011b4: PUSH1 0x01 000011b6: PUSH1 0x01 000011b8: PUSH1 0x80 000011ba: SHL 000011bb: SUB 000011bc: SWAP5 000011bd: DUP6 000011be: AND 000011bf: PUSH1 0x20 000011c1: SWAP2 000011c2: DUP3 000011c3: MUL 000011c4: SWAP3 000011c5: SWAP1 000011c6: SWAP3 000011c7: ADD 000011c8: ADD 000011c9: MSTORE 000011ca: SWAP1 000011cb: SWAP4 000011cc: POP 000011cd: SWAP2 000011ce: POP 000011cf: PUSH2 0x11e0 000011d2: SWAP1 000011d3: DUP7 000011d4: AND 000011d5: DUP3 000011d6: PUSH4 0xffffffff 000011db: PUSH2 0x3082 000011de: AND 000011df: JUMP 000011e0: JUMPDEST 000011e1: SWAP5 000011e2: POP 000011e3: PUSH2 0x11fb 000011e6: PUSH1 0x01 000011e8: PUSH1 0x01 000011ea: PUSH1 0x80 000011ec: SHL 000011ed: SUB 000011ee: DUP6 000011ef: AND 000011f0: DUP4 000011f1: PUSH4 0xffffffff 000011f6: PUSH2 0x3082 000011f9: AND 000011fa: JUMP 000011fb: JUMPDEST 000011fc: SWAP4 000011fd: POP 000011fe: POP 000011ff: POP 00001200: PUSH1 0x01 00001202: ADD 00001203: PUSH2 0x1151 00001206: JUMP 00001207: JUMPDEST 00001208: POP 00001209: PUSH2 0x121b 0000120c: DUP11 0000120d: DUP3 0000120e: PUSH1 0x01 00001210: PUSH1 0x01 00001212: PUSH1 0x80 00001214: SHL 00001215: SUB 00001216: AND 00001217: PUSH2 0x34fc 0000121a: JUMP 0000121b: JUMPDEST 0000121c: PUSH2 0x1236 0000121f: DUP10 00001220: PUSH2 0x1231 00001223: DUP5 00001224: PUSH1 0x01 00001226: PUSH1 0x01 00001228: PUSH1 0x80 0000122a: SHL 0000122b: SUB 0000122c: AND 0000122d: PUSH2 0x361b 00001230: JUMP 00001231: JUMPDEST 00001232: PUSH2 0x34fc 00001235: JUMP 00001236: JUMPDEST 00001237: PUSH32 0xcf9efc6abb6464d820bb0fc18d722b04f8372f6a2f9031945246262d7659af33 00001258: DUP11 00001259: DUP11 0000125a: DUP11 0000125b: DUP11 0000125c: DUP8 0000125d: PUSH1 0x40 0000125f: MLOAD 00001260: PUSH2 0x126d 00001263: SWAP6 00001264: SWAP5 00001265: SWAP4 00001266: SWAP3 00001267: SWAP2 00001268: SWAP1 00001269: PUSH2 0x5dfa 0000126c: JUMP 0000126d: JUMPDEST 0000126e: PUSH1 0x40 00001270: MLOAD 00001271: DUP1 00001272: SWAP2 00001273: SUB 00001274: SWAP1 00001275: LOG1 00001276: POP 00001277: POP 00001278: POP 00001279: POP 0000127a: POP 0000127b: POP 0000127c: POP 0000127d: POP 0000127e: POP 0000127f: POP 00001280: JUMP 00001281: JUMPDEST 00001282: PUSH2 0x1289 00001285: PUSH2 0x14e2 00001288: JUMP 00001289: JUMPDEST 0000128a: PUSH2 0x1292 0000128d: JUMPI 0000128e: PUSH1 0x00 00001290: DUP1 00001291: REVERT 00001292: JUMPDEST 00001293: PUSH1 0x08 00001295: SLOAD 00001296: PUSH1 0x40 00001298: MLOAD 00001299: PUSH1 0x00 0000129b: SWAP2 0000129c: PUSH1 0x01 0000129e: PUSH1 0x01 000012a0: PUSH1 0xa0 000012a2: SHL 000012a3: SUB 000012a4: AND 000012a5: SWAP1 000012a6: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 000012c7: SWAP1 000012c8: DUP4 000012c9: SWAP1 000012ca: LOG3 000012cb: PUSH1 0x08 000012cd: DUP1 000012ce: SLOAD 000012cf: PUSH1 0x01 000012d1: PUSH1 0x01 000012d3: PUSH1 0xa0 000012d5: SHL 000012d6: SUB 000012d7: NOT 000012d8: AND 000012d9: SWAP1 000012da: SSTORE 000012db: JUMP 000012dc: JUMPDEST 000012dd: PUSH1 0x01 000012df: PUSH1 0x20 000012e1: MSTORE 000012e2: PUSH1 0x00 000012e4: SWAP1 000012e5: DUP2 000012e6: MSTORE 000012e7: PUSH1 0x40 000012e9: SWAP1 000012ea: KECCAK256 000012eb: SLOAD 000012ec: PUSH1 0x01 000012ee: PUSH1 0x01 000012f0: PUSH1 0xa0 000012f2: SHL 000012f3: SUB 000012f4: AND 000012f5: DUP2 000012f6: JUMP 000012f7: JUMPDEST 000012f8: PUSH2 0x12ff 000012fb: PUSH2 0x46dd 000012fe: JUMP 000012ff: JUMPDEST 00001300: PUSH2 0x1309 00001303: DUP4 00001304: DUP4 00001305: PUSH2 0x30e9 00001308: JUMP 00001309: JUMPDEST 0000130a: SWAP1 0000130b: POP 0000130c: PUSH1 0x60 0000130e: DUP6 0000130f: DUP6 00001310: SWAP1 00001311: POP 00001312: PUSH1 0x40 00001314: MLOAD 00001315: SWAP1 00001316: DUP1 00001317: DUP3 00001318: MSTORE 00001319: DUP1 0000131a: PUSH1 0x20 0000131c: MUL 0000131d: PUSH1 0x20 0000131f: ADD 00001320: DUP3 00001321: ADD 00001322: PUSH1 0x40 00001324: MSTORE 00001325: DUP1 00001326: ISZERO 00001327: PUSH2 0x133a 0000132a: JUMPI 0000132b: DUP2 0000132c: PUSH1 0x20 0000132e: ADD 0000132f: PUSH1 0x20 00001331: DUP3 00001332: MUL 00001333: DUP1 00001334: CALLDATASIZE 00001335: DUP4 00001336: CALLDATACOPY 00001337: ADD 00001338: SWAP1 00001339: POP 0000133a: JUMPDEST 0000133b: POP 0000133c: SWAP1 0000133d: POP 0000133e: PUSH1 0x00 00001340: DUP1 00001341: PUSH1 0x00 00001343: JUMPDEST 00001344: DUP8 00001345: DUP2 00001346: LT 00001347: ISZERO 00001348: PUSH2 0x13dc 0000134b: JUMPI 0000134c: PUSH1 0x00 0000134e: DUP1 0000134f: PUSH2 0x137a 00001352: DUP12 00001353: DUP12 00001354: DUP6 00001355: DUP2 00001356: DUP2 00001357: LT 00001358: PUSH2 0x135d 0000135b: JUMPI 0000135c: INVALID 0000135d: JUMPDEST 0000135e: SWAP1 0000135f: POP 00001360: PUSH1 0x20 00001362: MUL 00001363: ADD 00001364: PUSH1 0x20 00001366: DUP2 00001367: ADD 00001368: SWAP1 00001369: PUSH2 0x1372 0000136c: SWAP2 0000136d: SWAP1 0000136e: PUSH2 0x4931 00001371: JUMP 00001372: JUMPDEST 00001373: DUP9 00001374: PUSH1 0x00 00001376: PUSH2 0x3629 00001379: JUMP 0000137a: JUMPDEST 0000137b: DUP9 0000137c: DUP7 0000137d: DUP2 0000137e: MLOAD 0000137f: DUP2 00001380: LT 00001381: PUSH2 0x1386 00001384: JUMPI 00001385: INVALID 00001386: JUMPDEST 00001387: PUSH1 0x01 00001389: PUSH1 0x01 0000138b: PUSH1 0x80 0000138d: SHL 0000138e: SUB 0000138f: SWAP1 00001390: SWAP5 00001391: AND 00001392: PUSH1 0x20 00001394: SWAP5 00001395: DUP6 00001396: MUL 00001397: SWAP2 00001398: SWAP1 00001399: SWAP2 0000139a: ADD 0000139b: SWAP1 0000139c: SWAP4 0000139d: ADD 0000139e: SWAP3 0000139f: SWAP1 000013a0: SWAP3 000013a1: MSTORE 000013a2: SWAP3 000013a3: POP 000013a4: SWAP1 000013a5: POP 000013a6: PUSH2 0x13b5 000013a9: DUP6 000013aa: DUP4 000013ab: PUSH4 0xffffffff 000013b0: PUSH2 0x2aad 000013b3: AND 000013b4: JUMP 000013b5: JUMPDEST 000013b6: SWAP5 000013b7: POP 000013b8: PUSH2 0x13d0 000013bb: PUSH1 0x01 000013bd: PUSH1 0x01 000013bf: PUSH1 0x80 000013c1: SHL 000013c2: SUB 000013c3: DUP6 000013c4: AND 000013c5: DUP3 000013c6: PUSH4 0xffffffff 000013cb: PUSH2 0x3082 000013ce: AND 000013cf: JUMP 000013d0: JUMPDEST 000013d1: SWAP4 000013d2: POP 000013d3: POP 000013d4: POP 000013d5: PUSH1 0x01 000013d7: ADD 000013d8: PUSH2 0x1343 000013db: JUMP 000013dc: JUMPDEST 000013dd: POP 000013de: PUSH2 0x13e7 000013e1: DUP7 000013e2: DUP4 000013e3: PUSH2 0x34fc 000013e6: JUMP 000013e7: JUMPDEST 000013e8: PUSH2 0x13fd 000013eb: DUP6 000013ec: PUSH2 0x1231 000013ef: DUP4 000013f0: PUSH1 0x01 000013f2: PUSH1 0x01 000013f4: PUSH1 0x80 000013f6: SHL 000013f7: SUB 000013f8: AND 000013f9: PUSH2 0x361b 000013fc: JUMP 000013fd: JUMPDEST 000013fe: DUP6 000013ff: PUSH2 0xffff 00001402: AND 00001403: PUSH32 0xd54ff80ddee326c304a5c68559c228b1f3f523d660e778803b1dcc73674d80f1 00001424: DUP7 00001425: DUP11 00001426: DUP11 00001427: DUP8 00001428: PUSH1 0x40 0000142a: MLOAD 0000142b: PUSH2 0x1437 0000142e: SWAP5 0000142f: SWAP4 00001430: SWAP3 00001431: SWAP2 00001432: SWAP1 00001433: PUSH2 0x5dbf 00001436: JUMP 00001437: JUMPDEST 00001438: PUSH1 0x40 0000143a: MLOAD 0000143b: DUP1 0000143c: SWAP2 0000143d: SUB 0000143e: SWAP1 0000143f: LOG2 00001440: POP 00001441: POP 00001442: POP 00001443: POP 00001444: POP 00001445: POP 00001446: POP 00001447: POP 00001448: JUMP 00001449: JUMPDEST 0000144a: PUSH1 0x3b 0000144c: SLOAD 0000144d: PUSH1 0x01 0000144f: PUSH1 0x01 00001451: PUSH1 0xa0 00001453: SHL 00001454: SUB 00001455: AND 00001456: CALLER 00001457: EQ 00001458: PUSH2 0x1473 0000145b: JUMPI 0000145c: PUSH1 0x40 0000145e: MLOAD 0000145f: PUSH3 0x461bcd 00001463: PUSH1 0xe5 00001465: SHL 00001466: DUP2 00001467: MSTORE 00001468: PUSH1 0x04 0000146a: ADD 0000146b: PUSH2 0x08ca 0000146e: SWAP1 0000146f: PUSH2 0x5a3a 00001472: JUMP 00001473: JUMPDEST 00001474: DUP1 00001475: PUSH1 0x3c 00001477: PUSH1 0x00 00001479: DUP5 0000147a: PUSH1 0x03 0000147c: DUP2 0000147d: GT 0000147e: ISZERO 0000147f: PUSH2 0x1484 00001482: JUMPI 00001483: INVALID 00001484: JUMPDEST 00001485: DUP2 00001486: MSTORE 00001487: PUSH1 0x20 00001489: ADD 0000148a: SWAP1 0000148b: DUP2 0000148c: MSTORE 0000148d: PUSH1 0x20 0000148f: ADD 00001490: PUSH1 0x00 00001492: KECCAK256 00001493: PUSH1 0x00 00001495: PUSH2 0x0100 00001498: EXP 00001499: DUP2 0000149a: SLOAD 0000149b: DUP2 0000149c: PUSH1 0x01 0000149e: PUSH1 0x01 000014a0: PUSH1 0xa0 000014a2: SHL 000014a3: SUB 000014a4: MUL 000014a5: NOT 000014a6: AND 000014a7: SWAP1 000014a8: DUP4 000014a9: PUSH1 0x01 000014ab: PUSH1 0x01 000014ad: PUSH1 0xa0 000014af: SHL 000014b0: SUB 000014b1: AND 000014b2: MUL 000014b3: OR 000014b4: SWAP1 000014b5: SSTORE 000014b6: POP 000014b7: POP 000014b8: POP 000014b9: JUMP 000014ba: JUMPDEST 000014bb: PUSH1 0x00 000014bd: PUSH2 0x0997 000014c0: PUSH2 0x383e 000014c3: JUMP 000014c4: JUMPDEST 000014c5: PUSH1 0x3b 000014c7: SLOAD 000014c8: PUSH1 0x01 000014ca: PUSH1 0x01 000014cc: PUSH1 0xa0 000014ce: SHL 000014cf: SUB 000014d0: AND 000014d1: DUP2 000014d2: JUMP 000014d3: JUMPDEST 000014d4: PUSH1 0x08 000014d6: SLOAD 000014d7: PUSH1 0x01 000014d9: PUSH1 0x01 000014db: PUSH1 0xa0 000014dd: SHL 000014de: SUB 000014df: AND 000014e0: SWAP1 000014e1: JUMP 000014e2: JUMPDEST 000014e3: PUSH1 0x08 000014e5: SLOAD 000014e6: PUSH1 0x01 000014e8: PUSH1 0x01 000014ea: PUSH1 0xa0 000014ec: SHL 000014ed: SUB 000014ee: AND 000014ef: CALLER 000014f0: EQ 000014f1: SWAP1 000014f2: JUMP 000014f3: JUMPDEST 000014f4: PUSH1 0x06 000014f6: PUSH1 0x20 000014f8: SWAP1 000014f9: DUP2 000014fa: MSTORE 000014fb: PUSH1 0x00 000014fd: SWAP3 000014fe: DUP4 000014ff: MSTORE 00001500: PUSH1 0x40 00001502: DUP1 00001503: DUP5 00001504: KECCAK256 00001505: SWAP1 00001506: SWAP2 00001507: MSTORE 00001508: SWAP1 00001509: DUP3 0000150a: MSTORE 0000150b: SWAP1 0000150c: KECCAK256 0000150d: SLOAD 0000150e: DUP2 0000150f: JUMP 00001510: JUMPDEST 00001511: PUSH1 0x00 00001513: PUSH2 0x0997 00001516: PUSH2 0x3869 00001519: JUMP 0000151a: JUMPDEST 0000151b: PUSH2 0x1524 0000151e: CALLER 0000151f: DUP3 00001520: PUSH2 0x3894 00001523: JUMP 00001524: JUMPDEST 00001525: POP 00001526: JUMP 00001527: JUMPDEST 00001528: PUSH2 0x152f 0000152b: PUSH2 0x3a54 0000152e: JUMP 0000152f: JUMPDEST 00001530: PUSH2 0x154b 00001533: JUMPI 00001534: PUSH1 0x40 00001536: MLOAD 00001537: PUSH3 0x461bcd 0000153b: PUSH1 0xe5 0000153d: SHL 0000153e: DUP2 0000153f: MSTORE 00001540: PUSH1 0x04 00001542: ADD 00001543: PUSH2 0x08ca 00001546: SWAP1 00001547: PUSH2 0x5a3a 0000154a: JUMP 0000154b: JUMPDEST 0000154c: PUSH2 0xffff 0000154f: DUP4 00001550: AND 00001551: PUSH1 0x00 00001553: SWAP1 00001554: DUP2 00001555: MSTORE 00001556: PUSH1 0x06 00001558: PUSH1 0x20 0000155a: SWAP1 0000155b: DUP2 0000155c: MSTORE 0000155d: PUSH1 0x40 0000155f: DUP1 00001560: DUP4 00001561: KECCAK256 00001562: PUSH1 0x01 00001564: PUSH1 0x01 00001566: PUSH1 0xa0 00001568: SHL 00001569: SUB 0000156a: DUP7 0000156b: AND 0000156c: DUP5 0000156d: MSTORE 0000156e: SWAP1 0000156f: SWAP2 00001570: MSTORE 00001571: SWAP1 00001572: KECCAK256 00001573: SLOAD 00001574: PUSH2 0x1583 00001577: DUP2 00001578: DUP4 00001579: PUSH4 0xffffffff 0000157e: PUSH2 0x30b3 00001581: AND 00001582: JUMP 00001583: JUMPDEST 00001584: PUSH2 0xffff 00001587: SWAP1 00001588: SWAP5 00001589: AND 0000158a: PUSH1 0x00 0000158c: SWAP1 0000158d: DUP2 0000158e: MSTORE 0000158f: PUSH1 0x06 00001591: PUSH1 0x20 00001593: SWAP1 00001594: DUP2 00001595: MSTORE 00001596: PUSH1 0x40 00001598: DUP1 00001599: DUP4 0000159a: KECCAK256 0000159b: PUSH1 0x01 0000159d: PUSH1 0x01 0000159f: PUSH1 0xa0 000015a1: SHL 000015a2: SUB 000015a3: SWAP1 000015a4: SWAP7 000015a5: AND 000015a6: DUP4 000015a7: MSTORE 000015a8: SWAP5 000015a9: SWAP1 000015aa: MSTORE 000015ab: SWAP3 000015ac: SWAP1 000015ad: SWAP3 000015ae: KECCAK256 000015af: SWAP3 000015b0: SWAP1 000015b1: SWAP3 000015b2: SSTORE 000015b3: POP 000015b4: POP 000015b5: JUMP 000015b6: JUMPDEST 000015b7: PUSH2 0x15be 000015ba: PUSH2 0x4720 000015bd: JUMP 000015be: JUMPDEST 000015bf: PUSH2 0x15c9 000015c2: DUP5 000015c3: DUP5 000015c4: DUP5 000015c5: PUSH2 0x3a60 000015c8: JUMP 000015c9: JUMPDEST 000015ca: SWAP1 000015cb: POP 000015cc: PUSH2 0x15d4 000015cf: DUP5 000015d0: PUSH2 0x3af1 000015d3: JUMP 000015d4: JUMPDEST 000015d5: ISZERO 000015d6: PUSH2 0x15f1 000015d9: JUMPI 000015da: PUSH1 0x40 000015dc: MLOAD 000015dd: PUSH3 0x461bcd 000015e1: PUSH1 0xe5 000015e3: SHL 000015e4: DUP2 000015e5: MSTORE 000015e6: PUSH1 0x04 000015e8: ADD 000015e9: PUSH2 0x08ca 000015ec: SWAP1 000015ed: PUSH2 0x5a1e 000015f0: JUMP 000015f1: JUMPDEST 000015f2: DUP1 000015f3: MLOAD 000015f4: PUSH1 0x00 000015f6: SGT 000015f7: PUSH2 0x1612 000015fa: JUMPI 000015fb: PUSH1 0x40 000015fd: MLOAD 000015fe: PUSH3 0x461bcd 00001602: PUSH1 0xe5 00001604: SHL 00001605: DUP2 00001606: MSTORE 00001607: PUSH1 0x04 00001609: ADD 0000160a: PUSH2 0x08ca 0000160d: SWAP1 0000160e: PUSH2 0x5ab4 00001611: JUMP 00001612: JUMPDEST 00001613: PUSH2 0x161a 00001616: PUSH2 0x46dd 00001619: JUMP 0000161a: JUMPDEST 0000161b: PUSH2 0x1624 0000161e: DUP5 0000161f: DUP5 00001620: PUSH2 0x30e9 00001623: JUMP 00001624: JUMPDEST 00001625: SWAP1 00001626: POP 00001627: PUSH1 0x00 00001629: DUP1 0000162a: PUSH20 0xb0ec9ba4ce826d925acf5474d365a80a9fba078e 0000163f: PUSH4 0xfcb58601 00001644: DUP9 00001645: CALLER 00001646: DUP8 00001647: PUSH1 0x00 00001649: ADD 0000164a: MLOAD 0000164b: DUP9 0000164c: PUSH1 0x20 0000164e: ADD 0000164f: MLOAD 00001650: DUP10 00001651: PUSH1 0x40 00001653: ADD 00001654: MLOAD 00001655: DUP10 00001656: PUSH2 0x165d 00001659: PUSH2 0x304a 0000165c: JUMP 0000165d: JUMPDEST 0000165e: PUSH1 0x40 00001660: MLOAD 00001661: DUP9 00001662: PUSH4 0xffffffff 00001667: AND 00001668: PUSH1 0xe0 0000166a: SHL 0000166b: DUP2 0000166c: MSTORE 0000166d: PUSH1 0x04 0000166f: ADD 00001670: PUSH2 0x167f 00001673: SWAP8 00001674: SWAP7 00001675: SWAP6 00001676: SWAP5 00001677: SWAP4 00001678: SWAP3 00001679: SWAP2 0000167a: SWAP1 0000167b: PUSH2 0x55ac 0000167e: JUMP 0000167f: JUMPDEST 00001680: PUSH1 0x40 00001682: DUP1 00001683: MLOAD 00001684: DUP1 00001685: DUP4 00001686: SUB 00001687: DUP2 00001688: DUP7 00001689: DUP1 0000168a: EXTCODESIZE 0000168b: ISZERO 0000168c: DUP1 0000168d: ISZERO 0000168e: PUSH2 0x1696 00001691: JUMPI 00001692: PUSH1 0x00 00001694: DUP1 00001695: REVERT 00001696: JUMPDEST 00001697: POP 00001698: GAS 00001699: DELEGATECALL 0000169a: ISZERO 0000169b: DUP1 0000169c: ISZERO 0000169d: PUSH2 0x16aa 000016a0: JUMPI 000016a1: RETURNDATASIZE 000016a2: PUSH1 0x00 000016a4: DUP1 000016a5: RETURNDATACOPY 000016a6: RETURNDATASIZE 000016a7: PUSH1 0x00 000016a9: REVERT 000016aa: JUMPDEST 000016ab: POP 000016ac: POP 000016ad: POP 000016ae: POP 000016af: PUSH1 0x40 000016b1: MLOAD 000016b2: RETURNDATASIZE 000016b3: PUSH1 0x1f 000016b5: NOT 000016b6: PUSH1 0x1f 000016b8: DUP3 000016b9: ADD 000016ba: AND 000016bb: DUP3 000016bc: ADD 000016bd: DUP1 000016be: PUSH1 0x40 000016c0: MSTORE 000016c1: POP 000016c2: DUP2 000016c3: ADD 000016c4: SWAP1 000016c5: PUSH2 0x16ce 000016c8: SWAP2 000016c9: SWAP1 000016ca: PUSH2 0x503a 000016cd: JUMP 000016ce: JUMPDEST 000016cf: PUSH2 0xffff 000016d2: DUP9 000016d3: AND 000016d4: PUSH1 0x00 000016d6: SWAP1 000016d7: DUP2 000016d8: MSTORE 000016d9: PUSH1 0x06 000016db: PUSH1 0x20 000016dd: SWAP1 000016de: DUP2 000016df: MSTORE 000016e0: PUSH1 0x40 000016e2: DUP1 000016e3: DUP4 000016e4: KECCAK256 000016e5: PUSH1 0x01 000016e7: PUSH1 0x01 000016e9: PUSH1 0xa0 000016eb: SHL 000016ec: SUB 000016ed: DUP14 000016ee: AND 000016ef: DUP5 000016f0: MSTORE 000016f1: SWAP1 000016f2: SWAP2 000016f3: MSTORE 000016f4: SWAP1 000016f5: KECCAK256 000016f6: SLOAD 000016f7: SWAP2 000016f8: SWAP4 000016f9: POP 000016fa: SWAP2 000016fb: POP 000016fc: PUSH2 0x1714 000016ff: DUP2 00001700: PUSH1 0x01 00001702: PUSH1 0x01 00001704: PUSH1 0x80 00001706: SHL 00001707: SUB 00001708: DUP5 00001709: AND 0000170a: PUSH4 0xffffffff 0000170f: PUSH2 0x2aad 00001712: AND 00001713: JUMP 00001714: JUMPDEST 00001715: PUSH2 0xffff 00001718: DUP9 00001719: AND 0000171a: PUSH1 0x00 0000171c: SWAP1 0000171d: DUP2 0000171e: MSTORE 0000171f: PUSH1 0x06 00001721: PUSH1 0x20 00001723: SWAP1 00001724: DUP2 00001725: MSTORE 00001726: PUSH1 0x40 00001728: DUP1 00001729: DUP4 0000172a: KECCAK256 0000172b: PUSH1 0x01 0000172d: PUSH1 0x01 0000172f: PUSH1 0xa0 00001731: SHL 00001732: SUB 00001733: DUP14 00001734: AND 00001735: DUP5 00001736: MSTORE 00001737: SWAP1 00001738: SWAP2 00001739: MSTORE 0000173a: SWAP1 0000173b: KECCAK256 0000173c: SSTORE 0000173d: PUSH2 0x174f 00001740: DUP8 00001741: PUSH1 0x01 00001743: PUSH1 0x01 00001745: PUSH1 0x80 00001747: SHL 00001748: SUB 00001749: DUP5 0000174a: AND 0000174b: PUSH2 0x34fc 0000174e: JUMP 0000174f: JUMPDEST 00001750: PUSH2 0x1759 00001753: DUP7 00001754: DUP5 00001755: PUSH2 0x34fc 00001758: JUMP 00001759: JUMPDEST 0000175a: DUP7 0000175b: PUSH2 0xffff 0000175e: AND 0000175f: PUSH32 0xc12b12caff7d3a4e7e96205e010dce0f62a6e94ad6c798378a375566da377f0b 00001780: DUP8 00001781: DUP11 00001782: DUP6 00001783: PUSH1 0x40 00001785: MLOAD 00001786: PUSH2 0x1437 00001789: SWAP4 0000178a: SWAP3 0000178b: SWAP2 0000178c: SWAP1 0000178d: PUSH2 0x5d91 00001790: JUMP 00001791: JUMPDEST 00001792: PUSH2 0x1799 00001795: PUSH2 0x3a54 00001798: JUMP 00001799: JUMPDEST 0000179a: PUSH2 0x17b5 0000179d: JUMPI 0000179e: PUSH1 0x40 000017a0: MLOAD 000017a1: PUSH3 0x461bcd 000017a5: PUSH1 0xe5 000017a7: SHL 000017a8: DUP2 000017a9: MSTORE 000017aa: PUSH1 0x04 000017ac: ADD 000017ad: PUSH2 0x08ca 000017b0: SWAP1 000017b1: PUSH2 0x5a3a 000017b4: JUMP 000017b5: JUMPDEST 000017b6: PUSH1 0x00 000017b8: SLOAD 000017b9: PUSH1 0x01 000017bb: PUSH2 0xffff 000017be: PUSH1 0x01 000017c0: PUSH1 0xa0 000017c2: SHL 000017c3: SWAP1 000017c4: SWAP3 000017c5: DIV 000017c6: DUP3 000017c7: AND 000017c8: ADD 000017c9: AND 000017ca: DUP2 000017cb: EQ 000017cc: PUSH2 0x17e7 000017cf: JUMPI 000017d0: PUSH1 0x40 000017d2: MLOAD 000017d3: PUSH3 0x461bcd 000017d7: PUSH1 0xe5 000017d9: SHL 000017da: DUP2 000017db: MSTORE 000017dc: PUSH1 0x04 000017de: ADD 000017df: PUSH2 0x08ca 000017e2: SWAP1 000017e3: PUSH2 0x5aec 000017e6: JUMP 000017e7: JUMPDEST 000017e8: PUSH1 0x00 000017ea: JUMPDEST 000017eb: DUP2 000017ec: DUP2 000017ed: LT 000017ee: ISZERO 000017ef: PUSH2 0x1886 000017f2: JUMPI 000017f3: DUP3 000017f4: DUP3 000017f5: DUP3 000017f6: DUP2 000017f7: DUP2 000017f8: LT 000017f9: PUSH2 0x17fe 000017fc: JUMPI 000017fd: INVALID 000017fe: JUMPDEST 000017ff: SWAP1 00001800: POP 00001801: PUSH1 0x20 00001803: MUL 00001804: ADD 00001805: CALLDATALOAD 00001806: PUSH1 0x00 00001808: EQ 00001809: PUSH2 0x187e 0000180c: JUMPI 0000180d: PUSH2 0x1855 00001810: DUP4 00001811: DUP4 00001812: DUP4 00001813: DUP2 00001814: DUP2 00001815: LT 00001816: PUSH2 0x181b 00001819: JUMPI 0000181a: INVALID 0000181b: JUMPDEST 0000181c: PUSH2 0xffff 0000181f: DUP6 00001820: AND 00001821: PUSH1 0x00 00001823: SWAP1 00001824: DUP2 00001825: MSTORE 00001826: PUSH1 0x06 00001828: PUSH1 0x20 0000182a: SWAP1 0000182b: DUP2 0000182c: MSTORE 0000182d: PUSH1 0x40 0000182f: DUP1 00001830: DUP4 00001831: KECCAK256 00001832: PUSH1 0x01 00001834: PUSH1 0x01 00001836: PUSH1 0xa0 00001838: SHL 00001839: SUB 0000183a: DUP13 0000183b: AND 0000183c: DUP5 0000183d: MSTORE 0000183e: DUP3 0000183f: MSTORE 00001840: SWAP1 00001841: SWAP2 00001842: KECCAK256 00001843: SLOAD 00001844: SWAP4 00001845: SWAP2 00001846: MUL 00001847: ADD 00001848: CALLDATALOAD 00001849: SWAP1 0000184a: POP 0000184b: PUSH4 0xffffffff 00001850: PUSH2 0x2aad 00001853: AND 00001854: JUMP 00001855: JUMPDEST 00001856: PUSH2 0xffff 00001859: DUP3 0000185a: AND 0000185b: PUSH1 0x00 0000185d: SWAP1 0000185e: DUP2 0000185f: MSTORE 00001860: PUSH1 0x06 00001862: PUSH1 0x20 00001864: SWAP1 00001865: DUP2 00001866: MSTORE 00001867: PUSH1 0x40 00001869: DUP1 0000186a: DUP4 0000186b: KECCAK256 0000186c: PUSH1 0x01 0000186e: PUSH1 0x01 00001870: PUSH1 0xa0 00001872: SHL 00001873: SUB 00001874: DUP10 00001875: AND 00001876: DUP5 00001877: MSTORE 00001878: SWAP1 00001879: SWAP2 0000187a: MSTORE 0000187b: SWAP1 0000187c: KECCAK256 0000187d: SSTORE 0000187e: JUMPDEST 0000187f: PUSH1 0x01 00001881: ADD 00001882: PUSH2 0x17ea 00001885: JUMP 00001886: JUMPDEST 00001887: POP 00001888: POP 00001889: POP 0000188a: POP 0000188b: JUMP 0000188c: JUMPDEST 0000188d: PUSH2 0x1894 00001890: PUSH2 0x304a 00001893: JUMP 00001894: JUMPDEST 00001895: PUSH1 0x01 00001897: PUSH1 0x01 00001899: PUSH1 0xa0 0000189b: SHL 0000189c: SUB 0000189d: AND 0000189e: PUSH4 0x265bf4cf 000018a3: DUP4 000018a4: PUSH1 0x40 000018a6: MLOAD 000018a7: DUP3 000018a8: PUSH4 0xffffffff 000018ad: AND 000018ae: PUSH1 0xe0 000018b0: SHL 000018b1: DUP2 000018b2: MSTORE 000018b3: PUSH1 0x04 000018b5: ADD 000018b6: PUSH2 0x18bf 000018b9: SWAP2 000018ba: SWAP1 000018bb: PUSH2 0x5575 000018be: JUMP 000018bf: JUMPDEST 000018c0: PUSH1 0x00 000018c2: PUSH1 0x40 000018c4: MLOAD 000018c5: DUP1 000018c6: DUP4 000018c7: SUB 000018c8: DUP2 000018c9: PUSH1 0x00 000018cb: DUP8 000018cc: DUP1 000018cd: EXTCODESIZE 000018ce: ISZERO 000018cf: DUP1 000018d0: ISZERO 000018d1: PUSH2 0x18d9 000018d4: JUMPI 000018d5: PUSH1 0x00 000018d7: DUP1 000018d8: REVERT 000018d9: JUMPDEST 000018da: POP 000018db: GAS 000018dc: CALL 000018dd: ISZERO 000018de: DUP1 000018df: ISZERO 000018e0: PUSH2 0x18ed 000018e3: JUMPI 000018e4: RETURNDATASIZE 000018e5: PUSH1 0x00 000018e7: DUP1 000018e8: RETURNDATACOPY 000018e9: RETURNDATASIZE 000018ea: PUSH1 0x00 000018ec: REVERT 000018ed: JUMPDEST 000018ee: POP 000018ef: POP 000018f0: POP 000018f1: POP 000018f2: PUSH2 0x18fa 000018f5: DUP3 000018f6: PUSH2 0x3af1 000018f9: JUMP 000018fa: JUMPDEST 000018fb: ISZERO 000018fc: PUSH2 0x1917 000018ff: JUMPI 00001900: PUSH1 0x40 00001902: MLOAD 00001903: PUSH3 0x461bcd 00001907: PUSH1 0xe5 00001909: SHL 0000190a: DUP2 0000190b: MSTORE 0000190c: PUSH1 0x04 0000190e: ADD 0000190f: PUSH2 0x08ca 00001912: SWAP1 00001913: PUSH2 0x5a1e 00001916: JUMP 00001917: JUMPDEST 00001918: PUSH2 0x1920 0000191b: DUP3 0000191c: PUSH2 0x3b52 0000191f: JUMP 00001920: JUMPDEST 00001921: PUSH2 0x193c 00001924: JUMPI 00001925: PUSH1 0x40 00001927: MLOAD 00001928: PUSH3 0x461bcd 0000192c: PUSH1 0xe5 0000192e: SHL 0000192f: DUP2 00001930: MSTORE 00001931: PUSH1 0x04 00001933: ADD 00001934: PUSH2 0x08ca 00001937: SWAP1 00001938: PUSH2 0x5a1e 0000193b: JUMP 0000193c: JUMPDEST 0000193d: PUSH2 0xffff 00001940: DUP2 00001941: AND 00001942: PUSH1 0x00 00001944: SWAP1 00001945: DUP2 00001946: MSTORE 00001947: PUSH1 0x06 00001949: PUSH1 0x20 0000194b: SWAP1 0000194c: DUP2 0000194d: MSTORE 0000194e: PUSH1 0x40 00001950: DUP1 00001951: DUP4 00001952: KECCAK256 00001953: PUSH1 0x01 00001955: PUSH1 0x01 00001957: PUSH1 0xa0 00001959: SHL 0000195a: SUB 0000195b: DUP7 0000195c: DUP2 0000195d: AND 0000195e: DUP6 0000195f: MSTORE 00001960: SWAP3 00001961: MSTORE 00001962: DUP1 00001963: DUP4 00001964: KECCAK256 00001965: SLOAD 00001966: PUSH1 0x07 00001968: SLOAD 00001969: SWAP1 0000196a: SWAP3 0000196b: AND 0000196c: DUP4 0000196d: MSTORE 0000196e: DUP3 0000196f: KECCAK256 00001970: SLOAD 00001971: SWAP1 00001972: SWAP2 00001973: DUP3 00001974: SLT 00001975: PUSH2 0x1990 00001978: JUMPI 00001979: PUSH1 0x40 0000197b: MLOAD 0000197c: PUSH3 0x461bcd 00001980: PUSH1 0xe5 00001982: SHL 00001983: DUP2 00001984: MSTORE 00001985: PUSH1 0x04 00001987: ADD 00001988: PUSH2 0x08ca 0000198b: SWAP1 0000198c: PUSH2 0x5d21 0000198f: JUMP 00001990: JUMPDEST 00001991: DUP1 00001992: PUSH2 0x199a 00001995: DUP4 00001996: PUSH2 0x361b 00001999: JUMP 0000199a: JUMPDEST 0000199b: SLT 0000199c: ISZERO 0000199d: PUSH2 0x1a10 000019a0: JUMPI 000019a1: PUSH2 0xffff 000019a4: DUP4 000019a5: AND 000019a6: PUSH1 0x00 000019a8: SWAP1 000019a9: DUP2 000019aa: MSTORE 000019ab: PUSH1 0x06 000019ad: PUSH1 0x20 000019af: SWAP1 000019b0: DUP2 000019b1: MSTORE 000019b2: PUSH1 0x40 000019b4: DUP1 000019b5: DUP4 000019b6: KECCAK256 000019b7: PUSH1 0x01 000019b9: PUSH1 0x01 000019bb: PUSH1 0xa0 000019bd: SHL 000019be: SUB 000019bf: DUP9 000019c0: AND 000019c1: DUP5 000019c2: MSTORE 000019c3: SWAP1 000019c4: SWAP2 000019c5: MSTORE 000019c6: DUP2 000019c7: KECCAK256 000019c8: SSTORE 000019c9: PUSH2 0x19e1 000019cc: PUSH2 0x19d4 000019cf: DUP4 000019d0: PUSH2 0x361b 000019d3: JUMP 000019d4: JUMPDEST 000019d5: DUP3 000019d6: SWAP1 000019d7: PUSH4 0xffffffff 000019dc: PUSH2 0x30b3 000019df: AND 000019e0: JUMP 000019e1: JUMPDEST 000019e2: PUSH2 0xffff 000019e5: DUP5 000019e6: AND 000019e7: PUSH1 0x00 000019e9: SWAP1 000019ea: DUP2 000019eb: MSTORE 000019ec: PUSH1 0x06 000019ee: PUSH1 0x20 000019f0: SWAP1 000019f1: DUP2 000019f2: MSTORE 000019f3: PUSH1 0x40 000019f5: DUP1 000019f6: DUP4 000019f7: KECCAK256 000019f8: PUSH1 0x07 000019fa: SLOAD 000019fb: PUSH1 0x01 000019fd: PUSH1 0x01 000019ff: PUSH1 0xa0 00001a01: SHL 00001a02: SUB 00001a03: AND 00001a04: DUP5 00001a05: MSTORE 00001a06: SWAP1 00001a07: SWAP2 00001a08: MSTORE 00001a09: SWAP1 00001a0a: KECCAK256 00001a0b: SSTORE 00001a0c: PUSH2 0x1886 00001a0f: JUMP 00001a10: JUMPDEST 00001a11: PUSH2 0x1a20 00001a14: DUP3 00001a15: DUP3 00001a16: PUSH4 0xffffffff 00001a1b: PUSH2 0x2aad 00001a1e: AND 00001a1f: JUMP 00001a20: JUMPDEST 00001a21: PUSH2 0xffff 00001a24: SWAP4 00001a25: SWAP1 00001a26: SWAP4 00001a27: AND 00001a28: PUSH1 0x00 00001a2a: SWAP1 00001a2b: DUP2 00001a2c: MSTORE 00001a2d: PUSH1 0x06 00001a2f: PUSH1 0x20 00001a31: SWAP1 00001a32: DUP2 00001a33: MSTORE 00001a34: PUSH1 0x40 00001a36: DUP1 00001a37: DUP4 00001a38: KECCAK256 00001a39: PUSH1 0x01 00001a3b: PUSH1 0x01 00001a3d: PUSH1 0xa0 00001a3f: SHL 00001a40: SUB 00001a41: SWAP8 00001a42: DUP9 00001a43: AND 00001a44: DUP5 00001a45: MSTORE 00001a46: SWAP1 00001a47: SWAP2 00001a48: MSTORE 00001a49: DUP1 00001a4a: DUP3 00001a4b: KECCAK256 00001a4c: SWAP5 00001a4d: SWAP1 00001a4e: SWAP5 00001a4f: SSTORE 00001a50: PUSH1 0x07 00001a52: SLOAD 00001a53: SWAP1 00001a54: SWAP5 00001a55: AND 00001a56: DUP5 00001a57: MSTORE 00001a58: POP 00001a59: POP 00001a5a: DUP2 00001a5b: KECCAK256 00001a5c: SSTORE 00001a5d: JUMP 00001a5e: JUMPDEST 00001a5f: PUSH1 0x00 00001a61: PUSH2 0x0997 00001a64: PUSH2 0x3c2d 00001a67: JUMP 00001a68: JUMPDEST 00001a69: PUSH1 0x02 00001a6b: PUSH1 0x20 00001a6d: MSTORE 00001a6e: PUSH1 0x00 00001a70: SWAP1 00001a71: DUP2 00001a72: MSTORE 00001a73: PUSH1 0x40 00001a75: SWAP1 00001a76: KECCAK256 00001a77: SLOAD 00001a78: DUP2 00001a79: JUMP 00001a7a: JUMPDEST 00001a7b: PUSH2 0x1a82 00001a7e: PUSH2 0x14e2 00001a81: JUMP 00001a82: JUMPDEST 00001a83: PUSH2 0x1a8b 00001a86: JUMPI 00001a87: PUSH1 0x00 00001a89: DUP1 00001a8a: REVERT 00001a8b: JUMPDEST 00001a8c: PUSH1 0x01 00001a8e: PUSH1 0x01 00001a90: PUSH1 0xa0 00001a92: SHL 00001a93: SUB 00001a94: DUP3 00001a95: AND 00001a96: PUSH1 0x00 00001a98: SWAP1 00001a99: DUP2 00001a9a: MSTORE 00001a9b: PUSH1 0x03 00001a9d: PUSH1 0x20 00001a9f: MSTORE 00001aa0: PUSH1 0x40 00001aa2: SWAP1 00001aa3: KECCAK256 00001aa4: SLOAD 00001aa5: PUSH2 0xffff 00001aa8: AND 00001aa9: ISZERO 00001aaa: DUP1 00001aab: ISZERO 00001aac: PUSH2 0x1ac3 00001aaf: JUMPI 00001ab0: POP 00001ab1: PUSH1 0x00 00001ab3: SLOAD 00001ab4: PUSH1 0x01 00001ab6: PUSH1 0x01 00001ab8: PUSH1 0xa0 00001aba: SHL 00001abb: SUB 00001abc: DUP4 00001abd: DUP2 00001abe: AND 00001abf: SWAP2 00001ac0: AND 00001ac1: EQ 00001ac2: ISZERO 00001ac3: JUMPDEST 00001ac4: PUSH2 0x1adf 00001ac7: JUMPI 00001ac8: PUSH1 0x40 00001aca: MLOAD 00001acb: PUSH3 0x461bcd 00001acf: PUSH1 0xe5 00001ad1: SHL 00001ad2: DUP2 00001ad3: MSTORE 00001ad4: PUSH1 0x04 00001ad6: ADD 00001ad7: PUSH2 0x08ca 00001ada: SWAP1 00001adb: PUSH2 0x5aec 00001ade: JUMP 00001adf: JUMPDEST 00001ae0: PUSH1 0x00 00001ae2: DUP1 00001ae3: SLOAD 00001ae4: PUSH1 0x01 00001ae6: PUSH2 0xffff 00001ae9: PUSH1 0x01 00001aeb: PUSH1 0xa0 00001aed: SHL 00001aee: DUP1 00001aef: DUP5 00001af0: DIV 00001af1: DUP3 00001af2: AND 00001af3: DUP4 00001af4: ADD 00001af5: DUP3 00001af6: AND 00001af7: DUP2 00001af8: MUL 00001af9: PUSH2 0xffff 00001afc: PUSH1 0xa0 00001afe: SHL 00001aff: NOT 00001b00: SWAP1 00001b01: SWAP5 00001b02: AND 00001b03: SWAP4 00001b04: SWAP1 00001b05: SWAP4 00001b06: OR 00001b07: DUP1 00001b08: DUP6 00001b09: SSTORE 00001b0a: DUP4 00001b0b: SWAP1 00001b0c: DIV 00001b0d: DUP2 00001b0e: AND 00001b0f: DUP5 00001b10: MSTORE 00001b11: PUSH1 0x20 00001b13: SWAP2 00001b14: DUP3 00001b15: MSTORE 00001b16: PUSH1 0x40 00001b18: DUP1 00001b19: DUP6 00001b1a: KECCAK256 00001b1b: DUP1 00001b1c: SLOAD 00001b1d: PUSH1 0x01 00001b1f: PUSH1 0x01 00001b21: PUSH1 0xa0 00001b23: SHL 00001b24: SUB 00001b25: DUP10 00001b26: AND 00001b27: PUSH1 0x01 00001b29: PUSH1 0x01 00001b2b: PUSH1 0xa0 00001b2d: SHL 00001b2e: SUB 00001b2f: NOT 00001b30: SWAP1 00001b31: SWAP2 00001b32: AND 00001b33: DUP2 00001b34: OR 00001b35: SWAP1 00001b36: SWAP2 00001b37: SSTORE 00001b38: DUP6 00001b39: SLOAD 00001b3a: DUP2 00001b3b: DUP8 00001b3c: MSTORE 00001b3d: PUSH1 0x03 00001b3f: DUP6 00001b40: MSTORE 00001b41: DUP3 00001b42: DUP8 00001b43: KECCAK256 00001b44: DUP1 00001b45: SLOAD 00001b46: PUSH2 0xffff 00001b49: NOT 00001b4a: AND 00001b4b: SWAP7 00001b4c: SWAP1 00001b4d: SWAP2 00001b4e: DIV 00001b4f: SWAP1 00001b50: SWAP4 00001b51: AND 00001b52: SWAP5 00001b53: SWAP1 00001b54: SWAP5 00001b55: OR 00001b56: SWAP1 00001b57: SWAP2 00001b58: SSTORE 00001b59: PUSH1 0x04 00001b5b: DUP1 00001b5c: DUP4 00001b5d: MSTORE 00001b5e: DUP2 00001b5f: DUP6 00001b60: KECCAK256 00001b61: DUP7 00001b62: MLOAD 00001b63: DUP2 00001b64: SLOAD 00001b65: DUP9 00001b66: DUP7 00001b67: ADD 00001b68: MLOAD 00001b69: ISZERO 00001b6a: ISZERO 00001b6b: PUSH2 0x0100 00001b6e: MUL 00001b6f: PUSH2 0xff00 00001b72: NOT 00001b73: SWAP3 00001b74: ISZERO 00001b75: ISZERO 00001b76: PUSH1 0xff 00001b78: NOT 00001b79: SWAP1 00001b7a: SWAP3 00001b7b: AND 00001b7c: SWAP2 00001b7d: SWAP1 00001b7e: SWAP2 00001b7f: OR 00001b80: SWAP2 00001b81: SWAP1 00001b82: SWAP2 00001b83: AND 00001b84: OR 00001b85: SWAP1 00001b86: SSTORE 00001b87: DUP2 00001b88: MLOAD 00001b89: PUSH4 0x313ce567 00001b8e: PUSH1 0xe0 00001b90: SHL 00001b91: DUP2 00001b92: MSTORE 00001b93: SWAP2 00001b94: MLOAD 00001b95: PUSH4 0x313ce567 00001b9a: SWAP4 00001b9b: DUP4 00001b9c: DUP4 00001b9d: ADD 00001b9e: SWAP4 00001b9f: SWAP1 00001ba0: SWAP3 00001ba1: SWAP1 00001ba2: DUP3 00001ba3: SWAP1 00001ba4: SUB 00001ba5: ADD 00001ba6: DUP2 00001ba7: DUP7 00001ba8: DUP1 00001ba9: EXTCODESIZE 00001baa: ISZERO 00001bab: DUP1 00001bac: ISZERO 00001bad: PUSH2 0x1bb5 00001bb0: JUMPI 00001bb1: PUSH1 0x00 00001bb3: DUP1 00001bb4: REVERT 00001bb5: JUMPDEST 00001bb6: POP 00001bb7: GAS 00001bb8: STATICCALL 00001bb9: ISZERO 00001bba: DUP1 00001bbb: ISZERO 00001bbc: PUSH2 0x1bc9 00001bbf: JUMPI 00001bc0: RETURNDATASIZE 00001bc1: PUSH1 0x00 00001bc3: DUP1 00001bc4: RETURNDATACOPY 00001bc5: RETURNDATASIZE 00001bc6: PUSH1 0x00 00001bc8: REVERT 00001bc9: JUMPDEST 00001bca: POP 00001bcb: POP 00001bcc: POP 00001bcd: POP 00001bce: PUSH1 0x40 00001bd0: MLOAD 00001bd1: RETURNDATASIZE 00001bd2: PUSH1 0x1f 00001bd4: NOT 00001bd5: PUSH1 0x1f 00001bd7: DUP3 00001bd8: ADD 00001bd9: AND 00001bda: DUP3 00001bdb: ADD 00001bdc: DUP1 00001bdd: PUSH1 0x40 00001bdf: MSTORE 00001be0: POP 00001be1: DUP2 00001be2: ADD 00001be3: SWAP1 00001be4: PUSH2 0x1bed 00001be7: SWAP2 00001be8: SWAP1 00001be9: PUSH2 0x53f4 00001bec: JUMP 00001bed: JUMPDEST 00001bee: PUSH1 0x00 00001bf0: DUP1 00001bf1: SLOAD 00001bf2: PUSH1 0x01 00001bf4: PUSH1 0xa0 00001bf6: SHL 00001bf7: SWAP1 00001bf8: DIV 00001bf9: PUSH2 0xffff 00001bfc: AND 00001bfd: DUP2 00001bfe: MSTORE 00001bff: PUSH1 0x02 00001c01: PUSH1 0x20 00001c03: MSTORE 00001c04: PUSH1 0x40 00001c06: SWAP1 00001c07: KECCAK256 00001c08: PUSH1 0xff 00001c0a: SWAP2 00001c0b: SWAP1 00001c0c: SWAP2 00001c0d: AND 00001c0e: PUSH1 0x0a 00001c10: DUP2 00001c11: SWAP1 00001c12: EXP 00001c13: SWAP1 00001c14: SWAP2 00001c15: SSTORE 00001c16: SWAP1 00001c17: POP 00001c18: PUSH2 0x1c1f 00001c1b: PUSH2 0x304a 00001c1e: JUMP 00001c1f: JUMPDEST 00001c20: PUSH1 0x01 00001c22: PUSH1 0x01 00001c24: PUSH1 0xa0 00001c26: SHL 00001c27: SUB 00001c28: AND 00001c29: PUSH4 0x1c450179 00001c2e: PUSH1 0x00 00001c30: PUSH1 0x14 00001c32: SWAP1 00001c33: SLOAD 00001c34: SWAP1 00001c35: PUSH2 0x0100 00001c38: EXP 00001c39: SWAP1 00001c3a: DIV 00001c3b: PUSH2 0xffff 00001c3e: AND 00001c3f: PUSH1 0x40 00001c41: MLOAD 00001c42: DUP3 00001c43: PUSH4 0xffffffff 00001c48: AND 00001c49: PUSH1 0xe0 00001c4b: SHL 00001c4c: DUP2 00001c4d: MSTORE 00001c4e: PUSH1 0x04 00001c50: ADD 00001c51: PUSH2 0x1c5a 00001c54: SWAP2 00001c55: SWAP1 00001c56: PUSH2 0x5d82 00001c59: JUMP 00001c5a: JUMPDEST 00001c5b: PUSH1 0x00 00001c5d: PUSH1 0x40 00001c5f: MLOAD 00001c60: DUP1 00001c61: DUP4 00001c62: SUB 00001c63: DUP2 00001c64: PUSH1 0x00 00001c66: DUP8 00001c67: DUP1 00001c68: EXTCODESIZE 00001c69: ISZERO 00001c6a: DUP1 00001c6b: ISZERO 00001c6c: PUSH2 0x1c74 00001c6f: JUMPI 00001c70: PUSH1 0x00 00001c72: DUP1 00001c73: REVERT 00001c74: JUMPDEST 00001c75: POP 00001c76: GAS 00001c77: CALL 00001c78: ISZERO 00001c79: DUP1 00001c7a: ISZERO 00001c7b: PUSH2 0x1c88 00001c7e: JUMPI 00001c7f: RETURNDATASIZE 00001c80: PUSH1 0x00 00001c82: DUP1 00001c83: RETURNDATACOPY 00001c84: RETURNDATASIZE 00001c85: PUSH1 0x00 00001c87: REVERT 00001c88: JUMPDEST 00001c89: POP 00001c8a: POP 00001c8b: PUSH1 0x40 00001c8d: MLOAD 00001c8e: PUSH1 0x01 00001c90: PUSH1 0x01 00001c92: PUSH1 0xa0 00001c94: SHL 00001c95: SUB 00001c96: DUP7 00001c97: AND 00001c98: SWAP3 00001c99: POP 00001c9a: PUSH32 0x1defcb31bdf18413d52d3220d6f23d92a6635d53c8dbb16c738b0706fe9d07b9 00001cbb: SWAP2 00001cbc: POP 00001cbd: PUSH1 0x00 00001cbf: SWAP1 00001cc0: LOG2 00001cc1: POP 00001cc2: POP 00001cc3: POP 00001cc4: JUMP 00001cc5: JUMPDEST 00001cc6: PUSH1 0x00 00001cc8: SLOAD 00001cc9: PUSH1 0x01 00001ccb: PUSH1 0x01 00001ccd: PUSH1 0xa0 00001ccf: SHL 00001cd0: SUB 00001cd1: AND 00001cd2: DUP2 00001cd3: JUMP 00001cd4: JUMPDEST 00001cd5: PUSH2 0x1cdc 00001cd8: PUSH2 0x46dd 00001cdb: JUMP 00001cdc: JUMPDEST 00001cdd: PUSH2 0x1ce6 00001ce0: DUP4 00001ce1: DUP4 00001ce2: PUSH2 0x30e9 00001ce5: JUMP 00001ce6: JUMPDEST 00001ce7: SWAP1 00001ce8: POP 00001ce9: PUSH1 0x00 00001ceb: DUP1 00001cec: PUSH1 0x00 00001cee: PUSH2 0x1cf8 00001cf1: DUP9 00001cf2: DUP6 00001cf3: DUP10 00001cf4: PUSH2 0x3629 00001cf7: JUMP 00001cf8: JUMPDEST 00001cf9: SWAP3 00001cfa: POP 00001cfb: SWAP3 00001cfc: POP 00001cfd: SWAP3 00001cfe: POP 00001cff: PUSH2 0x1d08 00001d02: DUP7 00001d03: DUP4 00001d04: PUSH2 0x34fc 00001d07: JUMP 00001d08: JUMPDEST 00001d09: PUSH2 0x1d1e 00001d0c: DUP6 00001d0d: PUSH2 0x1231 00001d10: DUP4 00001d11: PUSH1 0x01 00001d13: PUSH1 0x01 00001d15: PUSH1 0x80 00001d17: SHL 00001d18: SUB 00001d19: AND 00001d1a: PUSH2 0x361b 00001d1d: JUMP 00001d1e: JUMPDEST 00001d1f: DUP6 00001d20: PUSH2 0xffff 00001d23: AND 00001d24: PUSH32 0xc12b12caff7d3a4e7e96205e010dce0f62a6e94ad6c798378a375566da377f0b 00001d45: DUP7 00001d46: DUP11 00001d47: DUP7 00001d48: PUSH1 0x40 00001d4a: MLOAD 00001d4b: PUSH2 0x1437 00001d4e: SWAP4 00001d4f: SWAP3 00001d50: SWAP2 00001d51: SWAP1 00001d52: PUSH2 0x5d91 00001d55: JUMP 00001d56: JUMPDEST 00001d57: PUSH2 0x1d61 00001d5a: CALLER 00001d5b: DUP4 00001d5c: DUP4 00001d5d: PUSH2 0x3c58 00001d60: JUMP 00001d61: JUMPDEST 00001d62: POP 00001d63: POP 00001d64: JUMP 00001d65: JUMPDEST 00001d66: PUSH1 0x07 00001d68: SLOAD 00001d69: PUSH1 0x01 00001d6b: PUSH1 0x01 00001d6d: PUSH1 0xa0 00001d6f: SHL 00001d70: SUB 00001d71: AND 00001d72: DUP2 00001d73: JUMP 00001d74: JUMPDEST 00001d75: PUSH2 0x1d7c 00001d78: PUSH2 0x4720 00001d7b: JUMP 00001d7c: JUMPDEST 00001d7d: PUSH2 0x1d87 00001d80: DUP6 00001d81: DUP6 00001d82: DUP6 00001d83: PUSH2 0x3a60 00001d86: JUMP 00001d87: JUMPDEST 00001d88: SWAP1 00001d89: POP 00001d8a: PUSH1 0x00 00001d8c: DUP2 00001d8d: PUSH1 0x00 00001d8f: ADD 00001d90: MLOAD 00001d91: SLT 00001d92: ISZERO 00001d93: PUSH2 0x1dae 00001d96: JUMPI 00001d97: PUSH1 0x40 00001d99: MLOAD 00001d9a: PUSH3 0x461bcd 00001d9e: PUSH1 0xe5 00001da0: SHL 00001da1: DUP2 00001da2: MSTORE 00001da3: PUSH1 0x04 00001da5: ADD 00001da6: PUSH2 0x08ca 00001da9: SWAP1 00001daa: PUSH2 0x5bf0 00001dad: JUMP 00001dae: JUMPDEST 00001daf: PUSH1 0x01 00001db1: PUSH1 0x01 00001db3: PUSH1 0x80 00001db5: SHL 00001db6: SUB 00001db7: DUP3 00001db8: AND 00001db9: PUSH2 0x1dc2 00001dbc: JUMPI 00001dbd: POP 00001dbe: PUSH2 0x1886 00001dc1: JUMP 00001dc2: JUMPDEST 00001dc3: PUSH2 0xffff 00001dc6: DUP5 00001dc7: AND 00001dc8: PUSH1 0x00 00001dca: SWAP1 00001dcb: DUP2 00001dcc: MSTORE 00001dcd: PUSH1 0x06 00001dcf: PUSH1 0x20 00001dd1: SWAP1 00001dd2: DUP2 00001dd3: MSTORE 00001dd4: PUSH1 0x40 00001dd6: DUP1 00001dd7: DUP4 00001dd8: KECCAK256 00001dd9: PUSH1 0x01 00001ddb: PUSH1 0x01 00001ddd: PUSH1 0xa0 00001ddf: SHL 00001de0: SUB 00001de1: DUP10 00001de2: AND 00001de3: DUP5 00001de4: MSTORE 00001de5: SWAP1 00001de6: SWAP2 00001de7: MSTORE 00001de8: SWAP1 00001de9: KECCAK256 00001dea: SLOAD 00001deb: PUSH2 0x1dfc 00001dee: PUSH1 0x01 00001df0: PUSH1 0x01 00001df2: PUSH1 0x80 00001df4: SHL 00001df5: SUB 00001df6: DUP5 00001df7: AND 00001df8: PUSH2 0x361b 00001dfb: JUMP 00001dfc: JUMPDEST 00001dfd: DUP2 00001dfe: SGT 00001dff: ISZERO 00001e00: PUSH2 0x1e1b 00001e03: JUMPI 00001e04: PUSH1 0x40 00001e06: MLOAD 00001e07: PUSH3 0x461bcd 00001e0b: PUSH1 0xe5 00001e0d: SHL 00001e0e: DUP2 00001e0f: MSTORE 00001e10: PUSH1 0x04 00001e12: ADD 00001e13: PUSH2 0x08ca 00001e16: SWAP1 00001e17: PUSH2 0x5d21 00001e1a: JUMP 00001e1b: JUMPDEST 00001e1c: PUSH2 0x1e24 00001e1f: DUP7 00001e20: PUSH2 0x3af1 00001e23: JUMP 00001e24: JUMPDEST 00001e25: ISZERO 00001e26: PUSH2 0x1e41 00001e29: JUMPI 00001e2a: PUSH1 0x40 00001e2c: MLOAD 00001e2d: PUSH3 0x461bcd 00001e31: PUSH1 0xe5 00001e33: SHL 00001e34: DUP2 00001e35: MSTORE 00001e36: PUSH1 0x04 00001e38: ADD 00001e39: PUSH2 0x08ca 00001e3c: SWAP1 00001e3d: PUSH2 0x5a1e 00001e40: JUMP 00001e41: JUMPDEST 00001e42: PUSH1 0x00 00001e44: DUP1 00001e45: DUP6 00001e46: PUSH2 0xffff 00001e49: AND 00001e4a: DUP8 00001e4b: PUSH2 0xffff 00001e4e: AND 00001e4f: EQ 00001e50: ISZERO 00001e51: PUSH2 0x1faa 00001e54: JUMPI 00001e55: PUSH2 0x1e5d 00001e58: DUP8 00001e59: PUSH2 0x24ab 00001e5c: JUMP 00001e5d: JUMPDEST 00001e5e: PUSH2 0x1e79 00001e61: JUMPI 00001e62: PUSH1 0x40 00001e64: MLOAD 00001e65: PUSH3 0x461bcd 00001e69: PUSH1 0xe5 00001e6b: SHL 00001e6c: DUP2 00001e6d: MSTORE 00001e6e: PUSH1 0x04 00001e70: ADD 00001e71: PUSH2 0x08ca 00001e74: SWAP1 00001e75: PUSH2 0x5aec 00001e78: JUMP 00001e79: JUMPDEST 00001e7a: PUSH1 0x00 00001e7c: DUP1 00001e7d: PUSH2 0x1e84 00001e80: PUSH2 0x304a 00001e83: JUMP 00001e84: JUMPDEST 00001e85: PUSH1 0x01 00001e87: PUSH1 0x01 00001e89: PUSH1 0xa0 00001e8b: SHL 00001e8c: SUB 00001e8d: AND 00001e8e: PUSH4 0x5f1bcee9 00001e93: DUP12 00001e94: CALLER 00001e95: DUP13 00001e96: DUP12 00001e97: PUSH1 0x40 00001e99: MLOAD 00001e9a: DUP6 00001e9b: PUSH4 0xffffffff 00001ea0: AND 00001ea1: PUSH1 0xe0 00001ea3: SHL 00001ea4: DUP2 00001ea5: MSTORE 00001ea6: PUSH1 0x04 00001ea8: ADD 00001ea9: PUSH2 0x1eb5 00001eac: SWAP5 00001ead: SWAP4 00001eae: SWAP3 00001eaf: SWAP2 00001eb0: SWAP1 00001eb1: PUSH2 0x569d 00001eb4: JUMP 00001eb5: JUMPDEST 00001eb6: PUSH1 0x40 00001eb8: DUP1 00001eb9: MLOAD 00001eba: DUP1 00001ebb: DUP4 00001ebc: SUB 00001ebd: DUP2 00001ebe: PUSH1 0x00 00001ec0: DUP8 00001ec1: DUP1 00001ec2: EXTCODESIZE 00001ec3: ISZERO 00001ec4: DUP1 00001ec5: ISZERO 00001ec6: PUSH2 0x1ece 00001ec9: JUMPI 00001eca: PUSH1 0x00 00001ecc: DUP1 00001ecd: REVERT 00001ece: JUMPDEST 00001ecf: POP 00001ed0: GAS 00001ed1: CALL 00001ed2: ISZERO 00001ed3: DUP1 00001ed4: ISZERO 00001ed5: PUSH2 0x1ee2 00001ed8: JUMPI 00001ed9: RETURNDATASIZE 00001eda: PUSH1 0x00 00001edc: DUP1 00001edd: RETURNDATACOPY 00001ede: RETURNDATASIZE 00001edf: PUSH1 0x00 00001ee1: REVERT 00001ee2: JUMPDEST 00001ee3: POP 00001ee4: POP 00001ee5: POP 00001ee6: POP 00001ee7: PUSH1 0x40 00001ee9: MLOAD 00001eea: RETURNDATASIZE 00001eeb: PUSH1 0x1f 00001eed: NOT 00001eee: PUSH1 0x1f 00001ef0: DUP3 00001ef1: ADD 00001ef2: AND 00001ef3: DUP3 00001ef4: ADD 00001ef5: DUP1 00001ef6: PUSH1 0x40 00001ef8: MSTORE 00001ef9: POP 00001efa: DUP2 00001efb: ADD 00001efc: SWAP1 00001efd: PUSH2 0x1f06 00001f00: SWAP2 00001f01: SWAP1 00001f02: PUSH2 0x519e 00001f05: JUMP 00001f06: JUMPDEST 00001f07: SWAP1 00001f08: SWAP3 00001f09: POP 00001f0a: SWAP1 00001f0b: POP 00001f0c: PUSH2 0x1f24 00001f0f: PUSH1 0x01 00001f11: PUSH1 0x01 00001f13: PUSH1 0x80 00001f15: SHL 00001f16: SUB 00001f17: DUP9 00001f18: AND 00001f19: DUP4 00001f1a: PUSH4 0xffffffff 00001f1f: PUSH2 0x3db6 00001f22: AND 00001f23: JUMP 00001f24: JUMPDEST 00001f25: PUSH2 0xffff 00001f28: DUP11 00001f29: AND 00001f2a: PUSH1 0x00 00001f2c: SWAP1 00001f2d: DUP2 00001f2e: MSTORE 00001f2f: PUSH1 0x06 00001f31: PUSH1 0x20 00001f33: SWAP1 00001f34: DUP2 00001f35: MSTORE 00001f36: PUSH1 0x40 00001f38: DUP1 00001f39: DUP4 00001f3a: KECCAK256 00001f3b: PUSH1 0x01 00001f3d: PUSH1 0x01 00001f3f: PUSH1 0xa0 00001f41: SHL 00001f42: SUB 00001f43: DUP16 00001f44: AND 00001f45: DUP5 00001f46: MSTORE 00001f47: SWAP1 00001f48: SWAP2 00001f49: MSTORE 00001f4a: SWAP1 00001f4b: KECCAK256 00001f4c: SLOAD 00001f4d: SWAP1 00001f4e: SWAP4 00001f4f: POP 00001f50: PUSH2 0x1f68 00001f53: SWAP1 00001f54: PUSH1 0x01 00001f56: PUSH1 0x01 00001f58: PUSH1 0x80 00001f5a: SHL 00001f5b: SUB 00001f5c: DUP6 00001f5d: AND 00001f5e: PUSH4 0xffffffff 00001f63: PUSH2 0x2aad 00001f66: AND 00001f67: JUMP 00001f68: JUMPDEST 00001f69: PUSH2 0xffff 00001f6c: DUP11 00001f6d: AND 00001f6e: PUSH1 0x00 00001f70: SWAP1 00001f71: DUP2 00001f72: MSTORE 00001f73: PUSH1 0x06 00001f75: PUSH1 0x20 00001f77: SWAP1 00001f78: DUP2 00001f79: MSTORE 00001f7a: PUSH1 0x40 00001f7c: DUP1 00001f7d: DUP4 00001f7e: KECCAK256 00001f7f: PUSH1 0x01 00001f81: PUSH1 0x01 00001f83: PUSH1 0xa0 00001f85: SHL 00001f86: SUB 00001f87: DUP16 00001f88: AND 00001f89: DUP5 00001f8a: MSTORE 00001f8b: SWAP1 00001f8c: SWAP2 00001f8d: MSTORE 00001f8e: SWAP1 00001f8f: KECCAK256 00001f90: SSTORE 00001f91: PUSH2 0x1fa3 00001f94: DUP10 00001f95: PUSH1 0x01 00001f97: PUSH1 0x01 00001f99: PUSH1 0x80 00001f9b: SHL 00001f9c: SUB 00001f9d: DUP4 00001f9e: AND 00001f9f: PUSH2 0x34fc 00001fa2: JUMP 00001fa3: JUMPDEST 00001fa4: POP 00001fa5: POP 00001fa6: PUSH2 0x20e6 00001fa9: JUMP 00001faa: JUMPDEST 00001fab: PUSH2 0x1fb2 00001fae: PUSH2 0x46dd 00001fb1: JUMP 00001fb2: JUMPDEST 00001fb3: PUSH2 0x1fbc 00001fb6: DUP9 00001fb7: DUP9 00001fb8: PUSH2 0x30e9 00001fbb: JUMP 00001fbc: JUMPDEST 00001fbd: SWAP1 00001fbe: POP 00001fbf: PUSH20 0xb0ec9ba4ce826d925acf5474d365a80a9fba078e 00001fd4: PUSH4 0x5578d0cb 00001fd9: DUP11 00001fda: CALLER 00001fdb: DUP10 00001fdc: DUP10 00001fdd: PUSH1 0x40 00001fdf: ADD 00001fe0: MLOAD 00001fe1: DUP7 00001fe2: PUSH2 0x1fe9 00001fe5: PUSH2 0x304a 00001fe8: JUMP 00001fe9: JUMPDEST 00001fea: PUSH1 0x40 00001fec: MLOAD 00001fed: DUP8 00001fee: PUSH4 0xffffffff 00001ff3: AND 00001ff4: PUSH1 0xe0 00001ff6: SHL 00001ff7: DUP2 00001ff8: MSTORE 00001ff9: PUSH1 0x04 00001ffb: ADD 00001ffc: PUSH2 0x200a 00001fff: SWAP7 00002000: SWAP6 00002001: SWAP5 00002002: SWAP4 00002003: SWAP3 00002004: SWAP2 00002005: SWAP1 00002006: PUSH2 0x55ff 00002009: JUMP 0000200a: JUMPDEST 0000200b: PUSH1 0x40 0000200d: DUP1 0000200e: MLOAD 0000200f: DUP1 00002010: DUP4 00002011: SUB 00002012: DUP2 00002013: DUP7 00002014: DUP1 00002015: EXTCODESIZE 00002016: ISZERO 00002017: DUP1 00002018: ISZERO 00002019: PUSH2 0x2021 0000201c: JUMPI 0000201d: PUSH1 0x00 0000201f: DUP1 00002020: REVERT 00002021: JUMPDEST 00002022: POP 00002023: GAS 00002024: DELEGATECALL 00002025: ISZERO 00002026: DUP1 00002027: ISZERO 00002028: PUSH2 0x2035 0000202b: JUMPI 0000202c: RETURNDATASIZE 0000202d: PUSH1 0x00 0000202f: DUP1 00002030: RETURNDATACOPY 00002031: RETURNDATASIZE 00002032: PUSH1 0x00 00002034: REVERT 00002035: JUMPDEST 00002036: POP 00002037: POP 00002038: POP 00002039: POP 0000203a: PUSH1 0x40 0000203c: MLOAD 0000203d: RETURNDATASIZE 0000203e: PUSH1 0x1f 00002040: NOT 00002041: PUSH1 0x1f 00002043: DUP3 00002044: ADD 00002045: AND 00002046: DUP3 00002047: ADD 00002048: DUP1 00002049: PUSH1 0x40 0000204b: MSTORE 0000204c: POP 0000204d: DUP2 0000204e: ADD 0000204f: SWAP1 00002050: PUSH2 0x2059 00002053: SWAP2 00002054: SWAP1 00002055: PUSH2 0x503a 00002058: JUMP 00002059: JUMPDEST 0000205a: PUSH2 0xffff 0000205d: DUP11 0000205e: AND 0000205f: PUSH1 0x00 00002061: SWAP1 00002062: DUP2 00002063: MSTORE 00002064: PUSH1 0x06 00002066: PUSH1 0x20 00002068: SWAP1 00002069: DUP2 0000206a: MSTORE 0000206b: PUSH1 0x40 0000206d: DUP1 0000206e: DUP4 0000206f: KECCAK256 00002070: PUSH1 0x01 00002072: PUSH1 0x01 00002074: PUSH1 0xa0 00002076: SHL 00002077: SUB 00002078: DUP16 00002079: AND 0000207a: DUP5 0000207b: MSTORE 0000207c: SWAP1 0000207d: SWAP2 0000207e: MSTORE 0000207f: SWAP1 00002080: KECCAK256 00002081: SLOAD 00002082: SWAP2 00002083: SWAP5 00002084: POP 00002085: SWAP3 00002086: POP 00002087: PUSH2 0x209f 0000208a: SWAP1 0000208b: PUSH1 0x01 0000208d: PUSH1 0x01 0000208f: PUSH1 0x80 00002091: SHL 00002092: SUB 00002093: DUP5 00002094: AND 00002095: PUSH4 0xffffffff 0000209a: PUSH2 0x2aad 0000209d: AND 0000209e: JUMP 0000209f: JUMPDEST 000020a0: PUSH2 0xffff 000020a3: DUP10 000020a4: AND 000020a5: PUSH1 0x00 000020a7: SWAP1 000020a8: DUP2 000020a9: MSTORE 000020aa: PUSH1 0x06 000020ac: PUSH1 0x20 000020ae: SWAP1 000020af: DUP2 000020b0: MSTORE 000020b1: PUSH1 0x40 000020b3: DUP1 000020b4: DUP4 000020b5: KECCAK256 000020b6: PUSH1 0x01 000020b8: PUSH1 0x01 000020ba: PUSH1 0xa0 000020bc: SHL 000020bd: SUB 000020be: DUP15 000020bf: AND 000020c0: DUP5 000020c1: MSTORE 000020c2: SWAP1 000020c3: SWAP2 000020c4: MSTORE 000020c5: SWAP1 000020c6: KECCAK256 000020c7: SSTORE 000020c8: PUSH2 0x20da 000020cb: DUP9 000020cc: PUSH1 0x01 000020ce: PUSH1 0x01 000020d0: PUSH1 0x80 000020d2: SHL 000020d3: SUB 000020d4: DUP5 000020d5: AND 000020d6: PUSH2 0x34fc 000020d9: JUMP 000020da: JUMPDEST 000020db: PUSH2 0x20e4 000020de: DUP8 000020df: DUP5 000020e0: PUSH2 0x34fc 000020e3: JUMP 000020e4: JUMPDEST 000020e5: POP 000020e6: JUMPDEST 000020e7: DUP8 000020e8: PUSH1 0x01 000020ea: PUSH1 0x01 000020ec: PUSH1 0xa0 000020ee: SHL 000020ef: SUB 000020f0: AND 000020f1: PUSH32 0x4d74a702a383226221d4ba46377c079c56e0da1d9f5123c90ce77b965824f3fd 00002112: DUP9 00002113: DUP9 00002114: DUP5 00002115: PUSH1 0x40 00002117: MLOAD 00002118: PUSH2 0x1437 0000211b: SWAP4 0000211c: SWAP3 0000211d: SWAP2 0000211e: SWAP1 0000211f: PUSH2 0x5e40 00002122: JUMP 00002123: JUMPDEST 00002124: PUSH2 0x212b 00002127: PUSH2 0x3a54 0000212a: JUMP 0000212b: JUMPDEST 0000212c: PUSH2 0x2147 0000212f: JUMPI 00002130: PUSH1 0x40 00002132: MLOAD 00002133: PUSH3 0x461bcd 00002137: PUSH1 0xe5 00002139: SHL 0000213a: DUP2 0000213b: MSTORE 0000213c: PUSH1 0x04 0000213e: ADD 0000213f: PUSH2 0x08ca 00002142: SWAP1 00002143: PUSH2 0x5a3a 00002146: JUMP 00002147: JUMPDEST 00002148: PUSH2 0x1524 0000214b: DUP2 0000214c: PUSH2 0x3de7 0000214f: JUMP 00002150: JUMPDEST 00002151: PUSH1 0x60 00002153: DUP1 00002154: PUSH1 0x00 00002156: PUSH1 0x14 00002158: SWAP1 00002159: SLOAD 0000215a: SWAP1 0000215b: PUSH2 0x0100 0000215e: EXP 0000215f: SWAP1 00002160: DIV 00002161: PUSH2 0xffff 00002164: AND 00002165: PUSH1 0x01 00002167: ADD 00002168: PUSH2 0xffff 0000216b: AND 0000216c: PUSH1 0x40 0000216e: MLOAD 0000216f: SWAP1 00002170: DUP1 00002171: DUP3 00002172: MSTORE 00002173: DUP1 00002174: PUSH1 0x20 00002176: MUL 00002177: PUSH1 0x20 00002179: ADD 0000217a: DUP3 0000217b: ADD 0000217c: PUSH1 0x40 0000217e: MSTORE 0000217f: DUP1 00002180: ISZERO 00002181: PUSH2 0x2194 00002184: JUMPI 00002185: DUP2 00002186: PUSH1 0x20 00002188: ADD 00002189: PUSH1 0x20 0000218b: DUP3 0000218c: MUL 0000218d: DUP1 0000218e: CALLDATASIZE 0000218f: DUP4 00002190: CALLDATACOPY 00002191: ADD 00002192: SWAP1 00002193: POP 00002194: JUMPDEST 00002195: POP 00002196: SWAP1 00002197: POP 00002198: PUSH1 0x00 0000219a: JUMPDEST 0000219b: DUP2 0000219c: MLOAD 0000219d: DUP2 0000219e: LT 0000219f: ISZERO 000021a0: PUSH2 0x0c99 000021a3: JUMPI 000021a4: PUSH2 0xffff 000021a7: DUP2 000021a8: AND 000021a9: PUSH1 0x00 000021ab: SWAP1 000021ac: DUP2 000021ad: MSTORE 000021ae: PUSH1 0x06 000021b0: PUSH1 0x20 000021b2: SWAP1 000021b3: DUP2 000021b4: MSTORE 000021b5: PUSH1 0x40 000021b7: DUP1 000021b8: DUP4 000021b9: KECCAK256 000021ba: PUSH1 0x01 000021bc: PUSH1 0x01 000021be: PUSH1 0xa0 000021c0: SHL 000021c1: SUB 000021c2: DUP9 000021c3: AND 000021c4: DUP5 000021c5: MSTORE 000021c6: SWAP1 000021c7: SWAP2 000021c8: MSTORE 000021c9: SWAP1 000021ca: KECCAK256 000021cb: SLOAD 000021cc: DUP3 000021cd: MLOAD 000021ce: DUP4 000021cf: SWAP1 000021d0: DUP4 000021d1: SWAP1 000021d2: DUP2 000021d3: LT 000021d4: PUSH2 0x21d9 000021d7: JUMPI 000021d8: INVALID 000021d9: JUMPDEST 000021da: PUSH1 0x20 000021dc: SWAP1 000021dd: DUP2 000021de: MUL 000021df: SWAP2 000021e0: SWAP1 000021e1: SWAP2 000021e2: ADD 000021e3: ADD 000021e4: MSTORE 000021e5: PUSH1 0x01 000021e7: ADD 000021e8: PUSH2 0x219a 000021eb: JUMP 000021ec: JUMPDEST 000021ed: PUSH2 0x21f4 000021f0: PUSH2 0x4688 000021f3: JUMP 000021f4: JUMPDEST 000021f5: POP 000021f6: PUSH2 0xffff 000021f9: DUP3 000021fa: DUP2 000021fb: AND 000021fc: PUSH1 0x00 000021fe: SWAP1 000021ff: DUP2 00002200: MSTORE 00002201: PUSH1 0x05 00002203: PUSH1 0x20 00002205: SWAP1 00002206: DUP2 00002207: MSTORE 00002208: PUSH1 0x40 0000220a: DUP1 0000220b: DUP4 0000220c: KECCAK256 0000220d: SWAP4 0000220e: DUP6 0000220f: AND 00002210: DUP4 00002211: MSTORE 00002212: SWAP3 00002213: DUP2 00002214: MSTORE 00002215: SWAP1 00002216: DUP3 00002217: SWAP1 00002218: KECCAK256 00002219: DUP3 0000221a: MLOAD 0000221b: PUSH1 0x80 0000221d: DUP2 0000221e: ADD 0000221f: DUP5 00002220: MSTORE 00002221: DUP2 00002222: SLOAD 00002223: PUSH1 0x01 00002225: PUSH1 0x01 00002227: PUSH1 0xa0 00002229: SHL 0000222a: SUB 0000222b: AND 0000222c: DUP2 0000222d: MSTORE 0000222e: PUSH1 0x01 00002230: DUP3 00002231: ADD 00002232: SLOAD 00002233: PUSH1 0x01 00002235: PUSH1 0x01 00002237: PUSH1 0x80 00002239: SHL 0000223a: SUB 0000223b: DUP1 0000223c: DUP3 0000223d: AND 0000223e: SWAP5 0000223f: DUP4 00002240: ADD 00002241: SWAP5 00002242: SWAP1 00002243: SWAP5 00002244: MSTORE 00002245: PUSH1 0x01 00002247: PUSH1 0x80 00002249: SHL 0000224a: SWAP1 0000224b: DIV 0000224c: PUSH1 0xff 0000224e: AND 0000224f: ISZERO 00002250: ISZERO 00002251: SWAP4 00002252: DUP2 00002253: ADD 00002254: SWAP4 00002255: SWAP1 00002256: SWAP4 00002257: MSTORE 00002258: PUSH1 0x02 0000225a: ADD 0000225b: SLOAD 0000225c: AND 0000225d: PUSH1 0x60 0000225f: DUP3 00002260: ADD 00002261: MSTORE 00002262: JUMPDEST 00002263: SWAP3 00002264: SWAP2 00002265: POP 00002266: POP 00002267: JUMP 00002268: JUMPDEST 00002269: PUSH1 0x00 0000226b: SLOAD 0000226c: PUSH1 0x01 0000226e: PUSH1 0xa0 00002270: SHL 00002271: SWAP1 00002272: DIV 00002273: PUSH2 0xffff 00002276: AND 00002277: DUP2 00002278: JUMP 00002279: JUMPDEST 0000227a: PUSH2 0x2281 0000227d: PUSH2 0x46af 00002280: JUMP 00002281: JUMPDEST 00002282: PUSH2 0x2289 00002285: PUSH2 0x304a 00002288: JUMP 00002289: JUMPDEST 0000228a: PUSH1 0x01 0000228c: PUSH1 0x01 0000228e: PUSH1 0xa0 00002290: SHL 00002291: SUB 00002292: AND 00002293: PUSH4 0x6dab47fd 00002298: DUP6 00002299: PUSH1 0x40 0000229b: MLOAD 0000229c: DUP3 0000229d: PUSH4 0xffffffff 000022a2: AND 000022a3: PUSH1 0xe0 000022a5: SHL 000022a6: DUP2 000022a7: MSTORE 000022a8: PUSH1 0x04 000022aa: ADD 000022ab: PUSH2 0x22b4 000022ae: SWAP2 000022af: SWAP1 000022b0: PUSH2 0x5e67 000022b3: JUMP 000022b4: JUMPDEST 000022b5: PUSH1 0xa0 000022b7: PUSH1 0x40 000022b9: MLOAD 000022ba: DUP1 000022bb: DUP4 000022bc: SUB 000022bd: DUP2 000022be: DUP7 000022bf: DUP1 000022c0: EXTCODESIZE 000022c1: ISZERO 000022c2: DUP1 000022c3: ISZERO 000022c4: PUSH2 0x22cc 000022c7: JUMPI 000022c8: PUSH1 0x00 000022ca: DUP1 000022cb: REVERT 000022cc: JUMPDEST 000022cd: POP 000022ce: GAS 000022cf: STATICCALL 000022d0: ISZERO 000022d1: DUP1 000022d2: ISZERO 000022d3: PUSH2 0x22e0 000022d6: JUMPI 000022d7: RETURNDATASIZE 000022d8: PUSH1 0x00 000022da: DUP1 000022db: RETURNDATACOPY 000022dc: RETURNDATASIZE 000022dd: PUSH1 0x00 000022df: REVERT 000022e0: JUMPDEST 000022e1: POP 000022e2: POP 000022e3: POP 000022e4: POP 000022e5: PUSH1 0x40 000022e7: MLOAD 000022e8: RETURNDATASIZE 000022e9: PUSH1 0x1f 000022eb: NOT 000022ec: PUSH1 0x1f 000022ee: DUP3 000022ef: ADD 000022f0: AND 000022f1: DUP3 000022f2: ADD 000022f3: DUP1 000022f4: PUSH1 0x40 000022f6: MSTORE 000022f7: POP 000022f8: DUP2 000022f9: ADD 000022fa: SWAP1 000022fb: PUSH2 0x2304 000022fe: SWAP2 000022ff: SWAP1 00002300: PUSH2 0x505e 00002303: JUMP 00002304: JUMPDEST 00002305: SWAP1 00002306: POP 00002307: DUP1 00002308: PUSH1 0x60 0000230a: ADD 0000230b: MLOAD 0000230c: PUSH1 0x01 0000230e: PUSH1 0x01 00002310: PUSH1 0xa0 00002312: SHL 00002313: SUB 00002314: AND 00002315: CALLER 00002316: PUSH1 0x01 00002318: PUSH1 0x01 0000231a: PUSH1 0xa0 0000231c: SHL 0000231d: SUB 0000231e: AND 0000231f: EQ 00002320: PUSH2 0x233b 00002323: JUMPI 00002324: PUSH1 0x40 00002326: MLOAD 00002327: PUSH3 0x461bcd 0000232b: PUSH1 0xe5 0000232d: SHL 0000232e: DUP2 0000232f: MSTORE 00002330: PUSH1 0x04 00002332: ADD 00002333: PUSH2 0x08ca 00002336: SWAP1 00002337: PUSH2 0x5a3a 0000233a: JUMP 0000233b: JUMPDEST 0000233c: PUSH1 0x01 0000233e: PUSH1 0x01 00002340: PUSH1 0x80 00002342: SHL 00002343: SUB 00002344: DUP3 00002345: AND 00002346: ISZERO 00002347: PUSH2 0x23c0 0000234a: JUMPI 0000234b: PUSH1 0x80 0000234d: DUP2 0000234e: ADD 0000234f: MLOAD 00002350: PUSH2 0xffff 00002353: AND 00002354: PUSH1 0x00 00002356: SWAP1 00002357: DUP2 00002358: MSTORE 00002359: PUSH1 0x06 0000235b: PUSH1 0x20 0000235d: SWAP1 0000235e: DUP2 0000235f: MSTORE 00002360: PUSH1 0x40 00002362: DUP1 00002363: DUP4 00002364: KECCAK256 00002365: PUSH1 0x07 00002367: SLOAD 00002368: PUSH1 0x01 0000236a: PUSH1 0x01 0000236c: PUSH1 0xa0 0000236e: SHL 0000236f: SUB 00002370: AND 00002371: DUP5 00002372: MSTORE 00002373: SWAP1 00002374: SWAP2 00002375: MSTORE 00002376: SWAP1 00002377: KECCAK256 00002378: SLOAD 00002379: PUSH2 0x2391 0000237c: SWAP1 0000237d: PUSH1 0x01 0000237f: PUSH1 0x01 00002381: PUSH1 0x80 00002383: SHL 00002384: SUB 00002385: DUP5 00002386: AND 00002387: PUSH4 0xffffffff 0000238c: PUSH2 0x2aad 0000238f: AND 00002390: JUMP 00002391: JUMPDEST 00002392: PUSH1 0x80 00002394: DUP3 00002395: ADD 00002396: MLOAD 00002397: PUSH2 0xffff 0000239a: AND 0000239b: PUSH1 0x00 0000239d: SWAP1 0000239e: DUP2 0000239f: MSTORE 000023a0: PUSH1 0x06 000023a2: PUSH1 0x20 000023a4: SWAP1 000023a5: DUP2 000023a6: MSTORE 000023a7: PUSH1 0x40 000023a9: DUP1 000023aa: DUP4 000023ab: KECCAK256 000023ac: PUSH1 0x07 000023ae: SLOAD 000023af: PUSH1 0x01 000023b1: PUSH1 0x01 000023b3: PUSH1 0xa0 000023b5: SHL 000023b6: SUB 000023b7: AND 000023b8: DUP5 000023b9: MSTORE 000023ba: SWAP1 000023bb: SWAP2 000023bc: MSTORE 000023bd: SWAP1 000023be: KECCAK256 000023bf: SSTORE 000023c0: JUMPDEST 000023c1: PUSH2 0x241d 000023c4: PUSH2 0x23dc 000023c7: PUSH1 0x01 000023c9: PUSH1 0x01 000023cb: PUSH1 0x80 000023cd: SHL 000023ce: SUB 000023cf: DUP6 000023d0: AND 000023d1: DUP5 000023d2: PUSH4 0xffffffff 000023d7: PUSH2 0x3db6 000023da: AND 000023db: JUMP 000023dc: JUMPDEST 000023dd: PUSH1 0x80 000023df: DUP4 000023e0: ADD 000023e1: MLOAD 000023e2: PUSH2 0xffff 000023e5: AND 000023e6: PUSH1 0x00 000023e8: SWAP1 000023e9: DUP2 000023ea: MSTORE 000023eb: PUSH1 0x06 000023ed: PUSH1 0x20 000023ef: SWAP1 000023f0: DUP2 000023f1: MSTORE 000023f2: PUSH1 0x40 000023f4: DUP1 000023f5: DUP4 000023f6: KECCAK256 000023f7: PUSH1 0x01 000023f9: PUSH1 0x01 000023fb: PUSH1 0xa0 000023fd: SHL 000023fe: SUB 000023ff: DUP12 00002400: AND 00002401: DUP5 00002402: MSTORE 00002403: SWAP1 00002404: SWAP2 00002405: MSTORE 00002406: SWAP1 00002407: KECCAK256 00002408: SLOAD 00002409: SWAP1 0000240a: PUSH1 0x01 0000240c: PUSH1 0x01 0000240e: PUSH1 0x80 00002410: SHL 00002411: SUB 00002412: AND 00002413: PUSH4 0xffffffff 00002418: PUSH2 0x2aad 0000241b: AND 0000241c: JUMP 0000241d: JUMPDEST 0000241e: PUSH1 0x80 00002420: DUP3 00002421: ADD 00002422: DUP1 00002423: MLOAD 00002424: PUSH2 0xffff 00002427: SWAP1 00002428: DUP2 00002429: AND 0000242a: PUSH1 0x00 0000242c: SWAP1 0000242d: DUP2 0000242e: MSTORE 0000242f: PUSH1 0x06 00002431: PUSH1 0x20 00002433: DUP2 00002434: DUP2 00002435: MSTORE 00002436: PUSH1 0x40 00002438: DUP1 00002439: DUP5 0000243a: KECCAK256 0000243b: PUSH1 0x01 0000243d: PUSH1 0x01 0000243f: PUSH1 0xa0 00002441: SHL 00002442: SUB 00002443: DUP14 00002444: AND 00002445: DUP6 00002446: MSTORE 00002447: DUP3 00002448: MSTORE 00002449: DUP1 0000244a: DUP5 0000244b: KECCAK256 0000244c: SWAP7 0000244d: SWAP1 0000244e: SWAP7 0000244f: SSTORE 00002450: SWAP4 00002451: MLOAD 00002452: SWAP1 00002453: SWAP3 00002454: AND 00002455: DUP2 00002456: MSTORE 00002457: SWAP1 00002458: DUP3 00002459: MSTORE 0000245a: DUP3 0000245b: DUP2 0000245c: KECCAK256 0000245d: CALLER 0000245e: DUP3 0000245f: MSTORE 00002460: SWAP1 00002461: SWAP2 00002462: MSTORE 00002463: KECCAK256 00002464: SLOAD 00002465: PUSH2 0x247d 00002468: DUP2 00002469: PUSH1 0x01 0000246b: PUSH1 0x01 0000246d: PUSH1 0x80 0000246f: SHL 00002470: SUB 00002471: DUP7 00002472: AND 00002473: PUSH4 0xffffffff 00002478: PUSH2 0x30b3 0000247b: AND 0000247c: JUMP 0000247d: JUMPDEST 0000247e: PUSH1 0x80 00002480: SWAP1 00002481: SWAP3 00002482: ADD 00002483: MLOAD 00002484: PUSH2 0xffff 00002487: AND 00002488: PUSH1 0x00 0000248a: SWAP1 0000248b: DUP2 0000248c: MSTORE 0000248d: PUSH1 0x06 0000248f: PUSH1 0x20 00002491: SWAP1 00002492: DUP2 00002493: MSTORE 00002494: PUSH1 0x40 00002496: DUP1 00002497: DUP4 00002498: KECCAK256 00002499: CALLER 0000249a: DUP5 0000249b: MSTORE 0000249c: SWAP1 0000249d: SWAP2 0000249e: MSTORE 0000249f: SWAP1 000024a0: KECCAK256 000024a1: SWAP2 000024a2: SWAP1 000024a3: SWAP2 000024a4: SSTORE 000024a5: POP 000024a6: POP 000024a7: POP 000024a8: POP 000024a9: POP 000024aa: JUMP 000024ab: JUMPDEST 000024ac: PUSH1 0x00 000024ae: SLOAD 000024af: PUSH1 0x01 000024b1: PUSH1 0xa0 000024b3: SHL 000024b4: SWAP1 000024b5: DIV 000024b6: PUSH2 0xffff 000024b9: SWAP1 000024ba: DUP2 000024bb: AND 000024bc: SWAP2 000024bd: AND 000024be: GT 000024bf: ISZERO 000024c0: SWAP1 000024c1: JUMP 000024c2: JUMPDEST 000024c3: PUSH2 0x24ca 000024c6: PUSH2 0x2efd 000024c9: JUMP 000024ca: JUMPDEST 000024cb: PUSH2 0x24e6 000024ce: JUMPI 000024cf: PUSH1 0x40 000024d1: MLOAD 000024d2: PUSH3 0x461bcd 000024d6: PUSH1 0xe5 000024d8: SHL 000024d9: DUP2 000024da: MSTORE 000024db: PUSH1 0x04 000024dd: ADD 000024de: PUSH2 0x08ca 000024e1: SWAP1 000024e2: PUSH2 0x5a3a 000024e5: JUMP 000024e6: JUMPDEST 000024e7: CALLVALUE 000024e8: ISZERO 000024e9: PUSH2 0x24f5 000024ec: JUMPI 000024ed: PUSH2 0x24f5 000024f0: DUP3 000024f1: PUSH2 0x2f26 000024f4: JUMP 000024f5: JUMPDEST 000024f6: PUSH1 0x00 000024f8: JUMPDEST 000024f9: DUP2 000024fa: MLOAD 000024fb: DUP2 000024fc: LT 000024fd: ISZERO 000024fe: PUSH2 0x09cb 00002501: JUMPI 00002502: PUSH1 0x00 00002504: PUSH1 0x01 00002506: PUSH1 0x00 00002508: DUP5 00002509: DUP5 0000250a: DUP2 0000250b: MLOAD 0000250c: DUP2 0000250d: LT 0000250e: PUSH2 0x2513 00002511: JUMPI 00002512: INVALID 00002513: JUMPDEST 00002514: PUSH1 0x20 00002516: MUL 00002517: PUSH1 0x20 00002519: ADD 0000251a: ADD 0000251b: MLOAD 0000251c: PUSH1 0x00 0000251e: ADD 0000251f: MLOAD 00002520: PUSH2 0xffff 00002523: AND 00002524: PUSH2 0xffff 00002527: AND 00002528: DUP2 00002529: MSTORE 0000252a: PUSH1 0x20 0000252c: ADD 0000252d: SWAP1 0000252e: DUP2 0000252f: MSTORE 00002530: PUSH1 0x20 00002532: ADD 00002533: PUSH1 0x00 00002535: KECCAK256 00002536: PUSH1 0x00 00002538: SWAP1 00002539: SLOAD 0000253a: SWAP1 0000253b: PUSH2 0x0100 0000253e: EXP 0000253f: SWAP1 00002540: DIV 00002541: PUSH1 0x01 00002543: PUSH1 0x01 00002545: PUSH1 0xa0 00002547: SHL 00002548: SUB 00002549: AND 0000254a: SWAP1 0000254b: POP 0000254c: PUSH2 0x256d 0000254f: DUP5 00002550: DUP3 00002551: DUP6 00002552: DUP6 00002553: DUP2 00002554: MLOAD 00002555: DUP2 00002556: LT 00002557: PUSH2 0x255c 0000255a: JUMPI 0000255b: INVALID 0000255c: JUMPDEST 0000255d: PUSH1 0x20 0000255f: MUL 00002560: PUSH1 0x20 00002562: ADD 00002563: ADD 00002564: MLOAD 00002565: PUSH1 0x20 00002567: ADD 00002568: MLOAD 00002569: PUSH2 0x3c58 0000256c: JUMP 0000256d: JUMPDEST 0000256e: POP 0000256f: PUSH1 0x01 00002571: ADD 00002572: PUSH2 0x24f8 00002575: JUMP 00002576: JUMPDEST 00002577: PUSH2 0x257e 0000257a: PUSH2 0x14e2 0000257d: JUMP 0000257e: JUMPDEST 0000257f: PUSH2 0x2587 00002582: JUMPI 00002583: PUSH1 0x00 00002585: DUP1 00002586: REVERT 00002587: JUMPDEST 00002588: PUSH2 0x2590 0000258b: DUP4 0000258c: PUSH2 0x3e1a 0000258f: JUMP 00002590: JUMPDEST 00002591: PUSH2 0x2599 00002594: DUP3 00002595: PUSH2 0x3e4d 00002598: JUMP 00002599: JUMPDEST 0000259a: PUSH2 0x25a2 0000259d: DUP2 0000259e: PUSH2 0x3e80 000025a1: JUMP 000025a2: JUMPDEST 000025a3: PUSH32 0x72a18338fc4bf37c8dd47612c4b9754f73b5eb75cfd2d0f74756de5387345f0d 000025c4: DUP4 000025c5: DUP4 000025c6: DUP4 000025c7: PUSH1 0x40 000025c9: MLOAD 000025ca: PUSH2 0x25d5 000025cd: SWAP4 000025ce: SWAP3 000025cf: SWAP2 000025d0: SWAP1 000025d1: PUSH2 0x5d5f 000025d4: JUMP 000025d5: JUMPDEST 000025d6: PUSH1 0x40 000025d8: MLOAD 000025d9: DUP1 000025da: SWAP2 000025db: SUB 000025dc: SWAP1 000025dd: LOG1 000025de: POP 000025df: POP 000025e0: POP 000025e1: JUMP 000025e2: JUMPDEST 000025e3: PUSH2 0x25ea 000025e6: PUSH2 0x14e2 000025e9: JUMP 000025ea: JUMPDEST 000025eb: PUSH2 0x25f3 000025ee: JUMPI 000025ef: PUSH1 0x00 000025f1: DUP1 000025f2: REVERT 000025f3: JUMPDEST 000025f4: PUSH1 0x07 000025f6: DUP1 000025f7: SLOAD 000025f8: PUSH1 0x01 000025fa: PUSH1 0x01 000025fc: PUSH1 0xa0 000025fe: SHL 000025ff: SUB 00002600: NOT 00002601: AND 00002602: PUSH1 0x01 00002604: PUSH1 0x01 00002606: PUSH1 0xa0 00002608: SHL 00002609: SUB 0000260a: DUP4 0000260b: AND 0000260c: OR 0000260d: SWAP1 0000260e: SSTORE 0000260f: PUSH1 0x40 00002611: MLOAD 00002612: PUSH32 0x70b77aa3bf7367cd8c0674c8f80aa3829d046d2171e4e151fa63ab2e0d5d8e83 00002633: SWAP1 00002634: PUSH2 0x263e 00002637: SWAP1 00002638: DUP4 00002639: SWAP1 0000263a: PUSH2 0x5575 0000263d: JUMP 0000263e: JUMPDEST 0000263f: PUSH1 0x40 00002641: MLOAD 00002642: DUP1 00002643: SWAP2 00002644: SUB 00002645: SWAP1 00002646: LOG1 00002647: POP 00002648: JUMP 00002649: JUMPDEST 0000264a: PUSH2 0x2651 0000264d: PUSH2 0x14e2 00002650: JUMP 00002651: JUMPDEST 00002652: PUSH2 0x265a 00002655: JUMPI 00002656: PUSH1 0x00 00002658: DUP1 00002659: REVERT 0000265a: JUMPDEST 0000265b: PUSH2 0x2662 0000265e: PUSH2 0x1510 00002661: JUMP 00002662: JUMPDEST 00002663: PUSH1 0x01 00002665: PUSH1 0x01 00002667: PUSH1 0x80 00002669: SHL 0000266a: SUB 0000266b: AND 0000266c: DUP4 0000266d: PUSH1 0x01 0000266f: PUSH1 0x01 00002671: PUSH1 0x80 00002673: SHL 00002674: SUB 00002675: AND 00002676: GT 00002677: PUSH2 0x2692 0000267a: JUMPI 0000267b: PUSH1 0x40 0000267d: MLOAD 0000267e: PUSH3 0x461bcd 00002682: PUSH1 0xe5 00002684: SHL 00002685: DUP2 00002686: MSTORE 00002687: PUSH1 0x04 00002689: ADD 0000268a: PUSH2 0x08ca 0000268d: SWAP1 0000268e: PUSH2 0x59ca 00002691: JUMP 00002692: JUMPDEST 00002693: PUSH1 0x40 00002695: MLOAD 00002696: DUP1 00002697: PUSH1 0x80 00002699: ADD 0000269a: PUSH1 0x40 0000269c: MSTORE 0000269d: DUP1 0000269e: DUP6 0000269f: PUSH1 0x01 000026a1: PUSH1 0x01 000026a3: PUSH1 0xa0 000026a5: SHL 000026a6: SUB 000026a7: AND 000026a8: DUP2 000026a9: MSTORE 000026aa: PUSH1 0x20 000026ac: ADD 000026ad: DUP4 000026ae: PUSH1 0x01 000026b0: PUSH1 0x01 000026b2: PUSH1 0x80 000026b4: SHL 000026b5: SUB 000026b6: AND 000026b7: DUP2 000026b8: MSTORE 000026b9: PUSH1 0x20 000026bb: ADD 000026bc: DUP3 000026bd: ISZERO 000026be: ISZERO 000026bf: DUP2 000026c0: MSTORE 000026c1: PUSH1 0x20 000026c3: ADD 000026c4: DUP5 000026c5: PUSH1 0x01 000026c7: PUSH1 0x01 000026c9: PUSH1 0x80 000026cb: SHL 000026cc: SUB 000026cd: AND 000026ce: DUP2 000026cf: MSTORE 000026d0: POP 000026d1: PUSH1 0x05 000026d3: PUSH1 0x00 000026d5: DUP9 000026d6: PUSH2 0xffff 000026d9: AND 000026da: PUSH2 0xffff 000026dd: AND 000026de: DUP2 000026df: MSTORE 000026e0: PUSH1 0x20 000026e2: ADD 000026e3: SWAP1 000026e4: DUP2 000026e5: MSTORE 000026e6: PUSH1 0x20 000026e8: ADD 000026e9: PUSH1 0x00 000026eb: KECCAK256 000026ec: PUSH1 0x00 000026ee: DUP8 000026ef: PUSH2 0xffff 000026f2: AND 000026f3: PUSH2 0xffff 000026f6: AND 000026f7: DUP2 000026f8: MSTORE 000026f9: PUSH1 0x20 000026fb: ADD 000026fc: SWAP1 000026fd: DUP2 000026fe: MSTORE 000026ff: PUSH1 0x20 00002701: ADD 00002702: PUSH1 0x00 00002704: KECCAK256 00002705: PUSH1 0x00 00002707: DUP3 00002708: ADD 00002709: MLOAD 0000270a: DUP2 0000270b: PUSH1 0x00 0000270d: ADD 0000270e: PUSH1 0x00 00002710: PUSH2 0x0100 00002713: EXP 00002714: DUP2 00002715: SLOAD 00002716: DUP2 00002717: PUSH1 0x01 00002719: PUSH1 0x01 0000271b: PUSH1 0xa0 0000271d: SHL 0000271e: SUB 0000271f: MUL 00002720: NOT 00002721: AND 00002722: SWAP1 00002723: DUP4 00002724: PUSH1 0x01 00002726: PUSH1 0x01 00002728: PUSH1 0xa0 0000272a: SHL 0000272b: SUB 0000272c: AND 0000272d: MUL 0000272e: OR 0000272f: SWAP1 00002730: SSTORE 00002731: POP 00002732: PUSH1 0x20 00002734: DUP3 00002735: ADD 00002736: MLOAD 00002737: DUP2 00002738: PUSH1 0x01 0000273a: ADD 0000273b: PUSH1 0x00 0000273d: PUSH2 0x0100 00002740: EXP 00002741: DUP2 00002742: SLOAD 00002743: DUP2 00002744: PUSH1 0x01 00002746: PUSH1 0x01 00002748: PUSH1 0x80 0000274a: SHL 0000274b: SUB 0000274c: MUL 0000274d: NOT 0000274e: AND 0000274f: SWAP1 00002750: DUP4 00002751: PUSH1 0x01 00002753: PUSH1 0x01 00002755: PUSH1 0x80 00002757: SHL 00002758: SUB 00002759: AND 0000275a: MUL 0000275b: OR 0000275c: SWAP1 0000275d: SSTORE 0000275e: POP 0000275f: PUSH1 0x40 00002761: DUP3 00002762: ADD 00002763: MLOAD 00002764: DUP2 00002765: PUSH1 0x01 00002767: ADD 00002768: PUSH1 0x10 0000276a: PUSH2 0x0100 0000276d: EXP 0000276e: DUP2 0000276f: SLOAD 00002770: DUP2 00002771: PUSH1 0xff 00002773: MUL 00002774: NOT 00002775: AND 00002776: SWAP1 00002777: DUP4 00002778: ISZERO 00002779: ISZERO 0000277a: MUL 0000277b: OR 0000277c: SWAP1 0000277d: SSTORE 0000277e: POP 0000277f: PUSH1 0x60 00002781: DUP3 00002782: ADD 00002783: MLOAD 00002784: DUP2 00002785: PUSH1 0x02 00002787: ADD 00002788: PUSH1 0x00 0000278a: PUSH2 0x0100 0000278d: EXP 0000278e: DUP2 0000278f: SLOAD 00002790: DUP2 00002791: PUSH1 0x01 00002793: PUSH1 0x01 00002795: PUSH1 0x80 00002797: SHL 00002798: SUB 00002799: MUL 0000279a: NOT 0000279b: AND 0000279c: SWAP1 0000279d: DUP4 0000279e: PUSH1 0x01 000027a0: PUSH1 0x01 000027a2: PUSH1 0x80 000027a4: SHL 000027a5: SUB 000027a6: AND 000027a7: MUL 000027a8: OR 000027a9: SWAP1 000027aa: SSTORE 000027ab: POP 000027ac: SWAP1 000027ad: POP 000027ae: POP 000027af: DUP5 000027b0: PUSH2 0xffff 000027b3: AND 000027b4: DUP7 000027b5: PUSH2 0xffff 000027b8: AND 000027b9: PUSH32 0xc19c1de154beaef66da9637a82d948550ac7a0df67fdaa7ea0f05a12d4ada3e0 000027da: PUSH1 0x40 000027dc: MLOAD 000027dd: PUSH1 0x40 000027df: MLOAD 000027e0: DUP1 000027e1: SWAP2 000027e2: SUB 000027e3: SWAP1 000027e4: LOG3 000027e5: POP 000027e6: POP 000027e7: POP 000027e8: POP 000027e9: POP 000027ea: POP 000027eb: JUMP 000027ec: JUMPDEST 000027ed: PUSH2 0x27f4 000027f0: PUSH2 0x14e2 000027f3: JUMP 000027f4: JUMPDEST 000027f5: PUSH2 0x27fd 000027f8: JUMPI 000027f9: PUSH1 0x00 000027fb: DUP1 000027fc: REVERT 000027fd: JUMPDEST 000027fe: PUSH2 0x1524 00002801: DUP2 00002802: PUSH2 0x3eb3 00002805: JUMP 00002806: JUMPDEST 00002807: PUSH1 0x08 00002809: SLOAD 0000280a: PUSH1 0x01 0000280c: PUSH1 0xa8 0000280e: SHL 0000280f: SWAP1 00002810: DIV 00002811: PUSH1 0xff 00002813: AND 00002814: DUP1 00002815: PUSH2 0x2821 00002818: JUMPI 00002819: POP 0000281a: PUSH2 0x2821 0000281d: PUSH2 0x30e3 00002820: JUMP 00002821: JUMPDEST 00002822: DUP1 00002823: PUSH2 0x2836 00002826: JUMPI 00002827: POP 00002828: PUSH1 0x08 0000282a: SLOAD 0000282b: PUSH1 0x01 0000282d: PUSH1 0xa0 0000282f: SHL 00002830: SWAP1 00002831: DIV 00002832: PUSH1 0xff 00002834: AND 00002835: ISZERO 00002836: JUMPDEST 00002837: PUSH2 0x2852 0000283a: JUMPI 0000283b: PUSH1 0x40 0000283d: MLOAD 0000283e: PUSH3 0x461bcd 00002842: PUSH1 0xe5 00002844: SHL 00002845: DUP2 00002846: MSTORE 00002847: PUSH1 0x04 00002849: ADD 0000284a: PUSH2 0x08ca 0000284d: SWAP1 0000284e: PUSH2 0x5b24 00002851: JUMP 00002852: JUMPDEST 00002853: PUSH1 0x08 00002855: SLOAD 00002856: PUSH1 0x01 00002858: PUSH1 0xa8 0000285a: SHL 0000285b: SWAP1 0000285c: DIV 0000285d: PUSH1 0xff 0000285f: AND 00002860: ISZERO 00002861: DUP1 00002862: ISZERO 00002863: PUSH2 0x2889 00002866: JUMPI 00002867: PUSH1 0x08 00002869: DUP1 0000286a: SLOAD 0000286b: PUSH1 0xff 0000286d: PUSH1 0xa0 0000286f: SHL 00002870: NOT 00002871: PUSH1 0xff 00002873: PUSH1 0xa8 00002875: SHL 00002876: NOT 00002877: SWAP1 00002878: SWAP2 00002879: AND 0000287a: PUSH1 0x01 0000287c: PUSH1 0xa8 0000287e: SHL 0000287f: OR 00002880: AND 00002881: PUSH1 0x01 00002883: PUSH1 0xa0 00002885: SHL 00002886: OR 00002887: SWAP1 00002888: SSTORE 00002889: JUMPDEST 0000288a: PUSH2 0x2893 0000288d: DUP6 0000288e: DUP6 0000288f: PUSH2 0x0fd6 00002892: JUMP 00002893: JUMPDEST 00002894: PUSH1 0x40 00002896: MLOAD 00002897: PUSH4 0x29965a1d 0000289c: PUSH1 0xe0 0000289e: SHL 0000289f: DUP2 000028a0: MSTORE 000028a1: PUSH1 0x01 000028a3: PUSH1 0x01 000028a5: PUSH1 0xa0 000028a7: SHL 000028a8: SUB 000028a9: DUP5 000028aa: AND 000028ab: SWAP1 000028ac: PUSH4 0x29965a1d 000028b1: SWAP1 000028b2: PUSH2 0x28e4 000028b5: SWAP1 000028b6: PUSH1 0x00 000028b8: SWAP1 000028b9: PUSH32 0xb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b 000028da: SWAP1 000028db: ADDRESS 000028dc: SWAP1 000028dd: PUSH1 0x04 000028df: ADD 000028e0: PUSH2 0x5589 000028e3: JUMP 000028e4: JUMPDEST 000028e5: PUSH1 0x00 000028e7: PUSH1 0x40 000028e9: MLOAD 000028ea: DUP1 000028eb: DUP4 000028ec: SUB 000028ed: DUP2 000028ee: PUSH1 0x00 000028f0: DUP8 000028f1: DUP1 000028f2: EXTCODESIZE 000028f3: ISZERO 000028f4: DUP1 000028f5: ISZERO 000028f6: PUSH2 0x28fe 000028f9: JUMPI 000028fa: PUSH1 0x00 000028fc: DUP1 000028fd: REVERT 000028fe: JUMPDEST 000028ff: POP 00002900: GAS 00002901: CALL 00002902: ISZERO 00002903: DUP1 00002904: ISZERO 00002905: PUSH2 0x2912 00002908: JUMPI 00002909: RETURNDATASIZE 0000290a: PUSH1 0x00 0000290c: DUP1 0000290d: RETURNDATACOPY 0000290e: RETURNDATASIZE 0000290f: PUSH1 0x00 00002911: REVERT 00002912: JUMPDEST 00002913: POP 00002914: POP 00002915: PUSH1 0x00 00002917: DUP1 00002918: SLOAD 00002919: PUSH1 0x01 0000291b: PUSH1 0x01 0000291d: PUSH1 0xa0 0000291f: SHL 00002920: SUB 00002921: DUP1 00002922: DUP8 00002923: AND 00002924: PUSH1 0x01 00002926: PUSH1 0x01 00002928: PUSH1 0xa0 0000292a: SHL 0000292b: SUB 0000292c: NOT 0000292d: SWAP3 0000292e: DUP4 0000292f: AND 00002930: OR 00002931: DUP1 00002932: DUP5 00002933: SSTORE 00002934: PUSH32 0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49 00002955: DUP1 00002956: SLOAD 00002957: SWAP1 00002958: SWAP4 00002959: AND 0000295a: SWAP1 0000295b: DUP3 0000295c: AND 0000295d: SWAP1 0000295e: DUP2 0000295f: OR 00002960: SWAP1 00002961: SWAP3 00002962: SSTORE 00002963: SWAP1 00002964: DUP3 00002965: MSTORE 00002966: PUSH1 0x03 00002968: PUSH1 0x20 0000296a: SWAP1 0000296b: DUP2 0000296c: MSTORE 0000296d: PUSH1 0x40 0000296f: DUP1 00002970: DUP5 00002971: KECCAK256 00002972: DUP1 00002973: SLOAD 00002974: PUSH2 0xffff 00002977: NOT 00002978: AND 00002979: SWAP1 0000297a: SSTORE 0000297b: DUP4 0000297c: DUP1 0000297d: MSTORE 0000297e: PUSH1 0x02 00002980: SWAP1 00002981: SWAP2 00002982: MSTORE 00002983: PUSH8 0x0de0b6b3a7640000 0000298c: PUSH32 0xac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b 000029ad: SSTORE 000029ae: DUP3 000029af: SLOAD 000029b0: SWAP1 000029b1: MLOAD 000029b2: SWAP2 000029b3: AND 000029b4: SWAP4 000029b5: POP 000029b6: PUSH32 0x1defcb31bdf18413d52d3220d6f23d92a6635d53c8dbb16c738b0706fe9d07b9 000029d7: SWAP3 000029d8: POP 000029d9: LOG2 000029da: DUP1 000029db: ISZERO 000029dc: PUSH2 0x29ed 000029df: JUMPI 000029e0: PUSH1 0x08 000029e2: DUP1 000029e3: SLOAD 000029e4: PUSH1 0xff 000029e6: PUSH1 0xa8 000029e8: SHL 000029e9: NOT 000029ea: AND 000029eb: SWAP1 000029ec: SSTORE 000029ed: JUMPDEST 000029ee: POP 000029ef: POP 000029f0: POP 000029f1: POP 000029f2: POP 000029f3: JUMP 000029f4: JUMPDEST 000029f5: PUSH2 0x29fc 000029f8: PUSH2 0x46dd 000029fb: JUMP 000029fc: JUMPDEST 000029fd: PUSH2 0x2a06 00002a00: DUP6 00002a01: DUP6 00002a02: PUSH2 0x30e9 00002a05: JUMP 00002a06: JUMPDEST 00002a07: SWAP1 00002a08: POP 00002a09: PUSH1 0x00 00002a0b: DUP1 00002a0c: PUSH1 0x00 00002a0e: PUSH2 0x2a18 00002a11: DUP7 00002a12: DUP7 00002a13: DUP7 00002a14: PUSH2 0x32b1 00002a17: JUMP 00002a18: JUMPDEST 00002a19: SWAP3 00002a1a: POP 00002a1b: SWAP3 00002a1c: POP 00002a1d: SWAP3 00002a1e: POP 00002a1f: PUSH2 0x2a31 00002a22: DUP9 00002a23: DUP4 00002a24: PUSH1 0x01 00002a26: PUSH1 0x01 00002a28: PUSH1 0x80 00002a2a: SHL 00002a2b: SUB 00002a2c: AND 00002a2d: PUSH2 0x34fc 00002a30: JUMP 00002a31: JUMPDEST 00002a32: PUSH2 0x2a47 00002a35: DUP8 00002a36: PUSH2 0x1231 00002a39: DUP4 00002a3a: PUSH1 0x01 00002a3c: PUSH1 0x01 00002a3e: PUSH1 0x80 00002a40: SHL 00002a41: SUB 00002a42: AND 00002a43: PUSH2 0x361b 00002a46: JUMP 00002a47: JUMPDEST 00002a48: DUP6 00002a49: PUSH1 0x01 00002a4b: PUSH1 0x01 00002a4d: PUSH1 0xa0 00002a4f: SHL 00002a50: SUB 00002a51: AND 00002a52: PUSH32 0x4d74a702a383226221d4ba46377c079c56e0da1d9f5123c90ce77b965824f3fd 00002a73: DUP10 00002a74: DUP10 00002a75: DUP7 00002a76: PUSH1 0x40 00002a78: MLOAD 00002a79: PUSH2 0x1437 00002a7c: SWAP4 00002a7d: SWAP3 00002a7e: SWAP2 00002a7f: SWAP1 00002a80: PUSH2 0x5e40 00002a83: JUMP 00002a84: JUMPDEST 00002a85: PUSH1 0x00 00002a87: PUSH1 0x01 00002a89: PUSH1 0x80 00002a8b: SHL 00002a8c: DUP3 00002a8d: LT 00002a8e: PUSH2 0x2aa9 00002a91: JUMPI 00002a92: PUSH1 0x40 00002a94: MLOAD 00002a95: PUSH3 0x461bcd 00002a99: PUSH1 0xe5 00002a9b: SHL 00002a9c: DUP2 00002a9d: MSTORE 00002a9e: PUSH1 0x04 00002aa0: ADD 00002aa1: PUSH2 0x08ca 00002aa4: SWAP1 00002aa5: PUSH2 0x5926 00002aa8: JUMP 00002aa9: JUMPDEST 00002aaa: POP 00002aab: SWAP1 00002aac: JUMP 00002aad: JUMPDEST 00002aae: PUSH1 0x00 00002ab0: DUP3 00002ab1: DUP3 00002ab2: ADD 00002ab3: DUP2 00002ab4: DUP4 00002ab5: SLT 00002ab6: DUP1 00002ab7: ISZERO 00002ab8: SWAP1 00002ab9: PUSH2 0x2ac2 00002abc: JUMPI 00002abd: POP 00002abe: DUP4 00002abf: DUP2 00002ac0: SLT 00002ac1: ISZERO 00002ac2: JUMPDEST 00002ac3: DUP1 00002ac4: PUSH2 0x2ad7 00002ac7: JUMPI 00002ac8: POP 00002ac9: PUSH1 0x00 00002acb: DUP4 00002acc: SLT 00002acd: DUP1 00002ace: ISZERO 00002acf: PUSH2 0x2ad7 00002ad2: JUMPI 00002ad3: POP 00002ad4: DUP4 00002ad5: DUP2 00002ad6: SLT 00002ad7: JUMPDEST 00002ad8: PUSH2 0x2af3 00002adb: JUMPI 00002adc: PUSH1 0x40 00002ade: MLOAD 00002adf: PUSH3 0x461bcd 00002ae3: PUSH1 0xe5 00002ae5: SHL 00002ae6: DUP2 00002ae7: MSTORE 00002ae8: PUSH1 0x04 00002aea: ADD 00002aeb: PUSH2 0x08ca 00002aee: SWAP1 00002aef: PUSH2 0x596d 00002af2: JUMP 00002af3: JUMPDEST 00002af4: SWAP4 00002af5: SWAP3 00002af6: POP 00002af7: POP 00002af8: POP 00002af9: JUMP 00002afa: JUMPDEST 00002afb: PUSH1 0x00 00002afd: PUSH2 0x0997 00002b00: PUSH32 0x86f55df6f3f1d5533a992d6e1355f3adb2afe0c3064672910d2518432c35e770 00002b21: PUSH2 0x3f22 00002b24: JUMP 00002b25: JUMPDEST 00002b26: PUSH1 0x01 00002b28: PUSH1 0x01 00002b2a: PUSH1 0xa0 00002b2c: SHL 00002b2d: SUB 00002b2e: DUP4 00002b2f: AND 00002b30: PUSH1 0x00 00002b32: DUP2 00002b33: DUP2 00002b34: MSTORE 00002b35: PUSH1 0x03 00002b37: PUSH1 0x20 00002b39: MSTORE 00002b3a: PUSH1 0x40 00002b3c: DUP2 00002b3d: KECCAK256 00002b3e: SLOAD 00002b3f: SWAP1 00002b40: SWAP2 00002b41: PUSH2 0xffff 00002b44: SWAP1 00002b45: SWAP2 00002b46: AND 00002b47: SWAP1 00002b48: DUP3 00002b49: SWAP1 00002b4a: PUSH2 0x2b65 00002b4d: JUMPI 00002b4e: PUSH1 0x40 00002b50: MLOAD 00002b51: PUSH3 0x461bcd 00002b55: PUSH1 0xe5 00002b57: SHL 00002b58: DUP2 00002b59: MSTORE 00002b5a: PUSH1 0x04 00002b5c: ADD 00002b5d: PUSH2 0x08ca 00002b60: SWAP1 00002b61: PUSH2 0x5aec 00002b64: JUMP 00002b65: JUMPDEST 00002b66: DUP4 00002b67: ISZERO 00002b68: PUSH2 0x2bd1 00002b6b: JUMPI 00002b6c: PUSH2 0x2b73 00002b6f: PUSH2 0x304a 00002b72: JUMP 00002b73: JUMPDEST 00002b74: PUSH1 0x01 00002b76: PUSH1 0x01 00002b78: PUSH1 0xa0 00002b7a: SHL 00002b7b: SUB 00002b7c: AND 00002b7d: PUSH4 0x265bf4cf 00002b82: DUP10 00002b83: PUSH1 0x40 00002b85: MLOAD 00002b86: DUP3 00002b87: PUSH4 0xffffffff 00002b8c: AND 00002b8d: PUSH1 0xe0 00002b8f: SHL 00002b90: DUP2 00002b91: MSTORE 00002b92: PUSH1 0x04 00002b94: ADD 00002b95: PUSH2 0x2b9e 00002b98: SWAP2 00002b99: SWAP1 00002b9a: PUSH2 0x5575 00002b9d: JUMP 00002b9e: JUMPDEST 00002b9f: PUSH1 0x00 00002ba1: PUSH1 0x40 00002ba3: MLOAD 00002ba4: DUP1 00002ba5: DUP4 00002ba6: SUB 00002ba7: DUP2 00002ba8: PUSH1 0x00 00002baa: DUP8 00002bab: DUP1 00002bac: EXTCODESIZE 00002bad: ISZERO 00002bae: DUP1 00002baf: ISZERO 00002bb0: PUSH2 0x2bb8 00002bb3: JUMPI 00002bb4: PUSH1 0x00 00002bb6: DUP1 00002bb7: REVERT 00002bb8: JUMPDEST 00002bb9: POP 00002bba: GAS 00002bbb: CALL 00002bbc: ISZERO 00002bbd: DUP1 00002bbe: ISZERO 00002bbf: PUSH2 0x2bcc 00002bc2: JUMPI 00002bc3: RETURNDATASIZE 00002bc4: PUSH1 0x00 00002bc6: DUP1 00002bc7: RETURNDATACOPY 00002bc8: RETURNDATASIZE 00002bc9: PUSH1 0x00 00002bcb: REVERT 00002bcc: JUMPDEST 00002bcd: POP 00002bce: POP 00002bcf: POP 00002bd0: POP 00002bd1: JUMPDEST 00002bd2: PUSH2 0xffff 00002bd5: DUP3 00002bd6: AND 00002bd7: PUSH1 0x00 00002bd9: SWAP1 00002bda: DUP2 00002bdb: MSTORE 00002bdc: PUSH1 0x06 00002bde: PUSH1 0x20 00002be0: SWAP1 00002be1: DUP2 00002be2: MSTORE 00002be3: PUSH1 0x40 00002be5: DUP1 00002be6: DUP4 00002be7: KECCAK256 00002be8: PUSH1 0x01 00002bea: PUSH1 0x01 00002bec: PUSH1 0xa0 00002bee: SHL 00002bef: SUB 00002bf0: DUP13 00002bf1: AND 00002bf2: DUP5 00002bf3: MSTORE 00002bf4: SWAP1 00002bf5: SWAP2 00002bf6: MSTORE 00002bf7: DUP2 00002bf8: KECCAK256 00002bf9: SLOAD 00002bfa: SWAP1 00002bfb: DUP2 00002bfc: SGT 00002bfd: ISZERO 00002bfe: PUSH2 0x2c5c 00002c01: JUMPI 00002c02: DUP6 00002c03: PUSH1 0x01 00002c05: PUSH1 0x01 00002c07: PUSH1 0x80 00002c09: SHL 00002c0a: SUB 00002c0b: AND 00002c0c: DUP2 00002c0d: SLT 00002c0e: ISZERO 00002c0f: PUSH2 0x2c16 00002c12: JUMPI 00002c13: DUP1 00002c14: SWAP6 00002c15: POP 00002c16: JUMPDEST 00002c17: PUSH2 0x2c2f 00002c1a: DUP2 00002c1b: PUSH1 0x01 00002c1d: PUSH1 0x01 00002c1f: PUSH1 0x80 00002c21: SHL 00002c22: SUB 00002c23: DUP9 00002c24: AND 00002c25: PUSH4 0xffffffff 00002c2a: PUSH2 0x30b3 00002c2d: AND 00002c2e: JUMP 00002c2f: JUMPDEST 00002c30: PUSH2 0xffff 00002c33: DUP5 00002c34: AND 00002c35: PUSH1 0x00 00002c37: SWAP1 00002c38: DUP2 00002c39: MSTORE 00002c3a: PUSH1 0x06 00002c3c: PUSH1 0x20 00002c3e: SWAP1 00002c3f: DUP2 00002c40: MSTORE 00002c41: PUSH1 0x40 00002c43: DUP1 00002c44: DUP4 00002c45: KECCAK256 00002c46: PUSH1 0x01 00002c48: PUSH1 0x01 00002c4a: PUSH1 0xa0 00002c4c: SHL 00002c4d: SUB 00002c4e: DUP15 00002c4f: AND 00002c50: DUP5 00002c51: MSTORE 00002c52: SWAP1 00002c53: SWAP2 00002c54: MSTORE 00002c55: SWAP1 00002c56: KECCAK256 00002c57: SSTORE 00002c58: PUSH1 0x01 00002c5a: SWAP2 00002c5b: POP 00002c5c: JUMPDEST 00002c5d: DUP5 00002c5e: ISZERO 00002c5f: PUSH2 0x2d0c 00002c62: JUMPI 00002c63: PUSH1 0x00 00002c65: PUSH2 0x2c6c 00002c68: PUSH2 0x304a 00002c6b: JUMP 00002c6c: JUMPDEST 00002c6d: PUSH1 0x01 00002c6f: PUSH1 0x01 00002c71: PUSH1 0xa0 00002c73: SHL 00002c74: SUB 00002c75: AND 00002c76: PUSH4 0xf9a4cb1b 00002c7b: DUP12 00002c7c: PUSH1 0x40 00002c7e: MLOAD 00002c7f: DUP3 00002c80: PUSH4 0xffffffff 00002c85: AND 00002c86: PUSH1 0xe0 00002c88: SHL 00002c89: DUP2 00002c8a: MSTORE 00002c8b: PUSH1 0x04 00002c8d: ADD 00002c8e: PUSH2 0x2c97 00002c91: SWAP2 00002c92: SWAP1 00002c93: PUSH2 0x5575 00002c96: JUMP 00002c97: JUMPDEST 00002c98: PUSH1 0x20 00002c9a: PUSH1 0x40 00002c9c: MLOAD 00002c9d: DUP1 00002c9e: DUP4 00002c9f: SUB 00002ca0: DUP2 00002ca1: DUP7 00002ca2: DUP1 00002ca3: EXTCODESIZE 00002ca4: ISZERO 00002ca5: DUP1 00002ca6: ISZERO 00002ca7: PUSH2 0x2caf 00002caa: JUMPI 00002cab: PUSH1 0x00 00002cad: DUP1 00002cae: REVERT 00002caf: JUMPDEST 00002cb0: POP 00002cb1: GAS 00002cb2: STATICCALL 00002cb3: ISZERO 00002cb4: DUP1 00002cb5: ISZERO 00002cb6: PUSH2 0x2cc3 00002cb9: JUMPI 00002cba: RETURNDATASIZE 00002cbb: PUSH1 0x00 00002cbd: DUP1 00002cbe: RETURNDATACOPY 00002cbf: RETURNDATASIZE 00002cc0: PUSH1 0x00 00002cc2: REVERT 00002cc3: JUMPDEST 00002cc4: POP 00002cc5: POP 00002cc6: POP 00002cc7: POP 00002cc8: PUSH1 0x40 00002cca: MLOAD 00002ccb: RETURNDATASIZE 00002ccc: PUSH1 0x1f 00002cce: NOT 00002ccf: PUSH1 0x1f 00002cd1: DUP3 00002cd2: ADD 00002cd3: AND 00002cd4: DUP3 00002cd5: ADD 00002cd6: DUP1 00002cd7: PUSH1 0x40 00002cd9: MSTORE 00002cda: POP 00002cdb: DUP2 00002cdc: ADD 00002cdd: SWAP1 00002cde: PUSH2 0x2ce7 00002ce1: SWAP2 00002ce2: SWAP1 00002ce3: PUSH2 0x5022 00002ce6: JUMP 00002ce7: JUMPDEST 00002ce8: SWAP1 00002ce9: POP 00002cea: PUSH1 0x00 00002cec: DUP2 00002ced: SLT 00002cee: ISZERO 00002cef: PUSH2 0x2d0a 00002cf2: JUMPI 00002cf3: PUSH1 0x40 00002cf5: MLOAD 00002cf6: PUSH3 0x461bcd 00002cfa: PUSH1 0xe5 00002cfc: SHL 00002cfd: DUP2 00002cfe: MSTORE 00002cff: PUSH1 0x04 00002d01: ADD 00002d02: PUSH2 0x08ca 00002d05: SWAP1 00002d06: PUSH2 0x5bf0 00002d09: JUMP 00002d0a: JUMPDEST 00002d0b: POP 00002d0c: JUMPDEST 00002d0d: DUP2 00002d0e: ISZERO 00002d0f: PUSH2 0x2d5c 00002d12: JUMPI 00002d13: PUSH2 0x2d1d 00002d16: DUP8 00002d17: DUP10 00002d18: DUP9 00002d19: PUSH2 0x3f26 00002d1c: JUMP 00002d1d: JUMPDEST 00002d1e: DUP3 00002d1f: PUSH2 0xffff 00002d22: AND 00002d23: PUSH32 0x3a1f8a7d4c39f62327e9a798fb5c25bdd080a161bd152f56eb2e2c7d6ad69fb8 00002d44: DUP10 00002d45: DUP9 00002d46: PUSH1 0x40 00002d48: MLOAD 00002d49: PUSH2 0x2d53 00002d4c: SWAP3 00002d4d: SWAP2 00002d4e: SWAP1 00002d4f: PUSH2 0x57a8 00002d52: JUMP 00002d53: JUMPDEST 00002d54: PUSH1 0x40 00002d56: MLOAD 00002d57: DUP1 00002d58: SWAP2 00002d59: SUB 00002d5a: SWAP1 00002d5b: LOG2 00002d5c: JUMPDEST 00002d5d: POP 00002d5e: SWAP8 00002d5f: SWAP7 00002d60: POP 00002d61: POP 00002d62: POP 00002d63: POP 00002d64: POP 00002d65: POP 00002d66: POP 00002d67: JUMP 00002d68: JUMPDEST 00002d69: PUSH1 0x00 00002d6b: DUP3 00002d6c: PUSH2 0x2d77 00002d6f: JUMPI 00002d70: POP 00002d71: PUSH1 0x00 00002d73: PUSH2 0x2262 00002d76: JUMP 00002d77: JUMPDEST 00002d78: DUP3 00002d79: PUSH1 0x00 00002d7b: NOT 00002d7c: EQ 00002d7d: DUP1 00002d7e: ISZERO 00002d7f: PUSH2 0x2d8b 00002d82: JUMPI 00002d83: POP 00002d84: PUSH1 0x01 00002d86: PUSH1 0xff 00002d88: SHL 00002d89: DUP3 00002d8a: EQ 00002d8b: JUMPDEST 00002d8c: ISZERO 00002d8d: PUSH2 0x2da8 00002d90: JUMPI 00002d91: PUSH1 0x40 00002d93: MLOAD 00002d94: PUSH3 0x461bcd 00002d98: PUSH1 0xe5 00002d9a: SHL 00002d9b: DUP2 00002d9c: MSTORE 00002d9d: PUSH1 0x04 00002d9f: ADD 00002da0: PUSH2 0x08ca 00002da3: SWAP1 00002da4: PUSH2 0x5b72 00002da7: JUMP 00002da8: JUMPDEST 00002da9: DUP3 00002daa: DUP3 00002dab: MUL 00002dac: DUP3 00002dad: DUP5 00002dae: DUP3 00002daf: DUP2 00002db0: PUSH2 0x2db5 00002db3: JUMPI 00002db4: INVALID 00002db5: JUMPDEST 00002db6: SDIV 00002db7: EQ 00002db8: PUSH2 0x2af3 00002dbb: JUMPI 00002dbc: PUSH1 0x40 00002dbe: MLOAD 00002dbf: PUSH3 0x461bcd 00002dc3: PUSH1 0xe5 00002dc5: SHL 00002dc6: DUP2 00002dc7: MSTORE 00002dc8: PUSH1 0x04 00002dca: ADD 00002dcb: PUSH2 0x08ca 00002dce: SWAP1 00002dcf: PUSH2 0x5b72 00002dd2: JUMP 00002dd3: JUMPDEST 00002dd4: PUSH1 0x00 00002dd6: DUP2 00002dd7: PUSH2 0x2df2 00002dda: JUMPI 00002ddb: PUSH1 0x40 00002ddd: MLOAD 00002dde: PUSH3 0x461bcd 00002de2: PUSH1 0xe5 00002de4: SHL 00002de5: DUP2 00002de6: MSTORE 00002de7: PUSH1 0x04 00002de9: ADD 00002dea: PUSH2 0x08ca 00002ded: SWAP1 00002dee: PUSH2 0x5cec 00002df1: JUMP 00002df2: JUMPDEST 00002df3: DUP2 00002df4: PUSH1 0x00 00002df6: NOT 00002df7: EQ 00002df8: DUP1 00002df9: ISZERO 00002dfa: PUSH2 0x2e06 00002dfd: JUMPI 00002dfe: POP 00002dff: PUSH1 0x01 00002e01: PUSH1 0xff 00002e03: SHL 00002e04: DUP4 00002e05: EQ 00002e06: JUMPDEST 00002e07: ISZERO 00002e08: PUSH2 0x2e23 00002e0b: JUMPI 00002e0c: PUSH1 0x40 00002e0e: MLOAD 00002e0f: PUSH3 0x461bcd 00002e13: PUSH1 0xe5 00002e15: SHL 00002e16: DUP2 00002e17: MSTORE 00002e18: PUSH1 0x04 00002e1a: ADD 00002e1b: PUSH2 0x08ca 00002e1e: SWAP1 00002e1f: PUSH2 0x5a56 00002e22: JUMP 00002e23: JUMPDEST 00002e24: PUSH1 0x00 00002e26: DUP3 00002e27: DUP5 00002e28: DUP2 00002e29: PUSH2 0x2e2e 00002e2c: JUMPI 00002e2d: INVALID 00002e2e: JUMPDEST 00002e2f: SDIV 00002e30: SWAP5 00002e31: SWAP4 00002e32: POP 00002e33: POP 00002e34: POP 00002e35: POP 00002e36: JUMP 00002e37: JUMPDEST 00002e38: PUSH1 0x00 00002e3a: DUP1 00002e3b: PUSH2 0x2e45 00002e3e: DUP7 00002e3f: PUSH1 0x00 00002e41: PUSH2 0x3fc0 00002e44: JUMP 00002e45: JUMPDEST 00002e46: SWAP1 00002e47: POP 00002e48: PUSH1 0x00 00002e4a: PUSH2 0x2e52 00002e4d: DUP6 00002e4e: PUSH2 0x40a1 00002e51: JUMP 00002e52: JUMPDEST 00002e53: SWAP1 00002e54: POP 00002e55: PUSH1 0x00 00002e57: PUSH2 0x2ecc 00002e5a: PUSH2 0x2ec7 00002e5d: DUP9 00002e5e: PUSH2 0x2ebb 00002e61: DUP12 00002e62: PUSH1 0x20 00002e64: ADD 00002e65: MLOAD 00002e66: PUSH1 0x01 00002e68: PUSH1 0x01 00002e6a: PUSH1 0x80 00002e6c: SHL 00002e6d: SUB 00002e6e: AND 00002e6f: PUSH2 0x2ebb 00002e72: DUP11 00002e73: PUSH2 0x2e84 00002e76: JUMPI 00002e77: PUSH8 0x0de0b6b3a7640000 00002e80: PUSH2 0x2e8a 00002e83: JUMP 00002e84: JUMPDEST 00002e85: DUP14 00002e86: PUSH1 0x60 00002e88: ADD 00002e89: MLOAD 00002e8a: JUMPDEST 00002e8b: PUSH1 0x01 00002e8d: PUSH1 0x01 00002e8f: PUSH1 0x80 00002e91: SHL 00002e92: SUB 00002e93: AND 00002e94: PUSH2 0x2eaf 00002e97: DUP10 00002e98: PUSH1 0x01 00002e9a: PUSH1 0x01 00002e9c: PUSH1 0x80 00002e9e: SHL 00002e9f: SUB 00002ea0: AND 00002ea1: DUP12 00002ea2: PUSH2 0x40c2 00002ea5: SWAP1 00002ea6: SWAP2 00002ea7: SWAP1 00002ea8: PUSH4 0xffffffff 00002ead: AND 00002eae: JUMP 00002eaf: JUMPDEST 00002eb0: SWAP1 00002eb1: PUSH4 0xffffffff 00002eb6: PUSH2 0x40c2 00002eb9: AND 00002eba: JUMP 00002ebb: JUMPDEST 00002ebc: SWAP1 00002ebd: PUSH4 0xffffffff 00002ec2: PUSH2 0x40fc 00002ec5: AND 00002ec6: JUMP 00002ec7: JUMPDEST 00002ec8: PUSH2 0x2a84 00002ecb: JUMP 00002ecc: JUMPDEST 00002ecd: PUSH1 0x01 00002ecf: PUSH1 0x01 00002ed1: PUSH1 0x80 00002ed3: SHL 00002ed4: SUB 00002ed5: AND 00002ed6: SWAP1 00002ed7: POP 00002ed8: PUSH1 0x00 00002eda: DUP7 00002edb: SGT 00002edc: PUSH2 0x2eed 00002edf: JUMPI 00002ee0: PUSH2 0x2ee8 00002ee3: DUP2 00002ee4: PUSH2 0x361b 00002ee7: JUMP 00002ee8: JUMPDEST 00002ee9: PUSH2 0x2eef 00002eec: JUMP 00002eed: JUMPDEST 00002eee: DUP1 00002eef: JUMPDEST 00002ef0: SWAP4 00002ef1: POP 00002ef2: POP 00002ef3: POP 00002ef4: POP 00002ef5: JUMPDEST 00002ef6: SWAP5 00002ef7: SWAP4 00002ef8: POP 00002ef9: POP 00002efa: POP 00002efb: POP 00002efc: JUMP 00002efd: JUMPDEST 00002efe: PUSH1 0x00 00002f00: PUSH1 0x3c 00002f02: DUP2 00002f03: PUSH1 0x03 00002f05: JUMPDEST 00002f06: DUP2 00002f07: MSTORE 00002f08: PUSH1 0x20 00002f0a: DUP2 00002f0b: ADD 00002f0c: SWAP2 00002f0d: SWAP1 00002f0e: SWAP2 00002f0f: MSTORE 00002f10: PUSH1 0x40 00002f12: ADD 00002f13: PUSH1 0x00 00002f15: KECCAK256 00002f16: SLOAD 00002f17: PUSH1 0x01 00002f19: PUSH1 0x01 00002f1b: PUSH1 0xa0 00002f1d: SHL 00002f1e: SUB 00002f1f: AND 00002f20: CALLER 00002f21: EQ 00002f22: SWAP2 00002f23: SWAP1 00002f24: POP 00002f25: JUMP 00002f26: JUMPDEST 00002f27: PUSH1 0x01 00002f29: PUSH1 0x01 00002f2b: PUSH1 0x80 00002f2d: SHL 00002f2e: SUB 00002f2f: CALLVALUE 00002f30: GT 00002f31: ISZERO 00002f32: PUSH2 0x2f4d 00002f35: JUMPI 00002f36: PUSH1 0x40 00002f38: MLOAD 00002f39: PUSH3 0x461bcd 00002f3d: PUSH1 0xe5 00002f3f: SHL 00002f40: DUP2 00002f41: MSTORE 00002f42: PUSH1 0x04 00002f44: ADD 00002f45: PUSH2 0x08ca 00002f48: SWAP1 00002f49: PUSH2 0x59ae 00002f4c: JUMP 00002f4d: JUMPDEST 00002f4e: PUSH1 0x00 00002f50: DUP1 00002f51: SLOAD 00002f52: PUSH1 0x40 00002f54: DUP1 00002f55: MLOAD 00002f56: PUSH4 0x0d0e30db 00002f5b: PUSH1 0xe4 00002f5d: SHL 00002f5e: DUP2 00002f5f: MSTORE 00002f60: SWAP1 00002f61: MLOAD 00002f62: PUSH1 0x01 00002f64: PUSH1 0x01 00002f66: PUSH1 0xa0 00002f68: SHL 00002f69: SUB 00002f6a: SWAP1 00002f6b: SWAP3 00002f6c: AND 00002f6d: SWAP3 00002f6e: PUSH4 0xd0e30db0 00002f73: SWAP3 00002f74: CALLVALUE 00002f75: SWAP3 00002f76: PUSH1 0x04 00002f78: DUP1 00002f79: DUP3 00002f7a: ADD 00002f7b: SWAP4 00002f7c: SWAP3 00002f7d: SWAP2 00002f7e: DUP3 00002f7f: SWAP1 00002f80: SUB 00002f81: ADD 00002f82: DUP2 00002f83: DUP6 00002f84: DUP9 00002f85: DUP1 00002f86: EXTCODESIZE 00002f87: ISZERO 00002f88: DUP1 00002f89: ISZERO 00002f8a: PUSH2 0x2f92 00002f8d: JUMPI 00002f8e: PUSH1 0x00 00002f90: DUP1 00002f91: REVERT 00002f92: JUMPDEST 00002f93: POP 00002f94: GAS 00002f95: CALL 00002f96: ISZERO 00002f97: DUP1 00002f98: ISZERO 00002f99: PUSH2 0x2fa6 00002f9c: JUMPI 00002f9d: RETURNDATASIZE 00002f9e: PUSH1 0x00 00002fa0: DUP1 00002fa1: RETURNDATACOPY 00002fa2: RETURNDATASIZE 00002fa3: PUSH1 0x00 00002fa5: REVERT 00002fa6: JUMPDEST 00002fa7: POP 00002fa8: POP 00002fa9: POP 00002faa: POP 00002fab: PUSH1 0x01 00002fad: PUSH1 0x01 00002faf: PUSH1 0xa0 00002fb1: SHL 00002fb2: SUB 00002fb3: DUP3 00002fb4: AND 00002fb5: PUSH1 0x00 00002fb7: SWAP1 00002fb8: DUP2 00002fb9: MSTORE 00002fba: PUSH1 0x00 00002fbc: DUP1 00002fbd: MLOAD 00002fbe: PUSH1 0x20 00002fc0: PUSH2 0x5f52 00002fc3: DUP4 00002fc4: CODECOPY 00002fc5: DUP2 00002fc6: MLOAD 00002fc7: SWAP2 00002fc8: MSTORE 00002fc9: PUSH1 0x20 00002fcb: MSTORE 00002fcc: PUSH1 0x40 00002fce: SWAP1 00002fcf: KECCAK256 00002fd0: SLOAD 00002fd1: PUSH2 0x2fe4 00002fd4: SWAP2 00002fd5: POP 00002fd6: CALLVALUE 00002fd7: PUSH1 0x01 00002fd9: PUSH1 0x01 00002fdb: PUSH1 0x80 00002fdd: SHL 00002fde: SUB 00002fdf: AND 00002fe0: PUSH2 0x2aad 00002fe3: JUMP 00002fe4: JUMPDEST 00002fe5: PUSH1 0x01 00002fe7: PUSH1 0x01 00002fe9: PUSH1 0xa0 00002feb: SHL 00002fec: SUB 00002fed: DUP3 00002fee: AND 00002fef: PUSH1 0x00 00002ff1: SWAP1 00002ff2: DUP2 00002ff3: MSTORE 00002ff4: PUSH1 0x00 00002ff6: DUP1 00002ff7: MLOAD 00002ff8: PUSH1 0x20 00002ffa: PUSH2 0x5f52 00002ffd: DUP4 00002ffe: CODECOPY 00002fff: DUP2 00003000: MLOAD 00003001: SWAP2 00003002: MSTORE 00003003: PUSH1 0x20 00003005: MSTORE 00003006: PUSH1 0x40 00003008: DUP1 00003009: DUP3 0000300a: KECCAK256 0000300b: SWAP3 0000300c: SWAP1 0000300d: SWAP3 0000300e: SSTORE 0000300f: SWAP1 00003010: MLOAD 00003011: PUSH32 0x1ebdf9946bb1531759f2100f77d6319f8f0a70663c87f0e3c4976cf417c6ec07 00003032: SWAP1 00003033: PUSH2 0x303f 00003036: SWAP1 00003037: DUP5 00003038: SWAP1 00003039: CALLVALUE 0000303a: SWAP1 0000303b: PUSH2 0x5853 0000303e: JUMP 0000303f: JUMPDEST 00003040: PUSH1 0x40 00003042: MLOAD 00003043: DUP1 00003044: SWAP2 00003045: SUB 00003046: SWAP1 00003047: LOG2 00003048: POP 00003049: JUMP 0000304a: JUMPDEST 0000304b: PUSH1 0x01 0000304d: PUSH1 0x00 0000304f: MSTORE 00003050: PUSH1 0x3c 00003052: PUSH1 0x20 00003054: MSTORE 00003055: PUSH32 0xa3f0af13bbc24f9a599303045bb90dfcdb939abd7adcca60700cc08fa292f791 00003076: SLOAD 00003077: PUSH1 0x01 00003079: PUSH1 0x01 0000307b: PUSH1 0xa0 0000307d: SHL 0000307e: SUB 0000307f: AND 00003080: SWAP1 00003081: JUMP 00003082: JUMPDEST 00003083: PUSH1 0x00 00003085: DUP3 00003086: DUP3 00003087: ADD 00003088: PUSH1 0x01 0000308a: PUSH1 0x01 0000308c: PUSH1 0x80 0000308e: SHL 0000308f: SUB 00003090: DUP1 00003091: DUP6 00003092: AND 00003093: SWAP1 00003094: DUP3 00003095: AND 00003096: LT 00003097: ISZERO 00003098: PUSH2 0x2af3 0000309b: JUMPI 0000309c: PUSH1 0x40 0000309e: MLOAD 0000309f: PUSH3 0x461bcd 000030a3: PUSH1 0xe5 000030a5: SHL 000030a6: DUP2 000030a7: MSTORE 000030a8: PUSH1 0x04 000030aa: ADD 000030ab: PUSH2 0x08ca 000030ae: SWAP1 000030af: PUSH2 0x5909 000030b2: JUMP 000030b3: JUMPDEST 000030b4: PUSH1 0x00 000030b6: DUP1 000030b7: PUSH2 0x30c0 000030ba: DUP5 000030bb: DUP5 000030bc: PUSH2 0x4124 000030bf: JUMP 000030c0: JUMPDEST 000030c1: SWAP1 000030c2: POP 000030c3: PUSH1 0x00 000030c5: DUP2 000030c6: SLT 000030c7: ISZERO 000030c8: PUSH2 0x2af3 000030cb: JUMPI 000030cc: PUSH1 0x40 000030ce: MLOAD 000030cf: PUSH3 0x461bcd 000030d3: PUSH1 0xe5 000030d5: SHL 000030d6: DUP2 000030d7: MSTORE 000030d8: PUSH1 0x04 000030da: ADD 000030db: PUSH2 0x08ca 000030de: SWAP1 000030df: PUSH2 0x5cd1 000030e2: JUMP 000030e3: JUMPDEST 000030e4: ADDRESS 000030e5: EXTCODESIZE 000030e6: ISZERO 000030e7: SWAP1 000030e8: JUMP 000030e9: JUMPDEST 000030ea: PUSH2 0x30f1 000030ed: PUSH2 0x46dd 000030f0: JUMP 000030f1: JUMPDEST 000030f2: PUSH2 0x30fa 000030f5: DUP4 000030f6: PUSH2 0x24ab 000030f9: JUMP 000030fa: JUMPDEST 000030fb: PUSH2 0x3116 000030fe: JUMPI 000030ff: PUSH1 0x40 00003101: MLOAD 00003102: PUSH3 0x461bcd 00003106: PUSH1 0xe5 00003108: SHL 00003109: DUP2 0000310a: MSTORE 0000310b: PUSH1 0x04 0000310d: ADD 0000310e: PUSH2 0x08ca 00003111: SWAP1 00003112: PUSH2 0x5aec 00003115: JUMP 00003116: JUMPDEST 00003117: PUSH2 0x311f 0000311a: DUP3 0000311b: PUSH2 0x24ab 0000311e: JUMP 0000311f: JUMPDEST 00003120: PUSH2 0x313b 00003123: JUMPI 00003124: PUSH1 0x40 00003126: MLOAD 00003127: PUSH3 0x461bcd 0000312b: PUSH1 0xe5 0000312d: SHL 0000312e: DUP2 0000312f: MSTORE 00003130: PUSH1 0x04 00003132: ADD 00003133: PUSH2 0x08ca 00003136: SWAP1 00003137: PUSH2 0x5aec 0000313a: JUMP 0000313b: JUMPDEST 0000313c: DUP2 0000313d: PUSH2 0xffff 00003140: AND 00003141: DUP4 00003142: PUSH2 0xffff 00003145: AND 00003146: EQ 00003147: ISZERO 00003148: PUSH2 0x3163 0000314b: JUMPI 0000314c: PUSH1 0x40 0000314e: MLOAD 0000314f: PUSH3 0x461bcd 00003153: PUSH1 0xe5 00003155: SHL 00003156: DUP2 00003157: MSTORE 00003158: PUSH1 0x04 0000315a: ADD 0000315b: PUSH2 0x08ca 0000315e: SWAP1 0000315f: PUSH2 0x5aec 00003162: JUMP 00003163: JUMPDEST 00003164: PUSH2 0x316b 00003167: PUSH2 0x4688 0000316a: JUMP 0000316b: JUMPDEST 0000316c: POP 0000316d: PUSH2 0xffff 00003170: DUP4 00003171: AND 00003172: PUSH1 0x00 00003174: SWAP1 00003175: DUP2 00003176: MSTORE 00003177: PUSH1 0x05 00003179: PUSH1 0x20 0000317b: SWAP1 0000317c: DUP2 0000317d: MSTORE 0000317e: PUSH1 0x40 00003180: DUP1 00003181: DUP4 00003182: KECCAK256 00003183: DUP4 00003184: DUP1 00003185: MSTORE 00003186: DUP3 00003187: MSTORE 00003188: SWAP2 00003189: DUP3 0000318a: SWAP1 0000318b: KECCAK256 0000318c: DUP3 0000318d: MLOAD 0000318e: PUSH1 0x80 00003190: DUP2 00003191: ADD 00003192: DUP5 00003193: MSTORE 00003194: DUP2 00003195: SLOAD 00003196: PUSH1 0x01 00003198: PUSH1 0x01 0000319a: PUSH1 0xa0 0000319c: SHL 0000319d: SUB 0000319e: AND 0000319f: DUP2 000031a0: MSTORE 000031a1: PUSH1 0x01 000031a3: DUP3 000031a4: ADD 000031a5: SLOAD 000031a6: PUSH1 0x01 000031a8: PUSH1 0x01 000031aa: PUSH1 0x80 000031ac: SHL 000031ad: SUB 000031ae: DUP1 000031af: DUP3 000031b0: AND 000031b1: SWAP5 000031b2: DUP4 000031b3: ADD 000031b4: SWAP5 000031b5: SWAP1 000031b6: SWAP5 000031b7: MSTORE 000031b8: PUSH1 0x01 000031ba: PUSH1 0x80 000031bc: SHL 000031bd: SWAP1 000031be: DIV 000031bf: PUSH1 0xff 000031c1: AND 000031c2: ISZERO 000031c3: ISZERO 000031c4: SWAP4 000031c5: DUP2 000031c6: ADD 000031c7: SWAP4 000031c8: SWAP1 000031c9: SWAP4 000031ca: MSTORE 000031cb: PUSH1 0x02 000031cd: ADD 000031ce: SLOAD 000031cf: AND 000031d0: PUSH1 0x60 000031d2: DUP3 000031d3: ADD 000031d4: MSTORE 000031d5: PUSH2 0x31dc 000031d8: PUSH2 0x4688 000031db: JUMP 000031dc: JUMPDEST 000031dd: PUSH2 0xffff 000031e0: DUP5 000031e1: AND 000031e2: ISZERO 000031e3: PUSH2 0x3250 000031e6: JUMPI 000031e7: POP 000031e8: PUSH2 0xffff 000031eb: DUP4 000031ec: AND 000031ed: PUSH1 0x00 000031ef: SWAP1 000031f0: DUP2 000031f1: MSTORE 000031f2: PUSH1 0x05 000031f4: PUSH1 0x20 000031f6: SWAP1 000031f7: DUP2 000031f8: MSTORE 000031f9: PUSH1 0x40 000031fb: DUP1 000031fc: DUP4 000031fd: KECCAK256 000031fe: DUP4 000031ff: DUP1 00003200: MSTORE 00003201: DUP3 00003202: MSTORE 00003203: SWAP2 00003204: DUP3 00003205: SWAP1 00003206: KECCAK256 00003207: DUP3 00003208: MLOAD 00003209: PUSH1 0x80 0000320b: DUP2 0000320c: ADD 0000320d: DUP5 0000320e: MSTORE 0000320f: DUP2 00003210: SLOAD 00003211: PUSH1 0x01 00003213: PUSH1 0x01 00003215: PUSH1 0xa0 00003217: SHL 00003218: SUB 00003219: AND 0000321a: DUP2 0000321b: MSTORE 0000321c: PUSH1 0x01 0000321e: DUP3 0000321f: ADD 00003220: SLOAD 00003221: PUSH1 0x01 00003223: PUSH1 0x01 00003225: PUSH1 0x80 00003227: SHL 00003228: SUB 00003229: DUP1 0000322a: DUP3 0000322b: AND 0000322c: SWAP5 0000322d: DUP4 0000322e: ADD 0000322f: SWAP5 00003230: SWAP1 00003231: SWAP5 00003232: MSTORE 00003233: PUSH1 0x01 00003235: PUSH1 0x80 00003237: SHL 00003238: SWAP1 00003239: DIV 0000323a: PUSH1 0xff 0000323c: AND 0000323d: ISZERO 0000323e: ISZERO 0000323f: SWAP4 00003240: DUP2 00003241: ADD 00003242: SWAP4 00003243: SWAP1 00003244: SWAP4 00003245: MSTORE 00003246: PUSH1 0x02 00003248: ADD 00003249: SLOAD 0000324a: AND 0000324b: PUSH1 0x60 0000324d: DUP3 0000324e: ADD 0000324f: MSTORE 00003250: JUMPDEST 00003251: PUSH1 0x00 00003253: PUSH2 0x325d 00003256: DUP4 00003257: DUP4 00003258: DUP8 00003259: PUSH2 0x416a 0000325c: JUMP 0000325d: JUMPDEST 0000325e: PUSH1 0x40 00003260: DUP1 00003261: MLOAD 00003262: PUSH1 0xc0 00003264: DUP2 00003265: ADD 00003266: DUP3 00003267: MSTORE 00003268: SWAP2 00003269: DUP3 0000326a: MSTORE 0000326b: PUSH2 0xffff 0000326e: SWAP8 0000326f: DUP9 00003270: AND 00003271: PUSH1 0x20 00003273: DUP1 00003274: DUP5 00003275: ADD 00003276: DUP3 00003277: SWAP1 00003278: MSTORE 00003279: SWAP8 0000327a: SWAP1 0000327b: SWAP9 0000327c: AND 0000327d: DUP3 0000327e: DUP3 0000327f: ADD 00003280: DUP2 00003281: SWAP1 00003282: MSTORE 00003283: PUSH1 0x00 00003285: SWAP9 00003286: DUP10 00003287: MSTORE 00003288: PUSH1 0x02 0000328a: DUP1 0000328b: DUP10 0000328c: MSTORE 0000328d: DUP3 0000328e: DUP11 0000328f: KECCAK256 00003290: SLOAD 00003291: PUSH1 0x60 00003293: DUP6 00003294: ADD 00003295: MSTORE 00003296: SWAP1 00003297: DUP10 00003298: MSTORE 00003299: SWAP1 0000329a: SWAP7 0000329b: MSTORE 0000329c: SWAP5 0000329d: SWAP1 0000329e: SWAP6 0000329f: KECCAK256 000032a0: SLOAD 000032a1: PUSH1 0x80 000032a3: DUP6 000032a4: ADD 000032a5: MSTORE 000032a6: POP 000032a7: PUSH1 0xa0 000032a9: DUP4 000032aa: ADD 000032ab: MSTORE 000032ac: POP 000032ad: SWAP2 000032ae: SWAP1 000032af: POP 000032b0: JUMP 000032b1: JUMPDEST 000032b2: PUSH1 0x00 000032b4: DUP1 000032b5: DUP1 000032b6: PUSH1 0x01 000032b8: PUSH1 0x01 000032ba: PUSH1 0xa0 000032bc: SHL 000032bd: SUB 000032be: DUP7 000032bf: AND 000032c0: CALLER 000032c1: EQ 000032c2: ISZERO 000032c3: PUSH2 0x32de 000032c6: JUMPI 000032c7: PUSH1 0x40 000032c9: MLOAD 000032ca: PUSH3 0x461bcd 000032ce: PUSH1 0xe5 000032d0: SHL 000032d1: DUP2 000032d2: MSTORE 000032d3: PUSH1 0x04 000032d5: ADD 000032d6: PUSH2 0x08ca 000032d9: SWAP1 000032da: PUSH2 0x5a02 000032dd: JUMP 000032de: JUMPDEST 000032df: PUSH1 0x01 000032e1: PUSH1 0x01 000032e3: PUSH1 0x80 000032e5: SHL 000032e6: SUB 000032e7: DUP6 000032e8: AND 000032e9: PUSH2 0x32fa 000032ec: JUMPI 000032ed: POP 000032ee: PUSH1 0x00 000032f0: SWAP2 000032f1: POP 000032f2: DUP2 000032f3: SWAP1 000032f4: POP 000032f5: DUP1 000032f6: PUSH2 0x34f3 000032f9: JUMP 000032fa: JUMPDEST 000032fb: PUSH2 0x3302 000032fe: PUSH2 0x4720 00003301: JUMP 00003302: JUMPDEST 00003303: PUSH2 0x3315 00003306: DUP8 00003307: DUP7 00003308: PUSH1 0x20 0000330a: ADD 0000330b: MLOAD 0000330c: DUP8 0000330d: PUSH1 0x40 0000330f: ADD 00003310: MLOAD 00003311: PUSH2 0x3a60 00003314: JUMP 00003315: JUMPDEST 00003316: PUSH1 0x20 00003318: DUP1 00003319: DUP8 0000331a: ADD 0000331b: MLOAD 0000331c: PUSH2 0xffff 0000331f: SWAP1 00003320: DUP2 00003321: AND 00003322: PUSH1 0x00 00003324: SWAP1 00003325: DUP2 00003326: MSTORE 00003327: PUSH1 0x06 00003329: DUP1 0000332a: DUP5 0000332b: MSTORE 0000332c: PUSH1 0x40 0000332e: DUP1 0000332f: DUP4 00003330: KECCAK256 00003331: PUSH1 0x01 00003333: PUSH1 0x01 00003335: PUSH1 0xa0 00003337: SHL 00003338: SUB 00003339: DUP15 0000333a: AND 0000333b: DUP1 0000333c: DUP6 0000333d: MSTORE 0000333e: SWAP1 0000333f: DUP7 00003340: MSTORE 00003341: DUP2 00003342: DUP5 00003343: KECCAK256 00003344: SLOAD 00003345: DUP3 00003346: DUP14 00003347: ADD 00003348: MLOAD 00003349: SWAP1 0000334a: SWAP6 0000334b: AND 0000334c: DUP5 0000334d: MSTORE 0000334e: SWAP2 0000334f: DUP6 00003350: MSTORE 00003351: DUP1 00003352: DUP4 00003353: KECCAK256 00003354: SWAP2 00003355: DUP4 00003356: MSTORE 00003357: SWAP4 00003358: MSTORE 00003359: SWAP2 0000335a: SWAP1 0000335b: SWAP2 0000335c: KECCAK256 0000335d: SLOAD 0000335e: SWAP2 0000335f: SWAP3 00003360: POP 00003361: SWAP1 00003362: PUSH2 0x3373 00003365: PUSH1 0x01 00003367: PUSH1 0x01 00003369: PUSH1 0x80 0000336b: SHL 0000336c: SUB 0000336d: DUP10 0000336e: AND 0000336f: PUSH2 0x361b 00003372: JUMP 00003373: JUMPDEST 00003374: DUP3 00003375: SGT 00003376: ISZERO 00003377: PUSH2 0x3392 0000337a: JUMPI 0000337b: PUSH1 0x40 0000337d: MLOAD 0000337e: PUSH3 0x461bcd 00003382: PUSH1 0xe5 00003384: SHL 00003385: DUP2 00003386: MSTORE 00003387: PUSH1 0x04 00003389: ADD 0000338a: PUSH2 0x08ca 0000338d: SWAP1 0000338e: PUSH2 0x5d21 00003391: JUMP 00003392: JUMPDEST 00003393: PUSH2 0x339a 00003396: PUSH2 0x474f 00003399: JUMP 0000339a: JUMPDEST 0000339b: PUSH20 0xb0ec9ba4ce826d925acf5474d365a80a9fba078e 000033b0: PUSH4 0xfe51ab13 000033b5: DUP12 000033b6: DUP5 000033b7: DUP13 000033b8: DUP9 000033b9: DUP14 000033ba: PUSH2 0x33c1 000033bd: PUSH2 0x304a 000033c0: JUMP 000033c1: JUMPDEST 000033c2: PUSH1 0x40 000033c4: MLOAD 000033c5: DUP8 000033c6: PUSH4 0xffffffff 000033cb: AND 000033cc: PUSH1 0xe0 000033ce: SHL 000033cf: DUP2 000033d0: MSTORE 000033d1: PUSH1 0x04 000033d3: ADD 000033d4: PUSH2 0x33e2 000033d7: SWAP7 000033d8: SWAP6 000033d9: SWAP5 000033da: SWAP4 000033db: SWAP3 000033dc: SWAP2 000033dd: SWAP1 000033de: PUSH2 0x574f 000033e1: JUMP 000033e2: JUMPDEST 000033e3: PUSH1 0x80 000033e5: PUSH1 0x40 000033e7: MLOAD 000033e8: DUP1 000033e9: DUP4 000033ea: SUB 000033eb: DUP2 000033ec: DUP7 000033ed: DUP1 000033ee: EXTCODESIZE 000033ef: ISZERO 000033f0: DUP1 000033f1: ISZERO 000033f2: PUSH2 0x33fa 000033f5: JUMPI 000033f6: PUSH1 0x00 000033f8: DUP1 000033f9: REVERT 000033fa: JUMPDEST 000033fb: POP 000033fc: GAS 000033fd: DELEGATECALL 000033fe: ISZERO 000033ff: DUP1 00003400: ISZERO 00003401: PUSH2 0x340e 00003404: JUMPI 00003405: RETURNDATASIZE 00003406: PUSH1 0x00 00003408: DUP1 00003409: RETURNDATACOPY 0000340a: RETURNDATASIZE 0000340b: PUSH1 0x00 0000340d: REVERT 0000340e: JUMPDEST 0000340f: POP 00003410: POP 00003411: POP 00003412: POP 00003413: PUSH1 0x40 00003415: MLOAD 00003416: RETURNDATASIZE 00003417: PUSH1 0x1f 00003419: NOT 0000341a: PUSH1 0x1f 0000341c: DUP3 0000341d: ADD 0000341e: AND 0000341f: DUP3 00003420: ADD 00003421: DUP1 00003422: PUSH1 0x40 00003424: MSTORE 00003425: POP 00003426: DUP2 00003427: ADD 00003428: SWAP1 00003429: PUSH2 0x3432 0000342c: SWAP2 0000342d: SWAP1 0000342e: PUSH2 0x512a 00003431: JUMP 00003432: JUMPDEST 00003433: SWAP1 00003434: POP 00003435: DUP1 00003436: PUSH1 0x60 00003438: ADD 00003439: MLOAD 0000343a: DUP3 0000343b: EQ 0000343c: PUSH2 0x346e 0000343f: JUMPI 00003440: PUSH1 0x60 00003442: DUP2 00003443: ADD 00003444: MLOAD 00003445: PUSH1 0x40 00003447: DUP1 00003448: DUP11 00003449: ADD 0000344a: MLOAD 0000344b: PUSH2 0xffff 0000344e: AND 0000344f: PUSH1 0x00 00003451: SWAP1 00003452: DUP2 00003453: MSTORE 00003454: PUSH1 0x06 00003456: PUSH1 0x20 00003458: SWAP1 00003459: DUP2 0000345a: MSTORE 0000345b: DUP3 0000345c: DUP3 0000345d: KECCAK256 0000345e: PUSH1 0x01 00003460: PUSH1 0x01 00003462: PUSH1 0xa0 00003464: SHL 00003465: SUB 00003466: DUP16 00003467: AND 00003468: DUP4 00003469: MSTORE 0000346a: SWAP1 0000346b: MSTORE 0000346c: KECCAK256 0000346d: SSTORE 0000346e: JUMPDEST 0000346f: PUSH1 0x20 00003471: DUP2 00003472: ADD 00003473: MLOAD 00003474: PUSH1 0x01 00003476: PUSH1 0x01 00003478: PUSH1 0x80 0000347a: SHL 0000347b: SUB 0000347c: AND 0000347d: ISZERO 0000347e: PUSH2 0x34ca 00003481: JUMPI 00003482: PUSH1 0x20 00003484: DUP2 00003485: ADD 00003486: MLOAD 00003487: PUSH2 0x34a0 0000348a: SWAP1 0000348b: DUP5 0000348c: SWAP1 0000348d: PUSH1 0x01 0000348f: PUSH1 0x01 00003491: PUSH1 0x80 00003493: SHL 00003494: SUB 00003495: AND 00003496: PUSH4 0xffffffff 0000349b: PUSH2 0x2aad 0000349e: AND 0000349f: JUMP 000034a0: JUMPDEST 000034a1: PUSH1 0x20 000034a3: DUP1 000034a4: DUP11 000034a5: ADD 000034a6: MLOAD 000034a7: PUSH2 0xffff 000034aa: AND 000034ab: PUSH1 0x00 000034ad: SWAP1 000034ae: DUP2 000034af: MSTORE 000034b0: PUSH1 0x06 000034b2: DUP3 000034b3: MSTORE 000034b4: PUSH1 0x40 000034b6: DUP1 000034b7: DUP3 000034b8: KECCAK256 000034b9: PUSH1 0x01 000034bb: PUSH1 0x01 000034bd: PUSH1 0xa0 000034bf: SHL 000034c0: SUB 000034c1: DUP16 000034c2: AND 000034c3: DUP4 000034c4: MSTORE 000034c5: SWAP1 000034c6: SWAP3 000034c7: MSTORE 000034c8: KECCAK256 000034c9: SSTORE 000034ca: JUMPDEST 000034cb: DUP1 000034cc: MLOAD 000034cd: PUSH1 0x00 000034cf: SGT 000034d0: ISZERO 000034d1: PUSH2 0x34d9 000034d4: JUMPI 000034d5: PUSH1 0x00 000034d7: DUP1 000034d8: REVERT 000034d9: JUMPDEST 000034da: DUP1 000034db: PUSH1 0x20 000034dd: ADD 000034de: MLOAD 000034df: DUP2 000034e0: PUSH1 0x00 000034e2: ADD 000034e3: MLOAD 000034e4: DUP3 000034e5: PUSH1 0x40 000034e7: ADD 000034e8: MLOAD 000034e9: SWAP7 000034ea: POP 000034eb: SWAP7 000034ec: POP 000034ed: SWAP7 000034ee: POP 000034ef: POP 000034f0: POP 000034f1: POP 000034f2: POP 000034f3: JUMPDEST 000034f4: SWAP4 000034f5: POP 000034f6: SWAP4 000034f7: POP 000034f8: SWAP4 000034f9: SWAP1 000034fa: POP 000034fb: JUMP 000034fc: JUMPDEST 000034fd: PUSH2 0xffff 00003500: DUP3 00003501: AND 00003502: PUSH1 0x00 00003504: SWAP1 00003505: DUP2 00003506: MSTORE 00003507: PUSH1 0x01 00003509: PUSH1 0x20 0000350b: MSTORE 0000350c: PUSH1 0x40 0000350e: DUP2 0000350f: KECCAK256 00003510: SLOAD 00003511: PUSH1 0x01 00003513: PUSH1 0x01 00003515: PUSH1 0xa0 00003517: SHL 00003518: SUB 00003519: AND 0000351a: SWAP1 0000351b: DUP3 0000351c: SGT 0000351d: ISZERO 0000351e: PUSH2 0x35ff 00003521: JUMPI 00003522: PUSH2 0x3529 00003525: PUSH2 0x4789 00003528: JUMP 00003529: JUMPDEST 0000352a: POP 0000352b: PUSH1 0x01 0000352d: PUSH1 0x01 0000352f: PUSH1 0xa0 00003531: SHL 00003532: SUB 00003533: DUP2 00003534: AND 00003535: PUSH1 0x00 00003537: SWAP1 00003538: DUP2 00003539: MSTORE 0000353a: PUSH1 0x04 0000353c: PUSH1 0x20 0000353e: SWAP1 0000353f: DUP2 00003540: MSTORE 00003541: PUSH1 0x40 00003543: SWAP2 00003544: DUP3 00003545: SWAP1 00003546: KECCAK256 00003547: DUP3 00003548: MLOAD 00003549: DUP1 0000354a: DUP5 0000354b: ADD 0000354c: SWAP1 0000354d: SWAP4 0000354e: MSTORE 0000354f: SLOAD 00003550: PUSH1 0xff 00003552: DUP1 00003553: DUP3 00003554: AND 00003555: ISZERO 00003556: ISZERO 00003557: DUP5 00003558: MSTORE 00003559: PUSH2 0x0100 0000355c: SWAP1 0000355d: SWAP2 0000355e: DIV 0000355f: AND 00003560: ISZERO 00003561: DUP1 00003562: ISZERO 00003563: SWAP2 00003564: DUP4 00003565: ADD 00003566: SWAP2 00003567: SWAP1 00003568: SWAP2 00003569: MSTORE 0000356a: PUSH2 0x35eb 0000356d: JUMPI 0000356e: PUSH2 0xffff 00003571: DUP5 00003572: AND 00003573: PUSH1 0x00 00003575: SWAP1 00003576: DUP2 00003577: MSTORE 00003578: PUSH1 0x06 0000357a: PUSH1 0x20 0000357c: SWAP1 0000357d: DUP2 0000357e: MSTORE 0000357f: PUSH1 0x40 00003581: DUP1 00003582: DUP4 00003583: KECCAK256 00003584: CALLER 00003585: DUP5 00003586: MSTORE 00003587: SWAP1 00003588: SWAP2 00003589: MSTORE 0000358a: SWAP1 0000358b: KECCAK256 0000358c: SLOAD 0000358d: PUSH2 0x359c 00003590: SWAP1 00003591: DUP5 00003592: PUSH4 0xffffffff 00003597: PUSH2 0x30b3 0000359a: AND 0000359b: JUMP 0000359c: JUMPDEST 0000359d: PUSH2 0xffff 000035a0: DUP6 000035a1: AND 000035a2: PUSH1 0x00 000035a4: SWAP1 000035a5: DUP2 000035a6: MSTORE 000035a7: PUSH1 0x06 000035a9: PUSH1 0x20 000035ab: SWAP1 000035ac: DUP2 000035ad: MSTORE 000035ae: PUSH1 0x40 000035b0: DUP1 000035b1: DUP4 000035b2: KECCAK256 000035b3: CALLER 000035b4: DUP1 000035b5: DUP6 000035b6: MSTORE 000035b7: SWAP3 000035b8: MSTORE 000035b9: DUP3 000035ba: KECCAK256 000035bb: SWAP3 000035bc: SWAP1 000035bd: SWAP3 000035be: SSTORE 000035bf: SWAP1 000035c0: PUSH2 0x35c8 000035c3: SWAP1 000035c4: PUSH2 0x41c1 000035c7: JUMP 000035c8: JUMPDEST 000035c9: SLT 000035ca: ISZERO 000035cb: PUSH2 0x35e6 000035ce: JUMPI 000035cf: PUSH1 0x40 000035d1: MLOAD 000035d2: PUSH3 0x461bcd 000035d6: PUSH1 0xe5 000035d8: SHL 000035d9: DUP2 000035da: MSTORE 000035db: PUSH1 0x04 000035dd: ADD 000035de: PUSH2 0x08ca 000035e1: SWAP1 000035e2: PUSH2 0x59e6 000035e5: JUMP 000035e6: JUMPDEST 000035e7: PUSH2 0x35f9 000035ea: JUMP 000035eb: JUMPDEST 000035ec: PUSH2 0x35f7 000035ef: DUP3 000035f0: CALLER 000035f1: DUP6 000035f2: DUP5 000035f3: PUSH2 0x4248 000035f6: JUMP 000035f7: JUMPDEST 000035f8: POP 000035f9: JUMPDEST 000035fa: POP 000035fb: PUSH2 0x09cb 000035fe: JUMP 000035ff: JUMPDEST 00003600: PUSH1 0x00 00003602: DUP3 00003603: SLT 00003604: ISZERO 00003605: PUSH2 0x09cb 00003608: JUMPI 00003609: PUSH2 0x09cb 0000360c: DUP2 0000360d: CALLER 0000360e: PUSH2 0x3616 00003611: DUP6 00003612: PUSH2 0x361b 00003615: JUMP 00003616: JUMPDEST 00003617: PUSH2 0x3f26 0000361a: JUMP 0000361b: JUMPDEST 0000361c: PUSH1 0x00 0000361e: PUSH2 0x2262 00003621: DUP3 00003622: PUSH1 0x00 00003624: NOT 00003625: PUSH2 0x2d68 00003628: JUMP 00003629: JUMPDEST 0000362a: PUSH1 0x00 0000362c: DUP1 0000362d: DUP1 0000362e: PUSH1 0x01 00003630: PUSH1 0x01 00003632: PUSH1 0xa0 00003634: SHL 00003635: SUB 00003636: DUP7 00003637: AND 00003638: CALLER 00003639: EQ 0000363a: ISZERO 0000363b: PUSH2 0x3656 0000363e: JUMPI 0000363f: PUSH1 0x40 00003641: MLOAD 00003642: PUSH3 0x461bcd 00003646: PUSH1 0xe5 00003648: SHL 00003649: DUP2 0000364a: MSTORE 0000364b: PUSH1 0x04 0000364d: ADD 0000364e: PUSH2 0x08ca 00003651: SWAP1 00003652: PUSH2 0x5ad0 00003655: JUMP 00003656: JUMPDEST 00003657: PUSH2 0x365e 0000365a: PUSH2 0x4720 0000365d: JUMP 0000365e: JUMPDEST 0000365f: PUSH2 0x3671 00003662: DUP8 00003663: DUP8 00003664: PUSH1 0x20 00003666: ADD 00003667: MLOAD 00003668: DUP9 00003669: PUSH1 0x40 0000366b: ADD 0000366c: MLOAD 0000366d: PUSH2 0x3a60 00003670: JUMP 00003671: JUMPDEST 00003672: SWAP1 00003673: POP 00003674: PUSH1 0x00 00003676: DUP2 00003677: PUSH1 0x00 00003679: ADD 0000367a: MLOAD 0000367b: SLT 0000367c: PUSH2 0x3697 0000367f: JUMPI 00003680: PUSH1 0x40 00003682: MLOAD 00003683: PUSH3 0x461bcd 00003687: PUSH1 0xe5 00003689: SHL 0000368a: DUP2 0000368b: MSTORE 0000368c: PUSH1 0x04 0000368e: ADD 0000368f: PUSH2 0x08ca 00003692: SWAP1 00003693: PUSH2 0x5ab4 00003696: JUMP 00003697: JUMPDEST 00003698: PUSH1 0x40 0000369a: DUP1 0000369b: DUP8 0000369c: ADD 0000369d: MLOAD 0000369e: PUSH2 0xffff 000036a1: AND 000036a2: PUSH1 0x00 000036a4: SWAP1 000036a5: DUP2 000036a6: MSTORE 000036a7: PUSH1 0x06 000036a9: PUSH1 0x20 000036ab: SWAP1 000036ac: DUP2 000036ad: MSTORE 000036ae: DUP3 000036af: DUP3 000036b0: KECCAK256 000036b1: PUSH1 0x01 000036b3: PUSH1 0x01 000036b5: PUSH1 0xa0 000036b7: SHL 000036b8: SUB 000036b9: DUP12 000036ba: AND 000036bb: DUP4 000036bc: MSTORE 000036bd: SWAP1 000036be: MSTORE 000036bf: KECCAK256 000036c0: SLOAD 000036c1: PUSH2 0x36c8 000036c4: PUSH2 0x474f 000036c7: JUMP 000036c8: JUMPDEST 000036c9: PUSH20 0xb0ec9ba4ce826d925acf5474d365a80a9fba078e 000036de: PUSH4 0x9d0ad1dc 000036e3: DUP11 000036e4: DUP5 000036e5: DUP7 000036e6: DUP13 000036e7: PUSH2 0x36ee 000036ea: PUSH2 0x304a 000036ed: JUMP 000036ee: JUMPDEST 000036ef: DUP14 000036f0: PUSH1 0x40 000036f2: MLOAD 000036f3: DUP8 000036f4: PUSH4 0xffffffff 000036f9: AND 000036fa: PUSH1 0xe0 000036fc: SHL 000036fd: DUP2 000036fe: MSTORE 000036ff: PUSH1 0x04 00003701: ADD 00003702: PUSH2 0x3710 00003705: SWAP7 00003706: SWAP6 00003707: SWAP5 00003708: SWAP4 00003709: SWAP3 0000370a: SWAP2 0000370b: SWAP1 0000370c: PUSH2 0x56f6 0000370f: JUMP 00003710: JUMPDEST 00003711: PUSH1 0x80 00003713: PUSH1 0x40 00003715: MLOAD 00003716: DUP1 00003717: DUP4 00003718: SUB 00003719: DUP2 0000371a: DUP7 0000371b: DUP1 0000371c: EXTCODESIZE 0000371d: ISZERO 0000371e: DUP1 0000371f: ISZERO 00003720: PUSH2 0x3728 00003723: JUMPI 00003724: PUSH1 0x00 00003726: DUP1 00003727: REVERT 00003728: JUMPDEST 00003729: POP 0000372a: GAS 0000372b: DELEGATECALL 0000372c: ISZERO 0000372d: DUP1 0000372e: ISZERO 0000372f: PUSH2 0x373c 00003732: JUMPI 00003733: RETURNDATASIZE 00003734: PUSH1 0x00 00003736: DUP1 00003737: RETURNDATACOPY 00003738: RETURNDATASIZE 00003739: PUSH1 0x00 0000373b: REVERT 0000373c: JUMPDEST 0000373d: POP 0000373e: POP 0000373f: POP 00003740: POP 00003741: PUSH1 0x40 00003743: MLOAD 00003744: RETURNDATASIZE 00003745: PUSH1 0x1f 00003747: NOT 00003748: PUSH1 0x1f 0000374a: DUP3 0000374b: ADD 0000374c: AND 0000374d: DUP3 0000374e: ADD 0000374f: DUP1 00003750: PUSH1 0x40 00003752: MSTORE 00003753: POP 00003754: DUP2 00003755: ADD 00003756: SWAP1 00003757: PUSH2 0x3760 0000375a: SWAP2 0000375b: SWAP1 0000375c: PUSH2 0x512a 0000375f: JUMP 00003760: JUMPDEST 00003761: SWAP1 00003762: POP 00003763: DUP1 00003764: PUSH1 0x60 00003766: ADD 00003767: MLOAD 00003768: DUP3 00003769: EQ 0000376a: PUSH2 0x379c 0000376d: JUMPI 0000376e: PUSH1 0x60 00003770: DUP2 00003771: ADD 00003772: MLOAD 00003773: PUSH1 0x40 00003775: DUP1 00003776: DUP11 00003777: ADD 00003778: MLOAD 00003779: PUSH2 0xffff 0000377c: AND 0000377d: PUSH1 0x00 0000377f: SWAP1 00003780: DUP2 00003781: MSTORE 00003782: PUSH1 0x06 00003784: PUSH1 0x20 00003786: SWAP1 00003787: DUP2 00003788: MSTORE 00003789: DUP3 0000378a: DUP3 0000378b: KECCAK256 0000378c: PUSH1 0x01 0000378e: PUSH1 0x01 00003790: PUSH1 0xa0 00003792: SHL 00003793: SUB 00003794: DUP15 00003795: AND 00003796: DUP4 00003797: MSTORE 00003798: SWAP1 00003799: MSTORE 0000379a: KECCAK256 0000379b: SSTORE 0000379c: JUMPDEST 0000379d: PUSH1 0x20 0000379f: DUP2 000037a0: ADD 000037a1: MLOAD 000037a2: PUSH1 0x01 000037a4: PUSH1 0x01 000037a6: PUSH1 0x80 000037a8: SHL 000037a9: SUB 000037aa: AND 000037ab: ISZERO 000037ac: PUSH2 0x3821 000037af: JUMPI 000037b0: PUSH1 0x20 000037b2: DUP1 000037b3: DUP3 000037b4: ADD 000037b5: MLOAD 000037b6: DUP10 000037b7: DUP3 000037b8: ADD 000037b9: MLOAD 000037ba: PUSH2 0xffff 000037bd: AND 000037be: PUSH1 0x00 000037c0: SWAP1 000037c1: DUP2 000037c2: MSTORE 000037c3: PUSH1 0x06 000037c5: DUP4 000037c6: MSTORE 000037c7: PUSH1 0x40 000037c9: DUP1 000037ca: DUP3 000037cb: KECCAK256 000037cc: PUSH1 0x01 000037ce: PUSH1 0x01 000037d0: PUSH1 0xa0 000037d2: SHL 000037d3: SUB 000037d4: DUP15 000037d5: AND 000037d6: DUP4 000037d7: MSTORE 000037d8: SWAP1 000037d9: SWAP4 000037da: MSTORE 000037db: SWAP2 000037dc: SWAP1 000037dd: SWAP2 000037de: KECCAK256 000037df: SLOAD 000037e0: PUSH2 0x37f7 000037e3: SWAP2 000037e4: PUSH1 0x01 000037e6: PUSH1 0x01 000037e8: PUSH1 0x80 000037ea: SHL 000037eb: SUB 000037ec: AND 000037ed: PUSH4 0xffffffff 000037f2: PUSH2 0x2aad 000037f5: AND 000037f6: JUMP 000037f7: JUMPDEST 000037f8: PUSH1 0x20 000037fa: DUP1 000037fb: DUP11 000037fc: ADD 000037fd: MLOAD 000037fe: PUSH2 0xffff 00003801: AND 00003802: PUSH1 0x00 00003804: SWAP1 00003805: DUP2 00003806: MSTORE 00003807: PUSH1 0x06 00003809: DUP3 0000380a: MSTORE 0000380b: PUSH1 0x40 0000380d: DUP1 0000380e: DUP3 0000380f: KECCAK256 00003810: PUSH1 0x01 00003812: PUSH1 0x01 00003814: PUSH1 0xa0 00003816: SHL 00003817: SUB 00003818: DUP15 00003819: AND 0000381a: DUP4 0000381b: MSTORE 0000381c: SWAP1 0000381d: SWAP3 0000381e: MSTORE 0000381f: KECCAK256 00003820: SSTORE 00003821: JUMPDEST 00003822: PUSH1 0x20 00003824: DUP2 00003825: ADD 00003826: MLOAD 00003827: DUP2 00003828: MLOAD 00003829: PUSH1 0x40 0000382b: SWAP1 0000382c: SWAP3 0000382d: ADD 0000382e: MLOAD 0000382f: SWAP1 00003830: SWAP11 00003831: SWAP2 00003832: SWAP10 00003833: POP 00003834: SWAP8 00003835: POP 00003836: SWAP6 00003837: POP 00003838: POP 00003839: POP 0000383a: POP 0000383b: POP 0000383c: POP 0000383d: JUMP 0000383e: JUMPDEST 0000383f: PUSH1 0x00 00003841: PUSH2 0x0997 00003844: PUSH32 0xc59867f3ae9774eb97a98f3fbbe736c1ee23580155c8697cd969a2d1f3968653 00003865: PUSH2 0x3f22 00003868: JUMP 00003869: JUMPDEST 0000386a: PUSH1 0x00 0000386c: PUSH2 0x0997 0000386f: PUSH32 0xdafe5151c63bd8d33bc03c4916ccca379c56861736a985b1918a3e0c0347707b 00003890: PUSH2 0x3f22 00003893: JUMP 00003894: JUMPDEST 00003895: PUSH1 0x01 00003897: PUSH1 0x01 00003899: PUSH1 0xa0 0000389b: SHL 0000389c: SUB 0000389d: DUP3 0000389e: AND 0000389f: PUSH1 0x00 000038a1: SWAP1 000038a2: DUP2 000038a3: MSTORE 000038a4: PUSH1 0x00 000038a6: DUP1 000038a7: MLOAD 000038a8: PUSH1 0x20 000038aa: PUSH2 0x5f52 000038ad: DUP4 000038ae: CODECOPY 000038af: DUP2 000038b0: MLOAD 000038b1: SWAP2 000038b2: MSTORE 000038b3: PUSH1 0x20 000038b5: MSTORE 000038b6: PUSH1 0x40 000038b8: SWAP1 000038b9: KECCAK256 000038ba: SLOAD 000038bb: PUSH2 0x38d3 000038be: DUP2 000038bf: PUSH1 0x01 000038c1: PUSH1 0x01 000038c3: PUSH1 0x80 000038c5: SHL 000038c6: SUB 000038c7: DUP5 000038c8: AND 000038c9: PUSH4 0xffffffff 000038ce: PUSH2 0x30b3 000038d1: AND 000038d2: JUMP 000038d3: JUMPDEST 000038d4: PUSH1 0x01 000038d6: PUSH1 0x01 000038d8: PUSH1 0xa0 000038da: SHL 000038db: SUB 000038dc: DUP5 000038dd: AND 000038de: PUSH1 0x00 000038e0: SWAP1 000038e1: DUP2 000038e2: MSTORE 000038e3: PUSH1 0x00 000038e5: DUP1 000038e6: MLOAD 000038e7: PUSH1 0x20 000038e9: PUSH2 0x5f52 000038ec: DUP4 000038ed: CODECOPY 000038ee: DUP2 000038ef: MLOAD 000038f0: SWAP2 000038f1: MSTORE 000038f2: PUSH1 0x20 000038f4: MSTORE 000038f5: PUSH1 0x40 000038f7: DUP2 000038f8: KECCAK256 000038f9: SWAP2 000038fa: SWAP1 000038fb: SWAP2 000038fc: SSTORE 000038fd: PUSH2 0x3905 00003900: DUP5 00003901: PUSH2 0x41c1 00003904: JUMP 00003905: JUMPDEST 00003906: SLT 00003907: ISZERO 00003908: PUSH2 0x3923 0000390b: JUMPI 0000390c: PUSH1 0x40 0000390e: MLOAD 0000390f: PUSH3 0x461bcd 00003913: PUSH1 0xe5 00003915: SHL 00003916: DUP2 00003917: MSTORE 00003918: PUSH1 0x04 0000391a: ADD 0000391b: PUSH2 0x08ca 0000391e: SWAP1 0000391f: PUSH2 0x5bf0 00003922: JUMP 00003923: JUMPDEST 00003924: PUSH1 0x00 00003926: SLOAD 00003927: PUSH1 0x40 00003929: MLOAD 0000392a: PUSH4 0x2e1a7d4d 0000392f: PUSH1 0xe0 00003931: SHL 00003932: DUP2 00003933: MSTORE 00003934: PUSH1 0x01 00003936: PUSH1 0x01 00003938: PUSH1 0xa0 0000393a: SHL 0000393b: SUB 0000393c: SWAP1 0000393d: SWAP2 0000393e: AND 0000393f: SWAP1 00003940: PUSH4 0x2e1a7d4d 00003945: SWAP1 00003946: PUSH2 0x395c 00003949: SWAP1 0000394a: PUSH1 0x01 0000394c: PUSH1 0x01 0000394e: PUSH1 0x80 00003950: SHL 00003951: SUB 00003952: DUP7 00003953: AND 00003954: SWAP1 00003955: PUSH1 0x04 00003957: ADD 00003958: PUSH2 0x58cd 0000395b: JUMP 0000395c: JUMPDEST 0000395d: PUSH1 0x00 0000395f: PUSH1 0x40 00003961: MLOAD 00003962: DUP1 00003963: DUP4 00003964: SUB 00003965: DUP2 00003966: PUSH1 0x00 00003968: DUP8 00003969: DUP1 0000396a: EXTCODESIZE 0000396b: ISZERO 0000396c: DUP1 0000396d: ISZERO 0000396e: PUSH2 0x3976 00003971: JUMPI 00003972: PUSH1 0x00 00003974: DUP1 00003975: REVERT 00003976: JUMPDEST 00003977: POP 00003978: GAS 00003979: CALL 0000397a: ISZERO 0000397b: DUP1 0000397c: ISZERO 0000397d: PUSH2 0x398a 00003980: JUMPI 00003981: RETURNDATASIZE 00003982: PUSH1 0x00 00003984: DUP1 00003985: RETURNDATACOPY 00003986: RETURNDATASIZE 00003987: PUSH1 0x00 00003989: REVERT 0000398a: JUMPDEST 0000398b: POP 0000398c: POP 0000398d: POP 0000398e: POP 0000398f: PUSH1 0x00 00003991: DUP4 00003992: PUSH1 0x01 00003994: PUSH1 0x01 00003996: PUSH1 0xa0 00003998: SHL 00003999: SUB 0000399a: AND 0000399b: DUP4 0000399c: PUSH1 0x01 0000399e: PUSH1 0x01 000039a0: PUSH1 0x80 000039a2: SHL 000039a3: SUB 000039a4: AND 000039a5: PUSH1 0x40 000039a7: MLOAD 000039a8: PUSH2 0x39b0 000039ab: SWAP1 000039ac: PUSH2 0x5572 000039af: JUMP 000039b0: JUMPDEST 000039b1: PUSH1 0x00 000039b3: PUSH1 0x40 000039b5: MLOAD 000039b6: DUP1 000039b7: DUP4 000039b8: SUB 000039b9: DUP2 000039ba: DUP6 000039bb: DUP8 000039bc: GAS 000039bd: CALL 000039be: SWAP3 000039bf: POP 000039c0: POP 000039c1: POP 000039c2: RETURNDATASIZE 000039c3: DUP1 000039c4: PUSH1 0x00 000039c6: DUP2 000039c7: EQ 000039c8: PUSH2 0x39ed 000039cb: JUMPI 000039cc: PUSH1 0x40 000039ce: MLOAD 000039cf: SWAP2 000039d0: POP 000039d1: PUSH1 0x1f 000039d3: NOT 000039d4: PUSH1 0x3f 000039d6: RETURNDATASIZE 000039d7: ADD 000039d8: AND 000039d9: DUP3 000039da: ADD 000039db: PUSH1 0x40 000039dd: MSTORE 000039de: RETURNDATASIZE 000039df: DUP3 000039e0: MSTORE 000039e1: RETURNDATASIZE 000039e2: PUSH1 0x00 000039e4: PUSH1 0x20 000039e6: DUP5 000039e7: ADD 000039e8: RETURNDATACOPY 000039e9: PUSH2 0x39f2 000039ec: JUMP 000039ed: JUMPDEST 000039ee: PUSH1 0x60 000039f0: SWAP2 000039f1: POP 000039f2: JUMPDEST 000039f3: POP 000039f4: POP 000039f5: SWAP1 000039f6: POP 000039f7: DUP1 000039f8: PUSH2 0x3a13 000039fb: JUMPI 000039fc: PUSH1 0x40 000039fe: MLOAD 000039ff: PUSH3 0x461bcd 00003a03: PUSH1 0xe5 00003a05: SHL 00003a06: DUP2 00003a07: MSTORE 00003a08: PUSH1 0x04 00003a0a: ADD 00003a0b: PUSH2 0x08ca 00003a0e: SWAP1 00003a0f: PUSH2 0x5c0b 00003a12: JUMP 00003a13: JUMPDEST 00003a14: PUSH1 0x00 00003a16: PUSH32 0x3a1f8a7d4c39f62327e9a798fb5c25bdd080a161bd152f56eb2e2c7d6ad69fb8 00003a37: DUP6 00003a38: DUP6 00003a39: PUSH1 0x40 00003a3b: MLOAD 00003a3c: PUSH2 0x3a46 00003a3f: SWAP3 00003a40: SWAP2 00003a41: SWAP1 00003a42: PUSH2 0x57a8 00003a45: JUMP 00003a46: JUMPDEST 00003a47: PUSH1 0x40 00003a49: MLOAD 00003a4a: DUP1 00003a4b: SWAP2 00003a4c: SUB 00003a4d: SWAP1 00003a4e: LOG2 00003a4f: POP 00003a50: POP 00003a51: POP 00003a52: POP 00003a53: JUMP 00003a54: JUMPDEST 00003a55: PUSH1 0x00 00003a57: PUSH1 0x3c 00003a59: DUP2 00003a5a: PUSH1 0x01 00003a5c: PUSH2 0x2f05 00003a5f: JUMP 00003a60: JUMPDEST 00003a61: PUSH2 0x3a68 00003a64: PUSH2 0x4720 00003a67: JUMP 00003a68: JUMPDEST 00003a69: PUSH2 0x3a70 00003a6c: PUSH2 0x304a 00003a6f: JUMP 00003a70: JUMPDEST 00003a71: PUSH1 0x01 00003a73: PUSH1 0x01 00003a75: PUSH1 0xa0 00003a77: SHL 00003a78: SUB 00003a79: AND 00003a7a: PUSH4 0xeaafcd9c 00003a7f: DUP6 00003a80: DUP6 00003a81: DUP6 00003a82: PUSH1 0x40 00003a84: MLOAD 00003a85: DUP5 00003a86: PUSH4 0xffffffff 00003a8b: AND 00003a8c: PUSH1 0xe0 00003a8e: SHL 00003a8f: DUP2 00003a90: MSTORE 00003a91: PUSH1 0x04 00003a93: ADD 00003a94: PUSH2 0x3a9f 00003a97: SWAP4 00003a98: SWAP3 00003a99: SWAP2 00003a9a: SWAP1 00003a9b: PUSH2 0x582e 00003a9e: JUMP 00003a9f: JUMPDEST 00003aa0: PUSH1 0xa0 00003aa2: PUSH1 0x40 00003aa4: MLOAD 00003aa5: DUP1 00003aa6: DUP4 00003aa7: SUB 00003aa8: DUP2 00003aa9: PUSH1 0x00 00003aab: DUP8 00003aac: DUP1 00003aad: EXTCODESIZE 00003aae: ISZERO 00003aaf: DUP1 00003ab0: ISZERO 00003ab1: PUSH2 0x3ab9 00003ab4: JUMPI 00003ab5: PUSH1 0x00 00003ab7: DUP1 00003ab8: REVERT 00003ab9: JUMPDEST 00003aba: POP 00003abb: GAS 00003abc: CALL 00003abd: ISZERO 00003abe: DUP1 00003abf: ISZERO 00003ac0: PUSH2 0x3acd 00003ac3: JUMPI 00003ac4: RETURNDATASIZE 00003ac5: PUSH1 0x00 00003ac7: DUP1 00003ac8: RETURNDATACOPY 00003ac9: RETURNDATASIZE 00003aca: PUSH1 0x00 00003acc: REVERT 00003acd: JUMPDEST 00003ace: POP 00003acf: POP 00003ad0: POP 00003ad1: POP 00003ad2: PUSH1 0x40 00003ad4: MLOAD 00003ad5: RETURNDATASIZE 00003ad6: PUSH1 0x1f 00003ad8: NOT 00003ad9: PUSH1 0x1f 00003adb: DUP3 00003adc: ADD 00003add: AND 00003ade: DUP3 00003adf: ADD 00003ae0: DUP1 00003ae1: PUSH1 0x40 00003ae3: MSTORE 00003ae4: POP 00003ae5: DUP2 00003ae6: ADD 00003ae7: SWAP1 00003ae8: PUSH2 0x2ef5 00003aeb: SWAP2 00003aec: SWAP1 00003aed: PUSH2 0x50d9 00003af0: JUMP 00003af1: JUMPDEST 00003af2: PUSH1 0x00 00003af4: DUP1 00003af5: JUMPDEST 00003af6: PUSH1 0x00 00003af8: SLOAD 00003af9: PUSH1 0x01 00003afb: PUSH1 0xa0 00003afd: SHL 00003afe: SWAP1 00003aff: DIV 00003b00: PUSH2 0xffff 00003b03: AND 00003b04: DUP2 00003b05: GT 00003b06: PUSH2 0x3b49 00003b09: JUMPI 00003b0a: PUSH2 0xffff 00003b0d: DUP2 00003b0e: AND 00003b0f: PUSH1 0x00 00003b11: SWAP1 00003b12: DUP2 00003b13: MSTORE 00003b14: PUSH1 0x06 00003b16: PUSH1 0x20 00003b18: SWAP1 00003b19: DUP2 00003b1a: MSTORE 00003b1b: PUSH1 0x40 00003b1d: DUP1 00003b1e: DUP4 00003b1f: KECCAK256 00003b20: PUSH1 0x01 00003b22: PUSH1 0x01 00003b24: PUSH1 0xa0 00003b26: SHL 00003b27: SUB 00003b28: DUP8 00003b29: AND 00003b2a: DUP5 00003b2b: MSTORE 00003b2c: SWAP1 00003b2d: SWAP2 00003b2e: MSTORE 00003b2f: DUP2 00003b30: KECCAK256 00003b31: SLOAD 00003b32: SGT 00003b33: ISZERO 00003b34: PUSH2 0x3b41 00003b37: JUMPI 00003b38: PUSH1 0x01 00003b3a: SWAP2 00003b3b: POP 00003b3c: POP 00003b3d: PUSH2 0x0c9d 00003b40: JUMP 00003b41: JUMPDEST 00003b42: PUSH1 0x01 00003b44: ADD 00003b45: PUSH2 0x3af5 00003b48: JUMP 00003b49: JUMPDEST 00003b4a: POP 00003b4b: PUSH1 0x00 00003b4d: SWAP3 00003b4e: SWAP2 00003b4f: POP 00003b50: POP 00003b51: JUMP 00003b52: JUMPDEST 00003b53: PUSH1 0x00 00003b55: PUSH1 0x60 00003b57: PUSH2 0x3b5e 00003b5a: PUSH2 0x304a 00003b5d: JUMP 00003b5e: JUMPDEST 00003b5f: PUSH1 0x01 00003b61: PUSH1 0x01 00003b63: PUSH1 0xa0 00003b65: SHL 00003b66: SUB 00003b67: AND 00003b68: PUSH4 0x742978da 00003b6d: DUP5 00003b6e: PUSH1 0x40 00003b70: MLOAD 00003b71: DUP3 00003b72: PUSH4 0xffffffff 00003b77: AND 00003b78: PUSH1 0xe0 00003b7a: SHL 00003b7b: DUP2 00003b7c: MSTORE 00003b7d: PUSH1 0x04 00003b7f: ADD 00003b80: PUSH2 0x3b89 00003b83: SWAP2 00003b84: SWAP1 00003b85: PUSH2 0x5575 00003b88: JUMP 00003b89: JUMPDEST 00003b8a: PUSH1 0x00 00003b8c: PUSH1 0x40 00003b8e: MLOAD 00003b8f: DUP1 00003b90: DUP4 00003b91: SUB 00003b92: DUP2 00003b93: DUP7 00003b94: DUP1 00003b95: EXTCODESIZE 00003b96: ISZERO 00003b97: DUP1 00003b98: ISZERO 00003b99: PUSH2 0x3ba1 00003b9c: JUMPI 00003b9d: PUSH1 0x00 00003b9f: DUP1 00003ba0: REVERT 00003ba1: JUMPDEST 00003ba2: POP 00003ba3: GAS 00003ba4: STATICCALL 00003ba5: ISZERO 00003ba6: DUP1 00003ba7: ISZERO 00003ba8: PUSH2 0x3bb5 00003bab: JUMPI 00003bac: RETURNDATASIZE 00003bad: PUSH1 0x00 00003baf: DUP1 00003bb0: RETURNDATACOPY 00003bb1: RETURNDATASIZE 00003bb2: PUSH1 0x00 00003bb4: REVERT 00003bb5: JUMPDEST 00003bb6: POP 00003bb7: POP 00003bb8: POP 00003bb9: POP 00003bba: PUSH1 0x40 00003bbc: MLOAD 00003bbd: RETURNDATASIZE 00003bbe: PUSH1 0x00 00003bc0: DUP3 00003bc1: RETURNDATACOPY 00003bc2: PUSH1 0x1f 00003bc4: RETURNDATASIZE 00003bc5: SWAP1 00003bc6: DUP2 00003bc7: ADD 00003bc8: PUSH1 0x1f 00003bca: NOT 00003bcb: AND 00003bcc: DUP3 00003bcd: ADD 00003bce: PUSH1 0x40 00003bd0: MSTORE 00003bd1: PUSH2 0x3bdd 00003bd4: SWAP2 00003bd5: SWAP1 00003bd6: DUP2 00003bd7: ADD 00003bd8: SWAP1 00003bd9: PUSH2 0x4f45 00003bdc: JUMP 00003bdd: JUMPDEST 00003bde: SWAP1 00003bdf: POP 00003be0: PUSH1 0x00 00003be2: JUMPDEST 00003be3: DUP2 00003be4: MLOAD 00003be5: DUP2 00003be6: LT 00003be7: ISZERO 00003be8: PUSH2 0x3c23 00003beb: JUMPI 00003bec: PUSH2 0x3c0b 00003bef: DUP3 00003bf0: DUP3 00003bf1: DUP2 00003bf2: MLOAD 00003bf3: DUP2 00003bf4: LT 00003bf5: PUSH2 0x3bfa 00003bf8: JUMPI 00003bf9: INVALID 00003bfa: JUMPDEST 00003bfb: PUSH1 0x20 00003bfd: MUL 00003bfe: PUSH1 0x20 00003c00: ADD 00003c01: ADD 00003c02: MLOAD 00003c03: PUSH1 0x60 00003c05: ADD 00003c06: MLOAD 00003c07: PUSH2 0x4413 00003c0a: JUMP 00003c0b: JUMPDEST 00003c0c: ISZERO 00003c0d: PUSH2 0x3c1b 00003c10: JUMPI 00003c11: PUSH1 0x00 00003c13: SWAP3 00003c14: POP 00003c15: POP 00003c16: POP 00003c17: PUSH2 0x0c9d 00003c1a: JUMP 00003c1b: JUMPDEST 00003c1c: PUSH1 0x01 00003c1e: ADD 00003c1f: PUSH2 0x3be2 00003c22: JUMP 00003c23: JUMPDEST 00003c24: POP 00003c25: PUSH1 0x01 00003c27: SWAP4 00003c28: SWAP3 00003c29: POP 00003c2a: POP 00003c2b: POP 00003c2c: JUMP 00003c2d: JUMPDEST 00003c2e: PUSH1 0x00 00003c30: PUSH2 0x0997 00003c33: PUSH32 0x28971522a5177c8ac90bf7d9be4d04d6bc61da2e7623c4392f5b9494ac42e4d0 00003c54: PUSH2 0x3f22 00003c57: JUMP 00003c58: JUMPDEST 00003c59: PUSH1 0x01 00003c5b: PUSH1 0x01 00003c5d: PUSH1 0xa0 00003c5f: SHL 00003c60: SUB 00003c61: DUP3 00003c62: AND 00003c63: PUSH1 0x00 00003c65: SWAP1 00003c66: DUP2 00003c67: MSTORE 00003c68: PUSH1 0x03 00003c6a: PUSH1 0x20 00003c6c: MSTORE 00003c6d: PUSH1 0x40 00003c6f: SWAP1 00003c70: KECCAK256 00003c71: SLOAD 00003c72: PUSH2 0xffff 00003c75: AND 00003c76: DUP1 00003c77: ISZERO 00003c78: DUP1 00003c79: ISZERO 00003c7a: PUSH2 0x3c91 00003c7d: JUMPI 00003c7e: POP 00003c7f: PUSH1 0x00 00003c81: SLOAD 00003c82: PUSH1 0x01 00003c84: PUSH1 0x01 00003c86: PUSH1 0xa0 00003c88: SHL 00003c89: SUB 00003c8a: DUP5 00003c8b: DUP2 00003c8c: AND 00003c8d: SWAP2 00003c8e: AND 00003c8f: EQ 00003c90: ISZERO 00003c91: JUMPDEST 00003c92: ISZERO 00003c93: PUSH2 0x3cae 00003c96: JUMPI 00003c97: PUSH1 0x40 00003c99: MLOAD 00003c9a: PUSH3 0x461bcd 00003c9e: PUSH1 0xe5 00003ca0: SHL 00003ca1: DUP2 00003ca2: MSTORE 00003ca3: PUSH1 0x04 00003ca5: ADD 00003ca6: PUSH2 0x08ca 00003ca9: SWAP1 00003caa: PUSH2 0x5aec 00003cad: JUMP 00003cae: JUMPDEST 00003caf: PUSH2 0x3cb6 00003cb2: PUSH2 0x4789 00003cb5: JUMP 00003cb6: JUMPDEST 00003cb7: POP 00003cb8: PUSH1 0x01 00003cba: PUSH1 0x01 00003cbc: PUSH1 0xa0 00003cbe: SHL 00003cbf: SUB 00003cc0: DUP4 00003cc1: AND 00003cc2: PUSH1 0x00 00003cc4: SWAP1 00003cc5: DUP2 00003cc6: MSTORE 00003cc7: PUSH1 0x04 00003cc9: PUSH1 0x20 00003ccb: SWAP1 00003ccc: DUP2 00003ccd: MSTORE 00003cce: PUSH1 0x40 00003cd0: SWAP2 00003cd1: DUP3 00003cd2: SWAP1 00003cd3: KECCAK256 00003cd4: DUP3 00003cd5: MLOAD 00003cd6: DUP1 00003cd7: DUP5 00003cd8: ADD 00003cd9: SWAP1 00003cda: SWAP4 00003cdb: MSTORE 00003cdc: SLOAD 00003cdd: PUSH1 0xff 00003cdf: DUP1 00003ce0: DUP3 00003ce1: AND 00003ce2: ISZERO 00003ce3: ISZERO 00003ce4: DUP5 00003ce5: MSTORE 00003ce6: PUSH2 0x0100 00003ce9: SWAP1 00003cea: SWAP2 00003ceb: DIV 00003cec: AND 00003ced: ISZERO 00003cee: ISZERO 00003cef: SWAP1 00003cf0: DUP3 00003cf1: ADD 00003cf2: MSTORE 00003cf3: PUSH2 0x3cfe 00003cf6: DUP5 00003cf7: DUP7 00003cf8: DUP6 00003cf9: DUP5 00003cfa: PUSH2 0x4248 00003cfd: JUMP 00003cfe: JUMPDEST 00003cff: DUP2 00003d00: MLOAD 00003d01: SWAP1 00003d02: SWAP4 00003d03: POP 00003d04: PUSH2 0x3d71 00003d07: JUMPI 00003d08: PUSH2 0xffff 00003d0b: DUP3 00003d0c: AND 00003d0d: PUSH1 0x00 00003d0f: SWAP1 00003d10: DUP2 00003d11: MSTORE 00003d12: PUSH1 0x06 00003d14: PUSH1 0x20 00003d16: SWAP1 00003d17: DUP2 00003d18: MSTORE 00003d19: PUSH1 0x40 00003d1b: DUP1 00003d1c: DUP4 00003d1d: KECCAK256 00003d1e: PUSH1 0x01 00003d20: PUSH1 0x01 00003d22: PUSH1 0xa0 00003d24: SHL 00003d25: SUB 00003d26: DUP10 00003d27: AND 00003d28: DUP5 00003d29: MSTORE 00003d2a: SWAP1 00003d2b: SWAP2 00003d2c: MSTORE 00003d2d: SWAP1 00003d2e: KECCAK256 00003d2f: SLOAD 00003d30: PUSH2 0x3d48 00003d33: SWAP1 00003d34: PUSH1 0x01 00003d36: PUSH1 0x01 00003d38: PUSH1 0x80 00003d3a: SHL 00003d3b: SUB 00003d3c: DUP6 00003d3d: AND 00003d3e: PUSH4 0xffffffff 00003d43: PUSH2 0x2aad 00003d46: AND 00003d47: JUMP 00003d48: JUMPDEST 00003d49: PUSH2 0xffff 00003d4c: DUP4 00003d4d: AND 00003d4e: PUSH1 0x00 00003d50: SWAP1 00003d51: DUP2 00003d52: MSTORE 00003d53: PUSH1 0x06 00003d55: PUSH1 0x20 00003d57: SWAP1 00003d58: DUP2 00003d59: MSTORE 00003d5a: PUSH1 0x40 00003d5c: DUP1 00003d5d: DUP4 00003d5e: KECCAK256 00003d5f: PUSH1 0x01 00003d61: PUSH1 0x01 00003d63: PUSH1 0xa0 00003d65: SHL 00003d66: SUB 00003d67: DUP11 00003d68: AND 00003d69: DUP5 00003d6a: MSTORE 00003d6b: SWAP1 00003d6c: SWAP2 00003d6d: MSTORE 00003d6e: SWAP1 00003d6f: KECCAK256 00003d70: SSTORE 00003d71: JUMPDEST 00003d72: DUP2 00003d73: PUSH2 0xffff 00003d76: AND 00003d77: PUSH32 0x1ebdf9946bb1531759f2100f77d6319f8f0a70663c87f0e3c4976cf417c6ec07 00003d98: DUP7 00003d99: DUP6 00003d9a: PUSH1 0x40 00003d9c: MLOAD 00003d9d: PUSH2 0x3da7 00003da0: SWAP3 00003da1: SWAP2 00003da2: SWAP1 00003da3: PUSH2 0x57a8 00003da6: JUMP 00003da7: JUMPDEST 00003da8: PUSH1 0x40 00003daa: MLOAD 00003dab: DUP1 00003dac: SWAP2 00003dad: SUB 00003dae: SWAP1 00003daf: LOG2 00003db0: POP 00003db1: POP 00003db2: POP 00003db3: POP 00003db4: POP 00003db5: JUMP 00003db6: JUMPDEST 00003db7: PUSH1 0x00 00003db9: DUP2 00003dba: DUP4 00003dbb: SUB 00003dbc: PUSH1 0x01 00003dbe: PUSH1 0x01 00003dc0: PUSH1 0x80 00003dc2: SHL 00003dc3: SUB 00003dc4: DUP1 00003dc5: DUP6 00003dc6: AND 00003dc7: SWAP1 00003dc8: DUP3 00003dc9: AND 00003dca: GT 00003dcb: ISZERO 00003dcc: PUSH2 0x2af3 00003dcf: JUMPI 00003dd0: PUSH1 0x40 00003dd2: MLOAD 00003dd3: PUSH3 0x461bcd 00003dd7: PUSH1 0xe5 00003dd9: SHL 00003dda: DUP2 00003ddb: MSTORE 00003ddc: PUSH1 0x04 00003dde: ADD 00003ddf: PUSH2 0x08ca 00003de2: SWAP1 00003de3: PUSH2 0x5a97 00003de6: JUMP 00003de7: JUMPDEST 00003de8: PUSH2 0x1524 00003deb: PUSH32 0x28971522a5177c8ac90bf7d9be4d04d6bc61da2e7623c4392f5b9494ac42e4d0 00003e0c: PUSH1 0x01 00003e0e: PUSH1 0x01 00003e10: PUSH1 0x80 00003e12: SHL 00003e13: SUB 00003e14: DUP4 00003e15: AND 00003e16: PUSH2 0x441f 00003e19: JUMP 00003e1a: JUMPDEST 00003e1b: PUSH2 0x1524 00003e1e: PUSH32 0xc59867f3ae9774eb97a98f3fbbe736c1ee23580155c8697cd969a2d1f3968653 00003e3f: PUSH1 0x01 00003e41: PUSH1 0x01 00003e43: PUSH1 0x80 00003e45: SHL 00003e46: SUB 00003e47: DUP4 00003e48: AND 00003e49: PUSH2 0x441f 00003e4c: JUMP 00003e4d: JUMPDEST 00003e4e: PUSH2 0x1524 00003e51: PUSH32 0xdafe5151c63bd8d33bc03c4916ccca379c56861736a985b1918a3e0c0347707b 00003e72: PUSH1 0x01 00003e74: PUSH1 0x01 00003e76: PUSH1 0x80 00003e78: SHL 00003e79: SUB 00003e7a: DUP4 00003e7b: AND 00003e7c: PUSH2 0x441f 00003e7f: JUMP 00003e80: JUMPDEST 00003e81: PUSH2 0x1524 00003e84: PUSH32 0x86f55df6f3f1d5533a992d6e1355f3adb2afe0c3064672910d2518432c35e770 00003ea5: PUSH1 0x01 00003ea7: PUSH1 0x01 00003ea9: PUSH1 0x80 00003eab: SHL 00003eac: SUB 00003ead: DUP4 00003eae: AND 00003eaf: PUSH2 0x441f 00003eb2: JUMP 00003eb3: JUMPDEST 00003eb4: PUSH1 0x01 00003eb6: PUSH1 0x01 00003eb8: PUSH1 0xa0 00003eba: SHL 00003ebb: SUB 00003ebc: DUP2 00003ebd: AND 00003ebe: PUSH2 0x3ec6 00003ec1: JUMPI 00003ec2: PUSH1 0x00 00003ec4: DUP1 00003ec5: REVERT 00003ec6: JUMPDEST 00003ec7: PUSH1 0x08 00003ec9: SLOAD 00003eca: PUSH1 0x40 00003ecc: MLOAD 00003ecd: PUSH1 0x01 00003ecf: PUSH1 0x01 00003ed1: PUSH1 0xa0 00003ed3: SHL 00003ed4: SUB 00003ed5: DUP1 00003ed6: DUP5 00003ed7: AND 00003ed8: SWAP3 00003ed9: AND 00003eda: SWAP1 00003edb: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00003efc: SWAP1 00003efd: PUSH1 0x00 00003eff: SWAP1 00003f00: LOG3 00003f01: PUSH1 0x08 00003f03: DUP1 00003f04: SLOAD 00003f05: PUSH1 0x01 00003f07: PUSH1 0x01 00003f09: PUSH1 0xa0 00003f0b: SHL 00003f0c: SUB 00003f0d: NOT 00003f0e: AND 00003f0f: PUSH1 0x01 00003f11: PUSH1 0x01 00003f13: PUSH1 0xa0 00003f15: SHL 00003f16: SUB 00003f17: SWAP3 00003f18: SWAP1 00003f19: SWAP3 00003f1a: AND 00003f1b: SWAP2 00003f1c: SWAP1 00003f1d: SWAP2 00003f1e: OR 00003f1f: SWAP1 00003f20: SSTORE 00003f21: JUMP 00003f22: JUMPDEST 00003f23: SLOAD 00003f24: SWAP1 00003f25: JUMP 00003f26: JUMPDEST 00003f27: PUSH1 0x01 00003f29: PUSH1 0x01 00003f2b: PUSH1 0xa0 00003f2d: SHL 00003f2e: SUB 00003f2f: DUP4 00003f30: AND 00003f31: PUSH1 0x00 00003f33: SWAP1 00003f34: DUP2 00003f35: MSTORE 00003f36: PUSH1 0x04 00003f38: PUSH1 0x20 00003f3a: MSTORE 00003f3b: PUSH1 0x40 00003f3d: SWAP1 00003f3e: KECCAK256 00003f3f: SLOAD 00003f40: PUSH1 0xff 00003f42: AND 00003f43: ISZERO 00003f44: PUSH2 0x3fac 00003f47: JUMPI 00003f48: PUSH1 0x40 00003f4a: MLOAD 00003f4b: PUSH4 0x4decdde3 00003f50: PUSH1 0xe1 00003f52: SHL 00003f53: DUP2 00003f54: MSTORE 00003f55: PUSH1 0x01 00003f57: PUSH1 0x01 00003f59: PUSH1 0xa0 00003f5b: SHL 00003f5c: SUB 00003f5d: DUP5 00003f5e: AND 00003f5f: SWAP1 00003f60: PUSH4 0x9bd9bbc6 00003f65: SWAP1 00003f66: PUSH2 0x3f75 00003f69: SWAP1 00003f6a: DUP6 00003f6b: SWAP1 00003f6c: DUP6 00003f6d: SWAP1 00003f6e: PUSH1 0x04 00003f70: ADD 00003f71: PUSH2 0x57fc 00003f74: JUMP 00003f75: JUMPDEST 00003f76: PUSH1 0x00 00003f78: PUSH1 0x40 00003f7a: MLOAD 00003f7b: DUP1 00003f7c: DUP4 00003f7d: SUB 00003f7e: DUP2 00003f7f: PUSH1 0x00 00003f81: DUP8 00003f82: DUP1 00003f83: EXTCODESIZE 00003f84: ISZERO 00003f85: DUP1 00003f86: ISZERO 00003f87: PUSH2 0x3f8f 00003f8a: JUMPI 00003f8b: PUSH1 0x00 00003f8d: DUP1 00003f8e: REVERT 00003f8f: JUMPDEST 00003f90: POP 00003f91: GAS 00003f92: CALL 00003f93: ISZERO 00003f94: DUP1 00003f95: ISZERO 00003f96: PUSH2 0x3fa3 00003f99: JUMPI 00003f9a: RETURNDATASIZE 00003f9b: PUSH1 0x00 00003f9d: DUP1 00003f9e: RETURNDATACOPY 00003f9f: RETURNDATASIZE 00003fa0: PUSH1 0x00 00003fa2: REVERT 00003fa3: JUMPDEST 00003fa4: POP 00003fa5: POP 00003fa6: POP 00003fa7: POP 00003fa8: PUSH2 0x09cb 00003fab: JUMP 00003fac: JUMPDEST 00003fad: PUSH2 0x09cb 00003fb0: DUP4 00003fb1: DUP4 00003fb2: DUP4 00003fb3: PUSH1 0x01 00003fb5: PUSH1 0x01 00003fb7: PUSH1 0x80 00003fb9: SHL 00003fba: SUB 00003fbb: AND 00003fbc: PUSH2 0x4423 00003fbf: JUMP 00003fc0: JUMPDEST 00003fc1: PUSH1 0x00 00003fc3: DUP1 00003fc4: DUP4 00003fc5: PUSH1 0x00 00003fc7: ADD 00003fc8: MLOAD 00003fc9: PUSH1 0x01 00003fcb: PUSH1 0x01 00003fcd: PUSH1 0xa0 00003fcf: SHL 00003fd0: SUB 00003fd1: AND 00003fd2: PUSH4 0x50d25bcd 00003fd7: PUSH1 0x40 00003fd9: MLOAD 00003fda: DUP2 00003fdb: PUSH4 0xffffffff 00003fe0: AND 00003fe1: PUSH1 0xe0 00003fe3: SHL 00003fe4: DUP2 00003fe5: MSTORE 00003fe6: PUSH1 0x04 00003fe8: ADD 00003fe9: PUSH1 0x20 00003feb: PUSH1 0x40 00003fed: MLOAD 00003fee: DUP1 00003fef: DUP4 00003ff0: SUB 00003ff1: DUP2 00003ff2: DUP7 00003ff3: DUP1 00003ff4: EXTCODESIZE 00003ff5: ISZERO 00003ff6: DUP1 00003ff7: ISZERO 00003ff8: PUSH2 0x4000 00003ffb: JUMPI 00003ffc: PUSH1 0x00 00003ffe: DUP1 00003fff: REVERT 00004000: JUMPDEST 00004001: POP 00004002: GAS 00004003: STATICCALL 00004004: ISZERO 00004005: DUP1 00004006: ISZERO 00004007: PUSH2 0x4014 0000400a: JUMPI 0000400b: RETURNDATASIZE 0000400c: PUSH1 0x00 0000400e: DUP1 0000400f: RETURNDATACOPY 00004010: RETURNDATASIZE 00004011: PUSH1 0x00 00004013: REVERT 00004014: JUMPDEST 00004015: POP 00004016: POP 00004017: POP 00004018: POP 00004019: PUSH1 0x40 0000401b: MLOAD 0000401c: RETURNDATASIZE 0000401d: PUSH1 0x1f 0000401f: NOT 00004020: PUSH1 0x1f 00004022: DUP3 00004023: ADD 00004024: AND 00004025: DUP3 00004026: ADD 00004027: DUP1 00004028: PUSH1 0x40 0000402a: MSTORE 0000402b: POP 0000402c: DUP2 0000402d: ADD 0000402e: SWAP1 0000402f: PUSH2 0x4038 00004032: SWAP2 00004033: SWAP1 00004034: PUSH2 0x5022 00004037: JUMP 00004038: JUMPDEST 00004039: SWAP1 0000403a: POP 0000403b: PUSH1 0x00 0000403d: DUP2 0000403e: SGT 0000403f: PUSH2 0x405a 00004042: JUMPI 00004043: PUSH1 0x40 00004045: MLOAD 00004046: PUSH3 0x461bcd 0000404a: PUSH1 0xe5 0000404c: SHL 0000404d: DUP2 0000404e: MSTORE 0000404f: PUSH1 0x04 00004051: ADD 00004052: PUSH2 0x08ca 00004055: SWAP1 00004056: PUSH2 0x5b08 00004059: JUMP 0000405a: JUMPDEST 0000405b: DUP3 0000405c: DUP1 0000405d: PUSH2 0x4070 00004060: JUMPI 00004061: POP 00004062: DUP4 00004063: PUSH1 0x40 00004065: ADD 00004066: MLOAD 00004067: DUP1 00004068: ISZERO 00004069: PUSH2 0x4070 0000406c: JUMPI 0000406d: POP 0000406e: DUP3 0000406f: ISZERO 00004070: JUMPDEST 00004071: ISZERO 00004072: PUSH2 0x2af3 00004075: JUMPI 00004076: PUSH1 0x20 00004078: DUP5 00004079: ADD 0000407a: MLOAD 0000407b: PUSH2 0x4099 0000407e: SWAP1 0000407f: DUP3 00004080: SWAP1 00004081: PUSH2 0x2ebb 00004084: SWAP1 00004085: PUSH1 0x01 00004087: PUSH1 0x01 00004089: PUSH1 0x80 0000408b: SHL 0000408c: SUB 0000408d: AND 0000408e: DUP1 0000408f: PUSH4 0xffffffff 00004094: PUSH2 0x40c2 00004097: AND 00004098: JUMP 00004099: JUMPDEST 0000409a: SWAP2 0000409b: POP 0000409c: POP 0000409d: PUSH2 0x2262 000040a0: JUMP 000040a1: JUMPDEST 000040a2: PUSH1 0x00 000040a4: DUP1 000040a5: DUP3 000040a6: SLT 000040a7: ISZERO 000040a8: PUSH2 0x40bb 000040ab: JUMPI 000040ac: PUSH2 0x40b4 000040af: DUP3 000040b0: PUSH2 0x361b 000040b3: JUMP 000040b4: JUMPDEST 000040b5: SWAP1 000040b6: POP 000040b7: PUSH2 0x0c9d 000040ba: JUMP 000040bb: JUMPDEST 000040bc: POP 000040bd: DUP1 000040be: PUSH2 0x0c9d 000040c1: JUMP 000040c2: JUMPDEST 000040c3: PUSH1 0x00 000040c5: DUP3 000040c6: PUSH2 0x40d1 000040c9: JUMPI 000040ca: POP 000040cb: PUSH1 0x00 000040cd: PUSH2 0x2262 000040d0: JUMP 000040d1: JUMPDEST 000040d2: DUP3 000040d3: DUP3 000040d4: MUL 000040d5: DUP3 000040d6: DUP5 000040d7: DUP3 000040d8: DUP2 000040d9: PUSH2 0x40de 000040dc: JUMPI 000040dd: INVALID 000040de: JUMPDEST 000040df: DIV 000040e0: EQ 000040e1: PUSH2 0x2af3 000040e4: JUMPI 000040e5: PUSH1 0x40 000040e7: MLOAD 000040e8: PUSH3 0x461bcd 000040ec: PUSH1 0xe5 000040ee: SHL 000040ef: DUP2 000040f0: MSTORE 000040f1: PUSH1 0x04 000040f3: ADD 000040f4: PUSH2 0x08ca 000040f7: SWAP1 000040f8: PUSH2 0x5c26 000040fb: JUMP 000040fc: JUMPDEST 000040fd: PUSH1 0x00 000040ff: PUSH2 0x2af3 00004102: DUP4 00004103: DUP4 00004104: PUSH1 0x40 00004106: MLOAD 00004107: DUP1 00004108: PUSH1 0x40 0000410a: ADD 0000410b: PUSH1 0x40 0000410d: MSTORE 0000410e: DUP1 0000410f: PUSH1 0x03 00004111: DUP2 00004112: MSTORE 00004113: PUSH1 0x20 00004115: ADD 00004116: PUSH3 0x313131 0000411a: PUSH1 0xe8 0000411c: SHL 0000411d: DUP2 0000411e: MSTORE 0000411f: POP 00004120: PUSH2 0x4479 00004123: JUMP 00004124: JUMPDEST 00004125: PUSH1 0x00 00004127: DUP2 00004128: DUP4 00004129: SUB 0000412a: DUP2 0000412b: DUP4 0000412c: SLT 0000412d: DUP1 0000412e: ISZERO 0000412f: SWAP1 00004130: PUSH2 0x4139 00004133: JUMPI 00004134: POP 00004135: DUP4 00004136: DUP2 00004137: SGT 00004138: ISZERO 00004139: JUMPDEST 0000413a: DUP1 0000413b: PUSH2 0x414e 0000413e: JUMPI 0000413f: POP 00004140: PUSH1 0x00 00004142: DUP4 00004143: SLT 00004144: DUP1 00004145: ISZERO 00004146: PUSH2 0x414e 00004149: JUMPI 0000414a: POP 0000414b: DUP4 0000414c: DUP2 0000414d: SGT 0000414e: JUMPDEST 0000414f: PUSH2 0x2af3 00004152: JUMPI 00004153: PUSH1 0x40 00004155: MLOAD 00004156: PUSH3 0x461bcd 0000415a: PUSH1 0xe5 0000415c: SHL 0000415d: DUP2 0000415e: MSTORE 0000415f: PUSH1 0x04 00004161: ADD 00004162: PUSH2 0x08ca 00004165: SWAP1 00004166: PUSH2 0x5c43 00004169: JUMP 0000416a: JUMPDEST 0000416b: PUSH1 0x00 0000416d: DUP1 0000416e: PUSH2 0x4178 00004171: DUP6 00004172: PUSH1 0x00 00004174: PUSH2 0x3fc0 00004177: JUMP 00004178: JUMPDEST 00004179: SWAP1 0000417a: POP 0000417b: PUSH2 0xffff 0000417e: DUP4 0000417f: AND 00004180: ISZERO 00004181: PUSH2 0x2ef5 00004184: JUMPI 00004185: PUSH1 0x00 00004187: PUSH2 0x4191 0000418a: DUP6 0000418b: PUSH1 0x00 0000418d: PUSH2 0x3fc0 00004190: JUMP 00004191: JUMPDEST 00004192: SWAP1 00004193: POP 00004194: PUSH2 0x41b7 00004197: DUP2 00004198: PUSH2 0x2ebb 0000419b: DUP8 0000419c: PUSH1 0x20 0000419e: ADD 0000419f: MLOAD 000041a0: PUSH1 0x01 000041a2: PUSH1 0x01 000041a4: PUSH1 0x80 000041a6: SHL 000041a7: SUB 000041a8: AND 000041a9: DUP6 000041aa: PUSH2 0x40c2 000041ad: SWAP1 000041ae: SWAP2 000041af: SWAP1 000041b0: PUSH4 0xffffffff 000041b5: AND 000041b6: JUMP 000041b7: JUMPDEST 000041b8: SWAP7 000041b9: SWAP6 000041ba: POP 000041bb: POP 000041bc: POP 000041bd: POP 000041be: POP 000041bf: POP 000041c0: JUMP 000041c1: JUMPDEST 000041c2: PUSH1 0x00 000041c4: PUSH2 0x41cb 000041c7: PUSH2 0x304a 000041ca: JUMP 000041cb: JUMPDEST 000041cc: PUSH1 0x01 000041ce: PUSH1 0x01 000041d0: PUSH1 0xa0 000041d2: SHL 000041d3: SUB 000041d4: AND 000041d5: PUSH4 0xf83ccdae 000041da: DUP4 000041db: PUSH1 0x40 000041dd: MLOAD 000041de: DUP3 000041df: PUSH4 0xffffffff 000041e4: AND 000041e5: PUSH1 0xe0 000041e7: SHL 000041e8: DUP2 000041e9: MSTORE 000041ea: PUSH1 0x04 000041ec: ADD 000041ed: PUSH2 0x41f6 000041f0: SWAP2 000041f1: SWAP1 000041f2: PUSH2 0x5575 000041f5: JUMP 000041f6: JUMPDEST 000041f7: PUSH1 0x20 000041f9: PUSH1 0x40 000041fb: MLOAD 000041fc: DUP1 000041fd: DUP4 000041fe: SUB 000041ff: DUP2 00004200: PUSH1 0x00 00004202: DUP8 00004203: DUP1 00004204: EXTCODESIZE 00004205: ISZERO 00004206: DUP1 00004207: ISZERO 00004208: PUSH2 0x4210 0000420b: JUMPI 0000420c: PUSH1 0x00 0000420e: DUP1 0000420f: REVERT 00004210: JUMPDEST 00004211: POP 00004212: GAS 00004213: CALL 00004214: ISZERO 00004215: DUP1 00004216: ISZERO 00004217: PUSH2 0x4224 0000421a: JUMPI 0000421b: RETURNDATASIZE 0000421c: PUSH1 0x00 0000421e: DUP1 0000421f: RETURNDATACOPY 00004220: RETURNDATASIZE 00004221: PUSH1 0x00 00004223: REVERT 00004224: JUMPDEST 00004225: POP 00004226: POP 00004227: POP 00004228: POP 00004229: PUSH1 0x40 0000422b: MLOAD 0000422c: RETURNDATASIZE 0000422d: PUSH1 0x1f 0000422f: NOT 00004230: PUSH1 0x1f 00004232: DUP3 00004233: ADD 00004234: AND 00004235: DUP3 00004236: ADD 00004237: DUP1 00004238: PUSH1 0x40 0000423a: MSTORE 0000423b: POP 0000423c: DUP2 0000423d: ADD 0000423e: SWAP1 0000423f: PUSH2 0x2262 00004242: SWAP2 00004243: SWAP1 00004244: PUSH2 0x5022 00004247: JUMP 00004248: JUMPDEST 00004249: PUSH1 0x00 0000424b: DUP2 0000424c: PUSH1 0x20 0000424e: ADD 0000424f: MLOAD 00004250: ISZERO 00004251: PUSH2 0x4387 00004254: JUMPI 00004255: PUSH1 0x40 00004257: MLOAD 00004258: PUSH4 0x70a08231 0000425d: PUSH1 0xe0 0000425f: SHL 00004260: DUP2 00004261: MSTORE 00004262: PUSH1 0x00 00004264: SWAP1 00004265: PUSH1 0x01 00004267: PUSH1 0x01 00004269: PUSH1 0xa0 0000426b: SHL 0000426c: SUB 0000426d: DUP8 0000426e: AND 0000426f: SWAP1 00004270: PUSH4 0x70a08231 00004275: SWAP1 00004276: PUSH2 0x4283 00004279: SWAP1 0000427a: ADDRESS 0000427b: SWAP1 0000427c: PUSH1 0x04 0000427e: ADD 0000427f: PUSH2 0x5575 00004282: JUMP 00004283: JUMPDEST 00004284: PUSH1 0x20 00004286: PUSH1 0x40 00004288: MLOAD 00004289: DUP1 0000428a: DUP4 0000428b: SUB 0000428c: DUP2 0000428d: DUP7 0000428e: DUP1 0000428f: EXTCODESIZE 00004290: ISZERO 00004291: DUP1 00004292: ISZERO 00004293: PUSH2 0x429b 00004296: JUMPI 00004297: PUSH1 0x00 00004299: DUP1 0000429a: REVERT 0000429b: JUMPDEST 0000429c: POP 0000429d: GAS 0000429e: STATICCALL 0000429f: ISZERO 000042a0: DUP1 000042a1: ISZERO 000042a2: PUSH2 0x42af 000042a5: JUMPI 000042a6: RETURNDATASIZE 000042a7: PUSH1 0x00 000042a9: DUP1 000042aa: RETURNDATACOPY 000042ab: RETURNDATASIZE 000042ac: PUSH1 0x00 000042ae: REVERT 000042af: JUMPDEST 000042b0: POP 000042b1: POP 000042b2: POP 000042b3: POP 000042b4: PUSH1 0x40 000042b6: MLOAD 000042b7: RETURNDATASIZE 000042b8: PUSH1 0x1f 000042ba: NOT 000042bb: PUSH1 0x1f 000042bd: DUP3 000042be: ADD 000042bf: AND 000042c0: DUP3 000042c1: ADD 000042c2: DUP1 000042c3: PUSH1 0x40 000042c5: MSTORE 000042c6: POP 000042c7: DUP2 000042c8: ADD 000042c9: SWAP1 000042ca: PUSH2 0x42d3 000042cd: SWAP2 000042ce: SWAP1 000042cf: PUSH2 0x5022 000042d2: JUMP 000042d3: JUMPDEST 000042d4: SWAP1 000042d5: POP 000042d6: PUSH2 0x42ea 000042d9: DUP7 000042da: DUP7 000042db: ADDRESS 000042dc: DUP8 000042dd: PUSH1 0x01 000042df: PUSH1 0x01 000042e1: PUSH1 0x80 000042e3: SHL 000042e4: SUB 000042e5: AND 000042e6: PUSH2 0x44b0 000042e9: JUMP 000042ea: JUMPDEST 000042eb: PUSH1 0x40 000042ed: MLOAD 000042ee: PUSH4 0x70a08231 000042f3: PUSH1 0xe0 000042f5: SHL 000042f6: DUP2 000042f7: MSTORE 000042f8: PUSH1 0x00 000042fa: SWAP1 000042fb: PUSH1 0x01 000042fd: PUSH1 0x01 000042ff: PUSH1 0xa0 00004301: SHL 00004302: SUB 00004303: DUP9 00004304: AND 00004305: SWAP1 00004306: PUSH4 0x70a08231 0000430b: SWAP1 0000430c: PUSH2 0x4319 0000430f: SWAP1 00004310: ADDRESS 00004311: SWAP1 00004312: PUSH1 0x04 00004314: ADD 00004315: PUSH2 0x5575 00004318: JUMP 00004319: JUMPDEST 0000431a: PUSH1 0x20 0000431c: PUSH1 0x40 0000431e: MLOAD 0000431f: DUP1 00004320: DUP4 00004321: SUB 00004322: DUP2 00004323: DUP7 00004324: DUP1 00004325: EXTCODESIZE 00004326: ISZERO 00004327: DUP1 00004328: ISZERO 00004329: PUSH2 0x4331 0000432c: JUMPI 0000432d: PUSH1 0x00 0000432f: DUP1 00004330: REVERT 00004331: JUMPDEST 00004332: POP 00004333: GAS 00004334: STATICCALL 00004335: ISZERO 00004336: DUP1 00004337: ISZERO 00004338: PUSH2 0x4345 0000433b: JUMPI 0000433c: RETURNDATASIZE 0000433d: PUSH1 0x00 0000433f: DUP1 00004340: RETURNDATACOPY 00004341: RETURNDATASIZE 00004342: PUSH1 0x00 00004344: REVERT 00004345: JUMPDEST 00004346: POP 00004347: POP 00004348: POP 00004349: POP 0000434a: PUSH1 0x40 0000434c: MLOAD 0000434d: RETURNDATASIZE 0000434e: PUSH1 0x1f 00004350: NOT 00004351: PUSH1 0x1f 00004353: DUP3 00004354: ADD 00004355: AND 00004356: DUP3 00004357: ADD 00004358: DUP1 00004359: PUSH1 0x40 0000435b: MSTORE 0000435c: POP 0000435d: DUP2 0000435e: ADD 0000435f: SWAP1 00004360: PUSH2 0x4369 00004363: SWAP2 00004364: SWAP1 00004365: PUSH2 0x5022 00004368: JUMP 00004369: JUMPDEST 0000436a: SWAP1 0000436b: POP 0000436c: PUSH2 0x437e 0000436f: PUSH2 0x2ec7 00004372: DUP3 00004373: DUP5 00004374: PUSH4 0xffffffff 00004379: PUSH2 0x44d1 0000437c: AND 0000437d: JUMP 0000437e: JUMPDEST 0000437f: SWAP5 00004380: POP 00004381: POP 00004382: POP 00004383: PUSH2 0x440a 00004386: JUMP 00004387: JUMPDEST 00004388: DUP2 00004389: MLOAD 0000438a: ISZERO 0000438b: PUSH2 0x43f5 0000438e: JUMPI 0000438f: PUSH1 0x40 00004391: MLOAD 00004392: PUSH4 0x62ad1b83 00004397: PUSH1 0xe0 00004399: SHL 0000439a: DUP2 0000439b: MSTORE 0000439c: PUSH1 0x01 0000439e: PUSH1 0x01 000043a0: PUSH1 0xa0 000043a2: SHL 000043a3: SUB 000043a4: DUP7 000043a5: AND 000043a6: SWAP1 000043a7: PUSH4 0x62ad1b83 000043ac: SWAP1 000043ad: PUSH2 0x43be 000043b0: SWAP1 000043b1: DUP8 000043b2: SWAP1 000043b3: ADDRESS 000043b4: SWAP1 000043b5: DUP9 000043b6: SWAP1 000043b7: PUSH1 0x04 000043b9: ADD 000043ba: PUSH2 0x5652 000043bd: JUMP 000043be: JUMPDEST 000043bf: PUSH1 0x00 000043c1: PUSH1 0x40 000043c3: MLOAD 000043c4: DUP1 000043c5: DUP4 000043c6: SUB 000043c7: DUP2 000043c8: PUSH1 0x00 000043ca: DUP8 000043cb: DUP1 000043cc: EXTCODESIZE 000043cd: ISZERO 000043ce: DUP1 000043cf: ISZERO 000043d0: PUSH2 0x43d8 000043d3: JUMPI 000043d4: PUSH1 0x00 000043d6: DUP1 000043d7: REVERT 000043d8: JUMPDEST 000043d9: POP 000043da: GAS 000043db: CALL 000043dc: ISZERO 000043dd: DUP1 000043de: ISZERO 000043df: PUSH2 0x43ec 000043e2: JUMPI 000043e3: RETURNDATASIZE 000043e4: PUSH1 0x00 000043e6: DUP1 000043e7: RETURNDATACOPY 000043e8: RETURNDATASIZE 000043e9: PUSH1 0x00 000043eb: REVERT 000043ec: JUMPDEST 000043ed: POP 000043ee: POP 000043ef: POP 000043f0: POP 000043f1: PUSH2 0x440a 000043f4: JUMP 000043f5: JUMPDEST 000043f6: PUSH2 0x440a 000043f9: DUP6 000043fa: DUP6 000043fb: ADDRESS 000043fc: DUP7 000043fd: PUSH1 0x01 000043ff: PUSH1 0x01 00004401: PUSH1 0x80 00004403: SHL 00004404: SUB 00004405: AND 00004406: PUSH2 0x44b0 00004409: JUMP 0000440a: JUMPDEST 0000440b: POP 0000440c: SWAP1 0000440d: SWAP4 0000440e: SWAP3 0000440f: POP 00004410: POP 00004411: POP 00004412: JUMP 00004413: JUMPDEST 00004414: PUSH1 0x01 00004416: PUSH1 0xfd 00004418: SHL 00004419: SWAP1 0000441a: DUP2 0000441b: AND 0000441c: EQ 0000441d: SWAP1 0000441e: JUMP 0000441f: JUMPDEST 00004420: SWAP1 00004421: SSTORE 00004422: JUMP 00004423: JUMPDEST 00004424: PUSH2 0x09cb 00004427: DUP4 00004428: PUSH4 0xa9059cbb 0000442d: PUSH1 0xe0 0000442f: SHL 00004430: DUP5 00004431: DUP5 00004432: PUSH1 0x40 00004434: MLOAD 00004435: PUSH1 0x24 00004437: ADD 00004438: PUSH2 0x4442 0000443b: SWAP3 0000443c: SWAP2 0000443d: SWAP1 0000443e: PUSH2 0x5853 00004441: JUMP 00004442: JUMPDEST 00004443: PUSH1 0x40 00004445: DUP1 00004446: MLOAD 00004447: PUSH1 0x1f 00004449: NOT 0000444a: DUP2 0000444b: DUP5 0000444c: SUB 0000444d: ADD 0000444e: DUP2 0000444f: MSTORE 00004450: SWAP2 00004451: SWAP1 00004452: MSTORE 00004453: PUSH1 0x20 00004455: DUP2 00004456: ADD 00004457: DUP1 00004458: MLOAD 00004459: PUSH1 0x01 0000445b: PUSH1 0x01 0000445d: PUSH1 0xe0 0000445f: SHL 00004460: SUB 00004461: AND 00004462: PUSH1 0x01 00004464: PUSH1 0x01 00004466: PUSH1 0xe0 00004468: SHL 00004469: SUB 0000446a: NOT 0000446b: SWAP1 0000446c: SWAP4 0000446d: AND 0000446e: SWAP3 0000446f: SWAP1 00004470: SWAP3 00004471: OR 00004472: SWAP1 00004473: SWAP2 00004474: MSTORE 00004475: PUSH2 0x44f9 00004478: JUMP 00004479: JUMPDEST 0000447a: PUSH1 0x00 0000447c: DUP2 0000447d: DUP4 0000447e: PUSH2 0x449a 00004481: JUMPI 00004482: PUSH1 0x40 00004484: MLOAD 00004485: PUSH3 0x461bcd 00004489: PUSH1 0xe5 0000448b: SHL 0000448c: DUP2 0000448d: MSTORE 0000448e: PUSH1 0x04 00004490: ADD 00004491: PUSH2 0x08ca 00004494: SWAP2 00004495: SWAP1 00004496: PUSH2 0x58d6 00004499: JUMP 0000449a: JUMPDEST 0000449b: POP 0000449c: PUSH1 0x00 0000449e: DUP4 0000449f: DUP6 000044a0: DUP2 000044a1: PUSH2 0x44a6 000044a4: JUMPI 000044a5: INVALID 000044a6: JUMPDEST 000044a7: DIV 000044a8: SWAP6 000044a9: SWAP5 000044aa: POP 000044ab: POP 000044ac: POP 000044ad: POP 000044ae: POP 000044af: JUMP 000044b0: JUMPDEST 000044b1: PUSH2 0x1886 000044b4: DUP5 000044b5: PUSH4 0x23b872dd 000044ba: PUSH1 0xe0 000044bc: SHL 000044bd: DUP6 000044be: DUP6 000044bf: DUP6 000044c0: PUSH1 0x40 000044c2: MLOAD 000044c3: PUSH1 0x24 000044c5: ADD 000044c6: PUSH2 0x4442 000044c9: SWAP4 000044ca: SWAP3 000044cb: SWAP2 000044cc: SWAP1 000044cd: PUSH2 0x56d2 000044d0: JUMP 000044d1: JUMPDEST 000044d2: PUSH1 0x00 000044d4: PUSH2 0x2af3 000044d7: DUP4 000044d8: DUP4 000044d9: PUSH1 0x40 000044db: MLOAD 000044dc: DUP1 000044dd: PUSH1 0x40 000044df: ADD 000044e0: PUSH1 0x40 000044e2: MSTORE 000044e3: DUP1 000044e4: PUSH1 0x03 000044e6: DUP2 000044e7: MSTORE 000044e8: PUSH1 0x20 000044ea: ADD 000044eb: PUSH3 0x313039 000044ef: PUSH1 0xe8 000044f1: SHL 000044f2: DUP2 000044f3: MSTORE 000044f4: POP 000044f5: PUSH2 0x4588 000044f8: JUMP 000044f9: JUMPDEST 000044fa: PUSH1 0x60 000044fc: PUSH2 0x454e 000044ff: DUP3 00004500: PUSH1 0x40 00004502: MLOAD 00004503: DUP1 00004504: PUSH1 0x40 00004506: ADD 00004507: PUSH1 0x40 00004509: MSTORE 0000450a: DUP1 0000450b: PUSH1 0x20 0000450d: DUP2 0000450e: MSTORE 0000450f: PUSH1 0x20 00004511: ADD 00004512: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 00004533: DUP2 00004534: MSTORE 00004535: POP 00004536: DUP6 00004537: PUSH1 0x01 00004539: PUSH1 0x01 0000453b: PUSH1 0xa0 0000453d: SHL 0000453e: SUB 0000453f: AND 00004540: PUSH2 0x45b4 00004543: SWAP1 00004544: SWAP3 00004545: SWAP2 00004546: SWAP1 00004547: PUSH4 0xffffffff 0000454c: AND 0000454d: JUMP 0000454e: JUMPDEST 0000454f: DUP1 00004550: MLOAD 00004551: SWAP1 00004552: SWAP2 00004553: POP 00004554: ISZERO 00004555: PUSH2 0x09cb 00004558: JUMPI 00004559: DUP1 0000455a: DUP1 0000455b: PUSH1 0x20 0000455d: ADD 0000455e: SWAP1 0000455f: MLOAD 00004560: DUP2 00004561: ADD 00004562: SWAP1 00004563: PUSH2 0x456c 00004566: SWAP2 00004567: SWAP1 00004568: PUSH2 0x4fe6 0000456b: JUMP 0000456c: JUMPDEST 0000456d: PUSH2 0x09cb 00004570: JUMPI 00004571: PUSH1 0x40 00004573: MLOAD 00004574: PUSH3 0x461bcd 00004578: PUSH1 0xe5 0000457a: SHL 0000457b: DUP2 0000457c: MSTORE 0000457d: PUSH1 0x04 0000457f: ADD 00004580: PUSH2 0x08ca 00004583: SWAP1 00004584: PUSH2 0x5c87 00004587: JUMP 00004588: JUMPDEST 00004589: PUSH1 0x00 0000458b: DUP2 0000458c: DUP5 0000458d: DUP5 0000458e: GT 0000458f: ISZERO 00004590: PUSH2 0x45ac 00004593: JUMPI 00004594: PUSH1 0x40 00004596: MLOAD 00004597: PUSH3 0x461bcd 0000459b: PUSH1 0xe5 0000459d: SHL 0000459e: DUP2 0000459f: MSTORE 000045a0: PUSH1 0x04 000045a2: ADD 000045a3: PUSH2 0x08ca 000045a6: SWAP2 000045a7: SWAP1 000045a8: PUSH2 0x58d6 000045ab: JUMP 000045ac: JUMPDEST 000045ad: POP 000045ae: POP 000045af: POP 000045b0: SWAP1 000045b1: SUB 000045b2: SWAP1 000045b3: JUMP 000045b4: JUMPDEST 000045b5: PUSH1 0x60 000045b7: PUSH2 0x2ef5 000045ba: DUP5 000045bb: DUP5 000045bc: PUSH1 0x00 000045be: DUP6 000045bf: PUSH1 0x60 000045c1: PUSH2 0x45c9 000045c4: DUP6 000045c5: PUSH2 0x4682 000045c8: JUMP 000045c9: JUMPDEST 000045ca: PUSH2 0x45e5 000045cd: JUMPI 000045ce: PUSH1 0x40 000045d0: MLOAD 000045d1: PUSH3 0x461bcd 000045d5: PUSH1 0xe5 000045d7: SHL 000045d8: DUP2 000045d9: MSTORE 000045da: PUSH1 0x04 000045dc: ADD 000045dd: PUSH2 0x08ca 000045e0: SWAP1 000045e1: PUSH2 0x5bb9 000045e4: JUMP 000045e5: JUMPDEST 000045e6: PUSH1 0x00 000045e8: PUSH1 0x60 000045ea: DUP7 000045eb: PUSH1 0x01 000045ed: PUSH1 0x01 000045ef: PUSH1 0xa0 000045f1: SHL 000045f2: SUB 000045f3: AND 000045f4: DUP6 000045f5: DUP8 000045f6: PUSH1 0x40 000045f8: MLOAD 000045f9: PUSH2 0x4602 000045fc: SWAP2 000045fd: SWAP1 000045fe: PUSH2 0x5556 00004601: JUMP 00004602: JUMPDEST 00004603: PUSH1 0x00 00004605: PUSH1 0x40 00004607: MLOAD 00004608: DUP1 00004609: DUP4 0000460a: SUB 0000460b: DUP2 0000460c: DUP6 0000460d: DUP8 0000460e: GAS 0000460f: CALL 00004610: SWAP3 00004611: POP 00004612: POP 00004613: POP 00004614: RETURNDATASIZE 00004615: DUP1 00004616: PUSH1 0x00 00004618: DUP2 00004619: EQ 0000461a: PUSH2 0x463f 0000461d: JUMPI 0000461e: PUSH1 0x40 00004620: MLOAD 00004621: SWAP2 00004622: POP 00004623: PUSH1 0x1f 00004625: NOT 00004626: PUSH1 0x3f 00004628: RETURNDATASIZE 00004629: ADD 0000462a: AND 0000462b: DUP3 0000462c: ADD 0000462d: PUSH1 0x40 0000462f: MSTORE 00004630: RETURNDATASIZE 00004631: DUP3 00004632: MSTORE 00004633: RETURNDATASIZE 00004634: PUSH1 0x00 00004636: PUSH1 0x20 00004638: DUP5 00004639: ADD 0000463a: RETURNDATACOPY 0000463b: PUSH2 0x4644 0000463e: JUMP 0000463f: JUMPDEST 00004640: PUSH1 0x60 00004642: SWAP2 00004643: POP 00004644: JUMPDEST 00004645: POP 00004646: SWAP2 00004647: POP 00004648: SWAP2 00004649: POP 0000464a: DUP2 0000464b: ISZERO 0000464c: PUSH2 0x4658 0000464f: JUMPI 00004650: SWAP2 00004651: POP 00004652: PUSH2 0x2ef5 00004655: SWAP1 00004656: POP 00004657: JUMP 00004658: JUMPDEST 00004659: DUP1 0000465a: MLOAD 0000465b: ISZERO 0000465c: PUSH2 0x4668 0000465f: JUMPI 00004660: DUP1 00004661: MLOAD 00004662: DUP1 00004663: DUP3 00004664: PUSH1 0x20 00004666: ADD 00004667: REVERT 00004668: JUMPDEST 00004669: DUP4 0000466a: PUSH1 0x40 0000466c: MLOAD 0000466d: PUSH3 0x461bcd 00004671: PUSH1 0xe5 00004673: SHL 00004674: DUP2 00004675: MSTORE 00004676: PUSH1 0x04 00004678: ADD 00004679: PUSH2 0x08ca 0000467c: SWAP2 0000467d: SWAP1 0000467e: PUSH2 0x58d6 00004681: JUMP 00004682: JUMPDEST 00004683: EXTCODESIZE 00004684: ISZERO 00004685: ISZERO 00004686: SWAP1 00004687: JUMP 00004688: JUMPDEST 00004689: PUSH1 0x40 0000468b: DUP1 0000468c: MLOAD 0000468d: PUSH1 0x80 0000468f: DUP2 00004690: ADD 00004691: DUP3 00004692: MSTORE 00004693: PUSH1 0x00 00004695: DUP1 00004696: DUP3 00004697: MSTORE 00004698: PUSH1 0x20 0000469a: DUP3 0000469b: ADD 0000469c: DUP2 0000469d: SWAP1 0000469e: MSTORE 0000469f: SWAP2 000046a0: DUP2 000046a1: ADD 000046a2: DUP3 000046a3: SWAP1 000046a4: MSTORE 000046a5: PUSH1 0x60 000046a7: DUP2 000046a8: ADD 000046a9: SWAP2 000046aa: SWAP1 000046ab: SWAP2 000046ac: MSTORE 000046ad: SWAP1 000046ae: JUMP 000046af: JUMPDEST 000046b0: PUSH1 0x40 000046b2: DUP1 000046b3: MLOAD 000046b4: PUSH1 0xa0 000046b6: DUP2 000046b7: ADD 000046b8: DUP3 000046b9: MSTORE 000046ba: PUSH1 0x00 000046bc: DUP1 000046bd: DUP3 000046be: MSTORE 000046bf: PUSH1 0x20 000046c1: DUP3 000046c2: ADD 000046c3: DUP2 000046c4: SWAP1 000046c5: MSTORE 000046c6: SWAP2 000046c7: DUP2 000046c8: ADD 000046c9: DUP3 000046ca: SWAP1 000046cb: MSTORE 000046cc: PUSH1 0x60 000046ce: DUP2 000046cf: ADD 000046d0: DUP3 000046d1: SWAP1 000046d2: MSTORE 000046d3: PUSH1 0x80 000046d5: DUP2 000046d6: ADD 000046d7: SWAP2 000046d8: SWAP1 000046d9: SWAP2 000046da: MSTORE 000046db: SWAP1 000046dc: JUMP 000046dd: JUMPDEST 000046de: PUSH1 0x40 000046e0: MLOAD 000046e1: DUP1 000046e2: PUSH1 0xc0 000046e4: ADD 000046e5: PUSH1 0x40 000046e7: MSTORE 000046e8: DUP1 000046e9: PUSH1 0x00 000046eb: DUP2 000046ec: MSTORE 000046ed: PUSH1 0x20 000046ef: ADD 000046f0: PUSH1 0x00 000046f2: PUSH2 0xffff 000046f5: AND 000046f6: DUP2 000046f7: MSTORE 000046f8: PUSH1 0x20 000046fa: ADD 000046fb: PUSH1 0x00 000046fd: PUSH2 0xffff 00004700: AND 00004701: DUP2 00004702: MSTORE 00004703: PUSH1 0x20 00004705: ADD 00004706: PUSH1 0x00 00004708: DUP2 00004709: MSTORE 0000470a: PUSH1 0x20 0000470c: ADD 0000470d: PUSH1 0x00 0000470f: DUP2 00004710: MSTORE 00004711: PUSH1 0x20 00004713: ADD 00004714: PUSH2 0x471b 00004717: PUSH2 0x4688 0000471a: JUMP 0000471b: JUMPDEST 0000471c: SWAP1 0000471d: MSTORE 0000471e: SWAP1 0000471f: JUMP 00004720: JUMPDEST 00004721: PUSH1 0x40 00004723: MLOAD 00004724: DUP1 00004725: PUSH1 0xa0 00004727: ADD 00004728: PUSH1 0x40 0000472a: MSTORE 0000472b: DUP1 0000472c: PUSH1 0x00 0000472e: DUP2 0000472f: MSTORE 00004730: PUSH1 0x20 00004732: ADD 00004733: PUSH1 0x00 00004735: DUP2 00004736: MSTORE 00004737: PUSH1 0x20 00004739: ADD 0000473a: PUSH1 0x00 0000473c: DUP2 0000473d: MSTORE 0000473e: PUSH1 0x20 00004740: ADD 00004741: PUSH1 0x00 00004743: DUP2 00004744: MSTORE 00004745: PUSH1 0x20 00004747: ADD 00004748: PUSH1 0x00 0000474a: DUP2 0000474b: MSTORE 0000474c: POP 0000474d: SWAP1 0000474e: JUMP 0000474f: JUMPDEST 00004750: PUSH1 0x40 00004752: MLOAD 00004753: DUP1 00004754: PUSH1 0x80 00004756: ADD 00004757: PUSH1 0x40 00004759: MSTORE 0000475a: DUP1 0000475b: PUSH1 0x00 0000475d: DUP2 0000475e: MSTORE 0000475f: PUSH1 0x20 00004761: ADD 00004762: PUSH1 0x00 00004764: PUSH1 0x01 00004766: PUSH1 0x01 00004768: PUSH1 0x80 0000476a: SHL 0000476b: SUB 0000476c: AND 0000476d: DUP2 0000476e: MSTORE 0000476f: PUSH1 0x20 00004771: ADD 00004772: PUSH1 0x00 00004774: PUSH1 0x01 00004776: PUSH1 0x01 00004778: PUSH1 0x80 0000477a: SHL 0000477b: SUB 0000477c: AND 0000477d: DUP2 0000477e: MSTORE 0000477f: PUSH1 0x20 00004781: ADD 00004782: PUSH1 0x00 00004784: DUP2 00004785: MSTORE 00004786: POP 00004787: SWAP1 00004788: JUMP 00004789: JUMPDEST 0000478a: PUSH1 0x40 0000478c: DUP1 0000478d: MLOAD 0000478e: DUP1 0000478f: DUP3 00004790: ADD 00004791: SWAP1 00004792: SWAP2 00004793: MSTORE 00004794: PUSH1 0x00 00004796: DUP1 00004797: DUP3 00004798: MSTORE 00004799: PUSH1 0x20 0000479b: DUP3 0000479c: ADD 0000479d: MSTORE 0000479e: SWAP1 0000479f: JUMP 000047a0: JUMPDEST 000047a1: PUSH1 0x00 000047a3: DUP1 000047a4: DUP4 000047a5: PUSH1 0x1f 000047a7: DUP5 000047a8: ADD 000047a9: SLT 000047aa: PUSH2 0x47b1 000047ad: JUMPI 000047ae: DUP2 000047af: DUP3 000047b0: REVERT 000047b1: JUMPDEST 000047b2: POP 000047b3: DUP2 000047b4: CALLDATALOAD 000047b5: PUSH8 0xffffffffffffffff 000047be: DUP2 000047bf: GT 000047c0: ISZERO 000047c1: PUSH2 0x47c8 000047c4: JUMPI 000047c5: DUP2 000047c6: DUP3 000047c7: REVERT 000047c8: JUMPDEST 000047c9: PUSH1 0x20 000047cb: DUP4 000047cc: ADD 000047cd: SWAP2 000047ce: POP 000047cf: DUP4 000047d0: PUSH1 0x20 000047d2: DUP1 000047d3: DUP4 000047d4: MUL 000047d5: DUP6 000047d6: ADD 000047d7: ADD 000047d8: GT 000047d9: ISZERO 000047da: PUSH2 0x47e2 000047dd: JUMPI 000047de: PUSH1 0x00 000047e0: DUP1 000047e1: REVERT 000047e2: JUMPDEST 000047e3: SWAP3 000047e4: POP 000047e5: SWAP3 000047e6: SWAP1 000047e7: POP 000047e8: JUMP 000047e9: JUMPDEST 000047ea: PUSH1 0x00 000047ec: DUP1 000047ed: DUP4 000047ee: PUSH1 0x1f 000047f0: DUP5 000047f1: ADD 000047f2: SLT 000047f3: PUSH2 0x47fa 000047f6: JUMPI 000047f7: DUP2 000047f8: DUP3 000047f9: REVERT 000047fa: JUMPDEST 000047fb: POP 000047fc: DUP2 000047fd: CALLDATALOAD 000047fe: PUSH8 0xffffffffffffffff 00004807: DUP2 00004808: GT 00004809: ISZERO 0000480a: PUSH2 0x4811 0000480d: JUMPI 0000480e: DUP2 0000480f: DUP3 00004810: REVERT 00004811: JUMPDEST 00004812: PUSH1 0x20 00004814: DUP4 00004815: ADD 00004816: SWAP2 00004817: POP 00004818: DUP4 00004819: PUSH1 0x20 0000481b: DUP3 0000481c: DUP6 0000481d: ADD 0000481e: ADD 0000481f: GT 00004820: ISZERO 00004821: PUSH2 0x47e2 00004824: JUMPI 00004825: PUSH1 0x00 00004827: DUP1 00004828: REVERT 00004829: JUMPDEST 0000482a: PUSH1 0x00 0000482c: PUSH1 0xc0 0000482e: DUP3 0000482f: DUP5 00004830: SUB 00004831: SLT 00004832: ISZERO 00004833: PUSH2 0x483a 00004836: JUMPI 00004837: DUP1 00004838: DUP2 00004839: REVERT 0000483a: JUMPDEST 0000483b: PUSH2 0x4844 0000483e: PUSH1 0xc0 00004840: PUSH2 0x5e75 00004843: JUMP 00004844: JUMPDEST 00004845: SWAP1 00004846: POP 00004847: DUP2 00004848: MLOAD 00004849: PUSH2 0x4851 0000484c: DUP2 0000484d: PUSH2 0x5f42 00004850: JUMP 00004851: JUMPDEST 00004852: DUP2 00004853: MSTORE 00004854: PUSH1 0x20 00004856: DUP3 00004857: ADD 00004858: MLOAD 00004859: PUSH2 0x4861 0000485c: DUP2 0000485d: PUSH2 0x5f20 00004860: JUMP 00004861: JUMPDEST 00004862: PUSH1 0x20 00004864: DUP3 00004865: ADD 00004866: MSTORE 00004867: PUSH1 0x40 00004869: DUP3 0000486a: ADD 0000486b: MLOAD 0000486c: PUSH2 0x4874 0000486f: DUP2 00004870: PUSH2 0x5f30 00004873: JUMP 00004874: JUMPDEST 00004875: PUSH1 0x40 00004877: DUP3 00004878: ADD 00004879: MSTORE 0000487a: PUSH1 0x60 0000487c: DUP3 0000487d: ADD 0000487e: MLOAD 0000487f: PUSH1 0x01 00004881: PUSH1 0x01 00004883: PUSH1 0xf8 00004885: SHL 00004886: SUB 00004887: NOT 00004888: DUP2 00004889: AND 0000488a: DUP2 0000488b: EQ 0000488c: PUSH2 0x4894 0000488f: JUMPI 00004890: PUSH1 0x00 00004892: DUP1 00004893: REVERT 00004894: JUMPDEST 00004895: PUSH1 0x60 00004897: DUP3 00004898: ADD 00004899: MSTORE 0000489a: PUSH1 0x80 0000489c: DUP3 0000489d: ADD 0000489e: MLOAD 0000489f: PUSH2 0x48a7 000048a2: DUP2 000048a3: PUSH2 0x5f30 000048a6: JUMP 000048a7: JUMPDEST 000048a8: PUSH1 0x80 000048aa: DUP3 000048ab: ADD 000048ac: MSTORE 000048ad: PUSH1 0xa0 000048af: DUP3 000048b0: ADD 000048b1: MLOAD 000048b2: PUSH2 0x48ba 000048b5: DUP2 000048b6: PUSH2 0x5f0b 000048b9: JUMP 000048ba: JUMPDEST 000048bb: PUSH1 0xa0 000048bd: DUP3 000048be: ADD 000048bf: MSTORE 000048c0: SWAP3 000048c1: SWAP2 000048c2: POP 000048c3: POP 000048c4: JUMP 000048c5: JUMPDEST 000048c6: PUSH1 0x00 000048c8: PUSH1 0x60 000048ca: DUP3 000048cb: DUP5 000048cc: SUB 000048cd: SLT 000048ce: ISZERO 000048cf: PUSH2 0x48d6 000048d2: JUMPI 000048d3: DUP1 000048d4: DUP2 000048d5: REVERT 000048d6: JUMPDEST 000048d7: PUSH2 0x48e0 000048da: PUSH1 0x60 000048dc: PUSH2 0x5e75 000048df: JUMP 000048e0: JUMPDEST 000048e1: SWAP1 000048e2: POP 000048e3: DUP2 000048e4: CALLDATALOAD 000048e5: PUSH2 0x48ed 000048e8: DUP2 000048e9: PUSH2 0x5ee8 000048ec: JUMP 000048ed: JUMPDEST 000048ee: DUP2 000048ef: MSTORE 000048f0: PUSH1 0x20 000048f2: DUP3 000048f3: ADD 000048f4: CALLDATALOAD 000048f5: PUSH2 0x48fd 000048f8: DUP2 000048f9: PUSH2 0x5f20 000048fc: JUMP 000048fd: JUMPDEST 000048fe: PUSH1 0x20 00004900: DUP3 00004901: ADD 00004902: MSTORE 00004903: PUSH1 0x40 00004905: DUP3 00004906: ADD 00004907: CALLDATALOAD 00004908: PUSH2 0x4910 0000490b: DUP2 0000490c: PUSH2 0x5f0b 0000490f: JUMP 00004910: JUMPDEST 00004911: PUSH1 0x40 00004913: DUP3 00004914: ADD 00004915: MSTORE 00004916: SWAP3 00004917: SWAP2 00004918: POP 00004919: POP 0000491a: JUMP 0000491b: JUMPDEST 0000491c: DUP1 0000491d: CALLDATALOAD 0000491e: PUSH2 0x2262 00004921: DUP2 00004922: PUSH2 0x5f0b 00004925: JUMP 00004926: JUMPDEST 00004927: DUP1 00004928: CALLDATALOAD 00004929: PUSH2 0x2262 0000492c: DUP2 0000492d: PUSH2 0x5f20 00004930: JUMP 00004931: JUMPDEST 00004932: PUSH1 0x00 00004934: PUSH1 0x20 00004936: DUP3 00004937: DUP5 00004938: SUB 00004939: SLT 0000493a: ISZERO 0000493b: PUSH2 0x4942 0000493e: JUMPI 0000493f: DUP1 00004940: DUP2 00004941: REVERT 00004942: JUMPDEST 00004943: DUP2 00004944: CALLDATALOAD 00004945: PUSH2 0x2af3 00004948: DUP2 00004949: PUSH2 0x5ee8 0000494c: JUMP 0000494d: JUMPDEST 0000494e: PUSH1 0x00 00004950: DUP1 00004951: PUSH1 0x40 00004953: DUP4 00004954: DUP6 00004955: SUB 00004956: SLT 00004957: ISZERO 00004958: PUSH2 0x495f 0000495b: JUMPI 0000495c: DUP1 0000495d: DUP2 0000495e: REVERT 0000495f: JUMPDEST 00004960: DUP3 00004961: CALLDATALOAD 00004962: PUSH2 0x496a 00004965: DUP2 00004966: PUSH2 0x5ee8 00004969: JUMP 0000496a: JUMPDEST 0000496b: SWAP2 0000496c: POP 0000496d: PUSH1 0x20 0000496f: DUP4 00004970: ADD 00004971: CALLDATALOAD 00004972: PUSH2 0x497a 00004975: DUP2 00004976: PUSH2 0x5ee8 00004979: JUMP 0000497a: JUMPDEST 0000497b: DUP1 0000497c: SWAP2 0000497d: POP 0000497e: POP 0000497f: SWAP3 00004980: POP 00004981: SWAP3 00004982: SWAP1 00004983: POP 00004984: JUMP 00004985: JUMPDEST 00004986: PUSH1 0x00 00004988: DUP1 00004989: PUSH1 0x00 0000498b: DUP1 0000498c: PUSH1 0x80 0000498e: DUP6 0000498f: DUP8 00004990: SUB 00004991: SLT 00004992: ISZERO 00004993: PUSH2 0x499a 00004996: JUMPI 00004997: DUP2 00004998: DUP3 00004999: REVERT 0000499a: JUMPDEST 0000499b: DUP5 0000499c: CALLDATALOAD 0000499d: PUSH2 0x49a5 000049a0: DUP2 000049a1: PUSH2 0x5ee8 000049a4: JUMP 000049a5: JUMPDEST 000049a6: SWAP4 000049a7: POP 000049a8: PUSH1 0x20 000049aa: DUP6 000049ab: ADD 000049ac: CALLDATALOAD 000049ad: PUSH2 0x49b5 000049b0: DUP2 000049b1: PUSH2 0x5ee8 000049b4: JUMP 000049b5: JUMPDEST 000049b6: SWAP3 000049b7: POP 000049b8: PUSH1 0x40 000049ba: DUP6 000049bb: ADD 000049bc: CALLDATALOAD 000049bd: PUSH2 0x49c5 000049c0: DUP2 000049c1: PUSH2 0x5ee8 000049c4: JUMP 000049c5: JUMPDEST 000049c6: SWAP2 000049c7: POP 000049c8: PUSH1 0x60 000049ca: DUP6 000049cb: ADD 000049cc: CALLDATALOAD 000049cd: PUSH2 0x49d5 000049d0: DUP2 000049d1: PUSH2 0x5ee8 000049d4: JUMP 000049d5: JUMPDEST 000049d6: SWAP4 000049d7: SWAP7 000049d8: SWAP3 000049d9: SWAP6 000049da: POP 000049db: SWAP1 000049dc: SWAP4 000049dd: POP 000049de: POP 000049df: JUMP 000049e0: JUMPDEST 000049e1: PUSH1 0x00 000049e3: DUP1 000049e4: PUSH1 0x00 000049e6: DUP1 000049e7: PUSH1 0x00 000049e9: DUP1 000049ea: PUSH1 0x00 000049ec: DUP1 000049ed: PUSH1 0xc0 000049ef: DUP10 000049f0: DUP12 000049f1: SUB 000049f2: SLT 000049f3: ISZERO 000049f4: PUSH2 0x49fb 000049f7: JUMPI 000049f8: DUP6 000049f9: DUP7 000049fa: REVERT 000049fb: JUMPDEST 000049fc: DUP9 000049fd: CALLDATALOAD 000049fe: PUSH2 0x4a06 00004a01: DUP2 00004a02: PUSH2 0x5ee8 00004a05: JUMP 00004a06: JUMPDEST 00004a07: SWAP8 00004a08: POP 00004a09: PUSH1 0x20 00004a0b: DUP10 00004a0c: ADD 00004a0d: CALLDATALOAD 00004a0e: PUSH2 0x4a16 00004a11: DUP2 00004a12: PUSH2 0x5ee8 00004a15: JUMP 00004a16: JUMPDEST 00004a17: SWAP7 00004a18: POP 00004a19: PUSH1 0x40 00004a1b: DUP10 00004a1c: ADD 00004a1d: CALLDATALOAD 00004a1e: PUSH2 0x4a26 00004a21: DUP2 00004a22: PUSH2 0x5ee8 00004a25: JUMP 00004a26: JUMPDEST 00004a27: SWAP6 00004a28: POP 00004a29: PUSH1 0x60 00004a2b: DUP10 00004a2c: ADD 00004a2d: CALLDATALOAD 00004a2e: SWAP5 00004a2f: POP 00004a30: PUSH1 0x80 00004a32: DUP10 00004a33: ADD 00004a34: CALLDATALOAD 00004a35: PUSH8 0xffffffffffffffff 00004a3e: DUP1 00004a3f: DUP3 00004a40: GT 00004a41: ISZERO 00004a42: PUSH2 0x4a49 00004a45: JUMPI 00004a46: DUP6 00004a47: DUP7 00004a48: REVERT 00004a49: JUMPDEST 00004a4a: PUSH2 0x4a55 00004a4d: DUP13 00004a4e: DUP4 00004a4f: DUP14 00004a50: ADD 00004a51: PUSH2 0x47e9 00004a54: JUMP 00004a55: JUMPDEST 00004a56: SWAP1 00004a57: SWAP7 00004a58: POP 00004a59: SWAP5 00004a5a: POP 00004a5b: PUSH1 0xa0 00004a5d: DUP12 00004a5e: ADD 00004a5f: CALLDATALOAD 00004a60: SWAP2 00004a61: POP 00004a62: DUP1 00004a63: DUP3 00004a64: GT 00004a65: ISZERO 00004a66: PUSH2 0x4a6d 00004a69: JUMPI 00004a6a: DUP4 00004a6b: DUP5 00004a6c: REVERT 00004a6d: JUMPDEST 00004a6e: POP 00004a6f: PUSH2 0x4a7a 00004a72: DUP12 00004a73: DUP3 00004a74: DUP13 00004a75: ADD 00004a76: PUSH2 0x47e9 00004a79: JUMP 00004a7a: JUMPDEST 00004a7b: SWAP10 00004a7c: SWAP13 00004a7d: SWAP9 00004a7e: SWAP12 00004a7f: POP 00004a80: SWAP7 00004a81: SWAP10 00004a82: POP 00004a83: SWAP5 00004a84: SWAP8 00004a85: SWAP4 00004a86: SWAP7 00004a87: SWAP3 00004a88: SWAP6 00004a89: SWAP5 00004a8a: POP 00004a8b: POP 00004a8c: POP 00004a8d: JUMP 00004a8e: JUMPDEST 00004a8f: PUSH1 0x00 00004a91: DUP1 00004a92: PUSH1 0x00 00004a94: PUSH1 0x40 00004a96: DUP5 00004a97: DUP7 00004a98: SUB 00004a99: SLT 00004a9a: ISZERO 00004a9b: PUSH2 0x4aa2 00004a9e: JUMPI 00004a9f: DUP1 00004aa0: DUP2 00004aa1: REVERT 00004aa2: JUMPDEST 00004aa3: DUP4 00004aa4: CALLDATALOAD 00004aa5: PUSH2 0x4aad 00004aa8: DUP2 00004aa9: PUSH2 0x5ee8 00004aac: JUMP 00004aad: JUMPDEST 00004aae: SWAP3 00004aaf: POP 00004ab0: PUSH1 0x20 00004ab2: DUP5 00004ab3: ADD 00004ab4: CALLDATALOAD 00004ab5: PUSH8 0xffffffffffffffff 00004abe: DUP2 00004abf: GT 00004ac0: ISZERO 00004ac1: PUSH2 0x4ac8 00004ac4: JUMPI 00004ac5: DUP2 00004ac6: DUP3 00004ac7: REVERT 00004ac8: JUMPDEST 00004ac9: PUSH2 0x4ad4 00004acc: DUP7 00004acd: DUP3 00004ace: DUP8 00004acf: ADD 00004ad0: PUSH2 0x47a0 00004ad3: JUMP 00004ad4: JUMPDEST 00004ad5: SWAP5 00004ad6: SWAP8 00004ad7: SWAP1 00004ad8: SWAP7 00004ad9: POP 00004ada: SWAP4 00004adb: SWAP5 00004adc: POP 00004add: POP 00004ade: POP 00004adf: POP 00004ae0: JUMP 00004ae1: JUMPDEST 00004ae2: PUSH1 0x00 00004ae4: DUP1 00004ae5: PUSH1 0x40 00004ae7: DUP1 00004ae8: DUP5 00004ae9: DUP7 00004aea: SUB 00004aeb: SLT 00004aec: ISZERO 00004aed: PUSH2 0x4af4 00004af0: JUMPI 00004af1: DUP3 00004af2: DUP4 00004af3: REVERT 00004af4: JUMPDEST 00004af5: DUP4 00004af6: CALLDATALOAD 00004af7: PUSH2 0x4aff 00004afa: DUP2 00004afb: PUSH2 0x5ee8 00004afe: JUMP 00004aff: JUMPDEST 00004b00: SWAP3 00004b01: POP 00004b02: PUSH1 0x20 00004b04: DUP5 00004b05: DUP2 00004b06: ADD 00004b07: CALLDATALOAD 00004b08: PUSH8 0xffffffffffffffff 00004b11: DUP2 00004b12: GT 00004b13: ISZERO 00004b14: PUSH2 0x4b1b 00004b17: JUMPI 00004b18: DUP4 00004b19: DUP5 00004b1a: REVERT 00004b1b: JUMPDEST 00004b1c: DUP1 00004b1d: DUP7 00004b1e: ADD 00004b1f: DUP8 00004b20: PUSH1 0x1f 00004b22: DUP3 00004b23: ADD 00004b24: SLT 00004b25: PUSH2 0x4b2c 00004b28: JUMPI 00004b29: DUP5 00004b2a: DUP6 00004b2b: REVERT 00004b2c: JUMPDEST 00004b2d: DUP1 00004b2e: CALLDATALOAD 00004b2f: SWAP2 00004b30: POP 00004b31: PUSH2 0x4b41 00004b34: PUSH2 0x4b3c 00004b37: DUP4 00004b38: PUSH2 0x5e9c 00004b3b: JUMP 00004b3c: JUMPDEST 00004b3d: PUSH2 0x5e75 00004b40: JUMP 00004b41: JUMPDEST 00004b42: DUP3 00004b43: DUP2 00004b44: MSTORE 00004b45: DUP4 00004b46: DUP2 00004b47: ADD 00004b48: SWAP1 00004b49: DUP3 00004b4a: DUP6 00004b4b: ADD 00004b4c: DUP7 00004b4d: DUP6 00004b4e: MUL 00004b4f: DUP5 00004b50: ADD 00004b51: DUP7 00004b52: ADD 00004b53: DUP12 00004b54: LT 00004b55: ISZERO 00004b56: PUSH2 0x4b5d 00004b59: JUMPI 00004b5a: DUP8 00004b5b: DUP9 00004b5c: REVERT 00004b5d: JUMPDEST 00004b5e: DUP8 00004b5f: SWAP4 00004b60: POP 00004b61: JUMPDEST 00004b62: DUP5 00004b63: DUP5 00004b64: LT 00004b65: ISZERO 00004b66: PUSH2 0x4bb0 00004b69: JUMPI 00004b6a: DUP7 00004b6b: DUP2 00004b6c: DUP13 00004b6d: SUB 00004b6e: SLT 00004b6f: ISZERO 00004b70: PUSH2 0x4b77 00004b73: JUMPI 00004b74: DUP8 00004b75: DUP9 00004b76: REVERT 00004b77: JUMPDEST 00004b78: PUSH2 0x4b80 00004b7b: DUP8 00004b7c: PUSH2 0x5e75 00004b7f: JUMP 00004b80: JUMPDEST 00004b81: PUSH2 0x4b8a 00004b84: DUP13 00004b85: DUP4 00004b86: PUSH2 0x4926 00004b89: JUMP 00004b8a: JUMPDEST 00004b8b: DUP2 00004b8c: MSTORE 00004b8d: PUSH2 0x4b98 00004b90: DUP13 00004b91: DUP9 00004b92: DUP5 00004b93: ADD 00004b94: PUSH2 0x491b 00004b97: JUMP 00004b98: JUMPDEST 00004b99: DUP2 00004b9a: DUP9 00004b9b: ADD 00004b9c: MSTORE 00004b9d: DUP4 00004b9e: MSTORE 00004b9f: PUSH1 0x01 00004ba1: SWAP4 00004ba2: SWAP1 00004ba3: SWAP4 00004ba4: ADD 00004ba5: SWAP3 00004ba6: SWAP2 00004ba7: DUP6 00004ba8: ADD 00004ba9: SWAP2 00004baa: DUP7 00004bab: ADD 00004bac: PUSH2 0x4b61 00004baf: JUMP 00004bb0: JUMPDEST 00004bb1: POP 00004bb2: DUP1 00004bb3: SWAP7 00004bb4: POP 00004bb5: POP 00004bb6: POP 00004bb7: POP 00004bb8: POP 00004bb9: POP 00004bba: POP 00004bbb: SWAP3 00004bbc: POP 00004bbd: SWAP3 00004bbe: SWAP1 00004bbf: POP 00004bc0: JUMP 00004bc1: JUMPDEST 00004bc2: PUSH1 0x00 00004bc4: DUP1 00004bc5: PUSH1 0x40 00004bc7: DUP4 00004bc8: DUP6 00004bc9: SUB 00004bca: SLT 00004bcb: ISZERO 00004bcc: PUSH2 0x4bd3 00004bcf: JUMPI 00004bd0: DUP2 00004bd1: DUP3 00004bd2: REVERT 00004bd3: JUMPDEST 00004bd4: DUP3 00004bd5: CALLDATALOAD 00004bd6: PUSH2 0x4bde 00004bd9: DUP2 00004bda: PUSH2 0x5ee8 00004bdd: JUMP 00004bde: JUMPDEST 00004bdf: SWAP2 00004be0: POP 00004be1: PUSH1 0x20 00004be3: DUP4 00004be4: DUP2 00004be5: ADD 00004be6: CALLDATALOAD 00004be7: PUSH8 0xffffffffffffffff 00004bf0: DUP2 00004bf1: GT 00004bf2: ISZERO 00004bf3: PUSH2 0x4bfa 00004bf6: JUMPI 00004bf7: DUP3 00004bf8: DUP4 00004bf9: REVERT 00004bfa: JUMPDEST 00004bfb: DUP1 00004bfc: DUP6 00004bfd: ADD 00004bfe: DUP7 00004bff: PUSH1 0x1f 00004c01: DUP3 00004c02: ADD 00004c03: SLT 00004c04: PUSH2 0x4c0b 00004c07: JUMPI 00004c08: DUP4 00004c09: DUP5 00004c0a: REVERT 00004c0b: JUMPDEST 00004c0c: DUP1 00004c0d: CALLDATALOAD 00004c0e: SWAP2 00004c0f: POP 00004c10: PUSH2 0x4c1b 00004c13: PUSH2 0x4b3c 00004c16: DUP4 00004c17: PUSH2 0x5e9c 00004c1a: JUMP 00004c1b: JUMPDEST 00004c1c: DUP3 00004c1d: DUP2 00004c1e: MSTORE 00004c1f: DUP4 00004c20: DUP2 00004c21: ADD 00004c22: SWAP1 00004c23: DUP3 00004c24: DUP6 00004c25: ADD 00004c26: PUSH1 0x60 00004c28: DUP1 00004c29: DUP7 00004c2a: MUL 00004c2b: DUP6 00004c2c: ADD 00004c2d: DUP8 00004c2e: ADD 00004c2f: DUP12 00004c30: LT 00004c31: ISZERO 00004c32: PUSH2 0x4c39 00004c35: JUMPI 00004c36: DUP8 00004c37: DUP9 00004c38: REVERT 00004c39: JUMPDEST 00004c3a: DUP8 00004c3b: SWAP5 00004c3c: POP 00004c3d: JUMPDEST 00004c3e: DUP6 00004c3f: DUP6 00004c40: LT 00004c41: ISZERO 00004c42: PUSH2 0x4c65 00004c45: JUMPI 00004c46: PUSH2 0x4c4f 00004c49: DUP12 00004c4a: DUP4 00004c4b: PUSH2 0x48c5 00004c4e: JUMP 00004c4f: JUMPDEST 00004c50: DUP5 00004c51: MSTORE 00004c52: PUSH1 0x01 00004c54: SWAP5 00004c55: SWAP1 00004c56: SWAP5 00004c57: ADD 00004c58: SWAP4 00004c59: SWAP3 00004c5a: DUP7 00004c5b: ADD 00004c5c: SWAP3 00004c5d: SWAP1 00004c5e: DUP2 00004c5f: ADD 00004c60: SWAP1 00004c61: PUSH2 0x4c3d 00004c64: JUMP 00004c65: JUMPDEST 00004c66: POP 00004c67: SWAP7 00004c68: SWAP10 00004c69: SWAP1 00004c6a: SWAP9 00004c6b: POP 00004c6c: SWAP7 00004c6d: POP 00004c6e: POP 00004c6f: POP 00004c70: POP 00004c71: POP 00004c72: POP 00004c73: POP 00004c74: JUMP 00004c75: JUMPDEST 00004c76: PUSH1 0x00 00004c78: DUP1 00004c79: DUP3 00004c7a: DUP5 00004c7b: SUB 00004c7c: PUSH1 0x60 00004c7e: DUP2 00004c7f: SLT 00004c80: ISZERO 00004c81: PUSH2 0x4c88 00004c84: JUMPI 00004c85: DUP3 00004c86: DUP4 00004c87: REVERT 00004c88: JUMPDEST 00004c89: DUP4 00004c8a: CALLDATALOAD 00004c8b: PUSH2 0x4c93 00004c8e: DUP2 00004c8f: PUSH2 0x5ee8 00004c92: JUMP 00004c93: JUMPDEST 00004c94: SWAP3 00004c95: POP 00004c96: PUSH1 0x40 00004c98: PUSH1 0x1f 00004c9a: NOT 00004c9b: DUP3 00004c9c: ADD 00004c9d: SLT 00004c9e: ISZERO 00004c9f: PUSH2 0x4ca6 00004ca2: JUMPI 00004ca3: DUP2 00004ca4: DUP3 00004ca5: REVERT 00004ca6: JUMPDEST 00004ca7: POP 00004ca8: PUSH2 0x4cb1 00004cab: PUSH1 0x40 00004cad: PUSH2 0x5e75 00004cb0: JUMP 00004cb1: JUMPDEST 00004cb2: PUSH1 0x20 00004cb4: DUP5 00004cb5: ADD 00004cb6: CALLDATALOAD 00004cb7: PUSH2 0x4cbf 00004cba: DUP2 00004cbb: PUSH2 0x5efd 00004cbe: JUMP 00004cbf: JUMPDEST 00004cc0: DUP2 00004cc1: MSTORE 00004cc2: PUSH1 0x40 00004cc4: DUP5 00004cc5: ADD 00004cc6: CALLDATALOAD 00004cc7: PUSH2 0x4ccf 00004cca: DUP2 00004ccb: PUSH2 0x5efd 00004cce: JUMP 00004ccf: JUMPDEST 00004cd0: PUSH1 0x20 00004cd2: DUP3 00004cd3: ADD 00004cd4: MSTORE 00004cd5: SWAP2 00004cd6: SWAP5 00004cd7: SWAP2 00004cd8: SWAP4 00004cd9: POP 00004cda: SWAP1 00004cdb: SWAP2 00004cdc: POP 00004cdd: POP 00004cde: JUMP 00004cdf: JUMPDEST 00004ce0: PUSH1 0x00 00004ce2: DUP1 00004ce3: PUSH1 0x40 00004ce5: DUP4 00004ce6: DUP6 00004ce7: SUB 00004ce8: SLT 00004ce9: ISZERO 00004cea: PUSH2 0x4cf1 00004ced: JUMPI 00004cee: DUP2 00004cef: DUP3 00004cf0: REVERT 00004cf1: JUMPDEST 00004cf2: DUP3 00004cf3: CALLDATALOAD 00004cf4: PUSH2 0x4cfc 00004cf7: DUP2 00004cf8: PUSH2 0x5ee8 00004cfb: JUMP 00004cfc: JUMPDEST 00004cfd: SWAP2 00004cfe: POP 00004cff: PUSH1 0x20 00004d01: DUP4 00004d02: ADD 00004d03: CALLDATALOAD 00004d04: PUSH2 0x497a 00004d07: DUP2 00004d08: PUSH2 0x5f0b 00004d0b: JUMP 00004d0c: JUMPDEST 00004d0d: PUSH1 0x00 00004d0f: DUP1 00004d10: PUSH1 0x00 00004d12: DUP1 00004d13: PUSH1 0x80 00004d15: DUP6 00004d16: DUP8 00004d17: SUB 00004d18: SLT 00004d19: ISZERO 00004d1a: PUSH2 0x4d21 00004d1d: JUMPI 00004d1e: DUP2 00004d1f: DUP3 00004d20: REVERT 00004d21: JUMPDEST 00004d22: DUP5 00004d23: CALLDATALOAD 00004d24: PUSH2 0x4d2c 00004d27: DUP2 00004d28: PUSH2 0x5ee8 00004d2b: JUMP 00004d2c: JUMPDEST 00004d2d: SWAP4 00004d2e: POP 00004d2f: PUSH1 0x20 00004d31: DUP6 00004d32: ADD 00004d33: CALLDATALOAD 00004d34: PUSH2 0x4d3c 00004d37: DUP2 00004d38: PUSH2 0x5f0b 00004d3b: JUMP 00004d3c: JUMPDEST 00004d3d: SWAP3 00004d3e: POP 00004d3f: PUSH1 0x40 00004d41: DUP6 00004d42: ADD 00004d43: CALLDATALOAD 00004d44: PUSH2 0x4d4c 00004d47: DUP2 00004d48: PUSH2 0x5f20 00004d4b: JUMP 00004d4c: JUMPDEST 00004d4d: SWAP2 00004d4e: POP 00004d4f: PUSH1 0x60 00004d51: DUP6 00004d52: ADD 00004d53: CALLDATALOAD 00004d54: PUSH2 0x49d5 00004d57: DUP2 00004d58: PUSH2 0x5f20 00004d5b: JUMP 00004d5c: JUMPDEST 00004d5d: PUSH1 0x00 00004d5f: DUP1 00004d60: PUSH1 0x40 00004d62: DUP4 00004d63: DUP6 00004d64: SUB 00004d65: SLT 00004d66: ISZERO 00004d67: PUSH2 0x4d6e 00004d6a: JUMPI 00004d6b: DUP2 00004d6c: DUP3 00004d6d: REVERT 00004d6e: JUMPDEST 00004d6f: DUP3 00004d70: CALLDATALOAD 00004d71: PUSH2 0x4d79 00004d74: DUP2 00004d75: PUSH2 0x5ee8 00004d78: JUMP 00004d79: JUMPDEST 00004d7a: SWAP2 00004d7b: POP 00004d7c: PUSH1 0x20 00004d7e: DUP4 00004d7f: ADD 00004d80: CALLDATALOAD 00004d81: PUSH2 0x497a 00004d84: DUP2 00004d85: PUSH2 0x5f20 00004d88: JUMP 00004d89: JUMPDEST 00004d8a: PUSH1 0x00 00004d8c: DUP1 00004d8d: PUSH1 0x00 00004d8f: PUSH1 0x60 00004d91: DUP5 00004d92: DUP7 00004d93: SUB 00004d94: SLT 00004d95: ISZERO 00004d96: PUSH2 0x4d9d 00004d99: JUMPI 00004d9a: DUP1 00004d9b: DUP2 00004d9c: REVERT 00004d9d: JUMPDEST 00004d9e: DUP4 00004d9f: CALLDATALOAD 00004da0: PUSH2 0x4da8 00004da3: DUP2 00004da4: PUSH2 0x5ee8 00004da7: JUMP 00004da8: JUMPDEST 00004da9: SWAP3 00004daa: POP 00004dab: PUSH1 0x20 00004dad: DUP5 00004dae: ADD 00004daf: CALLDATALOAD 00004db0: PUSH2 0x4db8 00004db3: DUP2 00004db4: PUSH2 0x5f20 00004db7: JUMP 00004db8: JUMPDEST 00004db9: SWAP2 00004dba: POP 00004dbb: PUSH1 0x40 00004dbd: DUP5 00004dbe: ADD 00004dbf: CALLDATALOAD 00004dc0: PUSH2 0x4dc8 00004dc3: DUP2 00004dc4: PUSH2 0x5f20 00004dc7: JUMP 00004dc8: JUMPDEST 00004dc9: DUP1 00004dca: SWAP2 00004dcb: POP 00004dcc: POP 00004dcd: SWAP3 00004dce: POP 00004dcf: SWAP3 00004dd0: POP 00004dd1: SWAP3 00004dd2: JUMP 00004dd3: JUMPDEST 00004dd4: PUSH1 0x00 00004dd6: DUP1 00004dd7: PUSH1 0x00 00004dd9: DUP1 00004dda: PUSH1 0x80 00004ddc: DUP6 00004ddd: DUP8 00004dde: SUB 00004ddf: SLT 00004de0: ISZERO 00004de1: PUSH2 0x4de8 00004de4: JUMPI 00004de5: DUP2 00004de6: DUP3 00004de7: REVERT 00004de8: JUMPDEST 00004de9: DUP5 00004dea: CALLDATALOAD 00004deb: PUSH2 0x4df3 00004dee: DUP2 00004def: PUSH2 0x5ee8 00004df2: JUMP 00004df3: JUMPDEST 00004df4: SWAP4 00004df5: POP 00004df6: PUSH1 0x20 00004df8: DUP6 00004df9: ADD 00004dfa: CALLDATALOAD 00004dfb: PUSH2 0x4e03 00004dfe: DUP2 00004dff: PUSH2 0x5f20 00004e02: JUMP 00004e03: JUMPDEST 00004e04: SWAP3 00004e05: POP 00004e06: PUSH1 0x40 00004e08: DUP6 00004e09: ADD 00004e0a: CALLDATALOAD 00004e0b: PUSH2 0x4e13 00004e0e: DUP2 00004e0f: PUSH2 0x5f20 00004e12: JUMP 00004e13: JUMPDEST 00004e14: SWAP2 00004e15: POP 00004e16: PUSH1 0x60 00004e18: DUP6 00004e19: ADD 00004e1a: CALLDATALOAD 00004e1b: PUSH2 0x49d5 00004e1e: DUP2 00004e1f: PUSH2 0x5f0b 00004e22: JUMP 00004e23: JUMPDEST 00004e24: PUSH1 0x00 00004e26: DUP1 00004e27: PUSH1 0x00 00004e29: DUP1 00004e2a: PUSH1 0x80 00004e2c: DUP6 00004e2d: DUP8 00004e2e: SUB 00004e2f: SLT 00004e30: ISZERO 00004e31: PUSH2 0x4e38 00004e34: JUMPI 00004e35: DUP2 00004e36: DUP3 00004e37: REVERT 00004e38: JUMPDEST 00004e39: DUP5 00004e3a: CALLDATALOAD 00004e3b: PUSH2 0x4e43 00004e3e: DUP2 00004e3f: PUSH2 0x5ee8 00004e42: JUMP 00004e43: JUMPDEST 00004e44: SWAP4 00004e45: POP 00004e46: PUSH1 0x20 00004e48: DUP6 00004e49: ADD 00004e4a: CALLDATALOAD 00004e4b: PUSH2 0x4e53 00004e4e: DUP2 00004e4f: PUSH2 0x5f42 00004e52: JUMP 00004e53: JUMPDEST 00004e54: SWAP3 00004e55: POP 00004e56: PUSH1 0x40 00004e58: DUP6 00004e59: ADD 00004e5a: CALLDATALOAD 00004e5b: PUSH2 0x4e13 00004e5e: DUP2 00004e5f: PUSH2 0x5f0b 00004e62: JUMP 00004e63: JUMPDEST 00004e64: PUSH1 0x00 00004e66: DUP1 00004e67: PUSH1 0x00 00004e69: DUP1 00004e6a: PUSH1 0x60 00004e6c: DUP6 00004e6d: DUP8 00004e6e: SUB 00004e6f: SLT 00004e70: ISZERO 00004e71: PUSH2 0x4e78 00004e74: JUMPI 00004e75: DUP2 00004e76: DUP3 00004e77: REVERT 00004e78: JUMPDEST 00004e79: DUP5 00004e7a: CALLDATALOAD 00004e7b: PUSH8 0xffffffffffffffff 00004e84: DUP2 00004e85: GT 00004e86: ISZERO 00004e87: PUSH2 0x4e8e 00004e8a: JUMPI 00004e8b: DUP3 00004e8c: DUP4 00004e8d: REVERT 00004e8e: JUMPDEST 00004e8f: PUSH2 0x4e9a 00004e92: DUP8 00004e93: DUP3 00004e94: DUP9 00004e95: ADD 00004e96: PUSH2 0x47a0 00004e99: JUMP 00004e9a: JUMPDEST 00004e9b: SWAP1 00004e9c: SWAP6 00004e9d: POP 00004e9e: SWAP4 00004e9f: POP 00004ea0: POP 00004ea1: PUSH1 0x20 00004ea3: DUP6 00004ea4: ADD 00004ea5: CALLDATALOAD 00004ea6: PUSH2 0x4eae 00004ea9: DUP2 00004eaa: PUSH2 0x5f20 00004ead: JUMP 00004eae: JUMPDEST 00004eaf: SWAP2 00004eb0: POP 00004eb1: PUSH1 0x40 00004eb3: DUP6 00004eb4: ADD 00004eb5: CALLDATALOAD 00004eb6: PUSH2 0x49d5 00004eb9: DUP2 00004eba: PUSH2 0x5f20 00004ebd: JUMP 00004ebe: JUMPDEST 00004ebf: PUSH1 0x00 00004ec1: PUSH1 0x20 00004ec3: DUP1 00004ec4: DUP4 00004ec5: DUP6 00004ec6: SUB 00004ec7: SLT 00004ec8: ISZERO 00004ec9: PUSH2 0x4ed0 00004ecc: JUMPI 00004ecd: DUP2 00004ece: DUP3 00004ecf: REVERT 00004ed0: JUMPDEST 00004ed1: DUP3 00004ed2: CALLDATALOAD 00004ed3: PUSH8 0xffffffffffffffff 00004edc: DUP2 00004edd: GT 00004ede: ISZERO 00004edf: PUSH2 0x4ee6 00004ee2: JUMPI 00004ee3: DUP3 00004ee4: DUP4 00004ee5: REVERT 00004ee6: JUMPDEST 00004ee7: DUP1 00004ee8: DUP5 00004ee9: ADD 00004eea: DUP6 00004eeb: PUSH1 0x1f 00004eed: DUP3 00004eee: ADD 00004eef: SLT 00004ef0: PUSH2 0x4ef7 00004ef3: JUMPI 00004ef4: DUP4 00004ef5: DUP5 00004ef6: REVERT 00004ef7: JUMPDEST 00004ef8: DUP1 00004ef9: CALLDATALOAD 00004efa: SWAP2 00004efb: POP 00004efc: PUSH2 0x4f07 00004eff: PUSH2 0x4b3c 00004f02: DUP4 00004f03: PUSH2 0x5e9c 00004f06: JUMP 00004f07: JUMPDEST 00004f08: DUP3 00004f09: DUP2 00004f0a: MSTORE 00004f0b: DUP4 00004f0c: DUP2 00004f0d: ADD 00004f0e: SWAP1 00004f0f: DUP3 00004f10: DUP6 00004f11: ADD 00004f12: DUP6 00004f13: DUP6 00004f14: MUL 00004f15: DUP5 00004f16: ADD 00004f17: DUP7 00004f18: ADD 00004f19: DUP10 00004f1a: LT 00004f1b: ISZERO 00004f1c: PUSH2 0x4f23 00004f1f: JUMPI 00004f20: DUP7 00004f21: DUP8 00004f22: REVERT 00004f23: JUMPDEST 00004f24: DUP7 00004f25: SWAP4 00004f26: POP 00004f27: JUMPDEST 00004f28: DUP5 00004f29: DUP5 00004f2a: LT 00004f2b: ISZERO 00004f2c: PUSH2 0x2d5c 00004f2f: JUMPI 00004f30: DUP1 00004f31: CALLDATALOAD 00004f32: DUP4 00004f33: MSTORE 00004f34: PUSH1 0x01 00004f36: SWAP4 00004f37: SWAP1 00004f38: SWAP4 00004f39: ADD 00004f3a: SWAP3 00004f3b: SWAP2 00004f3c: DUP6 00004f3d: ADD 00004f3e: SWAP2 00004f3f: DUP6 00004f40: ADD 00004f41: PUSH2 0x4f27 00004f44: JUMP 00004f45: JUMPDEST 00004f46: PUSH1 0x00 00004f48: PUSH1 0x20 00004f4a: DUP1 00004f4b: DUP4 00004f4c: DUP6 00004f4d: SUB 00004f4e: SLT 00004f4f: ISZERO 00004f50: PUSH2 0x4f57 00004f53: JUMPI 00004f54: DUP2 00004f55: DUP3 00004f56: REVERT 00004f57: JUMPDEST 00004f58: DUP3 00004f59: MLOAD 00004f5a: PUSH8 0xffffffffffffffff 00004f63: DUP2 00004f64: GT 00004f65: ISZERO 00004f66: PUSH2 0x4f6d 00004f69: JUMPI 00004f6a: DUP3 00004f6b: DUP4 00004f6c: REVERT 00004f6d: JUMPDEST 00004f6e: DUP1 00004f6f: DUP5 00004f70: ADD 00004f71: DUP6 00004f72: PUSH1 0x1f 00004f74: DUP3 00004f75: ADD 00004f76: SLT 00004f77: PUSH2 0x4f7e 00004f7a: JUMPI 00004f7b: DUP4 00004f7c: DUP5 00004f7d: REVERT 00004f7e: JUMPDEST 00004f7f: DUP1 00004f80: MLOAD 00004f81: SWAP2 00004f82: POP 00004f83: PUSH2 0x4f8e 00004f86: PUSH2 0x4b3c 00004f89: DUP4 00004f8a: PUSH2 0x5e9c 00004f8d: JUMP 00004f8e: JUMPDEST 00004f8f: DUP3 00004f90: DUP2 00004f91: MSTORE 00004f92: DUP4 00004f93: DUP2 00004f94: ADD 00004f95: SWAP1 00004f96: DUP3 00004f97: DUP6 00004f98: ADD 00004f99: PUSH1 0xc0 00004f9b: DUP1 00004f9c: DUP7 00004f9d: MUL 00004f9e: DUP6 00004f9f: ADD 00004fa0: DUP8 00004fa1: ADD 00004fa2: DUP11 00004fa3: LT 00004fa4: ISZERO 00004fa5: PUSH2 0x4fac 00004fa8: JUMPI 00004fa9: DUP8 00004faa: DUP9 00004fab: REVERT 00004fac: JUMPDEST 00004fad: DUP8 00004fae: SWAP5 00004faf: POP 00004fb0: JUMPDEST 00004fb1: DUP6 00004fb2: DUP6 00004fb3: LT 00004fb4: ISZERO 00004fb5: PUSH2 0x4fd8 00004fb8: JUMPI 00004fb9: PUSH2 0x4fc2 00004fbc: DUP11 00004fbd: DUP4 00004fbe: PUSH2 0x4829 00004fc1: JUMP 00004fc2: JUMPDEST 00004fc3: DUP5 00004fc4: MSTORE 00004fc5: PUSH1 0x01 00004fc7: SWAP5 00004fc8: SWAP1 00004fc9: SWAP5 00004fca: ADD 00004fcb: SWAP4 00004fcc: SWAP3 00004fcd: DUP7 00004fce: ADD 00004fcf: SWAP3 00004fd0: SWAP1 00004fd1: DUP2 00004fd2: ADD 00004fd3: SWAP1 00004fd4: PUSH2 0x4fb0 00004fd7: JUMP 00004fd8: JUMPDEST 00004fd9: POP 00004fda: SWAP1 00004fdb: SWAP9 00004fdc: SWAP8 00004fdd: POP 00004fde: POP 00004fdf: POP 00004fe0: POP 00004fe1: POP 00004fe2: POP 00004fe3: POP 00004fe4: POP 00004fe5: JUMP 00004fe6: JUMPDEST 00004fe7: PUSH1 0x00 00004fe9: PUSH1 0x20 00004feb: DUP3 00004fec: DUP5 00004fed: SUB 00004fee: SLT 00004fef: ISZERO 00004ff0: PUSH2 0x4ff7 00004ff3: JUMPI 00004ff4: DUP1 00004ff5: DUP2 00004ff6: REVERT 00004ff7: JUMPDEST 00004ff8: DUP2 00004ff9: MLOAD 00004ffa: PUSH2 0x2af3 00004ffd: DUP2 00004ffe: PUSH2 0x5efd 00005001: JUMP 00005002: JUMPDEST 00005003: PUSH1 0x00 00005005: DUP1 00005006: PUSH1 0x40 00005008: DUP4 00005009: DUP6 0000500a: SUB 0000500b: SLT 0000500c: ISZERO 0000500d: PUSH2 0x5014 00005010: JUMPI 00005011: DUP2 00005012: DUP3 00005013: REVERT 00005014: JUMPDEST 00005015: DUP3 00005016: CALLDATALOAD 00005017: PUSH1 0x04 00005019: DUP2 0000501a: LT 0000501b: PUSH2 0x496a 0000501e: JUMPI 0000501f: DUP3 00005020: DUP4 00005021: REVERT 00005022: JUMPDEST 00005023: PUSH1 0x00 00005025: PUSH1 0x20 00005027: DUP3 00005028: DUP5 00005029: SUB 0000502a: SLT 0000502b: ISZERO 0000502c: PUSH2 0x5033 0000502f: JUMPI 00005030: DUP1 00005031: DUP2 00005032: REVERT 00005033: JUMPDEST 00005034: POP 00005035: MLOAD 00005036: SWAP2 00005037: SWAP1 00005038: POP 00005039: JUMP 0000503a: JUMPDEST 0000503b: PUSH1 0x00 0000503d: DUP1 0000503e: PUSH1 0x40 00005040: DUP4 00005041: DUP6 00005042: SUB 00005043: SLT 00005044: ISZERO 00005045: PUSH2 0x504c 00005048: JUMPI 00005049: DUP2 0000504a: DUP3 0000504b: REVERT 0000504c: JUMPDEST 0000504d: DUP3 0000504e: MLOAD 0000504f: SWAP2 00005050: POP 00005051: PUSH1 0x20 00005053: DUP4 00005054: ADD 00005055: MLOAD 00005056: PUSH2 0x497a 00005059: DUP2 0000505a: PUSH2 0x5f0b 0000505d: JUMP 0000505e: JUMPDEST 0000505f: PUSH1 0x00 00005061: PUSH1 0xa0 00005063: DUP3 00005064: DUP5 00005065: SUB 00005066: SLT 00005067: ISZERO 00005068: PUSH2 0x506f 0000506b: JUMPI 0000506c: DUP1 0000506d: DUP2 0000506e: REVERT 0000506f: JUMPDEST 00005070: PUSH2 0x5079 00005073: PUSH1 0xa0 00005075: PUSH2 0x5e75 00005078: JUMP 00005079: JUMPDEST 0000507a: DUP3 0000507b: MLOAD 0000507c: PUSH2 0x5084 0000507f: DUP2 00005080: PUSH2 0x5f30 00005083: JUMP 00005084: JUMPDEST 00005085: DUP2 00005086: MSTORE 00005087: PUSH1 0x20 00005089: DUP4 0000508a: ADD 0000508b: MLOAD 0000508c: PUSH2 0x5094 0000508f: DUP2 00005090: PUSH2 0x5f30 00005093: JUMP 00005094: JUMPDEST 00005095: PUSH1 0x20 00005097: DUP3 00005098: ADD 00005099: MSTORE 0000509a: PUSH1 0x40 0000509c: DUP4 0000509d: ADD 0000509e: MLOAD 0000509f: PUSH2 0x50a7 000050a2: DUP2 000050a3: PUSH2 0x5f30 000050a6: JUMP 000050a7: JUMPDEST 000050a8: PUSH1 0x40 000050aa: DUP3 000050ab: ADD 000050ac: MSTORE 000050ad: PUSH1 0x60 000050af: DUP4 000050b0: ADD 000050b1: MLOAD 000050b2: PUSH2 0x50ba 000050b5: DUP2 000050b6: PUSH2 0x5ee8 000050b9: JUMP 000050ba: JUMPDEST 000050bb: PUSH1 0x60 000050bd: DUP3 000050be: ADD 000050bf: MSTORE 000050c0: PUSH1 0x80 000050c2: DUP4 000050c3: ADD 000050c4: MLOAD 000050c5: PUSH2 0x50cd 000050c8: DUP2 000050c9: PUSH2 0x5f20 000050cc: JUMP 000050cd: JUMPDEST 000050ce: PUSH1 0x80 000050d0: DUP3 000050d1: ADD 000050d2: MSTORE 000050d3: SWAP4 000050d4: SWAP3 000050d5: POP 000050d6: POP 000050d7: POP 000050d8: JUMP 000050d9: JUMPDEST 000050da: PUSH1 0x00 000050dc: PUSH1 0xa0 000050de: DUP3 000050df: DUP5 000050e0: SUB 000050e1: SLT 000050e2: ISZERO 000050e3: PUSH2 0x50ea 000050e6: JUMPI 000050e7: DUP1 000050e8: DUP2 000050e9: REVERT 000050ea: JUMPDEST 000050eb: PUSH2 0x50f4 000050ee: PUSH1 0xa0 000050f0: PUSH2 0x5e75 000050f3: JUMP 000050f4: JUMPDEST 000050f5: DUP3 000050f6: MLOAD 000050f7: DUP2 000050f8: MSTORE 000050f9: PUSH1 0x20 000050fb: DUP4 000050fc: ADD 000050fd: MLOAD 000050fe: PUSH1 0x20 00005100: DUP3 00005101: ADD 00005102: MSTORE 00005103: PUSH1 0x40 00005105: DUP4 00005106: ADD 00005107: MLOAD 00005108: PUSH1 0x40 0000510a: DUP3 0000510b: ADD 0000510c: MSTORE 0000510d: PUSH1 0x60 0000510f: DUP4 00005110: ADD 00005111: MLOAD 00005112: PUSH1 0x60 00005114: DUP3 00005115: ADD 00005116: MSTORE 00005117: PUSH1 0x80 00005119: DUP4 0000511a: ADD 0000511b: MLOAD 0000511c: PUSH1 0x80 0000511e: DUP3 0000511f: ADD 00005120: MSTORE 00005121: DUP1 00005122: SWAP2 00005123: POP 00005124: POP 00005125: SWAP3 00005126: SWAP2 00005127: POP 00005128: POP 00005129: JUMP 0000512a: JUMPDEST 0000512b: PUSH1 0x00 0000512d: PUSH1 0x80 0000512f: DUP3 00005130: DUP5 00005131: SUB 00005132: SLT 00005133: ISZERO 00005134: PUSH2 0x513b 00005137: JUMPI 00005138: DUP1 00005139: DUP2 0000513a: REVERT 0000513b: JUMPDEST 0000513c: PUSH2 0x5145 0000513f: PUSH1 0x80 00005141: PUSH2 0x5e75 00005144: JUMP 00005145: JUMPDEST 00005146: DUP3 00005147: MLOAD 00005148: DUP2 00005149: MSTORE 0000514a: PUSH1 0x20 0000514c: DUP4 0000514d: ADD 0000514e: MLOAD 0000514f: PUSH2 0x5157 00005152: DUP2 00005153: PUSH2 0x5f0b 00005156: JUMP 00005157: JUMPDEST 00005158: PUSH1 0x20 0000515a: DUP3 0000515b: ADD 0000515c: MSTORE 0000515d: PUSH1 0x40 0000515f: DUP4 00005160: ADD 00005161: MLOAD 00005162: PUSH2 0x516a 00005165: DUP2 00005166: PUSH2 0x5f0b 00005169: JUMP 0000516a: JUMPDEST 0000516b: PUSH1 0x40 0000516d: DUP3 0000516e: ADD 0000516f: MSTORE 00005170: PUSH1 0x60 00005172: SWAP3 00005173: DUP4 00005174: ADD 00005175: MLOAD 00005176: SWAP3 00005177: DUP2 00005178: ADD 00005179: SWAP3 0000517a: SWAP1 0000517b: SWAP3 0000517c: MSTORE 0000517d: POP 0000517e: SWAP2 0000517f: SWAP1 00005180: POP 00005181: JUMP 00005182: JUMPDEST 00005183: PUSH1 0x00 00005185: PUSH1 0x20 00005187: DUP3 00005188: DUP5 00005189: SUB 0000518a: SLT 0000518b: ISZERO 0000518c: PUSH2 0x5193 0000518f: JUMPI 00005190: DUP1 00005191: DUP2 00005192: REVERT 00005193: JUMPDEST 00005194: DUP2 00005195: CALLDATALOAD 00005196: PUSH2 0x2af3 00005199: DUP2 0000519a: PUSH2 0x5f0b 0000519d: JUMP 0000519e: JUMPDEST 0000519f: PUSH1 0x00 000051a1: DUP1 000051a2: PUSH1 0x40 000051a4: DUP4 000051a5: DUP6 000051a6: SUB 000051a7: SLT 000051a8: ISZERO 000051a9: PUSH2 0x51b0 000051ac: JUMPI 000051ad: DUP2 000051ae: DUP3 000051af: REVERT 000051b0: JUMPDEST 000051b1: DUP3 000051b2: MLOAD 000051b3: PUSH2 0x51bb 000051b6: DUP2 000051b7: PUSH2 0x5f0b 000051ba: JUMP 000051bb: JUMPDEST 000051bc: PUSH1 0x20 000051be: DUP5 000051bf: ADD 000051c0: MLOAD 000051c1: SWAP1 000051c2: SWAP3 000051c3: POP 000051c4: PUSH2 0x497a 000051c7: DUP2 000051c8: PUSH2 0x5f0b 000051cb: JUMP 000051cc: JUMPDEST 000051cd: PUSH1 0x00 000051cf: DUP1 000051d0: PUSH1 0x00 000051d2: PUSH1 0x60 000051d4: DUP5 000051d5: DUP7 000051d6: SUB 000051d7: SLT 000051d8: ISZERO 000051d9: PUSH2 0x51e0 000051dc: JUMPI 000051dd: DUP1 000051de: DUP2 000051df: REVERT 000051e0: JUMPDEST 000051e1: DUP4 000051e2: CALLDATALOAD 000051e3: PUSH2 0x51eb 000051e6: DUP2 000051e7: PUSH2 0x5f0b 000051ea: JUMP 000051eb: JUMPDEST 000051ec: SWAP3 000051ed: POP 000051ee: PUSH1 0x20 000051f0: DUP5 000051f1: ADD 000051f2: CALLDATALOAD 000051f3: PUSH2 0x51fb 000051f6: DUP2 000051f7: PUSH2 0x5f0b 000051fa: JUMP 000051fb: JUMPDEST 000051fc: SWAP2 000051fd: POP 000051fe: PUSH1 0x40 00005200: DUP5 00005201: ADD 00005202: CALLDATALOAD 00005203: PUSH2 0x4dc8 00005206: DUP2 00005207: PUSH2 0x5f0b 0000520a: JUMP 0000520b: JUMPDEST 0000520c: PUSH1 0x00 0000520e: PUSH1 0x20 00005210: DUP3 00005211: DUP5 00005212: SUB 00005213: SLT 00005214: ISZERO 00005215: PUSH2 0x521c 00005218: JUMPI 00005219: DUP1 0000521a: DUP2 0000521b: REVERT 0000521c: JUMPDEST 0000521d: DUP2 0000521e: CALLDATALOAD 0000521f: PUSH2 0x2af3 00005222: DUP2 00005223: PUSH2 0x5f20 00005226: JUMP 00005227: JUMPDEST 00005228: PUSH1 0x00 0000522a: DUP1 0000522b: PUSH1 0x40 0000522d: DUP4 0000522e: DUP6 0000522f: SUB 00005230: SLT 00005231: ISZERO 00005232: PUSH2 0x5239 00005235: JUMPI 00005236: DUP2 00005237: DUP3 00005238: REVERT 00005239: JUMPDEST 0000523a: DUP3 0000523b: CALLDATALOAD 0000523c: PUSH2 0x496a 0000523f: DUP2 00005240: PUSH2 0x5f20 00005243: JUMP 00005244: JUMPDEST 00005245: PUSH1 0x00 00005247: DUP1 00005248: PUSH1 0x00 0000524a: PUSH1 0x60 0000524c: DUP5 0000524d: DUP7 0000524e: SUB 0000524f: SLT 00005250: ISZERO 00005251: PUSH2 0x5258 00005254: JUMPI 00005255: DUP1 00005256: DUP2 00005257: REVERT 00005258: JUMPDEST 00005259: DUP4 0000525a: CALLDATALOAD 0000525b: PUSH2 0x5263 0000525e: DUP2 0000525f: PUSH2 0x5f20 00005262: JUMP 00005263: JUMPDEST 00005264: SWAP3 00005265: POP 00005266: PUSH1 0x20 00005268: DUP5 00005269: ADD 0000526a: CALLDATALOAD 0000526b: PUSH2 0x5273 0000526e: DUP2 0000526f: PUSH2 0x5ee8 00005272: JUMP 00005273: JUMPDEST 00005274: SWAP3 00005275: SWAP6 00005276: SWAP3 00005277: SWAP5 00005278: POP 00005279: POP 0000527a: POP 0000527b: PUSH1 0x40 0000527d: SWAP2 0000527e: SWAP1 0000527f: SWAP2 00005280: ADD 00005281: CALLDATALOAD 00005282: SWAP1 00005283: JUMP 00005284: JUMPDEST 00005285: PUSH1 0x00 00005287: DUP1 00005288: PUSH1 0x40 0000528a: DUP4 0000528b: DUP6 0000528c: SUB 0000528d: SLT 0000528e: ISZERO 0000528f: PUSH2 0x5296 00005292: JUMPI 00005293: DUP2 00005294: DUP3 00005295: REVERT 00005296: JUMPDEST 00005297: DUP3 00005298: CALLDATALOAD 00005299: PUSH2 0x4d79 0000529c: DUP2 0000529d: PUSH2 0x5f20 000052a0: JUMP 000052a1: JUMPDEST 000052a2: PUSH1 0x00 000052a4: DUP1 000052a5: PUSH1 0x00 000052a7: DUP1 000052a8: PUSH1 0x80 000052aa: DUP6 000052ab: DUP8 000052ac: SUB 000052ad: SLT 000052ae: ISZERO 000052af: PUSH2 0x52b6 000052b2: JUMPI 000052b3: DUP2 000052b4: DUP3 000052b5: REVERT 000052b6: JUMPDEST 000052b7: DUP5 000052b8: CALLDATALOAD 000052b9: PUSH2 0x52c1 000052bc: DUP2 000052bd: PUSH2 0x5f20 000052c0: JUMP 000052c1: JUMPDEST 000052c2: SWAP4 000052c3: POP 000052c4: PUSH1 0x20 000052c6: DUP6 000052c7: ADD 000052c8: CALLDATALOAD 000052c9: PUSH2 0x52d1 000052cc: DUP2 000052cd: PUSH2 0x5f20 000052d0: JUMP 000052d1: JUMPDEST 000052d2: SWAP3 000052d3: POP 000052d4: PUSH1 0x40 000052d6: DUP6 000052d7: ADD 000052d8: CALLDATALOAD 000052d9: PUSH2 0x4e13 000052dc: DUP2 000052dd: PUSH2 0x5ee8 000052e0: JUMP 000052e1: JUMPDEST 000052e2: PUSH1 0x00 000052e4: DUP1 000052e5: PUSH1 0x00 000052e7: DUP1 000052e8: PUSH1 0x00 000052ea: DUP1 000052eb: PUSH1 0xc0 000052ed: DUP8 000052ee: DUP10 000052ef: SUB 000052f0: SLT 000052f1: ISZERO 000052f2: PUSH2 0x52f9 000052f5: JUMPI 000052f6: DUP4 000052f7: DUP5 000052f8: REVERT 000052f9: JUMPDEST 000052fa: DUP7 000052fb: CALLDATALOAD 000052fc: PUSH2 0x5304 000052ff: DUP2 00005300: PUSH2 0x5f20 00005303: JUMP 00005304: JUMPDEST 00005305: SWAP6 00005306: POP 00005307: PUSH1 0x20 00005309: DUP8 0000530a: ADD 0000530b: CALLDATALOAD 0000530c: PUSH2 0x5314 0000530f: DUP2 00005310: PUSH2 0x5f20 00005313: JUMP 00005314: JUMPDEST 00005315: SWAP5 00005316: POP 00005317: PUSH1 0x40 00005319: DUP8 0000531a: ADD 0000531b: CALLDATALOAD 0000531c: PUSH2 0x5324 0000531f: DUP2 00005320: PUSH2 0x5ee8 00005323: JUMP 00005324: JUMPDEST 00005325: SWAP4 00005326: POP 00005327: PUSH1 0x60 00005329: DUP8 0000532a: ADD 0000532b: CALLDATALOAD 0000532c: PUSH2 0x5334 0000532f: DUP2 00005330: PUSH2 0x5f0b 00005333: JUMP 00005334: JUMPDEST 00005335: SWAP3 00005336: POP 00005337: PUSH1 0x80 00005339: DUP8 0000533a: ADD 0000533b: CALLDATALOAD 0000533c: PUSH2 0x5344 0000533f: DUP2 00005340: PUSH2 0x5f0b 00005343: JUMP 00005344: JUMPDEST 00005345: SWAP2 00005346: POP 00005347: PUSH1 0xa0 00005349: DUP8 0000534a: ADD 0000534b: CALLDATALOAD 0000534c: PUSH2 0x5354 0000534f: DUP2 00005350: PUSH2 0x5efd 00005353: JUMP 00005354: JUMPDEST 00005355: DUP1 00005356: SWAP2 00005357: POP 00005358: POP 00005359: SWAP3 0000535a: SWAP6 0000535b: POP 0000535c: SWAP3 0000535d: SWAP6 0000535e: POP 0000535f: SWAP3 00005360: SWAP6 00005361: JUMP 00005362: JUMPDEST 00005363: PUSH1 0x00 00005365: DUP1 00005366: PUSH1 0x00 00005368: DUP1 00005369: PUSH1 0x00 0000536b: DUP1 0000536c: PUSH1 0x80 0000536e: DUP8 0000536f: DUP10 00005370: SUB 00005371: SLT 00005372: ISZERO 00005373: PUSH2 0x537a 00005376: JUMPI 00005377: DUP4 00005378: DUP5 00005379: REVERT 0000537a: JUMPDEST 0000537b: DUP7 0000537c: CALLDATALOAD 0000537d: PUSH2 0x5385 00005380: DUP2 00005381: PUSH2 0x5f20 00005384: JUMP 00005385: JUMPDEST 00005386: SWAP6 00005387: POP 00005388: PUSH1 0x20 0000538a: DUP8 0000538b: ADD 0000538c: CALLDATALOAD 0000538d: PUSH2 0x5395 00005390: DUP2 00005391: PUSH2 0x5f20 00005394: JUMP 00005395: JUMPDEST 00005396: SWAP5 00005397: POP 00005398: PUSH1 0x40 0000539a: DUP8 0000539b: ADD 0000539c: CALLDATALOAD 0000539d: PUSH8 0xffffffffffffffff 000053a6: DUP1 000053a7: DUP3 000053a8: GT 000053a9: ISZERO 000053aa: PUSH2 0x53b1 000053ad: JUMPI 000053ae: DUP6 000053af: DUP7 000053b0: REVERT 000053b1: JUMPDEST 000053b2: PUSH2 0x53bd 000053b5: DUP11 000053b6: DUP4 000053b7: DUP12 000053b8: ADD 000053b9: PUSH2 0x47a0 000053bc: JUMP 000053bd: JUMPDEST 000053be: SWAP1 000053bf: SWAP7 000053c0: POP 000053c1: SWAP5 000053c2: POP 000053c3: PUSH1 0x60 000053c5: DUP10 000053c6: ADD 000053c7: CALLDATALOAD 000053c8: SWAP2 000053c9: POP 000053ca: DUP1 000053cb: DUP3 000053cc: GT 000053cd: ISZERO 000053ce: PUSH2 0x53d5 000053d1: JUMPI 000053d2: DUP4 000053d3: DUP5 000053d4: REVERT 000053d5: JUMPDEST 000053d6: POP 000053d7: PUSH2 0x53e2 000053da: DUP10 000053db: DUP3 000053dc: DUP11 000053dd: ADD 000053de: PUSH2 0x47a0 000053e1: JUMP 000053e2: JUMPDEST 000053e3: SWAP8 000053e4: SWAP11 000053e5: SWAP7 000053e6: SWAP10 000053e7: POP 000053e8: SWAP5 000053e9: SWAP8 000053ea: POP 000053eb: SWAP3 000053ec: SWAP6 000053ed: SWAP4 000053ee: SWAP5 000053ef: SWAP3 000053f0: POP 000053f1: POP 000053f2: POP 000053f3: JUMP 000053f4: JUMPDEST 000053f5: PUSH1 0x00 000053f7: PUSH1 0x20 000053f9: DUP3 000053fa: DUP5 000053fb: SUB 000053fc: SLT 000053fd: ISZERO 000053fe: PUSH2 0x5405 00005401: JUMPI 00005402: DUP1 00005403: DUP2 00005404: REVERT 00005405: JUMPDEST 00005406: DUP2 00005407: MLOAD 00005408: PUSH2 0x2af3 0000540b: DUP2 0000540c: PUSH2 0x5f42 0000540f: JUMP 00005410: JUMPDEST 00005411: PUSH1 0x00 00005413: DUP3 00005414: DUP5 00005415: MSTORE 00005416: PUSH1 0x20 00005418: DUP1 00005419: DUP6 0000541a: ADD 0000541b: SWAP5 0000541c: POP 0000541d: DUP3 0000541e: DUP3 0000541f: JUMPDEST 00005420: DUP6 00005421: DUP2 00005422: LT 00005423: ISZERO 00005424: PUSH2 0x544d 00005427: JUMPI 00005428: DUP2 00005429: CALLDATALOAD 0000542a: PUSH2 0x5432 0000542d: DUP2 0000542e: PUSH2 0x5ee8 00005431: JUMP 00005432: JUMPDEST 00005433: PUSH1 0x01 00005435: PUSH1 0x01 00005437: PUSH1 0xa0 00005439: SHL 0000543a: SUB 0000543b: AND 0000543c: DUP8 0000543d: MSTORE 0000543e: SWAP6 0000543f: DUP3 00005440: ADD 00005441: SWAP6 00005442: SWAP1 00005443: DUP3 00005444: ADD 00005445: SWAP1 00005446: PUSH1 0x01 00005448: ADD 00005449: PUSH2 0x541f 0000544c: JUMP 0000544d: JUMPDEST 0000544e: POP 0000544f: SWAP5 00005450: SWAP6 00005451: SWAP5 00005452: POP 00005453: POP 00005454: POP 00005455: POP 00005456: POP 00005457: JUMP 00005458: JUMPDEST 00005459: PUSH1 0x00 0000545b: DUP2 0000545c: MLOAD 0000545d: DUP1 0000545e: DUP5 0000545f: MSTORE 00005460: PUSH1 0x20 00005462: DUP1 00005463: DUP6 00005464: ADD 00005465: SWAP5 00005466: POP 00005467: DUP1 00005468: DUP5 00005469: ADD 0000546a: DUP4 0000546b: JUMPDEST 0000546c: DUP4 0000546d: DUP2 0000546e: LT 0000546f: ISZERO 00005470: PUSH2 0x544d 00005473: JUMPI 00005474: DUP2 00005475: MLOAD 00005476: PUSH1 0x01 00005478: PUSH1 0x01 0000547a: PUSH1 0x80 0000547c: SHL 0000547d: SUB 0000547e: AND 0000547f: DUP8 00005480: MSTORE 00005481: SWAP6 00005482: DUP3 00005483: ADD 00005484: SWAP6 00005485: SWAP1 00005486: DUP3 00005487: ADD 00005488: SWAP1 00005489: PUSH1 0x01 0000548b: ADD 0000548c: PUSH2 0x546b 0000548f: JUMP 00005490: JUMPDEST 00005491: PUSH1 0x02 00005493: DUP2 00005494: MSTORE 00005495: PUSH2 0x060f 00005498: PUSH1 0xf3 0000549a: SHL 0000549b: PUSH1 0x20 0000549d: DUP3 0000549e: ADD 0000549f: MSTORE 000054a0: PUSH1 0x40 000054a2: ADD 000054a3: SWAP1 000054a4: JUMP 000054a5: JUMPDEST 000054a6: DUP1 000054a7: MLOAD 000054a8: DUP3 000054a9: MSTORE 000054aa: PUSH1 0x20 000054ac: DUP2 000054ad: ADD 000054ae: MLOAD 000054af: PUSH1 0x20 000054b1: DUP4 000054b2: ADD 000054b3: MSTORE 000054b4: PUSH1 0x40 000054b6: DUP2 000054b7: ADD 000054b8: MLOAD 000054b9: PUSH1 0x40 000054bb: DUP4 000054bc: ADD 000054bd: MSTORE 000054be: PUSH1 0x60 000054c0: DUP2 000054c1: ADD 000054c2: MLOAD 000054c3: PUSH1 0x60 000054c5: DUP4 000054c6: ADD 000054c7: MSTORE 000054c8: PUSH1 0x80 000054ca: DUP2 000054cb: ADD 000054cc: MLOAD 000054cd: PUSH1 0x80 000054cf: DUP4 000054d0: ADD 000054d1: MSTORE 000054d2: POP 000054d3: POP 000054d4: JUMP 000054d5: JUMPDEST 000054d6: DUP1 000054d7: MLOAD 000054d8: DUP3 000054d9: MSTORE 000054da: PUSH1 0x20 000054dc: DUP2 000054dd: ADD 000054de: MLOAD 000054df: PUSH2 0xffff 000054e2: DUP1 000054e3: DUP3 000054e4: AND 000054e5: PUSH1 0x20 000054e7: DUP6 000054e8: ADD 000054e9: MSTORE 000054ea: DUP1 000054eb: PUSH1 0x40 000054ed: DUP5 000054ee: ADD 000054ef: MLOAD 000054f0: AND 000054f1: PUSH1 0x40 000054f3: DUP6 000054f4: ADD 000054f5: MSTORE 000054f6: POP 000054f7: POP 000054f8: PUSH1 0x60 000054fa: DUP2 000054fb: ADD 000054fc: MLOAD 000054fd: PUSH1 0x60 000054ff: DUP4 00005500: ADD 00005501: MSTORE 00005502: PUSH1 0x80 00005504: DUP2 00005505: ADD 00005506: MLOAD 00005507: PUSH1 0x80 00005509: DUP4 0000550a: ADD 0000550b: MSTORE 0000550c: PUSH1 0xa0 0000550e: DUP2 0000550f: ADD 00005510: MLOAD 00005511: PUSH2 0x09cb 00005514: PUSH1 0xa0 00005516: DUP5 00005517: ADD 00005518: DUP3 00005519: JUMPDEST 0000551a: DUP1 0000551b: MLOAD 0000551c: PUSH1 0x01 0000551e: PUSH1 0x01 00005520: PUSH1 0xa0 00005522: SHL 00005523: SUB 00005524: AND 00005525: DUP3 00005526: MSTORE 00005527: PUSH1 0x20 00005529: DUP1 0000552a: DUP3 0000552b: ADD 0000552c: MLOAD 0000552d: PUSH1 0x01 0000552f: PUSH1 0x01 00005531: PUSH1 0x80 00005533: SHL 00005534: SUB 00005535: SWAP1 00005536: DUP2 00005537: AND 00005538: SWAP2 00005539: DUP5 0000553a: ADD 0000553b: SWAP2 0000553c: SWAP1 0000553d: SWAP2 0000553e: MSTORE 0000553f: PUSH1 0x40 00005541: DUP1 00005542: DUP4 00005543: ADD 00005544: MLOAD 00005545: ISZERO 00005546: ISZERO 00005547: SWAP1 00005548: DUP5 00005549: ADD 0000554a: MSTORE 0000554b: PUSH1 0x60 0000554d: SWAP2 0000554e: DUP3 0000554f: ADD 00005550: MLOAD 00005551: AND 00005552: SWAP2 00005553: ADD 00005554: MSTORE 00005555: JUMP 00005556: JUMPDEST 00005557: PUSH1 0x00 00005559: DUP3 0000555a: MLOAD 0000555b: PUSH2 0x5568 0000555e: DUP2 0000555f: DUP5 00005560: PUSH1 0x20 00005562: DUP8 00005563: ADD 00005564: PUSH2 0x5ebc 00005567: JUMP 00005568: JUMPDEST 00005569: SWAP2 0000556a: SWAP1 0000556b: SWAP2 0000556c: ADD 0000556d: SWAP3 0000556e: SWAP2 0000556f: POP 00005570: POP 00005571: JUMP 00005572: JUMPDEST 00005573: SWAP1 00005574: JUMP 00005575: JUMPDEST 00005576: PUSH1 0x01 00005578: PUSH1 0x01 0000557a: PUSH1 0xa0 0000557c: SHL 0000557d: SUB 0000557e: SWAP2 0000557f: SWAP1 00005580: SWAP2 00005581: AND 00005582: DUP2 00005583: MSTORE 00005584: PUSH1 0x20 00005586: ADD 00005587: SWAP1 00005588: JUMP 00005589: JUMPDEST 0000558a: PUSH1 0x01 0000558c: PUSH1 0x01 0000558e: PUSH1 0xa0 00005590: SHL 00005591: SUB 00005592: SWAP4 00005593: DUP5 00005594: AND 00005595: DUP2 00005596: MSTORE 00005597: PUSH1 0x20 00005599: DUP2 0000559a: ADD 0000559b: SWAP3 0000559c: SWAP1 0000559d: SWAP3 0000559e: MSTORE 0000559f: SWAP1 000055a0: SWAP2 000055a1: AND 000055a2: PUSH1 0x40 000055a4: DUP3 000055a5: ADD 000055a6: MSTORE 000055a7: PUSH1 0x60 000055a9: ADD 000055aa: SWAP1 000055ab: JUMP 000055ac: JUMPDEST 000055ad: PUSH1 0x01 000055af: PUSH1 0x01 000055b1: PUSH1 0xa0 000055b3: SHL 000055b4: SUB 000055b5: DUP9 000055b6: DUP2 000055b7: AND 000055b8: DUP3 000055b9: MSTORE 000055ba: DUP8 000055bb: DUP2 000055bc: AND 000055bd: PUSH1 0x20 000055bf: DUP4 000055c0: ADD 000055c1: MSTORE 000055c2: PUSH1 0x40 000055c4: DUP3 000055c5: ADD 000055c6: DUP8 000055c7: SWAP1 000055c8: MSTORE 000055c9: PUSH1 0x60 000055cb: DUP3 000055cc: ADD 000055cd: DUP7 000055ce: SWAP1 000055cf: MSTORE 000055d0: PUSH1 0x80 000055d2: DUP3 000055d3: ADD 000055d4: DUP6 000055d5: SWAP1 000055d6: MSTORE 000055d7: PUSH2 0x01e0 000055da: DUP3 000055db: ADD 000055dc: SWAP1 000055dd: PUSH2 0x55e9 000055e0: PUSH1 0xa0 000055e2: DUP5 000055e3: ADD 000055e4: DUP7 000055e5: PUSH2 0x54d5 000055e8: JUMP 000055e9: JUMPDEST 000055ea: DUP1 000055eb: DUP5 000055ec: AND 000055ed: PUSH2 0x01c0 000055f0: DUP5 000055f1: ADD 000055f2: MSTORE 000055f3: POP 000055f4: SWAP9 000055f5: SWAP8 000055f6: POP 000055f7: POP 000055f8: POP 000055f9: POP 000055fa: POP 000055fb: POP 000055fc: POP 000055fd: POP 000055fe: JUMP 000055ff: JUMPDEST 00005600: PUSH1 0x01 00005602: PUSH1 0x01 00005604: PUSH1 0xa0 00005606: SHL 00005607: SUB 00005608: DUP8 00005609: DUP2 0000560a: AND 0000560b: DUP3 0000560c: MSTORE 0000560d: DUP7 0000560e: DUP2 0000560f: AND 00005610: PUSH1 0x20 00005612: DUP4 00005613: ADD 00005614: MSTORE 00005615: PUSH1 0x01 00005617: PUSH1 0x01 00005619: PUSH1 0x80 0000561b: SHL 0000561c: SUB 0000561d: DUP7 0000561e: AND 0000561f: PUSH1 0x40 00005621: DUP4 00005622: ADD 00005623: MSTORE 00005624: PUSH1 0x60 00005626: DUP3 00005627: ADD 00005628: DUP6 00005629: SWAP1 0000562a: MSTORE 0000562b: PUSH2 0x01c0 0000562e: DUP3 0000562f: ADD 00005630: SWAP1 00005631: PUSH2 0x563d 00005634: PUSH1 0x80 00005636: DUP5 00005637: ADD 00005638: DUP7 00005639: PUSH2 0x54d5 0000563c: JUMP 0000563d: JUMPDEST 0000563e: DUP1 0000563f: DUP5 00005640: AND 00005641: PUSH2 0x01a0 00005644: DUP5 00005645: ADD 00005646: MSTORE 00005647: POP 00005648: SWAP8 00005649: SWAP7 0000564a: POP 0000564b: POP 0000564c: POP 0000564d: POP 0000564e: POP 0000564f: POP 00005650: POP 00005651: JUMP 00005652: JUMPDEST 00005653: PUSH1 0x01 00005655: PUSH1 0x01 00005657: PUSH1 0xa0 00005659: SHL 0000565a: SUB 0000565b: DUP5 0000565c: DUP2 0000565d: AND 0000565e: DUP3 0000565f: MSTORE 00005660: DUP4 00005661: AND 00005662: PUSH1 0x20 00005664: DUP3 00005665: ADD 00005666: MSTORE 00005667: PUSH1 0x01 00005669: PUSH1 0x01 0000566b: PUSH1 0x80 0000566d: SHL 0000566e: SUB 0000566f: DUP3 00005670: AND 00005671: PUSH1 0x40 00005673: DUP3 00005674: ADD 00005675: MSTORE 00005676: PUSH1 0xa0 00005678: PUSH1 0x60 0000567a: DUP3 0000567b: ADD 0000567c: DUP2 0000567d: SWAP1 0000567e: MSTORE 0000567f: PUSH1 0x00 00005681: SWAP1 00005682: PUSH2 0x568c 00005685: SWAP1 00005686: DUP4 00005687: ADD 00005688: PUSH2 0x5490 0000568b: JUMP 0000568c: JUMPDEST 0000568d: DUP3 0000568e: DUP2 0000568f: SUB 00005690: PUSH1 0x80 00005692: DUP5 00005693: ADD 00005694: MSTORE 00005695: PUSH2 0x41b7 00005698: DUP2 00005699: PUSH2 0x5490 0000569c: JUMP 0000569d: JUMPDEST 0000569e: PUSH1 0x01 000056a0: PUSH1 0x01 000056a2: PUSH1 0xa0 000056a4: SHL 000056a5: SUB 000056a6: SWAP5 000056a7: DUP6 000056a8: AND 000056a9: DUP2 000056aa: MSTORE 000056ab: SWAP3 000056ac: SWAP1 000056ad: SWAP4 000056ae: AND 000056af: PUSH1 0x20 000056b1: DUP4 000056b2: ADD 000056b3: MSTORE 000056b4: PUSH2 0xffff 000056b7: AND 000056b8: PUSH1 0x40 000056ba: DUP3 000056bb: ADD 000056bc: MSTORE 000056bd: PUSH1 0x01 000056bf: PUSH1 0x01 000056c1: PUSH1 0x80 000056c3: SHL 000056c4: SUB 000056c5: SWAP1 000056c6: SWAP2 000056c7: AND 000056c8: PUSH1 0x60 000056ca: DUP3 000056cb: ADD 000056cc: MSTORE 000056cd: PUSH1 0x80 000056cf: ADD 000056d0: SWAP1 000056d1: JUMP 000056d2: JUMPDEST 000056d3: PUSH1 0x01 000056d5: PUSH1 0x01 000056d7: PUSH1 0xa0 000056d9: SHL 000056da: SUB 000056db: SWAP4 000056dc: DUP5 000056dd: AND 000056de: DUP2 000056df: MSTORE 000056e0: SWAP2 000056e1: SWAP1 000056e2: SWAP3 000056e3: AND 000056e4: PUSH1 0x20 000056e6: DUP3 000056e7: ADD 000056e8: MSTORE 000056e9: PUSH1 0x40 000056eb: DUP2 000056ec: ADD 000056ed: SWAP2 000056ee: SWAP1 000056ef: SWAP2 000056f0: MSTORE 000056f1: PUSH1 0x60 000056f3: ADD 000056f4: SWAP1 000056f5: JUMP 000056f6: JUMPDEST 000056f7: PUSH1 0x01 000056f9: PUSH1 0x01 000056fb: PUSH1 0xa0 000056fd: SHL 000056fe: SUB 000056ff: DUP8 00005700: DUP2 00005701: AND 00005702: DUP3 00005703: MSTORE 00005704: PUSH1 0x20 00005706: DUP3 00005707: ADD 00005708: DUP8 00005709: SWAP1 0000570a: MSTORE 0000570b: PUSH2 0x0240 0000570e: DUP3 0000570f: ADD 00005710: SWAP1 00005711: PUSH2 0x571d 00005714: PUSH1 0x40 00005716: DUP5 00005717: ADD 00005718: DUP9 00005719: PUSH2 0x54a5 0000571c: JUMP 0000571d: JUMPDEST 0000571e: PUSH2 0x572a 00005721: PUSH1 0xe0 00005723: DUP5 00005724: ADD 00005725: DUP8 00005726: PUSH2 0x54d5 00005729: JUMP 0000572a: JUMPDEST 0000572b: DUP1 0000572c: DUP6 0000572d: AND 0000572e: PUSH2 0x0200 00005731: DUP5 00005732: ADD 00005733: MSTORE 00005734: POP 00005735: PUSH1 0x01 00005737: PUSH1 0x01 00005739: PUSH1 0x80 0000573b: SHL 0000573c: SUB 0000573d: DUP4 0000573e: AND 0000573f: PUSH2 0x0220 00005742: DUP4 00005743: ADD 00005744: MSTORE 00005745: SWAP8 00005746: SWAP7 00005747: POP 00005748: POP 00005749: POP 0000574a: POP 0000574b: POP 0000574c: POP 0000574d: POP 0000574e: JUMP 0000574f: JUMPDEST 00005750: PUSH1 0x01 00005752: PUSH1 0x01 00005754: PUSH1 0xa0 00005756: SHL 00005757: SUB 00005758: DUP8 00005759: DUP2 0000575a: AND 0000575b: DUP3 0000575c: MSTORE 0000575d: PUSH1 0x20 0000575f: DUP3 00005760: ADD 00005761: DUP8 00005762: SWAP1 00005763: MSTORE 00005764: PUSH1 0x01 00005766: PUSH1 0x01 00005768: PUSH1 0x80 0000576a: SHL 0000576b: SUB 0000576c: DUP7 0000576d: AND 0000576e: PUSH1 0x40 00005770: DUP4 00005771: ADD 00005772: MSTORE 00005773: PUSH2 0x0240 00005776: DUP3 00005777: ADD 00005778: SWAP1 00005779: PUSH2 0x5785 0000577c: PUSH1 0x60 0000577e: DUP5 0000577f: ADD 00005780: DUP8 00005781: PUSH2 0x54a5 00005784: JUMP 00005785: JUMPDEST 00005786: PUSH2 0x5793 00005789: PUSH2 0x0100 0000578c: DUP5 0000578d: ADD 0000578e: DUP7 0000578f: PUSH2 0x54d5 00005792: JUMP 00005793: JUMPDEST 00005794: DUP1 00005795: DUP5 00005796: AND 00005797: PUSH2 0x0220 0000579a: DUP5 0000579b: ADD 0000579c: MSTORE 0000579d: POP 0000579e: SWAP8 0000579f: SWAP7 000057a0: POP 000057a1: POP 000057a2: POP 000057a3: POP 000057a4: POP 000057a5: POP 000057a6: POP 000057a7: JUMP 000057a8: JUMPDEST 000057a9: PUSH1 0x01 000057ab: PUSH1 0x01 000057ad: PUSH1 0xa0 000057af: SHL 000057b0: SUB 000057b1: SWAP3 000057b2: SWAP1 000057b3: SWAP3 000057b4: AND 000057b5: DUP3 000057b6: MSTORE 000057b7: PUSH1 0x01 000057b9: PUSH1 0x01 000057bb: PUSH1 0x80 000057bd: SHL 000057be: SUB 000057bf: AND 000057c0: PUSH1 0x20 000057c2: DUP3 000057c3: ADD 000057c4: MSTORE 000057c5: PUSH1 0x40 000057c7: ADD 000057c8: SWAP1 000057c9: JUMP 000057ca: JUMPDEST 000057cb: PUSH1 0x01 000057cd: PUSH1 0x01 000057cf: PUSH1 0xa0 000057d1: SHL 000057d2: SUB 000057d3: SWAP5 000057d4: SWAP1 000057d5: SWAP5 000057d6: AND 000057d7: DUP5 000057d8: MSTORE 000057d9: PUSH1 0x01 000057db: PUSH1 0x01 000057dd: PUSH1 0x80 000057df: SHL 000057e0: SUB 000057e1: SWAP3 000057e2: DUP4 000057e3: AND 000057e4: PUSH1 0x20 000057e6: DUP6 000057e7: ADD 000057e8: MSTORE 000057e9: SWAP1 000057ea: ISZERO 000057eb: ISZERO 000057ec: PUSH1 0x40 000057ee: DUP5 000057ef: ADD 000057f0: MSTORE 000057f1: AND 000057f2: PUSH1 0x60 000057f4: DUP3 000057f5: ADD 000057f6: MSTORE 000057f7: PUSH1 0x80 000057f9: ADD 000057fa: SWAP1 000057fb: JUMP 000057fc: JUMPDEST 000057fd: PUSH1 0x01 000057ff: PUSH1 0x01 00005801: PUSH1 0xa0 00005803: SHL 00005804: SUB 00005805: DUP4 00005806: AND 00005807: DUP2 00005808: MSTORE 00005809: PUSH1 0x01 0000580b: PUSH1 0x01 0000580d: PUSH1 0x80 0000580f: SHL 00005810: SUB 00005811: DUP3 00005812: AND 00005813: PUSH1 0x20 00005815: DUP3 00005816: ADD 00005817: MSTORE 00005818: PUSH1 0x60 0000581a: PUSH1 0x40 0000581c: DUP3 0000581d: ADD 0000581e: DUP2 0000581f: SWAP1 00005820: MSTORE 00005821: PUSH1 0x00 00005823: SWAP1 00005824: PUSH2 0x2ef5 00005827: SWAP1 00005828: DUP4 00005829: ADD 0000582a: PUSH2 0x5490 0000582d: JUMP 0000582e: JUMPDEST 0000582f: PUSH1 0x01 00005831: PUSH1 0x01 00005833: PUSH1 0xa0 00005835: SHL 00005836: SUB 00005837: SWAP4 00005838: SWAP1 00005839: SWAP4 0000583a: AND 0000583b: DUP4 0000583c: MSTORE 0000583d: PUSH2 0xffff 00005840: SWAP2 00005841: DUP3 00005842: AND 00005843: PUSH1 0x20 00005845: DUP5 00005846: ADD 00005847: MSTORE 00005848: AND 00005849: PUSH1 0x40 0000584b: DUP3 0000584c: ADD 0000584d: MSTORE 0000584e: PUSH1 0x60 00005850: ADD 00005851: SWAP1 00005852: JUMP 00005853: JUMPDEST 00005854: PUSH1 0x01 00005856: PUSH1 0x01 00005858: PUSH1 0xa0 0000585a: SHL 0000585b: SUB 0000585c: SWAP3 0000585d: SWAP1 0000585e: SWAP3 0000585f: AND 00005860: DUP3 00005861: MSTORE 00005862: PUSH1 0x20 00005864: DUP3 00005865: ADD 00005866: MSTORE 00005867: PUSH1 0x40 00005869: ADD 0000586a: SWAP1 0000586b: JUMP 0000586c: JUMPDEST 0000586d: PUSH1 0x20 0000586f: DUP1 00005870: DUP3 00005871: MSTORE 00005872: DUP3 00005873: MLOAD 00005874: DUP3 00005875: DUP3 00005876: ADD 00005877: DUP2 00005878: SWAP1 00005879: MSTORE 0000587a: PUSH1 0x00 0000587c: SWAP2 0000587d: SWAP1 0000587e: DUP5 0000587f: DUP3 00005880: ADD 00005881: SWAP1 00005882: PUSH1 0x40 00005884: DUP6 00005885: ADD 00005886: SWAP1 00005887: DUP5 00005888: JUMPDEST 00005889: DUP2 0000588a: DUP2 0000588b: LT 0000588c: ISZERO 0000588d: PUSH2 0x58a4 00005890: JUMPI 00005891: DUP4 00005892: MLOAD 00005893: DUP4 00005894: MSTORE 00005895: SWAP3 00005896: DUP5 00005897: ADD 00005898: SWAP3 00005899: SWAP2 0000589a: DUP5 0000589b: ADD 0000589c: SWAP2 0000589d: PUSH1 0x01 0000589f: ADD 000058a0: PUSH2 0x5888 000058a3: JUMP 000058a4: JUMPDEST 000058a5: POP 000058a6: SWAP1 000058a7: SWAP7 000058a8: SWAP6 000058a9: POP 000058aa: POP 000058ab: POP 000058ac: POP 000058ad: POP 000058ae: POP 000058af: JUMP 000058b0: JUMPDEST 000058b1: SWAP1 000058b2: ISZERO 000058b3: ISZERO 000058b4: DUP2 000058b5: MSTORE 000058b6: PUSH1 0x20 000058b8: ADD 000058b9: SWAP1 000058ba: JUMP 000058bb: JUMPDEST 000058bc: SWAP2 000058bd: ISZERO 000058be: ISZERO 000058bf: DUP3 000058c0: MSTORE 000058c1: ISZERO 000058c2: ISZERO 000058c3: PUSH1 0x20 000058c5: DUP3 000058c6: ADD 000058c7: MSTORE 000058c8: PUSH1 0x40 000058ca: ADD 000058cb: SWAP1 000058cc: JUMP 000058cd: JUMPDEST 000058ce: SWAP1 000058cf: DUP2 000058d0: MSTORE 000058d1: PUSH1 0x20 000058d3: ADD 000058d4: SWAP1 000058d5: JUMP 000058d6: JUMPDEST 000058d7: PUSH1 0x00 000058d9: PUSH1 0x20 000058db: DUP3 000058dc: MSTORE 000058dd: DUP3 000058de: MLOAD 000058df: DUP1 000058e0: PUSH1 0x20 000058e2: DUP5 000058e3: ADD 000058e4: MSTORE 000058e5: PUSH2 0x58f5 000058e8: DUP2 000058e9: PUSH1 0x40 000058eb: DUP6 000058ec: ADD 000058ed: PUSH1 0x20 000058ef: DUP8 000058f0: ADD 000058f1: PUSH2 0x5ebc 000058f4: JUMP 000058f5: JUMPDEST 000058f6: PUSH1 0x1f 000058f8: ADD 000058f9: PUSH1 0x1f 000058fb: NOT 000058fc: AND 000058fd: SWAP2 000058fe: SWAP1 000058ff: SWAP2 00005900: ADD 00005901: PUSH1 0x40 00005903: ADD 00005904: SWAP3 00005905: SWAP2 00005906: POP 00005907: POP 00005908: JUMP 00005909: JUMPDEST 0000590a: PUSH1 0x20 0000590c: DUP1 0000590d: DUP3 0000590e: MSTORE 0000590f: PUSH1 0x03 00005911: SWAP1 00005912: DUP3 00005913: ADD 00005914: MSTORE 00005915: PUSH3 0x0c4c0d 00005919: PUSH1 0xea 0000591b: SHL 0000591c: PUSH1 0x40 0000591e: DUP3 0000591f: ADD 00005920: MSTORE 00005921: PUSH1 0x60 00005923: ADD 00005924: SWAP1 00005925: JUMP 00005926: JUMPDEST 00005927: PUSH1 0x20 00005929: DUP1 0000592a: DUP3 0000592b: MSTORE 0000592c: PUSH1 0x27 0000592e: SWAP1 0000592f: DUP3 00005930: ADD 00005931: MSTORE 00005932: PUSH32 0x53616665436173743a2076616c756520646f65736e27742066697420696e2031 00005953: PUSH1 0x40 00005955: DUP3 00005956: ADD 00005957: MSTORE 00005958: PUSH7 0x32382062697473 00005960: PUSH1 0xc8 00005962: SHL 00005963: PUSH1 0x60 00005965: DUP3 00005966: ADD 00005967: MSTORE 00005968: PUSH1 0x80 0000596a: ADD 0000596b: SWAP1 0000596c: JUMP 0000596d: JUMPDEST 0000596e: PUSH1 0x20 00005970: DUP1 00005971: DUP3 00005972: MSTORE 00005973: PUSH1 0x21 00005975: SWAP1 00005976: DUP3 00005977: ADD 00005978: MSTORE 00005979: PUSH32 0x5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f 0000599a: PUSH1 0x40 0000599c: DUP3 0000599d: ADD 0000599e: MSTORE 0000599f: PUSH1 0x77 000059a1: PUSH1 0xf8 000059a3: SHL 000059a4: PUSH1 0x60 000059a6: DUP3 000059a7: ADD 000059a8: MSTORE 000059a9: PUSH1 0x80 000059ab: ADD 000059ac: SWAP1 000059ad: JUMP 000059ae: JUMPDEST 000059af: PUSH1 0x20 000059b1: DUP1 000059b2: DUP3 000059b3: MSTORE 000059b4: PUSH1 0x02 000059b6: SWAP1 000059b7: DUP3 000059b8: ADD 000059b9: MSTORE 000059ba: PUSH2 0x3237 000059bd: PUSH1 0xf0 000059bf: SHL 000059c0: PUSH1 0x40 000059c2: DUP3 000059c3: ADD 000059c4: MSTORE 000059c5: PUSH1 0x60 000059c7: ADD 000059c8: SWAP1 000059c9: JUMP 000059ca: JUMPDEST 000059cb: PUSH1 0x20 000059cd: DUP1 000059ce: DUP3 000059cf: MSTORE 000059d0: PUSH1 0x02 000059d2: SWAP1 000059d3: DUP3 000059d4: ADD 000059d5: MSTORE 000059d6: PUSH2 0x3439 000059d9: PUSH1 0xf0 000059db: SHL 000059dc: PUSH1 0x40 000059de: DUP3 000059df: ADD 000059e0: MSTORE 000059e1: PUSH1 0x60 000059e3: ADD 000059e4: SWAP1 000059e5: JUMP 000059e6: JUMPDEST 000059e7: PUSH1 0x20 000059e9: DUP1 000059ea: DUP3 000059eb: MSTORE 000059ec: PUSH1 0x02 000059ee: SWAP1 000059ef: DUP3 000059f0: ADD 000059f1: MSTORE 000059f2: PUSH2 0x3337 000059f5: PUSH1 0xf0 000059f7: SHL 000059f8: PUSH1 0x40 000059fa: DUP3 000059fb: ADD 000059fc: MSTORE 000059fd: PUSH1 0x60 000059ff: ADD 00005a00: SWAP1 00005a01: JUMP 00005a02: JUMPDEST 00005a03: PUSH1 0x20 00005a05: DUP1 00005a06: DUP3 00005a07: MSTORE 00005a08: PUSH1 0x02 00005a0a: SWAP1 00005a0b: DUP3 00005a0c: ADD 00005a0d: MSTORE 00005a0e: PUSH2 0x0687 00005a11: PUSH1 0xf3 00005a13: SHL 00005a14: PUSH1 0x40 00005a16: DUP3 00005a17: ADD 00005a18: MSTORE 00005a19: PUSH1 0x60 00005a1b: ADD 00005a1c: SWAP1 00005a1d: JUMP 00005a1e: JUMPDEST 00005a1f: PUSH1 0x20 00005a21: DUP1 00005a22: DUP3 00005a23: MSTORE 00005a24: PUSH1 0x02 00005a26: SWAP1 00005a27: DUP3 00005a28: ADD 00005a29: MSTORE 00005a2a: PUSH2 0x3535 00005a2d: PUSH1 0xf0 00005a2f: SHL 00005a30: PUSH1 0x40 00005a32: DUP3 00005a33: ADD 00005a34: MSTORE 00005a35: PUSH1 0x60 00005a37: ADD 00005a38: SWAP1 00005a39: JUMP 00005a3a: JUMPDEST 00005a3b: PUSH1 0x20 00005a3d: DUP1 00005a3e: DUP3 00005a3f: MSTORE 00005a40: PUSH1 0x02 00005a42: SWAP1 00005a43: DUP3 00005a44: ADD 00005a45: MSTORE 00005a46: PUSH2 0x0323 00005a49: PUSH1 0xf4 00005a4b: SHL 00005a4c: PUSH1 0x40 00005a4e: DUP3 00005a4f: ADD 00005a50: MSTORE 00005a51: PUSH1 0x60 00005a53: ADD 00005a54: SWAP1 00005a55: JUMP 00005a56: JUMPDEST 00005a57: PUSH1 0x20 00005a59: DUP1 00005a5a: DUP3 00005a5b: MSTORE 00005a5c: PUSH1 0x21 00005a5e: SWAP1 00005a5f: DUP3 00005a60: ADD 00005a61: MSTORE 00005a62: PUSH32 0x5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f 00005a83: PUSH1 0x40 00005a85: DUP3 00005a86: ADD 00005a87: MSTORE 00005a88: PUSH1 0x77 00005a8a: PUSH1 0xf8 00005a8c: SHL 00005a8d: PUSH1 0x60 00005a8f: DUP3 00005a90: ADD 00005a91: MSTORE 00005a92: PUSH1 0x80 00005a94: ADD 00005a95: SWAP1 00005a96: JUMP 00005a97: JUMPDEST 00005a98: PUSH1 0x20 00005a9a: DUP1 00005a9b: DUP3 00005a9c: MSTORE 00005a9d: PUSH1 0x03 00005a9f: SWAP1 00005aa0: DUP3 00005aa1: ADD 00005aa2: MSTORE 00005aa3: PUSH3 0x313035 00005aa7: PUSH1 0xe8 00005aa9: SHL 00005aaa: PUSH1 0x40 00005aac: DUP3 00005aad: ADD 00005aae: MSTORE 00005aaf: PUSH1 0x60 00005ab1: ADD 00005ab2: SWAP1 00005ab3: JUMP 00005ab4: JUMPDEST 00005ab5: PUSH1 0x20 00005ab7: DUP1 00005ab8: DUP3 00005ab9: MSTORE 00005aba: PUSH1 0x02 00005abc: SWAP1 00005abd: DUP3 00005abe: ADD 00005abf: MSTORE 00005ac0: PUSH2 0x1899 00005ac3: PUSH1 0xf1 00005ac5: SHL 00005ac6: PUSH1 0x40 00005ac8: DUP3 00005ac9: ADD 00005aca: MSTORE 00005acb: PUSH1 0x60 00005acd: ADD 00005ace: SWAP1 00005acf: JUMP 00005ad0: JUMPDEST 00005ad1: PUSH1 0x20 00005ad3: DUP1 00005ad4: DUP3 00005ad5: MSTORE 00005ad6: PUSH1 0x02 00005ad8: SWAP1 00005ad9: DUP3 00005ada: ADD 00005adb: MSTORE 00005adc: PUSH2 0x0343 00005adf: PUSH1 0xf4 00005ae1: SHL 00005ae2: PUSH1 0x40 00005ae4: DUP3 00005ae5: ADD 00005ae6: MSTORE 00005ae7: PUSH1 0x60 00005ae9: ADD 00005aea: SWAP1 00005aeb: JUMP 00005aec: JUMPDEST 00005aed: PUSH1 0x20 00005aef: DUP1 00005af0: DUP3 00005af1: MSTORE 00005af2: PUSH1 0x02 00005af4: SWAP1 00005af5: DUP3 00005af6: ADD 00005af7: MSTORE 00005af8: PUSH2 0x3139 00005afb: PUSH1 0xf0 00005afd: SHL 00005afe: PUSH1 0x40 00005b00: DUP3 00005b01: ADD 00005b02: MSTORE 00005b03: PUSH1 0x60 00005b05: ADD 00005b06: SWAP1 00005b07: JUMP 00005b08: JUMPDEST 00005b09: PUSH1 0x20 00005b0b: DUP1 00005b0c: DUP3 00005b0d: MSTORE 00005b0e: PUSH1 0x02 00005b10: SWAP1 00005b11: DUP3 00005b12: ADD 00005b13: MSTORE 00005b14: PUSH2 0x0647 00005b17: PUSH1 0xf3 00005b19: SHL 00005b1a: PUSH1 0x40 00005b1c: DUP3 00005b1d: ADD 00005b1e: MSTORE 00005b1f: PUSH1 0x60 00005b21: ADD 00005b22: SWAP1 00005b23: JUMP 00005b24: JUMPDEST 00005b25: PUSH1 0x20 00005b27: DUP1 00005b28: DUP3 00005b29: MSTORE 00005b2a: PUSH1 0x2e 00005b2c: SWAP1 00005b2d: DUP3 00005b2e: ADD 00005b2f: MSTORE 00005b30: PUSH32 0x436f6e747261637420696e7374616e63652068617320616c7265616479206265 00005b51: PUSH1 0x40 00005b53: DUP3 00005b54: ADD 00005b55: MSTORE 00005b56: PUSH14 0x195b881a5b9a5d1a585b1a5e9959 00005b65: PUSH1 0x92 00005b67: SHL 00005b68: PUSH1 0x60 00005b6a: DUP3 00005b6b: ADD 00005b6c: MSTORE 00005b6d: PUSH1 0x80 00005b6f: ADD 00005b70: SWAP1 00005b71: JUMP 00005b72: JUMPDEST 00005b73: PUSH1 0x20 00005b75: DUP1 00005b76: DUP3 00005b77: MSTORE 00005b78: PUSH1 0x27 00005b7a: SWAP1 00005b7b: DUP3 00005b7c: ADD 00005b7d: MSTORE 00005b7e: PUSH32 0x5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f 00005b9f: PUSH1 0x40 00005ba1: DUP3 00005ba2: ADD 00005ba3: MSTORE 00005ba4: PUSH7 0x766572666c6f77 00005bac: PUSH1 0xc8 00005bae: SHL 00005baf: PUSH1 0x60 00005bb1: DUP3 00005bb2: ADD 00005bb3: MSTORE 00005bb4: PUSH1 0x80 00005bb6: ADD 00005bb7: SWAP1 00005bb8: JUMP 00005bb9: JUMPDEST 00005bba: PUSH1 0x20 00005bbc: DUP1 00005bbd: DUP3 00005bbe: MSTORE 00005bbf: PUSH1 0x1d 00005bc1: SWAP1 00005bc2: DUP3 00005bc3: ADD 00005bc4: MSTORE 00005bc5: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 00005be6: PUSH1 0x40 00005be8: DUP3 00005be9: ADD 00005bea: MSTORE 00005beb: PUSH1 0x60 00005bed: ADD 00005bee: SWAP1 00005bef: JUMP 00005bf0: JUMPDEST 00005bf1: PUSH1 0x20 00005bf3: DUP1 00005bf4: DUP3 00005bf5: MSTORE 00005bf6: PUSH1 0x01 00005bf8: SWAP1 00005bf9: DUP3 00005bfa: ADD 00005bfb: MSTORE 00005bfc: PUSH1 0x35 00005bfe: PUSH1 0xf8 00005c00: SHL 00005c01: PUSH1 0x40 00005c03: DUP3 00005c04: ADD 00005c05: MSTORE 00005c06: PUSH1 0x60 00005c08: ADD 00005c09: SWAP1 00005c0a: JUMP 00005c0b: JUMPDEST 00005c0c: PUSH1 0x20 00005c0e: DUP1 00005c0f: DUP3 00005c10: MSTORE 00005c11: PUSH1 0x01 00005c13: SWAP1 00005c14: DUP3 00005c15: ADD 00005c16: MSTORE 00005c17: PUSH1 0x39 00005c19: PUSH1 0xf8 00005c1b: SHL 00005c1c: PUSH1 0x40 00005c1e: DUP3 00005c1f: ADD 00005c20: MSTORE 00005c21: PUSH1 0x60 00005c23: ADD 00005c24: SWAP1 00005c25: JUMP 00005c26: JUMPDEST 00005c27: PUSH1 0x20 00005c29: DUP1 00005c2a: DUP3 00005c2b: MSTORE 00005c2c: PUSH1 0x03 00005c2e: SWAP1 00005c2f: DUP3 00005c30: ADD 00005c31: MSTORE 00005c32: PUSH3 0x031313 00005c36: PUSH1 0xec 00005c38: SHL 00005c39: PUSH1 0x40 00005c3b: DUP3 00005c3c: ADD 00005c3d: MSTORE 00005c3e: PUSH1 0x60 00005c40: ADD 00005c41: SWAP1 00005c42: JUMP 00005c43: JUMPDEST 00005c44: PUSH1 0x20 00005c46: DUP1 00005c47: DUP3 00005c48: MSTORE 00005c49: PUSH1 0x24 00005c4b: SWAP1 00005c4c: DUP3 00005c4d: ADD 00005c4e: MSTORE 00005c4f: PUSH32 0x5369676e6564536166654d6174683a207375627472616374696f6e206f766572 00005c70: PUSH1 0x40 00005c72: DUP3 00005c73: ADD 00005c74: MSTORE 00005c75: PUSH4 0x666c6f77 00005c7a: PUSH1 0xe0 00005c7c: SHL 00005c7d: PUSH1 0x60 00005c7f: DUP3 00005c80: ADD 00005c81: MSTORE 00005c82: PUSH1 0x80 00005c84: ADD 00005c85: SWAP1 00005c86: JUMP 00005c87: JUMPDEST 00005c88: PUSH1 0x20 00005c8a: DUP1 00005c8b: DUP3 00005c8c: MSTORE 00005c8d: PUSH1 0x2a 00005c8f: SWAP1 00005c90: DUP3 00005c91: ADD 00005c92: MSTORE 00005c93: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e 00005cb4: PUSH1 0x40 00005cb6: DUP3 00005cb7: ADD 00005cb8: MSTORE 00005cb9: PUSH10 0x1bdd081cdd58d8d95959 00005cc4: PUSH1 0xb2 00005cc6: SHL 00005cc7: PUSH1 0x60 00005cc9: DUP3 00005cca: ADD 00005ccb: MSTORE 00005ccc: PUSH1 0x80 00005cce: ADD 00005ccf: SWAP1 00005cd0: JUMP 00005cd1: JUMPDEST 00005cd2: PUSH1 0x20 00005cd4: DUP1 00005cd5: DUP3 00005cd6: MSTORE 00005cd7: PUSH1 0x01 00005cd9: SWAP1 00005cda: DUP3 00005cdb: ADD 00005cdc: MSTORE 00005cdd: PUSH1 0x07 00005cdf: PUSH1 0xfb 00005ce1: SHL 00005ce2: PUSH1 0x40 00005ce4: DUP3 00005ce5: ADD 00005ce6: MSTORE 00005ce7: PUSH1 0x60 00005ce9: ADD 00005cea: SWAP1 00005ceb: JUMP 00005cec: JUMPDEST 00005ced: PUSH1 0x20 00005cef: DUP1 00005cf0: DUP3 00005cf1: MSTORE 00005cf2: DUP2 00005cf3: DUP2 00005cf4: ADD 00005cf5: MSTORE 00005cf6: PUSH32 0x5369676e6564536166654d6174683a206469766973696f6e206279207a65726f 00005d17: PUSH1 0x40 00005d19: DUP3 00005d1a: ADD 00005d1b: MSTORE 00005d1c: PUSH1 0x60 00005d1e: ADD 00005d1f: SWAP1 00005d20: JUMP 00005d21: JUMPDEST 00005d22: PUSH1 0x20 00005d24: DUP1 00005d25: DUP3 00005d26: MSTORE 00005d27: PUSH1 0x02 00005d29: SWAP1 00005d2a: DUP3 00005d2b: ADD 00005d2c: MSTORE 00005d2d: PUSH2 0x3231 00005d30: PUSH1 0xf0 00005d32: SHL 00005d33: PUSH1 0x40 00005d35: DUP3 00005d36: ADD 00005d37: MSTORE 00005d38: PUSH1 0x60 00005d3a: ADD 00005d3b: SWAP1 00005d3c: JUMP 00005d3d: JUMPDEST 00005d3e: PUSH1 0x80 00005d40: DUP2 00005d41: ADD 00005d42: PUSH2 0x2262 00005d45: DUP3 00005d46: DUP5 00005d47: PUSH2 0x5519 00005d4a: JUMP 00005d4b: JUMPDEST 00005d4c: PUSH1 0x01 00005d4e: PUSH1 0x01 00005d50: PUSH1 0x80 00005d52: SHL 00005d53: SUB 00005d54: SWAP2 00005d55: SWAP1 00005d56: SWAP2 00005d57: AND 00005d58: DUP2 00005d59: MSTORE 00005d5a: PUSH1 0x20 00005d5c: ADD 00005d5d: SWAP1 00005d5e: JUMP 00005d5f: JUMPDEST 00005d60: PUSH1 0x01 00005d62: PUSH1 0x01 00005d64: PUSH1 0x80 00005d66: SHL 00005d67: SUB 00005d68: SWAP4 00005d69: DUP5 00005d6a: AND 00005d6b: DUP2 00005d6c: MSTORE 00005d6d: SWAP2 00005d6e: DUP4 00005d6f: AND 00005d70: PUSH1 0x20 00005d72: DUP4 00005d73: ADD 00005d74: MSTORE 00005d75: SWAP1 00005d76: SWAP2 00005d77: AND 00005d78: PUSH1 0x40 00005d7a: DUP3 00005d7b: ADD 00005d7c: MSTORE 00005d7d: PUSH1 0x60 00005d7f: ADD 00005d80: SWAP1 00005d81: JUMP 00005d82: JUMPDEST 00005d83: PUSH2 0xffff 00005d86: SWAP2 00005d87: SWAP1 00005d88: SWAP2 00005d89: AND 00005d8a: DUP2 00005d8b: MSTORE 00005d8c: PUSH1 0x20 00005d8e: ADD 00005d8f: SWAP1 00005d90: JUMP 00005d91: JUMPDEST 00005d92: PUSH2 0xffff 00005d95: SWAP4 00005d96: SWAP1 00005d97: SWAP4 00005d98: AND 00005d99: DUP4 00005d9a: MSTORE 00005d9b: PUSH1 0x01 00005d9d: PUSH1 0x01 00005d9f: PUSH1 0xa0 00005da1: SHL 00005da2: SUB 00005da3: SWAP2 00005da4: SWAP1 00005da5: SWAP2 00005da6: AND 00005da7: PUSH1 0x20 00005da9: DUP4 00005daa: ADD 00005dab: MSTORE 00005dac: PUSH1 0x01 00005dae: PUSH1 0x01 00005db0: PUSH1 0x80 00005db2: SHL 00005db3: SUB 00005db4: AND 00005db5: PUSH1 0x40 00005db7: DUP3 00005db8: ADD 00005db9: MSTORE 00005dba: PUSH1 0x60 00005dbc: ADD 00005dbd: SWAP1 00005dbe: JUMP 00005dbf: JUMPDEST 00005dc0: PUSH1 0x00 00005dc2: PUSH2 0xffff 00005dc5: DUP7 00005dc6: AND 00005dc7: DUP3 00005dc8: MSTORE 00005dc9: PUSH1 0x60 00005dcb: PUSH1 0x20 00005dcd: DUP4 00005dce: ADD 00005dcf: MSTORE 00005dd0: PUSH2 0x5ddd 00005dd3: PUSH1 0x60 00005dd5: DUP4 00005dd6: ADD 00005dd7: DUP6 00005dd8: DUP8 00005dd9: PUSH2 0x5410 00005ddc: JUMP 00005ddd: JUMPDEST 00005dde: DUP3 00005ddf: DUP2 00005de0: SUB 00005de1: PUSH1 0x40 00005de3: DUP5 00005de4: ADD 00005de5: MSTORE 00005de6: PUSH2 0x5def 00005de9: DUP2 00005dea: DUP6 00005deb: PUSH2 0x5458 00005dee: JUMP 00005def: JUMPDEST 00005df0: SWAP8 00005df1: SWAP7 00005df2: POP 00005df3: POP 00005df4: POP 00005df5: POP 00005df6: POP 00005df7: POP 00005df8: POP 00005df9: JUMP 00005dfa: JUMPDEST 00005dfb: PUSH1 0x00 00005dfd: PUSH2 0xffff 00005e00: DUP1 00005e01: DUP9 00005e02: AND 00005e03: DUP4 00005e04: MSTORE 00005e05: DUP1 00005e06: DUP8 00005e07: AND 00005e08: PUSH1 0x20 00005e0a: DUP5 00005e0b: ADD 00005e0c: MSTORE 00005e0d: POP 00005e0e: PUSH1 0x80 00005e10: PUSH1 0x40 00005e12: DUP4 00005e13: ADD 00005e14: MSTORE 00005e15: PUSH2 0x5e22 00005e18: PUSH1 0x80 00005e1a: DUP4 00005e1b: ADD 00005e1c: DUP6 00005e1d: DUP8 00005e1e: PUSH2 0x5410 00005e21: JUMP 00005e22: JUMPDEST 00005e23: DUP3 00005e24: DUP2 00005e25: SUB 00005e26: PUSH1 0x60 00005e28: DUP5 00005e29: ADD 00005e2a: MSTORE 00005e2b: PUSH2 0x5e34 00005e2e: DUP2 00005e2f: DUP6 00005e30: PUSH2 0x5458 00005e33: JUMP 00005e34: JUMPDEST 00005e35: SWAP9 00005e36: SWAP8 00005e37: POP 00005e38: POP 00005e39: POP 00005e3a: POP 00005e3b: POP 00005e3c: POP 00005e3d: POP 00005e3e: POP 00005e3f: JUMP 00005e40: JUMPDEST 00005e41: PUSH2 0xffff 00005e44: SWAP4 00005e45: DUP5 00005e46: AND 00005e47: DUP2 00005e48: MSTORE 00005e49: SWAP2 00005e4a: SWAP1 00005e4b: SWAP3 00005e4c: AND 00005e4d: PUSH1 0x20 00005e4f: DUP3 00005e50: ADD 00005e51: MSTORE 00005e52: PUSH1 0x01 00005e54: PUSH1 0x01 00005e56: PUSH1 0x80 00005e58: SHL 00005e59: SUB 00005e5a: SWAP1 00005e5b: SWAP2 00005e5c: AND 00005e5d: PUSH1 0x40 00005e5f: DUP3 00005e60: ADD 00005e61: MSTORE 00005e62: PUSH1 0x60 00005e64: ADD 00005e65: SWAP1 00005e66: JUMP 00005e67: JUMPDEST 00005e68: PUSH1 0xff 00005e6a: SWAP2 00005e6b: SWAP1 00005e6c: SWAP2 00005e6d: AND 00005e6e: DUP2 00005e6f: MSTORE 00005e70: PUSH1 0x20 00005e72: ADD 00005e73: SWAP1 00005e74: JUMP 00005e75: JUMPDEST 00005e76: PUSH1 0x40 00005e78: MLOAD 00005e79: DUP2 00005e7a: DUP2 00005e7b: ADD 00005e7c: PUSH8 0xffffffffffffffff 00005e85: DUP2 00005e86: GT 00005e87: DUP3 00005e88: DUP3 00005e89: LT 00005e8a: OR 00005e8b: ISZERO 00005e8c: PUSH2 0x5e94 00005e8f: JUMPI 00005e90: PUSH1 0x00 00005e92: DUP1 00005e93: REVERT 00005e94: JUMPDEST 00005e95: PUSH1 0x40 00005e97: MSTORE 00005e98: SWAP2 00005e99: SWAP1 00005e9a: POP 00005e9b: JUMP 00005e9c: JUMPDEST 00005e9d: PUSH1 0x00 00005e9f: PUSH8 0xffffffffffffffff 00005ea8: DUP3 00005ea9: GT 00005eaa: ISZERO 00005eab: PUSH2 0x5eb2 00005eae: JUMPI 00005eaf: DUP1 00005eb0: DUP2 00005eb1: REVERT 00005eb2: JUMPDEST 00005eb3: POP 00005eb4: PUSH1 0x20 00005eb6: SWAP1 00005eb7: DUP2 00005eb8: MUL 00005eb9: ADD 00005eba: SWAP1 00005ebb: JUMP 00005ebc: JUMPDEST 00005ebd: PUSH1 0x00 00005ebf: JUMPDEST 00005ec0: DUP4 00005ec1: DUP2 00005ec2: LT 00005ec3: ISZERO 00005ec4: PUSH2 0x5ed7 00005ec7: JUMPI 00005ec8: DUP2 00005ec9: DUP2 00005eca: ADD 00005ecb: MLOAD 00005ecc: DUP4 00005ecd: DUP3 00005ece: ADD 00005ecf: MSTORE 00005ed0: PUSH1 0x20 00005ed2: ADD 00005ed3: PUSH2 0x5ebf 00005ed6: JUMP 00005ed7: JUMPDEST 00005ed8: DUP4 00005ed9: DUP2 00005eda: GT 00005edb: ISZERO 00005edc: PUSH2 0x1886 00005edf: JUMPI 00005ee0: POP 00005ee1: POP 00005ee2: PUSH1 0x00 00005ee4: SWAP2 00005ee5: ADD 00005ee6: MSTORE 00005ee7: JUMP 00005ee8: JUMPDEST 00005ee9: PUSH1 0x01 00005eeb: PUSH1 0x01 00005eed: PUSH1 0xa0 00005eef: SHL 00005ef0: SUB 00005ef1: DUP2 00005ef2: AND 00005ef3: DUP2 00005ef4: EQ 00005ef5: PUSH2 0x1524 00005ef8: JUMPI 00005ef9: PUSH1 0x00 00005efb: DUP1 00005efc: REVERT 00005efd: JUMPDEST 00005efe: DUP1 00005eff: ISZERO 00005f00: ISZERO 00005f01: DUP2 00005f02: EQ 00005f03: PUSH2 0x1524 00005f06: JUMPI 00005f07: PUSH1 0x00 00005f09: DUP1 00005f0a: REVERT 00005f0b: JUMPDEST 00005f0c: PUSH1 0x01 00005f0e: PUSH1 0x01 00005f10: PUSH1 0x80 00005f12: SHL 00005f13: SUB 00005f14: DUP2 00005f15: AND 00005f16: DUP2 00005f17: EQ 00005f18: PUSH2 0x1524 00005f1b: JUMPI 00005f1c: PUSH1 0x00 00005f1e: DUP1 00005f1f: REVERT 00005f20: JUMPDEST 00005f21: PUSH2 0xffff 00005f24: DUP2 00005f25: AND 00005f26: DUP2 00005f27: EQ 00005f28: PUSH2 0x1524 00005f2b: JUMPI 00005f2c: PUSH1 0x00 00005f2e: DUP1 00005f2f: REVERT 00005f30: JUMPDEST 00005f31: PUSH4 0xffffffff 00005f36: DUP2 00005f37: AND 00005f38: DUP2 00005f39: EQ 00005f3a: PUSH2 0x1524 00005f3d: JUMPI 00005f3e: PUSH1 0x00 00005f40: DUP1 00005f41: REVERT 00005f42: JUMPDEST 00005f43: PUSH1 0xff 00005f45: DUP2 00005f46: AND 00005f47: DUP2 00005f48: EQ 00005f49: PUSH2 0x1524 00005f4c: JUMPI 00005f4d: PUSH1 0x00 00005f4f: DUP1 00005f50: REVERT 00005f51: INVALID 00005f52: SLOAD 00005f53: UNKNOWN(0xCD) 00005f54: UNKNOWN(0xD3) 00005f55: PUSH10 0xe4e8a8515e52ca72ec81 00005f60: PUSH13 0x2101831ad1f18bf44102ed1714 00005f6e: MSIZE 00005f6f: UNKNOWN(0xC9) 00005f70: UNKNOWN(0xB4) 00005f71: UNKNOWN(0xF8) 00005f72: LOG2 00005f73: PUSH5 0x6970667358 00005f79: UNKNOWN(0x22) 00005f7a: SLT 00005f7b: KECCAK256 00005f7c: DUP5 00005f7d: RETURNDATACOPY 00005f7e: UNKNOWN(0x4B) 00005f7f: UNKNOWN(0xB9) 00005f80: SAR 00005f81: UNKNOWN(0xBB) 00005f82: MSTORE 00005f83: DELEGATECALL 00005f84: UNKNOWN(0xEF) 00005f85: PUSH12 0x4a77cee4d44c7ea78329b64e 00005f92: UNKNOWN(0xE5) 00005f93: RETURNDATASIZE 00005f94: SWAP2 00005f95: MSTORE8 00005f96: UNKNOWN(0xCA) 00005f97: UNKNOWN(0xE2) 00005f98: GASPRICE 00005f99: PUSH25
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| critical | upgradeability | detector | Untrusted DELEGATECALL target reachable | 70 | no | no |
viewtrace_id: 0x288bd5c8e8e5739c697ac6c93a7fc2d4e7c1099fb70d46afd9e264d84af05d5c
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "unknown",
"attempts": 192,
"trace_id": "0x288bd5c8e8e5739c697ac6c93a7fc2d4e7c1099fb70d46afd9e264d84af05d5c",
"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": "0xe4db4250",
"selector": "0xe4db4250",
"calldata_variants": [
"0xe4db4250",
"0xe4db42500000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xebebf742",
"selector": "0xebebf742",
"calldata_variants": [
"0xebebf742",
"0xebebf7420000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xee0c7a76",
"selector": "0xee0c7a76",
"calldata_variants": [
"0xee0c7a76",
"0xee0c7a760000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf8c8765e",
"selector": "0xf8c8765e",
"calldata_variants": [
"0xf8c8765e",
"0xf8c8765e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc3b52cb",
"selector": "0xfc3b52cb",
"calldata_variants": [
"0xfc3b52cb",
"0xfc3b52cb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc84aae17",
"selector": "0xc84aae17",
"calldata_variants": [
"0xc84aae17",
"0xc84aae170000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc8f38dc0",
"selector": "0xc8f38dc0",
"calldata_variants": [
"0xc8f38dc0",
"0xc8f38dc00000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5785,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
},
{
"pc": 8228,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
},
{
"pc": 13309,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [],
"delegatecall_count": 5,
"untrusted_delegatecall_count": 5
}
|
| high | other | codex | ERC777 liquidation payments credit liquidator balance, enabling free collateral extraction | 85 | no | — |
viewevidence_json{
"evidence": "`_finishLiquidateSettle` calls `_tokenDeposit` on netAmount>0; `_tokenDeposit` calls `IERC777.operatorSend`; `tokensReceived` unconditionally credits `cashBalances` for `from`.",
"locations": [
"contracts/cache/solpp-generated-contracts/Escrow.sol:1083",
"contracts/cache/solpp-generated-contracts/Escrow.sol:430",
"contracts/cache/solpp-generated-contracts/Escrow.sol:552"
],
"recommendation": "During liquidation/settlement flows, bypass ERC777 hooks or neutralize the credit. For example: use a dedicated transfer path that does not trigger `tokensReceived`, add a guarded flag to ignore credits for protocol-initiated payments, or subtract the credited amount after the ERC777 transfer completes.",
"exploit_scenario": "If a listed currency uses ERC777 (isERC777=true), a liquidator can call `liquidate`/`settleCashBalance` so `_finishLiquidateSettle` executes `_tokenDeposit` with netAmount>0. The ERC777 `operatorSend` triggers `tokensReceived`, which credits `cashBalances` for the liquidator. The payer\u2019s debt is reduced and collateral is transferred to the liquidator, yet the liquidator retains an internal balance equal to the payment and can withdraw it, effectively receiving collateral for free."
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x21261f52d5fed982a5220541c89bb95db4a8b591fb510c40b0305a20c89c25b9
call_targets:
0x8a134e651432a902041643668940c9a9cd270633
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x21261f52d5fed982a5220541c89bb95db4a8b591fb510c40b0305a20c89c25b9",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x8a134e651432a902041643668940c9a9cd270633"
],
"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": "0xe4db4250",
"selector": "0xe4db4250",
"calldata_variants": [
"0xe4db4250",
"0xe4db42500000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xebebf742",
"selector": "0xebebf742",
"calldata_variants": [
"0xebebf742",
"0xebebf7420000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xee0c7a76",
"selector": "0xee0c7a76",
"calldata_variants": [
"0xee0c7a76",
"0xee0c7a760000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf8c8765e",
"selector": "0xf8c8765e",
"calldata_variants": [
"0xf8c8765e",
"0xf8c8765e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc3b52cb",
"selector": "0xfc3b52cb",
"calldata_variants": [
"0xfc3b52cb",
"0xfc3b52cb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc84aae17",
"selector": "0xc84aae17",
"calldata_variants": [
"0xc84aae17",
"0xc84aae170000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc8f38dc0",
"selector": "0xc8f38dc0",
"calldata_variants": [
"0xc8f38dc0",
"0xc8f38dc00000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 6364,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 7287,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 7889,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 13,
"guards_detected": [],
"untrusted_call_count": 13
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x21261f52d5fed982a5220541c89bb95db4a8b591fb510c40b0305a20c89c25b9
call_targets:
0x8a134e651432a902041643668940c9a9cd270633
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x21261f52d5fed982a5220541c89bb95db4a8b591fb510c40b0305a20c89c25b9",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x8a134e651432a902041643668940c9a9cd270633"
],
"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": "0xe4db4250",
"selector": "0xe4db4250",
"calldata_variants": [
"0xe4db4250",
"0xe4db42500000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xebebf742",
"selector": "0xebebf742",
"calldata_variants": [
"0xebebf742",
"0xebebf7420000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xee0c7a76",
"selector": "0xee0c7a76",
"calldata_variants": [
"0xee0c7a76",
"0xee0c7a760000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf8c8765e",
"selector": "0xf8c8765e",
"calldata_variants": [
"0xf8c8765e",
"0xf8c8765e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfc3b52cb",
"selector": "0xfc3b52cb",
"calldata_variants": [
"0xfc3b52cb",
"0xfc3b52cb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc84aae17",
"selector": "0xc84aae17",
"calldata_variants": [
"0xc84aae17",
"0xc84aae170000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc8f38dc0",
"selector": "0xc8f38dc0",
"calldata_variants": [
"0xc8f38dc0",
"0xc8f38dc00000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 6364,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 7287,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 7889,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 13,
"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": 5
}
|
| medium | oracle | codex | Chainlink price reads lack freshness/round validation | 75 | no | — |
viewevidence_json{
"evidence": "`ExchangeRate._fetchExchangeRate` uses `IAggregator.latestAnswer()` and only checks `rate > 0`, with no staleness/round checks.",
"locations": [
"contracts/cache/solpp-generated-contracts/utils/ExchangeRate.sol:101"
],
"recommendation": "Use `latestRoundData()` (or equivalent) and validate `updatedAt` against a staleness threshold and `answeredInRound >= roundId`. On L2s, add a sequencer-uptime check. Consider pausing or restricting actions when feeds are stale.",
"exploit_scenario": "If a Chainlink feed stalls, lags, or is manipulated temporarily, `latestAnswer()` may return stale data. Borrowing, settlement, or liquidation can then be executed against outdated prices, enabling under-collateralized positions or value extraction until feeds update."
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 25
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 21
}
|