Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save tolicodes/9f3fe86997e228770a1531cd563464c2 to your computer and use it in GitHub Desktop.
Save tolicodes/9f3fe86997e228770a1531cd563464c2 to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.7+commit.e28d00a7.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.7.6;
pragma abicoder v2;
import "@openzeppelin/contracts/access/Ownable.sol";
import "./utils/GsnTypes.sol";
import "./interfaces/IPaymaster.sol";
import "./interfaces/IRelayHub.sol";
import "./utils/GsnEip712Library.sol";
import "./forwarder/IForwarder.sol";
/**
* Abstract base class to be inherited by a concrete Paymaster
* A subclass must implement:
* - preRelayedCall
* - postRelayedCall
*/
abstract contract BasePaymaster is IPaymaster, Ownable {
IRelayHub internal relayHub;
address private _trustedForwarder;
function getHubAddr() public override view returns (address) {
return address(relayHub);
}
//overhead of forwarder verify+signature, plus hub overhead.
uint256 constant public FORWARDER_HUB_OVERHEAD = 50000;
//These parameters are documented in IPaymaster.GasAndDataLimits
uint256 constant public PRE_RELAYED_CALL_GAS_LIMIT = 100000;
uint256 constant public POST_RELAYED_CALL_GAS_LIMIT = 110000;
uint256 constant public PAYMASTER_ACCEPTANCE_BUDGET = PRE_RELAYED_CALL_GAS_LIMIT + FORWARDER_HUB_OVERHEAD;
uint256 constant public CALLDATA_SIZE_LIMIT = 10500;
function getGasAndDataLimits()
public
override
virtual
view
returns (
IPaymaster.GasAndDataLimits memory limits
) {
return IPaymaster.GasAndDataLimits(
PAYMASTER_ACCEPTANCE_BUDGET,
PRE_RELAYED_CALL_GAS_LIMIT,
POST_RELAYED_CALL_GAS_LIMIT,
CALLDATA_SIZE_LIMIT
);
}
// this method must be called from preRelayedCall to validate that the forwarder
// is approved by the paymaster as well as by the recipient contract.
function _verifyForwarder(GsnTypes.RelayRequest calldata relayRequest)
public
view
{
require(address(_trustedForwarder) == relayRequest.relayData.forwarder, "Forwarder is not trusted");
GsnEip712Library.verifyForwarderTrusted(relayRequest);
}
/*
* modifier to be used by recipients as access control protection for preRelayedCall & postRelayedCall
*/
modifier relayHubOnly() {
require(msg.sender == getHubAddr(), "can only be called by RelayHub");
_;
}
function setRelayHub(IRelayHub hub) public onlyOwner {
relayHub = hub;
}
function setTrustedForwarder(address forwarder) public virtual onlyOwner {
_trustedForwarder = forwarder;
}
function trustedForwarder() public virtual view override returns (address){
return _trustedForwarder;
}
/// check current deposit on relay hub.
function getRelayHubDeposit()
public
override
view
returns (uint) {
return relayHub.balanceOf(address(this));
}
// any money moved into the paymaster is transferred as a deposit.
// This way, we don't need to understand the RelayHub API in order to replenish
// the paymaster.
receive() external virtual payable {
require(address(relayHub) != address(0), "relay hub address not set");
relayHub.depositFor{value:msg.value}(address(this));
}
/// withdraw deposit from relayHub
function withdrawRelayHubDepositTo(uint amount, address payable target) public onlyOwner {
relayHub.withdraw(amount, target);
}
}
// SPDX-License-Identifier: MIT
// solhint-disable no-inline-assembly
pragma solidity >=0.6.9;
import "./interfaces/IRelayRecipient.sol";
/**
* A base contract to be inherited by any contract that want to receive relayed transactions
* A subclass must use "_msgSender()" instead of "msg.sender"
*/
abstract contract BaseRelayRecipient is IRelayRecipient {
/*
* Forwarder singleton we accept calls from
*/
address private _trustedForwarder;
function trustedForwarder() public virtual view returns (address){
return _trustedForwarder;
}
function _setTrustedForwarder(address _forwarder) internal {
_trustedForwarder = _forwarder;
}
function isTrustedForwarder(address forwarder) public virtual override view returns(bool) {
return forwarder == _trustedForwarder;
}
/**
* return the sender of this call.
* if the call came through our trusted forwarder, return the original sender.
* otherwise, return `msg.sender`.
* should be used in the contract anywhere instead of msg.sender
*/
function _msgSender() internal override virtual view returns (address ret) {
if (msg.data.length >= 20 && isTrustedForwarder(msg.sender)) {
// At this point we know that the sender is a trusted forwarder,
// so we trust that the last bytes of msg.data are the verified sender address.
// extract sender address from the end of msg.data
assembly {
ret := shr(96,calldataload(sub(calldatasize(),20)))
}
} else {
ret = msg.sender;
}
}
/**
* return the msg.data of this call.
* if the call came through our trusted forwarder, then the real sender was appended as the last 20 bytes
* of the msg.data - so this method will strip those 20 bytes off.
* otherwise (if the call was made directly and not through the forwarder), return `msg.data`
* should be used in the contract instead of msg.data, where this difference matters.
*/
function _msgData() internal override virtual view returns (bytes calldata ret) {
if (msg.data.length >= 20 && isTrustedForwarder(msg.sender)) {
return msg.data[0:msg.data.length-20];
} else {
return msg.data;
}
}
}
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.7.6;
pragma abicoder v2;
interface IForwarder {
struct ForwardRequest {
address from;
address to;
uint256 value;
uint256 gas;
uint256 nonce;
bytes data;
uint256 validUntil;
}
event DomainRegistered(bytes32 indexed domainSeparator, bytes domainValue);
event RequestTypeRegistered(bytes32 indexed typeHash, string typeStr);
function getNonce(address from)
external view
returns(uint256);
/**
* verify the transaction would execute.
* validate the signature and the nonce of the request.
* revert if either signature or nonce are incorrect.
* also revert if domainSeparator or requestTypeHash are not registered.
*/
function verify(
ForwardRequest calldata forwardRequest,
bytes32 domainSeparator,
bytes32 requestTypeHash,
bytes calldata suffixData,
bytes calldata signature
) external view;
/**
* execute a transaction
* @param forwardRequest - all transaction parameters
* @param domainSeparator - domain used when signing this request
* @param requestTypeHash - request type used when signing this request.
* @param suffixData - the extension data used when signing this request.
* @param signature - signature to validate.
*
* the transaction is verified, and then executed.
* the success and ret of "call" are returned.
* This method would revert only verification errors. target errors
* are reported using the returned "success" and ret string
*/
function execute(
ForwardRequest calldata forwardRequest,
bytes32 domainSeparator,
bytes32 requestTypeHash,
bytes calldata suffixData,
bytes calldata signature
)
external payable
returns (bool success, bytes memory ret);
/**
* Register a new Request typehash.
* @param typeName - the name of the request type.
* @param typeSuffix - any extra data after the generic params.
* (must add at least one param. The generic ForwardRequest type is always registered by the constructor)
*/
function registerRequestType(string calldata typeName, string calldata typeSuffix) external;
/**
* Register a new domain separator.
* The domain separator must have the following fields: name,version,chainId, verifyingContract.
* the chainId is the current network's chainId, and the verifyingContract is this forwarder.
* This method is given the domain name and version to create and register the domain separator value.
* @param name the domain's display name
* @param version the domain/protocol version
*/
function registerDomainSeparator(string calldata name, string calldata version) external;
}
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.7.6;
pragma abicoder v2;
import "../utils/GsnTypes.sol";
interface IPaymaster {
/**
* @param acceptanceBudget -
* Paymaster expected gas budget to accept (or reject) a request
* This a gas required by any calculations that might need to reject the
* transaction, by preRelayedCall, forwarder and recipient.
* See value in BasePaymaster.PAYMASTER_ACCEPTANCE_BUDGET
* Transaction that gets rejected above that gas usage is on the paymaster's expense.
* As long this value is above preRelayedCallGasLimit (see defaults in BasePaymaster), the
* Paymaster is guaranteed it will never pay for rejected transactions.
* If this value is below preRelayedCallGasLimt, it might might make Paymaster open to a "griefing" attack.
*
* Specifying value too high might make the call rejected by some relayers.
*
* From a Relay's point of view, this is the highest gas value a paymaster might "grief" the relay,
* since the paymaster will pay anything above that (regardless if the tx reverts)
*
* @param preRelayedCallGasLimit - the max gas usage of preRelayedCall. any revert (including OOG)
* of preRelayedCall is a reject by the paymaster.
* as long as acceptanceBudget is above preRelayedCallGasLimit, any such revert (including OOG)
* is not payed by the paymaster.
* @param postRelayedCallGasLimit - the max gas usage of postRelayedCall.
* note that an OOG will revert the transaction, but the paymaster already committed to pay,
* so the relay will get compensated, at the expense of the paymaster
*/
struct GasAndDataLimits {
uint256 acceptanceBudget;
uint256 preRelayedCallGasLimit;
uint256 postRelayedCallGasLimit;
uint256 calldataSizeLimit;
}
/**
* Return the Gas Limits and msg.data max size constants used by the Paymaster.
*/
function getGasAndDataLimits()
external
view
returns (
GasAndDataLimits memory limits
);
function trustedForwarder() external view returns (address);
/**
* return the relayHub of this contract.
*/
function getHubAddr() external view returns (address);
/**
* Can be used to determine if the contract can pay for incoming calls before making any.
* @return the paymaster's deposit in the RelayHub.
*/
function getRelayHubDeposit() external view returns (uint256);
/**
* Called by Relay (and RelayHub), to validate if the paymaster agrees to pay for this call.
*
* MUST be protected with relayHubOnly() in case it modifies state.
*
* The Paymaster rejects by the following "revert" operations
* - preRelayedCall() method reverts
* - the forwarder reverts because of nonce or signature error
* - the paymaster returned "rejectOnRecipientRevert", and the recipient contract reverted.
* In any of the above cases, all paymaster calls (and recipient call) are reverted.
* In any other case, the paymaster agrees to pay for the gas cost of the transaction (note
* that this includes also postRelayedCall revert)
*
* The rejectOnRecipientRevert flag means the Paymaster "delegate" the rejection to the recipient
* code. It also means the Paymaster trust the recipient to reject fast: both preRelayedCall,
* forwarder check and receipient checks must fit into the GasLimits.acceptanceBudget,
* otherwise the TX is paid by the Paymaster.
*
* @param relayRequest - the full relay request structure
* @param signature - user's EIP712-compatible signature of the {@link relayRequest}.
* Note that in most cases the paymaster shouldn't try use it at all. It is always checked
* by the forwarder immediately after preRelayedCall returns.
* @param approvalData - extra dapp-specific data (e.g. signature from trusted party)
* @param maxPossibleGas - based on values returned from {@link getGasAndDataLimits},
* the RelayHub will calculate the maximum possible amount of gas the user may be charged for.
* In order to convert this value to wei, the Paymaster has to call "relayHub.calculateCharge()"
* return:
* a context to be passed to postRelayedCall
* rejectOnRecipientRevert - TRUE if paymaster want to reject the TX if the recipient reverts.
* FALSE means that rejects by the recipient will be completed on chain, and paid by the paymaster.
* (note that in the latter case, the preRelayedCall and postRelayedCall are not reverted).
*/
function preRelayedCall(
GsnTypes.RelayRequest calldata relayRequest,
bytes calldata signature,
bytes calldata approvalData,
uint256 maxPossibleGas
)
external
returns (bytes memory context, bool rejectOnRecipientRevert);
/**
* This method is called after the actual relayed function call.
* It may be used to record the transaction (e.g. charge the caller by some contract logic) for this call.
*
* MUST be protected with relayHubOnly() in case it modifies state.
*
* @param context - the call context, as returned by the preRelayedCall
* @param success - true if the relayed call succeeded, false if it reverted
* @param gasUseWithoutPost - the actual amount of gas used by the entire transaction, EXCEPT
* the gas used by the postRelayedCall itself.
* @param relayData - the relay params of the request. can be used by relayHub.calculateCharge()
*
* Revert in this functions causes a revert of the client's relayed call (and preRelayedCall(), but the Paymaster
* is still committed to pay the relay for the entire transaction.
*/
function postRelayedCall(
bytes calldata context,
bool success,
uint256 gasUseWithoutPost,
GsnTypes.RelayData calldata relayData
) external;
function versionPaymaster() external view returns (string memory);
}
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.7.6;
pragma abicoder v2;
import "../utils/GsnTypes.sol";
import "./IStakeManager.sol";
interface IRelayHub {
struct RelayHubConfig {
// maximum number of worker accounts allowed per manager
uint256 maxWorkerCount;
// Gas set aside for all relayCall() instructions to prevent unexpected out-of-gas exceptions
uint256 gasReserve;
// Gas overhead to calculate gasUseWithoutPost
uint256 postOverhead;
// Gas cost of all relayCall() instructions after actual 'calculateCharge()'
// Assume that relay has non-zero balance (costs 15'000 more otherwise).
uint256 gasOverhead;
// Maximum funds that can be deposited at once. Prevents user error by disallowing large deposits.
uint256 maximumRecipientDeposit;
// Minimum unstake delay blocks of a relay manager's stake on the StakeManager
uint256 minimumUnstakeDelay;
// Minimum stake a relay can have. An attack on the network will never cost less than half this value.
uint256 minimumStake;
// relayCall()'s msg.data upper bound gas cost per byte
uint256 dataGasCostPerByte;
// relayCalls() minimal gas overhead when calculating cost of putting tx on chain.
uint256 externalCallDataCostOverhead;
}
event RelayHubConfigured(RelayHubConfig config);
/// Emitted when a relay server registers or updates its details
/// Looking at these events lets a client discover relay servers
event RelayServerRegistered(
address indexed relayManager,
uint256 baseRelayFee,
uint256 pctRelayFee,
string relayUrl
);
/// Emitted when relays are added by a relayManager
event RelayWorkersAdded(
address indexed relayManager,
address[] newRelayWorkers,
uint256 workersCount
);
/// Emitted when an account withdraws funds from RelayHub.
event Withdrawn(
address indexed account,
address indexed dest,
uint256 amount
);
/// Emitted when depositFor is called, including the amount and account that was funded.
event Deposited(
address indexed paymaster,
address indexed from,
uint256 amount
);
/// Emitted when an attempt to relay a call fails and Paymaster does not accept the transaction.
/// The actual relayed call was not executed, and the recipient not charged.
/// @param reason contains a revert reason returned from preRelayedCall or forwarder.
event TransactionRejectedByPaymaster(
address indexed relayManager,
address indexed paymaster,
address indexed from,
address to,
address relayWorker,
bytes4 selector,
uint256 innerGasUsed,
bytes reason
);
/// Emitted when a transaction is relayed. Note that the actual encoded function might be reverted: this will be
/// indicated in the status field.
/// Useful when monitoring a relay's operation and relayed calls to a contract.
/// Charge is the ether value deducted from the recipient's balance, paid to the relay's manager.
event TransactionRelayed(
address indexed relayManager,
address indexed relayWorker,
address indexed from,
address to,
address paymaster,
bytes4 selector,
RelayCallStatus status,
uint256 charge
);
event TransactionResult(
RelayCallStatus status,
bytes returnValue
);
event HubDeprecated(uint256 fromBlock);
/// Reason error codes for the TransactionRelayed event
/// @param OK - the transaction was successfully relayed and execution successful - never included in the event
/// @param RelayedCallFailed - the transaction was relayed, but the relayed call failed
/// @param RejectedByPreRelayed - the transaction was not relayed due to preRelatedCall reverting
/// @param RejectedByForwarder - the transaction was not relayed due to forwarder check (signature,nonce)
/// @param PostRelayedFailed - the transaction was relayed and reverted due to postRelatedCall reverting
/// @param PaymasterBalanceChanged - the transaction was relayed and reverted due to the paymaster balance change
enum RelayCallStatus {
OK,
RelayedCallFailed,
RejectedByPreRelayed,
RejectedByForwarder,
RejectedByRecipientRevert,
PostRelayedFailed,
PaymasterBalanceChanged
}
/// Add new worker addresses controlled by sender who must be a staked Relay Manager address.
/// Emits a RelayWorkersAdded event.
/// This function can be called multiple times, emitting new events
function addRelayWorkers(address[] calldata newRelayWorkers) external;
function registerRelayServer(uint256 baseRelayFee, uint256 pctRelayFee, string calldata url) external;
// Balance management
/// Deposits ether for a contract, so that it can receive (and pay for) relayed transactions. Unused balance can only
/// be withdrawn by the contract itself, by calling withdraw.
/// Emits a Deposited event.
function depositFor(address target) external payable;
/// Withdraws from an account's balance, sending it back to it. Relay managers call this to retrieve their revenue, and
/// contracts can also use it to reduce their funding.
/// Emits a Withdrawn event.
function withdraw(uint256 amount, address payable dest) external;
// Relaying
/// Relays a transaction. For this to succeed, multiple conditions must be met:
/// - Paymaster's "preRelayCall" method must succeed and not revert
/// - the sender must be a registered Relay Worker that the user signed
/// - the transaction's gas price must be equal or larger than the one that was signed by the sender
/// - the transaction must have enough gas to run all internal transactions if they use all gas available to them
/// - the Paymaster must have enough balance to pay the Relay Worker for the scenario when all gas is spent
///
/// If all conditions are met, the call will be relayed and the recipient charged.
///
/// Arguments:
/// @param maxAcceptanceBudget - max valid value for paymaster.getGasLimits().acceptanceBudget
/// @param relayRequest - all details of the requested relayed call
/// @param signature - client's EIP-712 signature over the relayRequest struct
/// @param approvalData: dapp-specific data forwarded to preRelayedCall.
/// This value is *not* verified by the Hub. For example, it can be used to pass a signature to the Paymaster
/// @param externalGasLimit - the value passed as gasLimit to the transaction.
///
/// Emits a TransactionRelayed event.
function relayCall(
uint maxAcceptanceBudget,
GsnTypes.RelayRequest calldata relayRequest,
bytes calldata signature,
bytes calldata approvalData,
uint externalGasLimit
)
external
returns (bool paymasterAccepted, bytes memory returnValue);
function penalize(address relayWorker, address payable beneficiary) external;
function setConfiguration(RelayHubConfig memory _config) external;
// Deprecate hub (reverting relayCall()) from block number 'fromBlock'
// Can only be called by owner
function deprecateHub(uint256 fromBlock) external;
/// The fee is expressed as a base fee in wei plus percentage on actual charge.
/// E.g. a value of 40 stands for a 40% fee, so the recipient will be
/// charged for 1.4 times the spent amount.
function calculateCharge(uint256 gasUsed, GsnTypes.RelayData calldata relayData) external view returns (uint256);
/* getters */
/// Returns the whole hub configuration
function getConfiguration() external view returns (RelayHubConfig memory config);
function calldataGasCost(uint256 length) external view returns (uint256);
function workerToManager(address worker) external view returns(address);
function workerCount(address manager) external view returns(uint256);
/// Returns an account's deposits. It can be either a deposit of a paymaster, or a revenue of a relay manager.
function balanceOf(address target) external view returns (uint256);
function stakeManager() external view returns (IStakeManager);
function penalizer() external view returns (address);
/// Uses StakeManager info to decide if the Relay Manager can be considered staked
/// @return true if stake size and delay satisfy all requirements
function isRelayManagerStaked(address relayManager) external view returns(bool);
// Checks hubs' deprecation status
function isDeprecated() external view returns (bool);
// Returns the block number from which the hub no longer allows relaying calls.
function deprecationBlock() external view returns (uint256);
/// @return a SemVer-compliant version of the hub contract
function versionHub() external view returns (string memory);
}
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0;
/**
* a contract must implement this interface in order to support relayed transaction.
* It is better to inherit the BaseRelayRecipient as its implementation.
*/
abstract contract IRelayRecipient {
/**
* return if the forwarder is trusted to forward relayed transactions to us.
* the forwarder is required to verify the sender's signature, and verify
* the call is not a replay.
*/
function isTrustedForwarder(address forwarder) public virtual view returns(bool);
/**
* return the sender of this call.
* if the call came through our trusted forwarder, then the real sender is appended as the last 20 bytes
* of the msg.data.
* otherwise, return `msg.sender`
* should be used in the contract anywhere instead of msg.sender
*/
function _msgSender() internal virtual view returns (address);
/**
* return the msg.data of this call.
* if the call came through our trusted forwarder, then the real sender was appended as the last 20 bytes
* of the msg.data - so this method will strip those 20 bytes off.
* otherwise (if the call was made directly and not through the forwarder), return `msg.data`
* should be used in the contract instead of msg.data, where this difference matters.
*/
function _msgData() internal virtual view returns (bytes calldata);
function versionRecipient() external virtual view returns (string memory);
}
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.7.6;
pragma abicoder v2;
import "@openzeppelin/contracts/utils/math/SafeMath.sol";
interface IStakeManager {
/// Emitted when a stake or unstakeDelay are initialized or increased
event StakeAdded(
address indexed relayManager,
address indexed owner,
uint256 stake,
uint256 unstakeDelay
);
/// Emitted once a stake is scheduled for withdrawal
event StakeUnlocked(
address indexed relayManager,
address indexed owner,
uint256 withdrawBlock
);
/// Emitted when owner withdraws relayManager funds
event StakeWithdrawn(
address indexed relayManager,
address indexed owner,
uint256 amount
);
/// Emitted when an authorized Relay Hub penalizes a relayManager
event StakePenalized(
address indexed relayManager,
address indexed beneficiary,
uint256 reward
);
event HubAuthorized(
address indexed relayManager,
address indexed relayHub
);
event HubUnauthorized(
address indexed relayManager,
address indexed relayHub,
uint256 removalBlock
);
event OwnerSet(
address indexed relayManager,
address indexed owner
);
/// @param stake - amount of ether staked for this relay
/// @param unstakeDelay - number of blocks to elapse before the owner can retrieve the stake after calling 'unlock'
/// @param withdrawBlock - first block number 'withdraw' will be callable, or zero if the unlock has not been called
/// @param owner - address that receives revenue and manages relayManager's stake
struct StakeInfo {
uint256 stake;
uint256 unstakeDelay;
uint256 withdrawBlock;
address payable owner;
}
struct RelayHubInfo {
uint256 removalBlock;
}
/// Set the owner of a Relay Manager. Called only by the RelayManager itself.
/// Note that owners cannot transfer ownership - if the entry already exists, reverts.
/// @param owner - owner of the relay (as configured off-chain)
function setRelayManagerOwner(address payable owner) external;
/// Only the owner can call this function. If the entry does not exist, reverts.
/// @param relayManager - address that represents a stake entry and controls relay registrations on relay hubs
/// @param unstakeDelay - number of blocks to elapse before the owner can retrieve the stake after calling 'unlock'
function stakeForRelayManager(address relayManager, uint256 unstakeDelay) external payable;
function unlockStake(address relayManager) external;
function withdrawStake(address relayManager) external;
function authorizeHubByOwner(address relayManager, address relayHub) external;
function authorizeHubByManager(address relayHub) external;
function unauthorizeHubByOwner(address relayManager, address relayHub) external;
function unauthorizeHubByManager(address relayHub) external;
function isRelayManagerStaked(address relayManager, address relayHub, uint256 minAmount, uint256 minUnstakeDelay)
external
view
returns (bool);
/// Slash the stake of the relay relayManager. In order to prevent stake kidnapping, burns half of stake on the way.
/// @param relayManager - entry to penalize
/// @param beneficiary - address that receives half of the penalty amount
/// @param amount - amount to withdraw from stake
function penalizeRelayManager(address relayManager, address payable beneficiary, uint256 amount) external;
function getStakeInfo(address relayManager) external view returns (StakeInfo memory stakeInfo);
function maxUnstakeDelay() external view returns (uint256);
function versionSM() external view returns (string memory);
}
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity ^0.8.0;
pragma abicoder v2;
import "../utils/GsnTypes.sol";
import "../interfaces/IRelayRecipient.sol";
import "../forwarder/IForwarder.sol";
import "./GsnUtils.sol";
/**
* Bridge Library to map GSN RelayRequest into a call of a Forwarder
*/
library GsnEip712Library {
// maximum length of return value/revert reason for 'execute' method. Will truncate result if exceeded.
uint256 private constant MAX_RETURN_SIZE = 1024;
//copied from Forwarder (can't reference string constants even from another library)
string public constant GENERIC_PARAMS = "address from,address to,uint256 value,uint256 gas,uint256 nonce,bytes data,uint256 validUntil";
bytes public constant RELAYDATA_TYPE = "RelayData(uint256 gasPrice,uint256 pctRelayFee,uint256 baseRelayFee,address relayWorker,address paymaster,address forwarder,bytes paymasterData,uint256 clientId)";
string public constant RELAY_REQUEST_NAME = "RelayRequest";
string public constant RELAY_REQUEST_SUFFIX = string(abi.encodePacked("RelayData relayData)", RELAYDATA_TYPE));
bytes public constant RELAY_REQUEST_TYPE = abi.encodePacked(
RELAY_REQUEST_NAME,"(",GENERIC_PARAMS,",", RELAY_REQUEST_SUFFIX);
bytes32 public constant RELAYDATA_TYPEHASH = keccak256(RELAYDATA_TYPE);
bytes32 public constant RELAY_REQUEST_TYPEHASH = keccak256(RELAY_REQUEST_TYPE);
struct EIP712Domain {
string name;
string version;
uint256 chainId;
address verifyingContract;
}
bytes32 public constant EIP712DOMAIN_TYPEHASH = keccak256(
"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
);
function splitRequest(
GsnTypes.RelayRequest calldata req
)
internal
pure
returns (
bytes memory suffixData
) {
suffixData = abi.encode(
hashRelayData(req.relayData));
}
//verify that the recipient trusts the given forwarder
// MUST be called by paymaster
function verifyForwarderTrusted(GsnTypes.RelayRequest calldata relayRequest) internal view {
(bool success, bytes memory ret) = relayRequest.request.to.staticcall(
abi.encodeWithSelector(
IRelayRecipient.isTrustedForwarder.selector, relayRequest.relayData.forwarder
)
);
require(success, "isTrustedForwarder: reverted");
require(ret.length == 32, "isTrustedForwarder: bad response");
require(abi.decode(ret, (bool)), "invalid forwarder for recipient");
}
function verifySignature(GsnTypes.RelayRequest calldata relayRequest, bytes calldata signature) internal view {
(bytes memory suffixData) = splitRequest(relayRequest);
bytes32 _domainSeparator = domainSeparator(relayRequest.relayData.forwarder);
IForwarder forwarder = IForwarder(payable(relayRequest.relayData.forwarder));
forwarder.verify(relayRequest.request, _domainSeparator, RELAY_REQUEST_TYPEHASH, suffixData, signature);
}
function verify(GsnTypes.RelayRequest calldata relayRequest, bytes calldata signature) internal view {
verifyForwarderTrusted(relayRequest);
verifySignature(relayRequest, signature);
}
function execute(GsnTypes.RelayRequest calldata relayRequest, bytes calldata signature) internal returns (bool forwarderSuccess, bool callSuccess, bytes memory ret) {
(bytes memory suffixData) = splitRequest(relayRequest);
bytes32 _domainSeparator = domainSeparator(relayRequest.relayData.forwarder);
/* solhint-disable-next-line avoid-low-level-calls */
(forwarderSuccess, ret) = relayRequest.relayData.forwarder.call(
abi.encodeWithSelector(IForwarder.execute.selector,
relayRequest.request, _domainSeparator, RELAY_REQUEST_TYPEHASH, suffixData, signature
));
if ( forwarderSuccess ) {
//decode return value of execute:
(callSuccess, ret) = abi.decode(ret, (bool, bytes));
}
truncateInPlace(ret);
}
//truncate the given parameter (in-place) if its length is above the given maximum length
// do nothing otherwise.
//NOTE: solidity warns unless the method is marked "pure", but it DOES modify its parameter.
function truncateInPlace(bytes memory data) internal pure {
MinLibBytes.truncateInPlace(data, MAX_RETURN_SIZE);
}
function domainSeparator(address forwarder) internal view returns (bytes32) {
return hashDomain(EIP712Domain({
name : "GSN Relayed Transaction",
version : "2",
chainId : getChainID(),
verifyingContract : forwarder
}));
}
function getChainID() internal view returns (uint256 id) {
/* solhint-disable no-inline-assembly */
assembly {
id := chainid()
}
}
function hashDomain(EIP712Domain memory req) internal pure returns (bytes32) {
return keccak256(abi.encode(
EIP712DOMAIN_TYPEHASH,
keccak256(bytes(req.name)),
keccak256(bytes(req.version)),
req.chainId,
req.verifyingContract));
}
function hashRelayData(GsnTypes.RelayData calldata req) internal pure returns (bytes32) {
return keccak256(abi.encode(
RELAYDATA_TYPEHASH,
req.gasPrice,
req.pctRelayFee,
req.baseRelayFee,
req.relayWorker,
req.paymaster,
req.forwarder,
keccak256(req.paymasterData),
req.clientId
));
}
}
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity ^0.8.0;
import "../forwarder/IForwarder.sol";
interface GsnTypes {
/// @notice gasPrice, pctRelayFee and baseRelayFee must be validated inside of the paymaster's preRelayedCall in order not to overpay
struct RelayData {
uint256 gasPrice;
uint256 pctRelayFee;
uint256 baseRelayFee;
address relayWorker;
address paymaster;
address forwarder;
bytes paymasterData;
uint256 clientId;
}
//note: must start with the ForwardRequest to be an extension of the generic forwarder
struct RelayRequest {
IForwarder.ForwardRequest request;
RelayData relayData;
}
}
/* solhint-disable no-inline-assembly */
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity ^0.8.0;
import "../utils/MinLibBytes.sol";
library GsnUtils {
/**
* extract method sig from encoded function call
*/
function getMethodSig(bytes memory msgData) internal pure returns (bytes4) {
return MinLibBytes.readBytes4(msgData, 0);
}
/**
* extract parameter from encoded-function block.
* see: https://solidity.readthedocs.io/en/develop/abi-spec.html#formal-specification-of-the-encoding
* the return value should be casted to the right type (uintXXX/bytesXXX/address/bool/enum)
*/
function getParam(bytes memory msgData, uint index) internal pure returns (uint) {
return MinLibBytes.readUint256(msgData, 4 + index * 32);
}
//re-throw revert with the same revert data.
function revertWithData(bytes memory data) internal pure {
assembly {
revert(add(data,32), mload(data))
}
}
}
// SPDX-License-Identifier: MIT
// minimal bytes manipulation required by GSN
// a minimal subset from 0x/LibBytes
/* solhint-disable no-inline-assembly */
pragma solidity ^0.8.0;
library MinLibBytes {
//truncate the given parameter (in-place) if its length is above the given maximum length
// do nothing otherwise.
//NOTE: solidity warns unless the method is marked "pure", but it DOES modify its parameter.
function truncateInPlace(bytes memory data, uint256 maxlen) internal pure {
if (data.length > maxlen) {
assembly { mstore(data, maxlen) }
}
}
/// @dev Reads an address from a position in a byte array.
/// @param b Byte array containing an address.
/// @param index Index in byte array of address.
/// @return result address from byte array.
function readAddress(
bytes memory b,
uint256 index
)
internal
pure
returns (address result)
{
require (b.length >= index + 20, "readAddress: data too short");
// Add offset to index:
// 1. Arrays are prefixed by 32-byte length parameter (add 32 to index)
// 2. Account for size difference between address length and 32-byte storage word (subtract 12 from index)
index += 20;
// Read address from array memory
assembly {
// 1. Add index to address of bytes array
// 2. Load 32-byte word from memory
// 3. Apply 20-byte mask to obtain address
result := and(mload(add(b, index)), 0xffffffffffffffffffffffffffffffffffffffff)
}
return result;
}
function readBytes32(
bytes memory b,
uint256 index
)
internal
pure
returns (bytes32 result)
{
require(b.length >= index + 32, "readBytes32: data too short" );
// Read the bytes32 from array memory
assembly {
result := mload(add(b, add(index,32)))
}
return result;
}
/// @dev Reads a uint256 value from a position in a byte array.
/// @param b Byte array containing a uint256 value.
/// @param index Index in byte array of uint256 value.
/// @return result uint256 value from byte array.
function readUint256(
bytes memory b,
uint256 index
)
internal
pure
returns (uint256 result)
{
result = uint256(readBytes32(b, index));
return result;
}
function readBytes4(
bytes memory b,
uint256 index
)
internal
pure
returns (bytes4 result)
{
require(b.length >= index + 4, "readBytes4: data too short");
// Read the bytes4 from array memory
assembly {
result := mload(add(b, add(index,32)))
// Solidity does not require us to clean the trailing bytes.
// We do it anyway
result := and(result, 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000)
}
return result;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/ERC721.sol)
pragma solidity ^0.8.0;
import "./IERC721.sol";
import "./IERC721Receiver.sol";
import "./extensions/IERC721Metadata.sol";
import "../../utils/Address.sol";
import "../../utils/Context.sol";
import "../../utils/Strings.sol";
import "../../utils/introspection/ERC165.sol";
/**
* @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
* the Metadata extension, but not including the Enumerable extension, which is available separately as
* {ERC721Enumerable}.
*/
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
using Address for address;
using Strings for uint256;
// Token name
string private _name;
// Token symbol
string private _symbol;
// Mapping from token ID to owner address
mapping(uint256 => address) private _owners;
// Mapping owner address to token count
mapping(address => uint256) private _balances;
// Mapping from token ID to approved address
mapping(uint256 => address) private _tokenApprovals;
// Mapping from owner to operator approvals
mapping(address => mapping(address => bool)) private _operatorApprovals;
/**
* @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return
interfaceId == type(IERC721).interfaceId ||
interfaceId == type(IERC721Metadata).interfaceId ||
super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC721-balanceOf}.
*/
function balanceOf(address owner) public view virtual override returns (uint256) {
require(owner != address(0), "ERC721: balance query for the zero address");
return _balances[owner];
}
/**
* @dev See {IERC721-ownerOf}.
*/
function ownerOf(uint256 tokenId) public view virtual override returns (address) {
address owner = _owners[tokenId];
require(owner != address(0), "ERC721: owner query for nonexistent token");
return owner;
}
/**
* @dev See {IERC721Metadata-name}.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev See {IERC721Metadata-symbol}.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev See {IERC721Metadata-tokenURI}.
*/
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
string memory baseURI = _baseURI();
return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
}
/**
* @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
* token will be the concatenation of the `baseURI` and the `tokenId`. Empty
* by default, can be overriden in child contracts.
*/
function _baseURI() internal view virtual returns (string memory) {
return "";
}
/**
* @dev See {IERC721-approve}.
*/
function approve(address to, uint256 tokenId) public virtual override {
address owner = ERC721.ownerOf(tokenId);
require(to != owner, "ERC721: approval to current owner");
require(
_msgSender() == owner || isApprovedForAll(owner, _msgSender()),
"ERC721: approve caller is not owner nor approved for all"
);
_approve(to, tokenId);
}
/**
* @dev See {IERC721-getApproved}.
*/
function getApproved(uint256 tokenId) public view virtual override returns (address) {
require(_exists(tokenId), "ERC721: approved query for nonexistent token");
return _tokenApprovals[tokenId];
}
/**
* @dev See {IERC721-setApprovalForAll}.
*/
function setApprovalForAll(address operator, bool approved) public virtual override {
_setApprovalForAll(_msgSender(), operator, approved);
}
/**
* @dev See {IERC721-isApprovedForAll}.
*/
function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
return _operatorApprovals[owner][operator];
}
/**
* @dev See {IERC721-transferFrom}.
*/
function transferFrom(
address from,
address to,
uint256 tokenId
) public virtual override {
//solhint-disable-next-line max-line-length
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
_transfer(from, to, tokenId);
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) public virtual override {
safeTransferFrom(from, to, tokenId, "");
}
/**
* @dev See {IERC721-safeTransferFrom}.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId,
bytes memory _data
) public virtual override {
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
_safeTransfer(from, to, tokenId, _data);
}
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* `_data` is additional data, it has no specified format and it is sent in call to `to`.
*
* This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
* implement alternative mechanisms to perform token transfer, such as signature-based.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function _safeTransfer(
address from,
address to,
uint256 tokenId,
bytes memory _data
) internal virtual {
_transfer(from, to, tokenId);
require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
}
/**
* @dev Returns whether `tokenId` exists.
*
* Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
*
* Tokens start existing when they are minted (`_mint`),
* and stop existing when they are burned (`_burn`).
*/
function _exists(uint256 tokenId) internal view virtual returns (bool) {
return _owners[tokenId] != address(0);
}
/**
* @dev Returns whether `spender` is allowed to manage `tokenId`.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
require(_exists(tokenId), "ERC721: operator query for nonexistent token");
address owner = ERC721.ownerOf(tokenId);
return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
}
/**
* @dev Safely mints `tokenId` and transfers it to `to`.
*
* Requirements:
*
* - `tokenId` must not exist.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function _safeMint(address to, uint256 tokenId) internal virtual {
_safeMint(to, tokenId, "");
}
/**
* @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
* forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
*/
function _safeMint(
address to,
uint256 tokenId,
bytes memory _data
) internal virtual {
_mint(to, tokenId);
require(
_checkOnERC721Received(address(0), to, tokenId, _data),
"ERC721: transfer to non ERC721Receiver implementer"
);
}
/**
* @dev Mints `tokenId` and transfers it to `to`.
*
* WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
*
* Requirements:
*
* - `tokenId` must not exist.
* - `to` cannot be the zero address.
*
* Emits a {Transfer} event.
*/
function _mint(address to, uint256 tokenId) internal virtual {
require(to != address(0), "ERC721: mint to the zero address");
require(!_exists(tokenId), "ERC721: token already minted");
_beforeTokenTransfer(address(0), to, tokenId);
_balances[to] += 1;
_owners[tokenId] = to;
emit Transfer(address(0), to, tokenId);
}
/**
* @dev Destroys `tokenId`.
* The approval is cleared when the token is burned.
*
* Requirements:
*
* - `tokenId` must exist.
*
* Emits a {Transfer} event.
*/
function _burn(uint256 tokenId) internal virtual {
address owner = ERC721.ownerOf(tokenId);
_beforeTokenTransfer(owner, address(0), tokenId);
// Clear approvals
_approve(address(0), tokenId);
_balances[owner] -= 1;
delete _owners[tokenId];
emit Transfer(owner, address(0), tokenId);
}
/**
* @dev Transfers `tokenId` from `from` to `to`.
* As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
*
* Emits a {Transfer} event.
*/
function _transfer(
address from,
address to,
uint256 tokenId
) internal virtual {
require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
require(to != address(0), "ERC721: transfer to the zero address");
_beforeTokenTransfer(from, to, tokenId);
// Clear approvals from the previous owner
_approve(address(0), tokenId);
_balances[from] -= 1;
_balances[to] += 1;
_owners[tokenId] = to;
emit Transfer(from, to, tokenId);
}
/**
* @dev Approve `to` to operate on `tokenId`
*
* Emits a {Approval} event.
*/
function _approve(address to, uint256 tokenId) internal virtual {
_tokenApprovals[tokenId] = to;
emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
}
/**
* @dev Approve `operator` to operate on all of `owner` tokens
*
* Emits a {ApprovalForAll} event.
*/
function _setApprovalForAll(
address owner,
address operator,
bool approved
) internal virtual {
require(owner != operator, "ERC721: approve to caller");
_operatorApprovals[owner][operator] = approved;
emit ApprovalForAll(owner, operator, approved);
}
/**
* @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
* The call is not executed if the target address is not a contract.
*
* @param from address representing the previous owner of the given token ID
* @param to target address that will receive the tokens
* @param tokenId uint256 ID of the token to be transferred
* @param _data bytes optional data to send along with the call
* @return bool whether the call correctly returned the expected magic value
*/
function _checkOnERC721Received(
address from,
address to,
uint256 tokenId,
bytes memory _data
) private returns (bool) {
if (to.isContract()) {
try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
return retval == IERC721Receiver.onERC721Received.selector;
} catch (bytes memory reason) {
if (reason.length == 0) {
revert("ERC721: transfer to non ERC721Receiver implementer");
} else {
assembly {
revert(add(32, reason), mload(reason))
}
}
}
} else {
return true;
}
}
/**
* @dev Hook that is called before any token transfer. This includes minting
* and burning.
*
* Calling conditions:
*
* - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
* transferred to `to`.
* - When `from` is zero, `tokenId` will be minted for `to`.
* - When `to` is zero, ``from``'s `tokenId` will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 tokenId
) internal virtual {}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol)
pragma solidity ^0.8.0;
import "../ERC721.sol";
import "./IERC721Enumerable.sol";
/**
* @dev This implements an optional extension of {ERC721} defined in the EIP that adds
* enumerability of all the token ids in the contract as well as all token ids owned by each
* account.
*/
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
// Mapping from owner to list of owned token IDs
mapping(address => mapping(uint256 => uint256)) private _ownedTokens;
// Mapping from token ID to index of the owner tokens list
mapping(uint256 => uint256) private _ownedTokensIndex;
// Array with all token ids, used for enumeration
uint256[] private _allTokens;
// Mapping from token id to position in the allTokens array
mapping(uint256 => uint256) private _allTokensIndex;
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);
}
/**
* @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
*/
function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
return _ownedTokens[owner][index];
}
/**
* @dev See {IERC721Enumerable-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _allTokens.length;
}
/**
* @dev See {IERC721Enumerable-tokenByIndex}.
*/
function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
return _allTokens[index];
}
/**
* @dev Hook that is called before any token transfer. This includes minting
* and burning.
*
* Calling conditions:
*
* - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
* transferred to `to`.
* - When `from` is zero, `tokenId` will be minted for `to`.
* - When `to` is zero, ``from``'s `tokenId` will be burned.
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 tokenId
) internal virtual override {
super._beforeTokenTransfer(from, to, tokenId);
if (from == address(0)) {
_addTokenToAllTokensEnumeration(tokenId);
} else if (from != to) {
_removeTokenFromOwnerEnumeration(from, tokenId);
}
if (to == address(0)) {
_removeTokenFromAllTokensEnumeration(tokenId);
} else if (to != from) {
_addTokenToOwnerEnumeration(to, tokenId);
}
}
/**
* @dev Private function to add a token to this extension's ownership-tracking data structures.
* @param to address representing the new owner of the given token ID
* @param tokenId uint256 ID of the token to be added to the tokens list of the given address
*/
function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
uint256 length = ERC721.balanceOf(to);
_ownedTokens[to][length] = tokenId;
_ownedTokensIndex[tokenId] = length;
}
/**
* @dev Private function to add a token to this extension's token tracking data structures.
* @param tokenId uint256 ID of the token to be added to the tokens list
*/
function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
_allTokensIndex[tokenId] = _allTokens.length;
_allTokens.push(tokenId);
}
/**
* @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that
* while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for
* gas optimizations e.g. when performing a transfer operation (avoiding double writes).
* This has O(1) time complexity, but alters the order of the _ownedTokens array.
* @param from address representing the previous owner of the given token ID
* @param tokenId uint256 ID of the token to be removed from the tokens list of the given address
*/
function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
// To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
// then delete the last slot (swap and pop).
uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
uint256 tokenIndex = _ownedTokensIndex[tokenId];
// When the token to delete is the last token, the swap operation is unnecessary
if (tokenIndex != lastTokenIndex) {
uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];
_ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
_ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
}
// This also deletes the contents at the last position of the array
delete _ownedTokensIndex[tokenId];
delete _ownedTokens[from][lastTokenIndex];
}
/**
* @dev Private function to remove a token from this extension's token tracking data structures.
* This has O(1) time complexity, but alters the order of the _allTokens array.
* @param tokenId uint256 ID of the token to be removed from the tokens list
*/
function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
// To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
// then delete the last slot (swap and pop).
uint256 lastTokenIndex = _allTokens.length - 1;
uint256 tokenIndex = _allTokensIndex[tokenId];
// When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
// rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
// an 'if' statement (like in _removeTokenFromOwnerEnumeration)
uint256 lastTokenId = _allTokens[lastTokenIndex];
_allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
_allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
// This also deletes the contents at the last position of the array
delete _allTokensIndex[tokenId];
_allTokens.pop();
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Enumerable.sol)
pragma solidity ^0.8.0;
import "../IERC721.sol";
/**
* @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
* @dev See https://eips.ethereum.org/EIPS/eip-721
*/
interface IERC721Enumerable is IERC721 {
/**
* @dev Returns the total amount of tokens stored by the contract.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns a token ID owned by `owner` at a given `index` of its token list.
* Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
*/
function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);
/**
* @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
* Use along with {totalSupply} to enumerate all tokens.
*/
function tokenByIndex(uint256 index) external view returns (uint256);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)
pragma solidity ^0.8.0;
import "../IERC721.sol";
/**
* @title ERC-721 Non-Fungible Token Standard, optional metadata extension
* @dev See https://eips.ethereum.org/EIPS/eip-721
*/
interface IERC721Metadata is IERC721 {
/**
* @dev Returns the token collection name.
*/
function name() external view returns (string memory);
/**
* @dev Returns the token collection symbol.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
*/
function tokenURI(uint256 tokenId) external view returns (string memory);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)
pragma solidity ^0.8.0;
import "../../utils/introspection/IERC165.sol";
/**
* @dev Required interface of an ERC721 compliant contract.
*/
interface IERC721 is IERC165 {
/**
* @dev Emitted when `tokenId` token is transferred from `from` to `to`.
*/
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
*/
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
/**
* @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
*/
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
/**
* @dev Returns the number of tokens in ``owner``'s account.
*/
function balanceOf(address owner) external view returns (uint256 balance);
/**
* @dev Returns the owner of the `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function ownerOf(uint256 tokenId) external view returns (address owner);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) external;
/**
* @dev Transfers `tokenId` token from `from` to `to`.
*
* WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 tokenId
) external;
/**
* @dev Gives permission to `to` to transfer `tokenId` token to another account.
* The approval is cleared when the token is transferred.
*
* Only a single account can be approved at a time, so approving the zero address clears previous approvals.
*
* Requirements:
*
* - The caller must own the token or be an approved operator.
* - `tokenId` must exist.
*
* Emits an {Approval} event.
*/
function approve(address to, uint256 tokenId) external;
/**
* @dev Returns the account approved for `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function getApproved(uint256 tokenId) external view returns (address operator);
/**
* @dev Approve or remove `operator` as an operator for the caller.
* Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
*
* Requirements:
*
* - The `operator` cannot be the caller.
*
* Emits an {ApprovalForAll} event.
*/
function setApprovalForAll(address operator, bool _approved) external;
/**
* @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
*
* See {setApprovalForAll}
*/
function isApprovedForAll(address owner, address operator) external view returns (bool);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(
address from,
address to,
uint256 tokenId,
bytes calldata data
) external;
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol)
pragma solidity ^0.8.0;
/**
* @title ERC721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC721 asset contracts.
*/
interface IERC721Receiver {
/**
* @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
* by `operator` from `from`, this function is called.
*
* It must return its Solidity selector to confirm the token transfer.
* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
*
* The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
*/
function onERC721Received(
address operator,
address from,
uint256 tokenId,
bytes calldata data
) external returns (bytes4);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Address.sol)
pragma solidity ^0.8.0;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)
pragma solidity ^0.8.0;
/**
* @title Counters
* @author Matt Condon (@shrugs)
* @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number
* of elements in a mapping, issuing ERC721 ids, or counting request ids.
*
* Include with `using Counters for Counters.Counter;`
*/
library Counters {
struct Counter {
// This variable should never be directly accessed by users of the library: interactions must be restricted to
// the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
// this feature: see https://github.com/ethereum/solidity/issues/4637
uint256 _value; // default: 0
}
function current(Counter storage counter) internal view returns (uint256) {
return counter._value;
}
function increment(Counter storage counter) internal {
unchecked {
counter._value += 1;
}
}
function decrement(Counter storage counter) internal {
uint256 value = counter._value;
require(value > 0, "Counter: decrement overflow");
unchecked {
counter._value = value - 1;
}
}
function reset(Counter storage counter) internal {
counter._value = 0;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
pragma solidity ^0.8.0;
import "./IERC165.sol";
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
* for the additional interface id that will be supported. For example:
*
* ```solidity
* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
* }
* ```
*
* Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
*/
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol)
pragma solidity ^0.8.0;
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @dev Wrappers over Solidity's arithmetic operations.
*
* NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
* now has built in overflow checking.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)
pragma solidity ^0.8.0;
/**
* @dev String operations.
*/
library Strings {
bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
/**
* @dev Converts a `uint256` to its ASCII `string` decimal representation.
*/
function toString(uint256 value) internal pure returns (string memory) {
// Inspired by OraclizeAPI's implementation - MIT licence
// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol
if (value == 0) {
return "0";
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
}
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
value /= 10;
}
return string(buffer);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
*/
function toHexString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0x00";
}
uint256 temp = value;
uint256 length = 0;
while (temp != 0) {
length++;
temp >>= 8;
}
return toHexString(value, length);
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
*/
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = _HEX_SYMBOLS[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
}
REMIX EXAMPLE PROJECT
Remix example project is present when Remix loads very first time or there are no files existing in the File Explorer.
It contains 3 directories:
1. 'contracts': Holds three contracts with different complexity level, denoted with number prefix in file name.
2. 'scripts': Holds two scripts to deploy a contract. It is explained below.
3. 'tests': Contains one test file for 'Ballot' contract with unit tests in Solidity.
SCRIPTS
The 'scripts' folder contains example async/await scripts for deploying the 'Storage' contract.
For the deployment of any other contract, 'contractName' and 'constructorArgs' should be updated (along with other code if required).
Scripts have full access to the web3.js and ethers.js libraries.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@opengsn/contracts/src/BaseRelayRecipient.sol";
import "./NovelPaymaster.sol";
// This is done so that OpenSea can cover Matic gas costs: https://docs.opensea.io/docs/polygon-basic-integration
// import "./MetaTransactions.sol";
contract NovelCollection is Ownable, ERC721Enumerable, BaseRelayRecipient {
using Strings for uint256;
event Revealed();
uint256 private _nextTokenId = 0;
string private _btURI;
string private _cURI;
mapping(address => uint32) whitelist;
mapping(address => uint32) mintPerCustomer;
uint256 public startingIndex = 0;
string public override versionRecipient = "2.2.3+novel-irelayrecipient";
uint32 public immutable supplyCap;
string public metadataProofHash;
constructor(
string memory _name,
string memory _symbol,
uint32 _supplyCap,
string memory _metadataProofHash,
string memory __cURI,
address _forwarder,
address payable _paymasterContractAddress
) ERC721(_name, _symbol) {
supplyCap = _supplyCap;
metadataProofHash = _metadataProofHash;
_cURI = __cURI;
_setTrustedForwarder(_forwarder);
NovelPaymaster novelPaymaster = NovelPaymaster(_paymasterContractAddress);
novelPaymaster.enableContract(address(this));
}
function _baseURI() internal view virtual override returns (string memory) {
return _btURI;
}
function contractURI() public view returns (string memory) {
return string(abi.encodePacked(_cURI, address(this)));
}
function setWhitelistedAmount(
address[] memory customers,
uint32[] memory tokenCounts
) external onlyOwner {
require(
customers.length == tokenCounts.length,
"NovelCollection: invalid input lengths, customers and tokenCount arrays must be the same length"
);
for (uint256 i = 0; i < customers.length; i++) {
whitelist[customers[i]] = tokenCounts[i];
}
}
function whitelistedAmount(address customer) public view returns (uint32) {
return whitelist[customer];
}
function mintedAmount(address customer) public view returns (uint32) {
return mintPerCustomer[customer];
}
function mintableAmount(address customer) public view returns (uint32) {
uint32 _mintedAmount = mintedAmount(customer);
uint32 _whitelistedAmount = whitelistedAmount(customer);
if (_mintedAmount > _whitelistedAmount) {
return 0;
} else {
return whitelistedAmount(customer) - mintedAmount(customer);
}
}
function canMintAmount(address customer, uint32 amount) public view returns (bool) {
return mintableAmount(customer) >= amount;
}
function mint(uint32 count) external {
require(!isRevealed(), "NovelCollection: sale is over");
address customer = _msgSender();
require(
whitelist[customer] >= count,
"NovelCollection: requested count exceeds whitelist limit"
);
require(
totalSupply() + count <= supplyCap,
"NovelCollection: cap reached"
);
for (uint256 i = 0; i < count; i++) {
_nextTokenId++; // this begins token IDs at 1
mintPerCustomer[customer]++;
_safeMint(customer, _nextTokenId);
}
}
/**
* @dev Finalize starting index
*/
function reveal(string memory baseTokenURI) external onlyOwner {
require(!isRevealed(), "NovelCollection: already revealed");
_btURI = baseTokenURI;
startingIndex = uint256(blockhash(block.number - 1)) % supplyCap;
// Prevent default sequence
if (startingIndex == 0) {
startingIndex = 1;
}
emit Revealed();
}
/**
* @dev Returns true if the metadata starting index has been revealed
*/
function isRevealed() public view returns (bool) {
return startingIndex > 0;
}
function walletOfOwner(address _owner)
external
view
returns (uint256[] memory)
{
uint256 ownerTokenCount = balanceOf(_owner);
uint256[] memory tokenIds = new uint256[](ownerTokenCount);
for (uint256 i; i < ownerTokenCount; i++) {
tokenIds[i] = tokenOfOwnerByIndex(_owner, i);
}
return tokenIds;
}
function tokenURI(uint256 tokenId)
public
view
virtual
override
returns (string memory)
{
require(
_exists(tokenId),
"ERC721Metadata: URI query for nonexistent token"
);
if (!isRevealed()) {
// Pre-reveal placeholder
return string(abi.encodePacked(_cURI, "placeholder.json"));
}
uint256 trueIndex = (startingIndex + tokenId) % supplyCap;
return string(abi.encodePacked(_baseURI(), trueIndex.toString(), ".json"));
}
/**
* Override isApprovedForAll to auto-approve OS's proxy contract
*/
function isApprovedForAll(address _owner, address _operator)
public
view
override
returns (bool isOperator)
{
// if OpenSea's ERC721 Proxy Address is detected, auto-return true
if (_operator == address(0x58807baD0B376efc12F5AD86aAc70E78ed67deaE)) {
return true;
}
// otherwise, use the default ERC721.isApprovedForAll()
return ERC721.isApprovedForAll(_owner, _operator);
}
/**
* @dev Withdrawal implemented for safety reasons in case funds are
* accidentally sent to the contract
*/
function withdraw() external {
uint256 balance = address(this).balance;
(bool sent, ) = payable(owner()).call{value: balance}("");
require(sent);
}
function _msgSender()
internal
view
override(Context, BaseRelayRecipient)
returns (address)
{
return BaseRelayRecipient._msgSender();
}
function _msgData()
internal
view
override(Context, BaseRelayRecipient)
returns (bytes memory)
{
return BaseRelayRecipient._msgData();
}
}
pragma solidity ^0.8.0;
pragma experimental ABIEncoderV2;
// SPDX-License-Identifier: MIT OR Apache-2.0
import "@opengsn/contracts/src/BasePaymaster.sol";
import "@opengsn/contracts/src/interfaces/IRelayHub.sol";
import "./NovelCollection.sol";
// accept everything.
// this paymaster accepts any request.
//
// NOTE: Do NOT use this contract on a mainnet: it accepts anything, so anyone can "grief" it and drain its account
contract NovelPaymaster is BasePaymaster {
constructor(address _relayHubAddress) {
setRelayHub(IRelayHub(_relayHubAddress));
}
/**
* Withdrawal implemented for safety reasons in case funds are
* accidentally sent to the contract
*/
function withdraw() external {
uint256 balance = address(this).balance;
(bool sent, ) = payable(owner()).call{value: balance}("");
require(sent);
}
mapping (address=>bool) public targetWhitelist;
// this is how we mark a contract as one we will pay for
function enableContract(address target) external onlyOwner {
targetWhitelist[target] = true;
}
function isEnabledContract(address target) external view returns (bool) {
if (targetWhitelist[target]) {
return true;
} else {
return false;
}
}
function preRelayedCall(
GsnTypes.RelayRequest calldata relayRequest,
bytes calldata signature,
bytes calldata approvalData,
uint256 maxPossibleGas
) external override virtual returns (bytes memory context, bool) {
_verifyForwarder(relayRequest);
(signature, approvalData, maxPossibleGas);
require(targetWhitelist[relayRequest.request.to], "This Target is not added!");
// TODO: confirm that this actually works (checks that attempted transaction has a quantity that is whitelisted)
NovelCollection novelCollection = NovelCollection(relayRequest.request.to);
uint32 quantity = extractMintCountFromCall(relayRequest.request.data);
require(novelCollection.canMintAmount(relayRequest.request.from, quantity));
return ("", false);
}
function postRelayedCall(
bytes calldata context,
bool success,
uint256 gasUseWithoutPost,
GsnTypes.RelayData calldata relayData
) external override virtual {
(context, success, gasUseWithoutPost, relayData);
}
function versionPaymaster() external view override virtual returns (string memory){
return "2.2.3+novel-paymaster";
}
function extractMintCountFromCall(bytes memory b) internal pure returns (uint32){
uint32 number;
// if this doesn't work then try 6 instead of 4
for(uint8 i=4; i<8; i++){
number = number + uint32(uint8(b[i])*(2**(8*(8-(i+1)))));
}
return number;
}
}
This file has been truncated, but you can view the full file.
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_1520": {
"entryPoint": null,
"id": 1520,
"parameterSlots": 0,
"returnSlots": 0
},
"@_1664": {
"entryPoint": null,
"id": 1664,
"parameterSlots": 2,
"returnSlots": 0
},
"@_3930": {
"entryPoint": null,
"id": 3930,
"parameterSlots": 7,
"returnSlots": 0
},
"@_msgSender_265": {
"entryPoint": 741,
"id": 265,
"parameterSlots": 0,
"returnSlots": 1
},
"@_msgSender_4367": {
"entryPoint": 449,
"id": 4367,
"parameterSlots": 0,
"returnSlots": 1
},
"@_setTrustedForwarder_225": {
"entryPoint": 673,
"id": 225,
"parameterSlots": 1,
"returnSlots": 0
},
"@_transferOwnership_1600": {
"entryPoint": 477,
"id": 1600,
"parameterSlots": 1,
"returnSlots": 0
},
"@isTrustedForwarder_238": {
"entryPoint": 807,
"id": 238,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_decode_available_length_t_string_memory_ptr_fromMemory": {
"entryPoint": 1073,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_address_fromMemory": {
"entryPoint": 1148,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_address_payable_fromMemory": {
"entryPoint": 1171,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_string_memory_ptr_fromMemory": {
"entryPoint": 1194,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint32_fromMemory": {
"entryPoint": 1245,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint32t_string_memory_ptrt_string_memory_ptrt_addresst_address_payable_fromMemory": {
"entryPoint": 1268,
"id": null,
"parameterSlots": 2,
"returnSlots": 7
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 1571,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 1588,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 1617,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": 1648,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_allocation_size_t_string_memory_ptr": {
"entryPoint": 1658,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 1712,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_address_payable": {
"entryPoint": 1732,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 1752,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint32": {
"entryPoint": 1784,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_memory_to_memory": {
"entryPoint": 1800,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"extract_byte_array_length": {
"entryPoint": 1854,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"finalize_allocation": {
"entryPoint": 1908,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"panic_error_0x22": {
"entryPoint": 1962,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 2009,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": {
"entryPoint": 2056,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae": {
"entryPoint": 2061,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": 2066,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 2071,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 2076,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"validator_revert_t_address": {
"entryPoint": 2093,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_address_payable": {
"entryPoint": 2119,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint32": {
"entryPoint": 2145,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:6891:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "102:326:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "112:75:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "179:6:26"
}
],
"functionName": {
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "137:41:26"
},
"nodeType": "YulFunctionCall",
"src": "137:49:26"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "121:15:26"
},
"nodeType": "YulFunctionCall",
"src": "121:66:26"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "112:5:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "203:5:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "210:6:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "196:6:26"
},
"nodeType": "YulFunctionCall",
"src": "196:21:26"
},
"nodeType": "YulExpressionStatement",
"src": "196:21:26"
},
{
"nodeType": "YulVariableDeclaration",
"src": "226:27:26",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "241:5:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "248:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "237:3:26"
},
"nodeType": "YulFunctionCall",
"src": "237:16:26"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "230:3:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "291:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nodeType": "YulIdentifier",
"src": "293:77:26"
},
"nodeType": "YulFunctionCall",
"src": "293:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "293:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "272:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "277:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "268:3:26"
},
"nodeType": "YulFunctionCall",
"src": "268:16:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "286:3:26"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "265:2:26"
},
"nodeType": "YulFunctionCall",
"src": "265:25:26"
},
"nodeType": "YulIf",
"src": "262:112:26"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "405:3:26"
},
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "410:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "415:6:26"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "383:21:26"
},
"nodeType": "YulFunctionCall",
"src": "383:39:26"
},
"nodeType": "YulExpressionStatement",
"src": "383:39:26"
}
]
},
"name": "abi_decode_available_length_t_string_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "75:3:26",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "80:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "88:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "96:5:26",
"type": ""
}
],
"src": "7:421:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "497:80:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "507:22:26",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "522:6:26"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "516:5:26"
},
"nodeType": "YulFunctionCall",
"src": "516:13:26"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "507:5:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "565:5:26"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "538:26:26"
},
"nodeType": "YulFunctionCall",
"src": "538:33:26"
},
"nodeType": "YulExpressionStatement",
"src": "538:33:26"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "475:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "483:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "491:5:26",
"type": ""
}
],
"src": "434:143:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "654:88:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "664:22:26",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "679:6:26"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "673:5:26"
},
"nodeType": "YulFunctionCall",
"src": "673:13:26"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "664:5:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "730:5:26"
}
],
"functionName": {
"name": "validator_revert_t_address_payable",
"nodeType": "YulIdentifier",
"src": "695:34:26"
},
"nodeType": "YulFunctionCall",
"src": "695:41:26"
},
"nodeType": "YulExpressionStatement",
"src": "695:41:26"
}
]
},
"name": "abi_decode_t_address_payable_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "632:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "640:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "648:5:26",
"type": ""
}
],
"src": "583:159:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "835:282:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "884:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulIdentifier",
"src": "886:77:26"
},
"nodeType": "YulFunctionCall",
"src": "886:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "886:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "863:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "871:4:26",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "859:3:26"
},
"nodeType": "YulFunctionCall",
"src": "859:17:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "878:3:26"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "855:3:26"
},
"nodeType": "YulFunctionCall",
"src": "855:27:26"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "848:6:26"
},
"nodeType": "YulFunctionCall",
"src": "848:35:26"
},
"nodeType": "YulIf",
"src": "845:122:26"
},
{
"nodeType": "YulVariableDeclaration",
"src": "976:27:26",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "996:6:26"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "990:5:26"
},
"nodeType": "YulFunctionCall",
"src": "990:13:26"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "980:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1012:99:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1084:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1092:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1080:3:26"
},
"nodeType": "YulFunctionCall",
"src": "1080:17:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1099:6:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1107:3:26"
}
],
"functionName": {
"name": "abi_decode_available_length_t_string_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "1021:58:26"
},
"nodeType": "YulFunctionCall",
"src": "1021:90:26"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "1012:5:26"
}
]
}
]
},
"name": "abi_decode_t_string_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "813:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "821:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "829:5:26",
"type": ""
}
],
"src": "762:355:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1185:79:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1195:22:26",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1210:6:26"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1204:5:26"
},
"nodeType": "YulFunctionCall",
"src": "1204:13:26"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1195:5:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1252:5:26"
}
],
"functionName": {
"name": "validator_revert_t_uint32",
"nodeType": "YulIdentifier",
"src": "1226:25:26"
},
"nodeType": "YulFunctionCall",
"src": "1226:32:26"
},
"nodeType": "YulExpressionStatement",
"src": "1226:32:26"
}
]
},
"name": "abi_decode_t_uint32_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1163:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1171:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1179:5:26",
"type": ""
}
],
"src": "1123:141:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1496:1771:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1543:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "1545:77:26"
},
"nodeType": "YulFunctionCall",
"src": "1545:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "1545:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1517:7:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1526:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1513:3:26"
},
"nodeType": "YulFunctionCall",
"src": "1513:23:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1538:3:26",
"type": "",
"value": "224"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1509:3:26"
},
"nodeType": "YulFunctionCall",
"src": "1509:33:26"
},
"nodeType": "YulIf",
"src": "1506:120:26"
},
{
"nodeType": "YulBlock",
"src": "1636:291:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1651:38:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1675:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1686:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1671:3:26"
},
"nodeType": "YulFunctionCall",
"src": "1671:17:26"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1665:5:26"
},
"nodeType": "YulFunctionCall",
"src": "1665:24:26"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1655:6:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1736:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "1738:77:26"
},
"nodeType": "YulFunctionCall",
"src": "1738:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "1738:79:26"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1708:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1716:18:26",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1705:2:26"
},
"nodeType": "YulFunctionCall",
"src": "1705:30:26"
},
"nodeType": "YulIf",
"src": "1702:117:26"
},
{
"nodeType": "YulAssignment",
"src": "1833:84:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1889:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1900:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1885:3:26"
},
"nodeType": "YulFunctionCall",
"src": "1885:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1909:7:26"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "1843:41:26"
},
"nodeType": "YulFunctionCall",
"src": "1843:74:26"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1833:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "1937:292:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1952:39:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1976:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1987:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1972:3:26"
},
"nodeType": "YulFunctionCall",
"src": "1972:18:26"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1966:5:26"
},
"nodeType": "YulFunctionCall",
"src": "1966:25:26"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1956:6:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2038:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "2040:77:26"
},
"nodeType": "YulFunctionCall",
"src": "2040:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "2040:79:26"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2010:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2018:18:26",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2007:2:26"
},
"nodeType": "YulFunctionCall",
"src": "2007:30:26"
},
"nodeType": "YulIf",
"src": "2004:117:26"
},
{
"nodeType": "YulAssignment",
"src": "2135:84:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2191:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2202:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2187:3:26"
},
"nodeType": "YulFunctionCall",
"src": "2187:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2211:7:26"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "2145:41:26"
},
"nodeType": "YulFunctionCall",
"src": "2145:74:26"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2135:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "2239:128:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2254:16:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2268:2:26",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2258:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2284:73:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2329:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2340:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2325:3:26"
},
"nodeType": "YulFunctionCall",
"src": "2325:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2349:7:26"
}
],
"functionName": {
"name": "abi_decode_t_uint32_fromMemory",
"nodeType": "YulIdentifier",
"src": "2294:30:26"
},
"nodeType": "YulFunctionCall",
"src": "2294:63:26"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "2284:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "2377:292:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2392:39:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2416:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2427:2:26",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2412:3:26"
},
"nodeType": "YulFunctionCall",
"src": "2412:18:26"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2406:5:26"
},
"nodeType": "YulFunctionCall",
"src": "2406:25:26"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2396:6:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2478:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "2480:77:26"
},
"nodeType": "YulFunctionCall",
"src": "2480:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "2480:79:26"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2450:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2458:18:26",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2447:2:26"
},
"nodeType": "YulFunctionCall",
"src": "2447:30:26"
},
"nodeType": "YulIf",
"src": "2444:117:26"
},
{
"nodeType": "YulAssignment",
"src": "2575:84:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2631:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2642:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2627:3:26"
},
"nodeType": "YulFunctionCall",
"src": "2627:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2651:7:26"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "2585:41:26"
},
"nodeType": "YulFunctionCall",
"src": "2585:74:26"
},
"variableNames": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "2575:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "2679:293:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2694:40:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2718:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2729:3:26",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2714:3:26"
},
"nodeType": "YulFunctionCall",
"src": "2714:19:26"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2708:5:26"
},
"nodeType": "YulFunctionCall",
"src": "2708:26:26"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2698:6:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2781:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "2783:77:26"
},
"nodeType": "YulFunctionCall",
"src": "2783:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "2783:79:26"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2753:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2761:18:26",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2750:2:26"
},
"nodeType": "YulFunctionCall",
"src": "2750:30:26"
},
"nodeType": "YulIf",
"src": "2747:117:26"
},
{
"nodeType": "YulAssignment",
"src": "2878:84:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2934:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2945:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2930:3:26"
},
"nodeType": "YulFunctionCall",
"src": "2930:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2954:7:26"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "2888:41:26"
},
"nodeType": "YulFunctionCall",
"src": "2888:74:26"
},
"variableNames": [
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "2878:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "2982:130:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2997:17:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3011:3:26",
"type": "",
"value": "160"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3001:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3028:74:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3074:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3085:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3070:3:26"
},
"nodeType": "YulFunctionCall",
"src": "3070:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3094:7:26"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "3038:31:26"
},
"nodeType": "YulFunctionCall",
"src": "3038:64:26"
},
"variableNames": [
{
"name": "value5",
"nodeType": "YulIdentifier",
"src": "3028:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "3122:138:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3137:17:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3151:3:26",
"type": "",
"value": "192"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3141:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3168:82:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3222:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3233:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3218:3:26"
},
"nodeType": "YulFunctionCall",
"src": "3218:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3242:7:26"
}
],
"functionName": {
"name": "abi_decode_t_address_payable_fromMemory",
"nodeType": "YulIdentifier",
"src": "3178:39:26"
},
"nodeType": "YulFunctionCall",
"src": "3178:72:26"
},
"variableNames": [
{
"name": "value6",
"nodeType": "YulIdentifier",
"src": "3168:6:26"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint32t_string_memory_ptrt_string_memory_ptrt_addresst_address_payable_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1418:9:26",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1429:7:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1441:6:26",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1449:6:26",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "1457:6:26",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "1465:6:26",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "1473:6:26",
"type": ""
},
{
"name": "value5",
"nodeType": "YulTypedName",
"src": "1481:6:26",
"type": ""
},
{
"name": "value6",
"nodeType": "YulTypedName",
"src": "1489:6:26",
"type": ""
}
],
"src": "1270:1997:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3338:53:26",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3355:3:26"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3378:5:26"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "3360:17:26"
},
"nodeType": "YulFunctionCall",
"src": "3360:24:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3348:6:26"
},
"nodeType": "YulFunctionCall",
"src": "3348:37:26"
},
"nodeType": "YulExpressionStatement",
"src": "3348:37:26"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3326:5:26",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3333:3:26",
"type": ""
}
],
"src": "3273:118:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3495:124:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3505:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3517:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3528:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3513:3:26"
},
"nodeType": "YulFunctionCall",
"src": "3513:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3505:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3585:6:26"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3598:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3609:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3594:3:26"
},
"nodeType": "YulFunctionCall",
"src": "3594:17:26"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "3541:43:26"
},
"nodeType": "YulFunctionCall",
"src": "3541:71:26"
},
"nodeType": "YulExpressionStatement",
"src": "3541:71:26"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3467:9:26",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3479:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3490:4:26",
"type": ""
}
],
"src": "3397:222:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3666:88:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3676:30:26",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nodeType": "YulIdentifier",
"src": "3686:18:26"
},
"nodeType": "YulFunctionCall",
"src": "3686:20:26"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3676:6:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3735:6:26"
},
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "3743:4:26"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "3715:19:26"
},
"nodeType": "YulFunctionCall",
"src": "3715:33:26"
},
"nodeType": "YulExpressionStatement",
"src": "3715:33:26"
}
]
},
"name": "allocate_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "3650:4:26",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "3659:6:26",
"type": ""
}
],
"src": "3625:129:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3800:35:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3810:19:26",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3826:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "3820:5:26"
},
"nodeType": "YulFunctionCall",
"src": "3820:9:26"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3810:6:26"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "3793:6:26",
"type": ""
}
],
"src": "3760:75:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3908:241:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4013:22:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "4015:16:26"
},
"nodeType": "YulFunctionCall",
"src": "4015:18:26"
},
"nodeType": "YulExpressionStatement",
"src": "4015:18:26"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3985:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3993:18:26",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3982:2:26"
},
"nodeType": "YulFunctionCall",
"src": "3982:30:26"
},
"nodeType": "YulIf",
"src": "3979:56:26"
},
{
"nodeType": "YulAssignment",
"src": "4045:37:26",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4075:6:26"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "4053:21:26"
},
"nodeType": "YulFunctionCall",
"src": "4053:29:26"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "4045:4:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "4119:23:26",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "4131:4:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4137:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4127:3:26"
},
"nodeType": "YulFunctionCall",
"src": "4127:15:26"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "4119:4:26"
}
]
}
]
},
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3892:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "3903:4:26",
"type": ""
}
],
"src": "3841:308:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4200:51:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4210:35:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4239:5:26"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "4221:17:26"
},
"nodeType": "YulFunctionCall",
"src": "4221:24:26"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4210:7:26"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4182:5:26",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4192:7:26",
"type": ""
}
],
"src": "4155:96:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4310:51:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4320:35:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4349:5:26"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "4331:17:26"
},
"nodeType": "YulFunctionCall",
"src": "4331:24:26"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4320:7:26"
}
]
}
]
},
"name": "cleanup_t_address_payable",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4292:5:26",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4302:7:26",
"type": ""
}
],
"src": "4257:104:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4412:81:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4422:65:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4437:5:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4444:42:26",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4433:3:26"
},
"nodeType": "YulFunctionCall",
"src": "4433:54:26"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4422:7:26"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4394:5:26",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4404:7:26",
"type": ""
}
],
"src": "4367:126:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4543:49:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4553:33:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4568:5:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4575:10:26",
"type": "",
"value": "0xffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4564:3:26"
},
"nodeType": "YulFunctionCall",
"src": "4564:22:26"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4553:7:26"
}
]
}
]
},
"name": "cleanup_t_uint32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4525:5:26",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4535:7:26",
"type": ""
}
],
"src": "4499:93:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4647:258:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4657:10:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4666:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "4661:1:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4726:63:26",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4751:3:26"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4756:1:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4747:3:26"
},
"nodeType": "YulFunctionCall",
"src": "4747:11:26"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4770:3:26"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4775:1:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4766:3:26"
},
"nodeType": "YulFunctionCall",
"src": "4766:11:26"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "4760:5:26"
},
"nodeType": "YulFunctionCall",
"src": "4760:18:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4740:6:26"
},
"nodeType": "YulFunctionCall",
"src": "4740:39:26"
},
"nodeType": "YulExpressionStatement",
"src": "4740:39:26"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4687:1:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4690:6:26"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "4684:2:26"
},
"nodeType": "YulFunctionCall",
"src": "4684:13:26"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "4698:19:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4700:15:26",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4709:1:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4712:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4705:3:26"
},
"nodeType": "YulFunctionCall",
"src": "4705:10:26"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4700:1:26"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "4680:3:26",
"statements": []
},
"src": "4676:113:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4823:76:26",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4873:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4878:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4869:3:26"
},
"nodeType": "YulFunctionCall",
"src": "4869:16:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4887:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4862:6:26"
},
"nodeType": "YulFunctionCall",
"src": "4862:27:26"
},
"nodeType": "YulExpressionStatement",
"src": "4862:27:26"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "4804:1:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4807:6:26"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "4801:2:26"
},
"nodeType": "YulFunctionCall",
"src": "4801:13:26"
},
"nodeType": "YulIf",
"src": "4798:101:26"
}
]
},
"name": "copy_memory_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "4629:3:26",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "4634:3:26",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4639:6:26",
"type": ""
}
],
"src": "4598:307:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4962:269:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4972:22:26",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "4986:4:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4992:1:26",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "4982:3:26"
},
"nodeType": "YulFunctionCall",
"src": "4982:12:26"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4972:6:26"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "5003:38:26",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "5033:4:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5039:1:26",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5029:3:26"
},
"nodeType": "YulFunctionCall",
"src": "5029:12:26"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "5007:18:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5080:51:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5094:27:26",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5108:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5116:4:26",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5104:3:26"
},
"nodeType": "YulFunctionCall",
"src": "5104:17:26"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5094:6:26"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "5060:18:26"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "5053:6:26"
},
"nodeType": "YulFunctionCall",
"src": "5053:26:26"
},
"nodeType": "YulIf",
"src": "5050:81:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5183:42:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "5197:16:26"
},
"nodeType": "YulFunctionCall",
"src": "5197:18:26"
},
"nodeType": "YulExpressionStatement",
"src": "5197:18:26"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "5147:18:26"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5170:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5178:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "5167:2:26"
},
"nodeType": "YulFunctionCall",
"src": "5167:14:26"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "5144:2:26"
},
"nodeType": "YulFunctionCall",
"src": "5144:38:26"
},
"nodeType": "YulIf",
"src": "5141:84:26"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "4946:4:26",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4955:6:26",
"type": ""
}
],
"src": "4911:320:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5280:238:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5290:58:26",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "5312:6:26"
},
{
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "5342:4:26"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "5320:21:26"
},
"nodeType": "YulFunctionCall",
"src": "5320:27:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5308:3:26"
},
"nodeType": "YulFunctionCall",
"src": "5308:40:26"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "5294:10:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5459:22:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "5461:16:26"
},
"nodeType": "YulFunctionCall",
"src": "5461:18:26"
},
"nodeType": "YulExpressionStatement",
"src": "5461:18:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "5402:10:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5414:18:26",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5399:2:26"
},
"nodeType": "YulFunctionCall",
"src": "5399:34:26"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "5438:10:26"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "5450:6:26"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "5435:2:26"
},
"nodeType": "YulFunctionCall",
"src": "5435:22:26"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "5396:2:26"
},
"nodeType": "YulFunctionCall",
"src": "5396:62:26"
},
"nodeType": "YulIf",
"src": "5393:88:26"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5497:2:26",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "5501:10:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5490:6:26"
},
"nodeType": "YulFunctionCall",
"src": "5490:22:26"
},
"nodeType": "YulExpressionStatement",
"src": "5490:22:26"
}
]
},
"name": "finalize_allocation",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "5266:6:26",
"type": ""
},
{
"name": "size",
"nodeType": "YulTypedName",
"src": "5274:4:26",
"type": ""
}
],
"src": "5237:281:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5552:152:26",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5569:1:26",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5572:77:26",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5562:6:26"
},
"nodeType": "YulFunctionCall",
"src": "5562:88:26"
},
"nodeType": "YulExpressionStatement",
"src": "5562:88:26"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5666:1:26",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5669:4:26",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5659:6:26"
},
"nodeType": "YulFunctionCall",
"src": "5659:15:26"
},
"nodeType": "YulExpressionStatement",
"src": "5659:15:26"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5690:1:26",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5693:4:26",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5683:6:26"
},
"nodeType": "YulFunctionCall",
"src": "5683:15:26"
},
"nodeType": "YulExpressionStatement",
"src": "5683:15:26"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "5524:180:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5738:152:26",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5755:1:26",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5758:77:26",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5748:6:26"
},
"nodeType": "YulFunctionCall",
"src": "5748:88:26"
},
"nodeType": "YulExpressionStatement",
"src": "5748:88:26"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5852:1:26",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5855:4:26",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5845:6:26"
},
"nodeType": "YulFunctionCall",
"src": "5845:15:26"
},
"nodeType": "YulExpressionStatement",
"src": "5845:15:26"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5876:1:26",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5879:4:26",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5869:6:26"
},
"nodeType": "YulFunctionCall",
"src": "5869:15:26"
},
"nodeType": "YulExpressionStatement",
"src": "5869:15:26"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "5710:180:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5985:28:26",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6002:1:26",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6005:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5995:6:26"
},
"nodeType": "YulFunctionCall",
"src": "5995:12:26"
},
"nodeType": "YulExpressionStatement",
"src": "5995:12:26"
}
]
},
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulFunctionDefinition",
"src": "5896:117:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6108:28:26",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6125:1:26",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6128:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6118:6:26"
},
"nodeType": "YulFunctionCall",
"src": "6118:12:26"
},
"nodeType": "YulExpressionStatement",
"src": "6118:12:26"
}
]
},
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nodeType": "YulFunctionDefinition",
"src": "6019:117:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6231:28:26",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6248:1:26",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6251:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6241:6:26"
},
"nodeType": "YulFunctionCall",
"src": "6241:12:26"
},
"nodeType": "YulExpressionStatement",
"src": "6241:12:26"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "6142:117:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6354:28:26",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6371:1:26",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6374:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6364:6:26"
},
"nodeType": "YulFunctionCall",
"src": "6364:12:26"
},
"nodeType": "YulExpressionStatement",
"src": "6364:12:26"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "6265:117:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6436:54:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6446:38:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6464:5:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6471:2:26",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6460:3:26"
},
"nodeType": "YulFunctionCall",
"src": "6460:14:26"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6480:2:26",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "6476:3:26"
},
"nodeType": "YulFunctionCall",
"src": "6476:7:26"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "6456:3:26"
},
"nodeType": "YulFunctionCall",
"src": "6456:28:26"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "6446:6:26"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6419:5:26",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "6429:6:26",
"type": ""
}
],
"src": "6388:102:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6539:79:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6596:16:26",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6605:1:26",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6608:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6598:6:26"
},
"nodeType": "YulFunctionCall",
"src": "6598:12:26"
},
"nodeType": "YulExpressionStatement",
"src": "6598:12:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6562:5:26"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6587:5:26"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "6569:17:26"
},
"nodeType": "YulFunctionCall",
"src": "6569:24:26"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "6559:2:26"
},
"nodeType": "YulFunctionCall",
"src": "6559:35:26"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "6552:6:26"
},
"nodeType": "YulFunctionCall",
"src": "6552:43:26"
},
"nodeType": "YulIf",
"src": "6549:63:26"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6532:5:26",
"type": ""
}
],
"src": "6496:122:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6675:87:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6740:16:26",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6749:1:26",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6752:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6742:6:26"
},
"nodeType": "YulFunctionCall",
"src": "6742:12:26"
},
"nodeType": "YulExpressionStatement",
"src": "6742:12:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6698:5:26"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6731:5:26"
}
],
"functionName": {
"name": "cleanup_t_address_payable",
"nodeType": "YulIdentifier",
"src": "6705:25:26"
},
"nodeType": "YulFunctionCall",
"src": "6705:32:26"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "6695:2:26"
},
"nodeType": "YulFunctionCall",
"src": "6695:43:26"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "6688:6:26"
},
"nodeType": "YulFunctionCall",
"src": "6688:51:26"
},
"nodeType": "YulIf",
"src": "6685:71:26"
}
]
},
"name": "validator_revert_t_address_payable",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6668:5:26",
"type": ""
}
],
"src": "6624:138:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6810:78:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6866:16:26",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6875:1:26",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6878:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6868:6:26"
},
"nodeType": "YulFunctionCall",
"src": "6868:12:26"
},
"nodeType": "YulExpressionStatement",
"src": "6868:12:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6833:5:26"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6857:5:26"
}
],
"functionName": {
"name": "cleanup_t_uint32",
"nodeType": "YulIdentifier",
"src": "6840:16:26"
},
"nodeType": "YulFunctionCall",
"src": "6840:23:26"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "6830:2:26"
},
"nodeType": "YulFunctionCall",
"src": "6830:34:26"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "6823:6:26"
},
"nodeType": "YulFunctionCall",
"src": "6823:42:26"
},
"nodeType": "YulIf",
"src": "6820:62:26"
}
]
},
"name": "validator_revert_t_uint32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6803:5:26",
"type": ""
}
],
"src": "6768:120:26"
}
]
},
"contents": "{\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory(src, dst, length)\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_t_address_payable_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address_payable(value)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_t_uint32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint32(value)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint32t_string_memory_ptrt_string_memory_ptrt_addresst_address_payable_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6 {\n if slt(sub(dataEnd, headStart), 224) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value5 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value6 := abi_decode_t_address_payable_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_address_payable(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_uint32(value) -> cleaned {\n cleaned := and(value, 0xffffffff)\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_address_payable(value) {\n if iszero(eq(value, cleanup_t_address_payable(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_uint32(value) {\n if iszero(eq(value, cleanup_t_uint32(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 26,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "60a06040526000600c5560006011556040518060400160405280601b81526020017f322e322e332b6e6f76656c2d6972656c6179726563697069656e740000000000815250601290805190602001906200005b92919062000381565b503480156200006957600080fd5b50604051620053da380380620053da83398181016040528101906200008f9190620004f4565b8686620000b1620000a5620001c160201b60201c565b620001dd60201b60201c565b8160019080519060200190620000c992919062000381565b508060029080519060200190620000e292919062000381565b5050508463ffffffff1660808163ffffffff1660e01b8152505083601390805190602001906200011492919062000381565b5082600e90805190602001906200012d92919062000381565b506200013f82620002a160201b60201c565b60008190508073ffffffffffffffffffffffffffffffffffffffff166347d23419306040518263ffffffff1660e01b81526004016200017f919062000634565b600060405180830381600087803b1580156200019a57600080fd5b505af1158015620001af573d6000803e3d6000fd5b5050505050505050505050506200087b565b6000620001d8620002e560201b62001a671760201c565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060146000369050101580156200030a575062000309336200032760201b60201c565b5b156200032057601436033560601c905062000324565b3390505b90565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b8280546200038f906200073e565b90600052602060002090601f016020900481019282620003b35760008555620003ff565b82601f10620003ce57805160ff1916838001178555620003ff565b82800160010185558215620003ff579182015b82811115620003fe578251825591602001919060010190620003e1565b5b5090506200040e919062000412565b5090565b5b808211156200042d57600081600090555060010162000413565b5090565b60006200044862000442846200067a565b62000651565b9050828152602081018484840111156200046757620004666200080d565b5b6200047484828562000708565b509392505050565b6000815190506200048d816200082d565b92915050565b600081519050620004a48162000847565b92915050565b600082601f830112620004c257620004c162000808565b5b8151620004d484826020860162000431565b91505092915050565b600081519050620004ee8162000861565b92915050565b600080600080600080600060e0888a03121562000516576200051562000817565b5b600088015167ffffffffffffffff81111562000537576200053662000812565b5b620005458a828b01620004aa565b975050602088015167ffffffffffffffff81111562000569576200056862000812565b5b620005778a828b01620004aa565b96505060406200058a8a828b01620004dd565b955050606088015167ffffffffffffffff811115620005ae57620005ad62000812565b5b620005bc8a828b01620004aa565b945050608088015167ffffffffffffffff811115620005e057620005df62000812565b5b620005ee8a828b01620004aa565b93505060a0620006018a828b016200047c565b92505060c0620006148a828b0162000493565b91505092959891949750929550565b6200062e81620006b0565b82525050565b60006020820190506200064b600083018462000623565b92915050565b60006200065d62000670565b90506200066b828262000774565b919050565b6000604051905090565b600067ffffffffffffffff821115620006985762000697620007d9565b5b620006a3826200081c565b9050602081019050919050565b6000620006bd82620006d8565b9050919050565b6000620006d182620006d8565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600063ffffffff82169050919050565b60005b83811015620007285780820151818401526020810190506200070b565b8381111562000738576000848401525b50505050565b600060028204905060018216806200075757607f821691505b602082108114156200076e576200076d620007aa565b5b50919050565b6200077f826200081c565b810181811067ffffffffffffffff82111715620007a157620007a0620007d9565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200083881620006b0565b81146200084457600080fd5b50565b6200085281620006c4565b81146200085e57600080fd5b50565b6200086c81620006f8565b81146200087857600080fd5b50565b60805160e01c614b2b620008af60003960008181610d95015281816111ca0152818161152001526117ae0152614b2b6000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80637da0a87711610125578063b0b5230f116100ad578063e8a3d4851161007c578063e8a3d48514610651578063e8d8a2551461066f578063e985e9c51461069f578063f2fde38b146106cf578063fbbf8cc3146106eb5761021c565b8063b0b5230f146105b7578063b88d4fde146105e7578063c87b56dd14610603578063cb774d47146106335761021c565b806395d89b41116100f457806395d89b4114610515578063a13493a514610533578063a1dcc5fd1461054f578063a22cb4651461057f578063a71bbebe1461059b5761021c565b80637da0a8771461049d57806380f85850146104bb5780638da5cb5b146104d95780638f770ad0146104f75761021c565b8063438b6300116101a857806354214f691161017757806354214f69146103e5578063572b6c05146104035780636352211e1461043357806370a0823114610463578063715018a6146104935761021c565b8063438b63001461034b578063486ff0cd1461037b5780634c261247146103995780634f6ccce7146103b55761021c565b806318160ddd116101ef57806318160ddd146102bb57806323b872dd146102d95780632f745c59146102f55780633ccfd60b1461032557806342842e0e1461032f5761021c565b806301ffc9a71461022157806306fdde0314610251578063081812fc1461026f578063095ea7b31461029f575b600080fd5b61023b60048036038101906102369190613334565b61071b565b6040516102489190613ad0565b60405180910390f35b610259610795565b6040516102669190613aeb565b60405180910390f35b610289600480360381019061028491906133d7565b610827565b6040516102969190613a47565b60405180910390f35b6102b960048036038101906102b4919061323c565b6108ac565b005b6102c36109c4565b6040516102d09190613ded565b60405180910390f35b6102f360048036038101906102ee9190613126565b6109d1565b005b61030f600480360381019061030a919061323c565b610a31565b60405161031c9190613ded565b60405180910390f35b61032d610ad6565b005b61034960048036038101906103449190613126565b610b5c565b005b610365600480360381019061036091906130b9565b610b7c565b6040516103729190613aae565b60405180910390f35b610383610c2a565b6040516103909190613aeb565b60405180910390f35b6103b360048036038101906103ae919061338e565b610cb8565b005b6103cf60048036038101906103ca91906133d7565b610e1e565b6040516103dc9190613ded565b60405180910390f35b6103ed610e8f565b6040516103fa9190613ad0565b60405180910390f35b61041d600480360381019061041891906130b9565b610e9b565b60405161042a9190613ad0565b60405180910390f35b61044d600480360381019061044891906133d7565b610ef5565b60405161045a9190613a47565b60405180910390f35b61047d600480360381019061047891906130b9565b610fa7565b60405161048a9190613ded565b60405180910390f35b61049b61105f565b005b6104a56110e7565b6040516104b29190613a47565b60405180910390f35b6104c3611111565b6040516104d09190613aeb565b60405180910390f35b6104e161119f565b6040516104ee9190613a47565b60405180910390f35b6104ff6111c8565b60405161050c9190613e08565b60405180910390f35b61051d6111ec565b60405161052a9190613aeb565b60405180910390f35b61054d600480360381019061054891906132bc565b61127e565b005b6105696004803603810190610564919061327c565b6113f4565b6040516105769190613ad0565b60405180910390f35b610599600480360381019061059491906131fc565b611416565b005b6105b560048036038101906105b09190613404565b61142c565b005b6105d160048036038101906105cc91906130b9565b61166a565b6040516105de9190613e08565b60405180910390f35b61060160048036038101906105fc9190613179565b6116ca565b005b61061d600480360381019061061891906133d7565b61172c565b60405161062a9190613aeb565b60405180910390f35b61063b611827565b6040516106489190613ded565b60405180910390f35b61065961182d565b6040516106669190613aeb565b60405180910390f35b610689600480360381019061068491906130b9565b611857565b6040516106969190613e08565b60405180910390f35b6106b960048036038101906106b491906130e6565b6118b0565b6040516106c69190613ad0565b60405180910390f35b6106e960048036038101906106e491906130b9565b611916565b005b610705600480360381019061070091906130b9565b611a0e565b6040516107129190613e08565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061078e575061078d82611a9e565b5b9050919050565b6060600180546107a490614153565b80601f01602080910402602001604051908101604052809291908181526020018280546107d090614153565b801561081d5780601f106107f25761010080835404028352916020019161081d565b820191906000526020600020905b81548152906001019060200180831161080057829003601f168201915b5050505050905090565b600061083282611b80565b610871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086890613ced565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108b782610ef5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091f90613d6d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610947611bec565b73ffffffffffffffffffffffffffffffffffffffff161480610976575061097581610970611bec565b6118b0565b5b6109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac90613c4d565b60405180910390fd5b6109bf8383611bfb565b505050565b6000600980549050905090565b6109e26109dc611bec565b82611cb4565b610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1890613d8d565b60405180910390fd5b610a2c838383611d92565b505050565b6000610a3c83610fa7565b8210610a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7490613b0d565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b60004790506000610ae561119f565b73ffffffffffffffffffffffffffffffffffffffff1682604051610b0890613a32565b60006040518083038185875af1925050503d8060008114610b45576040519150601f19603f3d011682016040523d82523d6000602084013e610b4a565b606091505b5050905080610b5857600080fd5b5050565b610b77838383604051806020016040528060008152506116ca565b505050565b60606000610b8983610fa7565b905060008167ffffffffffffffff811115610ba757610ba661436c565b5b604051908082528060200260200182016040528015610bd55781602001602082028036833780820191505090505b50905060005b82811015610c1f57610bed8582610a31565b828281518110610c0057610bff61433d565b5b6020026020010181815250508080610c17906141b6565b915050610bdb565b508092505050919050565b60128054610c3790614153565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6390614153565b8015610cb05780601f10610c8557610100808354040283529160200191610cb0565b820191906000526020600020905b815481529060010190602001808311610c9357829003601f168201915b505050505081565b610cc0611bec565b73ffffffffffffffffffffffffffffffffffffffff16610cde61119f565b73ffffffffffffffffffffffffffffffffffffffff1614610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90613d0d565b60405180910390fd5b610d3c610e8f565b15610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7390613bcd565b60405180910390fd5b80600d9080519060200190610d92929190612d7c565b507f000000000000000000000000000000000000000000000000000000000000000063ffffffff16600143610dc79190614025565b4060001c610dd59190614250565b60118190555060006011541415610def5760016011819055505b7fe2a7169cedebe39671840370ae19ca4fc41be6191d4c77f174f189a4d8cd08c860405160405180910390a150565b6000610e286109c4565b8210610e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6090613dad565b60405180910390fd5b60098281548110610e7d57610e7c61433d565b5b90600052602060002001549050919050565b60008060115411905090565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9590613c8d565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f90613c6d565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611067611bec565b73ffffffffffffffffffffffffffffffffffffffff1661108561119f565b73ffffffffffffffffffffffffffffffffffffffff16146110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290613d0d565b60405180910390fd5b6110e56000611fee565b565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6013805461111e90614153565b80601f016020809104026020016040519081016040528092919081815260200182805461114a90614153565b80156111975780601f1061116c57610100808354040283529160200191611197565b820191906000526020600020905b81548152906001019060200180831161117a57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600280546111fb90614153565b80601f016020809104026020016040519081016040528092919081815260200182805461122790614153565b80156112745780601f1061124957610100808354040283529160200191611274565b820191906000526020600020905b81548152906001019060200180831161125757829003601f168201915b5050505050905090565b611286611bec565b73ffffffffffffffffffffffffffffffffffffffff166112a461119f565b73ffffffffffffffffffffffffffffffffffffffff16146112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613d0d565b60405180910390fd5b805182511461133e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133590613dcd565b60405180910390fd5b60005b82518110156113ef5781818151811061135d5761135c61433d565b5b6020026020010151600f600085848151811061137c5761137b61433d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff16021790555080806113e7906141b6565b915050611341565b505050565b60008163ffffffff166114068461166a565b63ffffffff161015905092915050565b611428611421611bec565b83836120b2565b5050565b611434610e8f565b15611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90613b4d565b60405180910390fd5b600061147e611bec565b90508163ffffffff16600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1663ffffffff16101561151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590613b8d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168263ffffffff166115546109c4565b61155e9190613f9e565b111561159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159690613ccd565b60405180910390fd5b60005b8263ffffffff1681101561166557600c60008154809291906115c3906141b6565b9190505550601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081819054906101000a900463ffffffff1680929190611627906141ff565b91906101000a81548163ffffffff021916908363ffffffff1602179055505061165282600c5461221f565b808061165d906141b6565b9150506115a2565b505050565b60008061167683611a0e565b9050600061168384611857565b90508063ffffffff168263ffffffff1611156116a4576000925050506116c5565b6116ad84611a0e565b6116b685611857565b6116c09190614059565b925050505b919050565b6116db6116d5611bec565b83611cb4565b61171a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171190613d8d565b60405180910390fd5b6117268484848461223d565b50505050565b606061173782611b80565b611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176d90613d4d565b60405180910390fd5b61177e610e8f565b6117aa57600e6040516020016117949190613a10565b6040516020818303038152906040529050611822565b60007f000000000000000000000000000000000000000000000000000000000000000063ffffffff16836011546117e19190613f9e565b6117eb9190614250565b90506117f5612299565b6117fe8261232b565b60405160200161180f9291906139b9565b6040516020818303038152906040529150505b919050565b60115481565b6060600e306040516020016118439291906139e8565b604051602081830303815290604052905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff169050919050565b60007358807bad0b376efc12f5ad86aac70e78ed67deae73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119035760019050611910565b61190d838361248c565b90505b92915050565b61191e611bec565b73ffffffffffffffffffffffffffffffffffffffff1661193c61119f565b73ffffffffffffffffffffffffffffffffffffffff1614611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198990613d0d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f990613b6d565b60405180910390fd5b611a0b81611fee565b50565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff169050919050565b60006014600036905010158015611a835750611a8233610e9b565b5b15611a9757601436033560601c9050611a9b565b3390505b90565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b6957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611b795750611b7882612520565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000611bf6611a67565b905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611c6e83610ef5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611cbf82611b80565b611cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf590613c2d565b60405180910390fd5b6000611d0983610ef5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611d7857508373ffffffffffffffffffffffffffffffffffffffff16611d6084610827565b73ffffffffffffffffffffffffffffffffffffffff16145b80611d895750611d8881856118b0565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611db282610ef5565b73ffffffffffffffffffffffffffffffffffffffff1614611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff90613d2d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6f90613bed565b60405180910390fd5b611e8383838361258a565b611e8e600082611bfb565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ede9190614025565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f359190613f9e565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612121576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211890613c0d565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122129190613ad0565b60405180910390a3505050565b61223982826040518060200160405280600081525061269e565b5050565b612248848484611d92565b612254848484846126f9565b612293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228a90613b2d565b60405180910390fd5b50505050565b6060600d80546122a890614153565b80601f01602080910402602001604051908101604052809291908181526020018280546122d490614153565b80156123215780601f106122f657610100808354040283529160200191612321565b820191906000526020600020905b81548152906001019060200180831161230457829003601f168201915b5050505050905090565b60606000821415612373576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612487565b600082905060005b600082146123a557808061238e906141b6565b915050600a8261239e9190613ff4565b915061237b565b60008167ffffffffffffffff8111156123c1576123c061436c565b5b6040519080825280601f01601f1916602001820160405280156123f35781602001600182028036833780820191505090505b5090505b600085146124805760018261240c9190614025565b9150600a8561241b9190614250565b60306124279190613f9e565b60f81b81838151811061243d5761243c61433d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856124799190613ff4565b94506123f7565b8093505050505b919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612595838383612890565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125d8576125d381612895565b612617565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146126165761261583826128de565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561265a5761265581612a4b565b612699565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612698576126978282612b1c565b5b5b505050565b6126a88383612b9b565b6126b560008484846126f9565b6126f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126eb90613b2d565b60405180910390fd5b505050565b600061271a8473ffffffffffffffffffffffffffffffffffffffff16612d69565b15612883578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612743611bec565b8786866040518563ffffffff1660e01b81526004016127659493929190613a62565b602060405180830381600087803b15801561277f57600080fd5b505af19250505080156127b057506040513d601f19601f820116820180604052508101906127ad9190613361565b60015b612833573d80600081146127e0576040519150601f19603f3d011682016040523d82523d6000602084013e6127e5565b606091505b5060008151141561282b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282290613b2d565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612888565b600190505b949350505050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016128eb84610fa7565b6128f59190614025565b90506000600860008481526020019081526020016000205490508181146129da576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600980549050612a5f9190614025565b90506000600a6000848152602001908152602001600020549050600060098381548110612a8f57612a8e61433d565b5b906000526020600020015490508060098381548110612ab157612ab061433d565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a6000858152602001908152602001600020600090556009805480612b0057612aff61430e565b5b6001900381819060005260206000200160009055905550505050565b6000612b2783610fa7565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0290613cad565b60405180910390fd5b612c1481611b80565b15612c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4b90613bad565b60405180910390fd5b612c606000838361258a565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612cb09190613f9e565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612d8890614153565b90600052602060002090601f016020900481019282612daa5760008555612df1565b82601f10612dc357805160ff1916838001178555612df1565b82800160010185558215612df1579182015b82811115612df0578251825591602001919060010190612dd5565b5b509050612dfe9190612e02565b5090565b5b80821115612e1b576000816000905550600101612e03565b5090565b6000612e32612e2d84613e48565b613e23565b90508083825260208201905082856020860282011115612e5557612e546143a0565b5b60005b85811015612e855781612e6b8882612f83565b845260208401935060208301925050600181019050612e58565b5050509392505050565b6000612ea2612e9d84613e74565b613e23565b90508083825260208201905082856020860282011115612ec557612ec46143a0565b5b60005b85811015612ef55781612edb88826130a4565b845260208401935060208301925050600181019050612ec8565b5050509392505050565b6000612f12612f0d84613ea0565b613e23565b905082815260208101848484011115612f2e57612f2d6143a5565b5b612f39848285614111565b509392505050565b6000612f54612f4f84613ed1565b613e23565b905082815260208101848484011115612f7057612f6f6143a5565b5b612f7b848285614111565b509392505050565b600081359050612f9281614a82565b92915050565b600082601f830112612fad57612fac61439b565b5b8135612fbd848260208601612e1f565b91505092915050565b600082601f830112612fdb57612fda61439b565b5b8135612feb848260208601612e8f565b91505092915050565b60008135905061300381614a99565b92915050565b60008135905061301881614ab0565b92915050565b60008151905061302d81614ab0565b92915050565b600082601f8301126130485761304761439b565b5b8135613058848260208601612eff565b91505092915050565b600082601f8301126130765761307561439b565b5b8135613086848260208601612f41565b91505092915050565b60008135905061309e81614ac7565b92915050565b6000813590506130b381614ade565b92915050565b6000602082840312156130cf576130ce6143af565b5b60006130dd84828501612f83565b91505092915050565b600080604083850312156130fd576130fc6143af565b5b600061310b85828601612f83565b925050602061311c85828601612f83565b9150509250929050565b60008060006060848603121561313f5761313e6143af565b5b600061314d86828701612f83565b935050602061315e86828701612f83565b925050604061316f8682870161308f565b9150509250925092565b60008060008060808587031215613193576131926143af565b5b60006131a187828801612f83565b94505060206131b287828801612f83565b93505060406131c38782880161308f565b925050606085013567ffffffffffffffff8111156131e4576131e36143aa565b5b6131f087828801613033565b91505092959194509250565b60008060408385031215613213576132126143af565b5b600061322185828601612f83565b925050602061323285828601612ff4565b9150509250929050565b60008060408385031215613253576132526143af565b5b600061326185828601612f83565b92505060206132728582860161308f565b9150509250929050565b60008060408385031215613293576132926143af565b5b60006132a185828601612f83565b92505060206132b2858286016130a4565b9150509250929050565b600080604083850312156132d3576132d26143af565b5b600083013567ffffffffffffffff8111156132f1576132f06143aa565b5b6132fd85828601612f98565b925050602083013567ffffffffffffffff81111561331e5761331d6143aa565b5b61332a85828601612fc6565b9150509250929050565b60006020828403121561334a576133496143af565b5b600061335884828501613009565b91505092915050565b600060208284031215613377576133766143af565b5b60006133858482850161301e565b91505092915050565b6000602082840312156133a4576133a36143af565b5b600082013567ffffffffffffffff8111156133c2576133c16143aa565b5b6133ce84828501613061565b91505092915050565b6000602082840312156133ed576133ec6143af565b5b60006133fb8482850161308f565b91505092915050565b60006020828403121561341a576134196143af565b5b6000613428848285016130a4565b91505092915050565b600061343d838361398c565b60208301905092915050565b6134528161408d565b82525050565b6134696134648261408d565b61422c565b82525050565b600061347a82613f27565b6134848185613f55565b935061348f83613f02565b8060005b838110156134c05781516134a78882613431565b97506134b283613f48565b925050600181019050613493565b5085935050505092915050565b6134d68161409f565b82525050565b60006134e782613f32565b6134f18185613f66565b9350613501818560208601614120565b61350a816143b4565b840191505092915050565b600061352082613f3d565b61352a8185613f82565b935061353a818560208601614120565b613543816143b4565b840191505092915050565b600061355982613f3d565b6135638185613f93565b9350613573818560208601614120565b80840191505092915050565b6000815461358c81614153565b6135968186613f93565b945060018216600081146135b157600181146135c2576135f5565b60ff198316865281860193506135f5565b6135cb85613f12565b60005b838110156135ed578154818901526001820191506020810190506135ce565b838801955050505b50505092915050565b600061360b602b83613f82565b9150613616826143d2565b604082019050919050565b600061362e603283613f82565b915061363982614421565b604082019050919050565b6000613651601d83613f82565b915061365c82614470565b602082019050919050565b6000613674602683613f82565b915061367f82614499565b604082019050919050565b6000613697603883613f82565b91506136a2826144e8565b604082019050919050565b60006136ba601c83613f82565b91506136c582614537565b602082019050919050565b60006136dd602183613f82565b91506136e882614560565b604082019050919050565b6000613700602483613f82565b915061370b826145af565b604082019050919050565b6000613723601983613f82565b915061372e826145fe565b602082019050919050565b6000613746602c83613f82565b915061375182614627565b604082019050919050565b6000613769603883613f82565b915061377482614676565b604082019050919050565b600061378c602a83613f82565b9150613797826146c5565b604082019050919050565b60006137af602983613f82565b91506137ba82614714565b604082019050919050565b60006137d2602083613f82565b91506137dd82614763565b602082019050919050565b60006137f5601c83613f82565b91506138008261478c565b602082019050919050565b6000613818602c83613f82565b9150613823826147b5565b604082019050919050565b600061383b600583613f93565b915061384682614804565b600582019050919050565b600061385e602083613f82565b91506138698261482d565b602082019050919050565b6000613881602983613f82565b915061388c82614856565b604082019050919050565b60006138a4602f83613f82565b91506138af826148a5565b604082019050919050565b60006138c7602183613f82565b91506138d2826148f4565b604082019050919050565b60006138ea600083613f77565b91506138f582614943565b600082019050919050565b600061390d603183613f82565b915061391882614946565b604082019050919050565b6000613930602c83613f82565b915061393b82614995565b604082019050919050565b6000613953601083613f93565b915061395e826149e4565b601082019050919050565b6000613976605f83613f82565b915061398182614a0d565b606082019050919050565b613995816140f7565b82525050565b6139a4816140f7565b82525050565b6139b381614101565b82525050565b60006139c5828561354e565b91506139d1828461354e565b91506139dc8261382e565b91508190509392505050565b60006139f4828561357f565b9150613a008284613458565b6014820191508190509392505050565b6000613a1c828461357f565b9150613a2782613946565b915081905092915050565b6000613a3d826138dd565b9150819050919050565b6000602082019050613a5c6000830184613449565b92915050565b6000608082019050613a776000830187613449565b613a846020830186613449565b613a91604083018561399b565b8181036060830152613aa381846134dc565b905095945050505050565b60006020820190508181036000830152613ac8818461346f565b905092915050565b6000602082019050613ae560008301846134cd565b92915050565b60006020820190508181036000830152613b058184613515565b905092915050565b60006020820190508181036000830152613b26816135fe565b9050919050565b60006020820190508181036000830152613b4681613621565b9050919050565b60006020820190508181036000830152613b6681613644565b9050919050565b60006020820190508181036000830152613b8681613667565b9050919050565b60006020820190508181036000830152613ba68161368a565b9050919050565b60006020820190508181036000830152613bc6816136ad565b9050919050565b60006020820190508181036000830152613be6816136d0565b9050919050565b60006020820190508181036000830152613c06816136f3565b9050919050565b60006020820190508181036000830152613c2681613716565b9050919050565b60006020820190508181036000830152613c4681613739565b9050919050565b60006020820190508181036000830152613c668161375c565b9050919050565b60006020820190508181036000830152613c868161377f565b9050919050565b60006020820190508181036000830152613ca6816137a2565b9050919050565b60006020820190508181036000830152613cc6816137c5565b9050919050565b60006020820190508181036000830152613ce6816137e8565b9050919050565b60006020820190508181036000830152613d068161380b565b9050919050565b60006020820190508181036000830152613d2681613851565b9050919050565b60006020820190508181036000830152613d4681613874565b9050919050565b60006020820190508181036000830152613d6681613897565b9050919050565b60006020820190508181036000830152613d86816138ba565b9050919050565b60006020820190508181036000830152613da681613900565b9050919050565b60006020820190508181036000830152613dc681613923565b9050919050565b60006020820190508181036000830152613de681613969565b9050919050565b6000602082019050613e02600083018461399b565b92915050565b6000602082019050613e1d60008301846139aa565b92915050565b6000613e2d613e3e565b9050613e398282614185565b919050565b6000604051905090565b600067ffffffffffffffff821115613e6357613e6261436c565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613e8f57613e8e61436c565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613ebb57613eba61436c565b5b613ec4826143b4565b9050602081019050919050565b600067ffffffffffffffff821115613eec57613eeb61436c565b5b613ef5826143b4565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613fa9826140f7565b9150613fb4836140f7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613fe957613fe8614281565b5b828201905092915050565b6000613fff826140f7565b915061400a836140f7565b92508261401a576140196142b0565b5b828204905092915050565b6000614030826140f7565b915061403b836140f7565b92508282101561404e5761404d614281565b5b828203905092915050565b600061406482614101565b915061406f83614101565b92508282101561408257614081614281565b5b828203905092915050565b6000614098826140d7565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b8381101561413e578082015181840152602081019050614123565b8381111561414d576000848401525b50505050565b6000600282049050600182168061416b57607f821691505b6020821081141561417f5761417e6142df565b5b50919050565b61418e826143b4565b810181811067ffffffffffffffff821117156141ad576141ac61436c565b5b80604052505050565b60006141c1826140f7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156141f4576141f3614281565b5b600182019050919050565b600061420a82614101565b915063ffffffff82141561422157614220614281565b5b600182019050919050565b60006142378261423e565b9050919050565b6000614249826143c5565b9050919050565b600061425b826140f7565b9150614266836140f7565b925082614276576142756142b0565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4e6f76656c436f6c6c656374696f6e3a2073616c65206973206f766572000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4e6f76656c436f6c6c656374696f6e3a2072657175657374656420636f756e7460008201527f20657863656564732077686974656c697374206c696d69740000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4e6f76656c436f6c6c656374696f6e3a20616c72656164792072657665616c6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4e6f76656c436f6c6c656374696f6e3a20636170207265616368656400000000600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f706c616365686f6c6465722e6a736f6e00000000000000000000000000000000600082015250565b7f4e6f76656c436f6c6c656374696f6e3a20696e76616c696420696e707574206c60008201527f656e677468732c20637573746f6d65727320616e6420746f6b656e436f756e7460208201527f20617272617973206d757374206265207468652073616d65206c656e67746800604082015250565b614a8b8161408d565b8114614a9657600080fd5b50565b614aa28161409f565b8114614aad57600080fd5b50565b614ab9816140ab565b8114614ac457600080fd5b50565b614ad0816140f7565b8114614adb57600080fd5b50565b614ae781614101565b8114614af257600080fd5b5056fea2646970667358221220c7a3df6cd60d195c94c41280b01695ccadc39a260ddbfcf023bcf664a3ec4f5664736f6c63430008070033",
"opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0xC SSTORE PUSH1 0x0 PUSH1 0x11 SSTORE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x322E322E332B6E6F76656C2D6972656C6179726563697069656E740000000000 DUP2 MSTORE POP PUSH1 0x12 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x5B SWAP3 SWAP2 SWAP1 PUSH3 0x381 JUMP JUMPDEST POP CALLVALUE DUP1 ISZERO PUSH3 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x53DA CODESIZE SUB DUP1 PUSH3 0x53DA DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x8F SWAP2 SWAP1 PUSH3 0x4F4 JUMP JUMPDEST DUP7 DUP7 PUSH3 0xB1 PUSH3 0xA5 PUSH3 0x1C1 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1DD PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH1 0x1 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xC9 SWAP3 SWAP2 SWAP1 PUSH3 0x381 JUMP JUMPDEST POP DUP1 PUSH1 0x2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xE2 SWAP3 SWAP2 SWAP1 PUSH3 0x381 JUMP JUMPDEST POP POP POP DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0x80 DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE POP POP DUP4 PUSH1 0x13 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x114 SWAP3 SWAP2 SWAP1 PUSH3 0x381 JUMP JUMPDEST POP DUP3 PUSH1 0xE SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x12D SWAP3 SWAP2 SWAP1 PUSH3 0x381 JUMP JUMPDEST POP PUSH3 0x13F DUP3 PUSH3 0x2A1 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x47D23419 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x17F SWAP2 SWAP1 PUSH3 0x634 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP PUSH3 0x87B JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1D8 PUSH3 0x2E5 PUSH1 0x20 SHL PUSH3 0x1A67 OR PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 PUSH1 0xB PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x14 PUSH1 0x0 CALLDATASIZE SWAP1 POP LT ISZERO DUP1 ISZERO PUSH3 0x30A JUMPI POP PUSH3 0x309 CALLER PUSH3 0x327 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST JUMPDEST ISZERO PUSH3 0x320 JUMPI PUSH1 0x14 CALLDATASIZE SUB CALLDATALOAD PUSH1 0x60 SHR SWAP1 POP PUSH3 0x324 JUMP JUMPDEST CALLER SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x38F SWAP1 PUSH3 0x73E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x3B3 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x3FF JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x3CE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x3FF JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x3FF JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x3FE JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x3E1 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x40E SWAP2 SWAP1 PUSH3 0x412 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x42D JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x413 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x448 PUSH3 0x442 DUP5 PUSH3 0x67A JUMP JUMPDEST PUSH3 0x651 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0x467 JUMPI PUSH3 0x466 PUSH3 0x80D JUMP JUMPDEST JUMPDEST PUSH3 0x474 DUP5 DUP3 DUP6 PUSH3 0x708 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x48D DUP2 PUSH3 0x82D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x4A4 DUP2 PUSH3 0x847 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x4C2 JUMPI PUSH3 0x4C1 PUSH3 0x808 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0x4D4 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0x431 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x4EE DUP2 PUSH3 0x861 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x516 JUMPI PUSH3 0x515 PUSH3 0x817 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP9 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x537 JUMPI PUSH3 0x536 PUSH3 0x812 JUMP JUMPDEST JUMPDEST PUSH3 0x545 DUP11 DUP3 DUP12 ADD PUSH3 0x4AA JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 DUP9 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x569 JUMPI PUSH3 0x568 PUSH3 0x812 JUMP JUMPDEST JUMPDEST PUSH3 0x577 DUP11 DUP3 DUP12 ADD PUSH3 0x4AA JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 PUSH3 0x58A DUP11 DUP3 DUP12 ADD PUSH3 0x4DD JUMP JUMPDEST SWAP6 POP POP PUSH1 0x60 DUP9 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x5AE JUMPI PUSH3 0x5AD PUSH3 0x812 JUMP JUMPDEST JUMPDEST PUSH3 0x5BC DUP11 DUP3 DUP12 ADD PUSH3 0x4AA JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 DUP9 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x5E0 JUMPI PUSH3 0x5DF PUSH3 0x812 JUMP JUMPDEST JUMPDEST PUSH3 0x5EE DUP11 DUP3 DUP12 ADD PUSH3 0x4AA JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 PUSH3 0x601 DUP11 DUP3 DUP12 ADD PUSH3 0x47C JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH3 0x614 DUP11 DUP3 DUP12 ADD PUSH3 0x493 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH3 0x62E DUP2 PUSH3 0x6B0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x64B PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x623 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x65D PUSH3 0x670 JUMP JUMPDEST SWAP1 POP PUSH3 0x66B DUP3 DUP3 PUSH3 0x774 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0x698 JUMPI PUSH3 0x697 PUSH3 0x7D9 JUMP JUMPDEST JUMPDEST PUSH3 0x6A3 DUP3 PUSH3 0x81C JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x6BD DUP3 PUSH3 0x6D8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x6D1 DUP3 PUSH3 0x6D8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x728 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x70B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x738 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x757 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x76E JUMPI PUSH3 0x76D PUSH3 0x7AA JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x77F DUP3 PUSH3 0x81C JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0x7A1 JUMPI PUSH3 0x7A0 PUSH3 0x7D9 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x838 DUP2 PUSH3 0x6B0 JUMP JUMPDEST DUP2 EQ PUSH3 0x844 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0x852 DUP2 PUSH3 0x6C4 JUMP JUMPDEST DUP2 EQ PUSH3 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH3 0x86C DUP2 PUSH3 0x6F8 JUMP JUMPDEST DUP2 EQ PUSH3 0x878 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xE0 SHR PUSH2 0x4B2B PUSH3 0x8AF PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0xD95 ADD MSTORE DUP2 DUP2 PUSH2 0x11CA ADD MSTORE DUP2 DUP2 PUSH2 0x1520 ADD MSTORE PUSH2 0x17AE ADD MSTORE PUSH2 0x4B2B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7DA0A877 GT PUSH2 0x125 JUMPI DUP1 PUSH4 0xB0B5230F GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xE8A3D485 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xE8A3D485 EQ PUSH2 0x651 JUMPI DUP1 PUSH4 0xE8D8A255 EQ PUSH2 0x66F JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x69F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x6CF JUMPI DUP1 PUSH4 0xFBBF8CC3 EQ PUSH2 0x6EB JUMPI PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0xB0B5230F EQ PUSH2 0x5B7 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x5E7 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x603 JUMPI DUP1 PUSH4 0xCB774D47 EQ PUSH2 0x633 JUMPI PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x515 JUMPI DUP1 PUSH4 0xA13493A5 EQ PUSH2 0x533 JUMPI DUP1 PUSH4 0xA1DCC5FD EQ PUSH2 0x54F JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x57F JUMPI DUP1 PUSH4 0xA71BBEBE EQ PUSH2 0x59B JUMPI PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0x7DA0A877 EQ PUSH2 0x49D JUMPI DUP1 PUSH4 0x80F85850 EQ PUSH2 0x4BB JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x4D9 JUMPI DUP1 PUSH4 0x8F770AD0 EQ PUSH2 0x4F7 JUMPI PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0x438B6300 GT PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x54214F69 GT PUSH2 0x177 JUMPI DUP1 PUSH4 0x54214F69 EQ PUSH2 0x3E5 JUMPI DUP1 PUSH4 0x572B6C05 EQ PUSH2 0x403 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x433 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x493 JUMPI PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0x438B6300 EQ PUSH2 0x34B JUMPI DUP1 PUSH4 0x486FF0CD EQ PUSH2 0x37B JUMPI DUP1 PUSH4 0x4C261247 EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x3B5 JUMPI PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x1EF JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x32F JUMPI PUSH2 0x21C JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x29F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x236 SWAP2 SWAP1 PUSH2 0x3334 JUMP JUMPDEST PUSH2 0x71B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x248 SWAP2 SWAP1 PUSH2 0x3AD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x259 PUSH2 0x795 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x266 SWAP2 SWAP1 PUSH2 0x3AEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0x33D7 JUMP JUMPDEST PUSH2 0x827 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x296 SWAP2 SWAP1 PUSH2 0x3A47 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2B9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2B4 SWAP2 SWAP1 PUSH2 0x323C JUMP JUMPDEST PUSH2 0x8AC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C3 PUSH2 0x9C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D0 SWAP2 SWAP1 PUSH2 0x3DED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2EE SWAP2 SWAP1 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0x9D1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x30F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x30A SWAP2 SWAP1 PUSH2 0x323C JUMP JUMPDEST PUSH2 0xA31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x31C SWAP2 SWAP1 PUSH2 0x3DED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x32D PUSH2 0xAD6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x349 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x344 SWAP2 SWAP1 PUSH2 0x3126 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x365 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x360 SWAP2 SWAP1 PUSH2 0x30B9 JUMP JUMPDEST PUSH2 0xB7C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x372 SWAP2 SWAP1 PUSH2 0x3AAE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x383 PUSH2 0xC2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x3AEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3AE SWAP2 SWAP1 PUSH2 0x338E JUMP JUMPDEST PUSH2 0xCB8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3CF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3CA SWAP2 SWAP1 PUSH2 0x33D7 JUMP JUMPDEST PUSH2 0xE1E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3DC SWAP2 SWAP1 PUSH2 0x3DED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3ED PUSH2 0xE8F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3FA SWAP2 SWAP1 PUSH2 0x3AD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x418 SWAP2 SWAP1 PUSH2 0x30B9 JUMP JUMPDEST PUSH2 0xE9B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x42A SWAP2 SWAP1 PUSH2 0x3AD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x44D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x448 SWAP2 SWAP1 PUSH2 0x33D7 JUMP JUMPDEST PUSH2 0xEF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x45A SWAP2 SWAP1 PUSH2 0x3A47 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x47D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x478 SWAP2 SWAP1 PUSH2 0x30B9 JUMP JUMPDEST PUSH2 0xFA7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x48A SWAP2 SWAP1 PUSH2 0x3DED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x49B PUSH2 0x105F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x4A5 PUSH2 0x10E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4B2 SWAP2 SWAP1 PUSH2 0x3A47 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4C3 PUSH2 0x1111 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4D0 SWAP2 SWAP1 PUSH2 0x3AEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4E1 PUSH2 0x119F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4EE SWAP2 SWAP1 PUSH2 0x3A47 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4FF PUSH2 0x11C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50C SWAP2 SWAP1 PUSH2 0x3E08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x51D PUSH2 0x11EC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x52A SWAP2 SWAP1 PUSH2 0x3AEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x54D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x548 SWAP2 SWAP1 PUSH2 0x32BC JUMP JUMPDEST PUSH2 0x127E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x569 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x564 SWAP2 SWAP1 PUSH2 0x327C JUMP JUMPDEST PUSH2 0x13F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0x3AD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x599 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x594 SWAP2 SWAP1 PUSH2 0x31FC JUMP JUMPDEST PUSH2 0x1416 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5B0 SWAP2 SWAP1 PUSH2 0x3404 JUMP JUMPDEST PUSH2 0x142C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x5D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5CC SWAP2 SWAP1 PUSH2 0x30B9 JUMP JUMPDEST PUSH2 0x166A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5DE SWAP2 SWAP1 PUSH2 0x3E08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x601 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5FC SWAP2 SWAP1 PUSH2 0x3179 JUMP JUMPDEST PUSH2 0x16CA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x61D PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x618 SWAP2 SWAP1 PUSH2 0x33D7 JUMP JUMPDEST PUSH2 0x172C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x62A SWAP2 SWAP1 PUSH2 0x3AEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x63B PUSH2 0x1827 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x648 SWAP2 SWAP1 PUSH2 0x3DED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x659 PUSH2 0x182D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x666 SWAP2 SWAP1 PUSH2 0x3AEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x689 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x684 SWAP2 SWAP1 PUSH2 0x30B9 JUMP JUMPDEST PUSH2 0x1857 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x696 SWAP2 SWAP1 PUSH2 0x3E08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6B9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6B4 SWAP2 SWAP1 PUSH2 0x30E6 JUMP JUMPDEST PUSH2 0x18B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6C6 SWAP2 SWAP1 PUSH2 0x3AD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6E4 SWAP2 SWAP1 PUSH2 0x30B9 JUMP JUMPDEST PUSH2 0x1916 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x705 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x700 SWAP2 SWAP1 PUSH2 0x30B9 JUMP JUMPDEST PUSH2 0x1A0E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x712 SWAP2 SWAP1 PUSH2 0x3E08 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0x780E9D6300000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x78E JUMPI POP PUSH2 0x78D DUP3 PUSH2 0x1A9E JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x7A4 SWAP1 PUSH2 0x4153 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x7D0 SWAP1 PUSH2 0x4153 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x81D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7F2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x81D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x800 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x832 DUP3 PUSH2 0x1B80 JUMP JUMPDEST PUSH2 0x871 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x868 SWAP1 PUSH2 0x3CED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8B7 DUP3 PUSH2 0xEF5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x928 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x91F SWAP1 PUSH2 0x3D6D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x947 PUSH2 0x1BEC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x976 JUMPI POP PUSH2 0x975 DUP2 PUSH2 0x970 PUSH2 0x1BEC JUMP JUMPDEST PUSH2 0x18B0 JUMP JUMPDEST JUMPDEST PUSH2 0x9B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9AC SWAP1 PUSH2 0x3C4D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9BF DUP4 DUP4 PUSH2 0x1BFB JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x9E2 PUSH2 0x9DC PUSH2 0x1BEC JUMP JUMPDEST DUP3 PUSH2 0x1CB4 JUMP JUMPDEST PUSH2 0xA21 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA18 SWAP1 PUSH2 0x3D8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA2C DUP4 DUP4 DUP4 PUSH2 0x1D92 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA3C DUP4 PUSH2 0xFA7 JUMP JUMPDEST DUP3 LT PUSH2 0xA7D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA74 SWAP1 PUSH2 0x3B0D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SELFBALANCE SWAP1 POP PUSH1 0x0 PUSH2 0xAE5 PUSH2 0x119F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0xB08 SWAP1 PUSH2 0x3A32 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xB45 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xB4A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xB58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xB77 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x16CA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xB89 DUP4 PUSH2 0xFA7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBA7 JUMPI PUSH2 0xBA6 PUSH2 0x436C JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xBD5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xC1F JUMPI PUSH2 0xBED DUP6 DUP3 PUSH2 0xA31 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC00 JUMPI PUSH2 0xBFF PUSH2 0x433D JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP1 PUSH2 0xC17 SWAP1 PUSH2 0x41B6 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xBDB JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x12 DUP1 SLOAD PUSH2 0xC37 SWAP1 PUSH2 0x4153 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xC63 SWAP1 PUSH2 0x4153 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xCB0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC85 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xCB0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC93 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0xCC0 PUSH2 0x1BEC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xCDE PUSH2 0x119F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xD34 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD2B SWAP1 PUSH2 0x3D0D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD3C PUSH2 0xE8F JUMP JUMPDEST ISZERO PUSH2 0xD7C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD73 SWAP1 PUSH2 0x3BCD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0xD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xD92 SWAP3 SWAP2 SWAP1 PUSH2 0x2D7C JUMP JUMPDEST POP PUSH32 0x0 PUSH4 0xFFFFFFFF AND PUSH1 0x1 NUMBER PUSH2 0xDC7 SWAP2 SWAP1 PUSH2 0x4025 JUMP JUMPDEST BLOCKHASH PUSH1 0x0 SHR PUSH2 0xDD5 SWAP2 SWAP1 PUSH2 0x4250 JUMP JUMPDEST PUSH1 0x11 DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x11 SLOAD EQ ISZERO PUSH2 0xDEF JUMPI PUSH1 0x1 PUSH1 0x11 DUP2 SWAP1 SSTORE POP JUMPDEST PUSH32 0xE2A7169CEDEBE39671840370AE19CA4FC41BE6191D4C77F174F189A4D8CD08C8 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE28 PUSH2 0x9C4 JUMP JUMPDEST DUP3 LT PUSH2 0xE69 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE60 SWAP1 PUSH2 0x3DAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xE7D JUMPI PUSH2 0xE7C PUSH2 0x433D JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x11 SLOAD GT SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xF9E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF95 SWAP1 PUSH2 0x3C8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1018 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x100F SWAP1 PUSH2 0x3C6D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1067 PUSH2 0x1BEC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1085 PUSH2 0x119F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x10DB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10D2 SWAP1 PUSH2 0x3D0D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x10E5 PUSH1 0x0 PUSH2 0x1FEE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x13 DUP1 SLOAD PUSH2 0x111E SWAP1 PUSH2 0x4153 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x114A SWAP1 PUSH2 0x4153 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1197 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x116C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1197 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x117A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x11FB SWAP1 PUSH2 0x4153 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1227 SWAP1 PUSH2 0x4153 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1274 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1249 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1274 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1257 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1286 PUSH2 0x1BEC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x12A4 PUSH2 0x119F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x12FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12F1 SWAP1 PUSH2 0x3D0D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x133E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1335 SWAP1 PUSH2 0x3DCD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x13EF JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x135D JUMPI PUSH2 0x135C PUSH2 0x433D JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x137C JUMPI PUSH2 0x137B PUSH2 0x433D JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP1 PUSH2 0x13E7 SWAP1 PUSH2 0x41B6 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1341 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH4 0xFFFFFFFF AND PUSH2 0x1406 DUP5 PUSH2 0x166A JUMP JUMPDEST PUSH4 0xFFFFFFFF AND LT ISZERO SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1428 PUSH2 0x1421 PUSH2 0x1BEC JUMP JUMPDEST DUP4 DUP4 PUSH2 0x20B2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1434 PUSH2 0xE8F JUMP JUMPDEST ISZERO PUSH2 0x1474 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x146B SWAP1 PUSH2 0x3B4D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x147E PUSH2 0x1BEC JUMP JUMPDEST SWAP1 POP DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xF PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF AND LT ISZERO PUSH2 0x151E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1515 SWAP1 PUSH2 0x3B8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND PUSH2 0x1554 PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x155E SWAP2 SWAP1 PUSH2 0x3F9E JUMP JUMPDEST GT ISZERO PUSH2 0x159F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1596 SWAP1 PUSH2 0x3CCD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 PUSH4 0xFFFFFFFF AND DUP2 LT ISZERO PUSH2 0x1665 JUMPI PUSH1 0xC PUSH1 0x0 DUP2 SLOAD DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x15C3 SWAP1 PUSH2 0x41B6 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH1 0x10 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP2 DUP2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 SWAP3 SWAP2 SWAP1 PUSH2 0x1627 SWAP1 PUSH2 0x41FF JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x1652 DUP3 PUSH1 0xC SLOAD PUSH2 0x221F JUMP JUMPDEST DUP1 DUP1 PUSH2 0x165D SWAP1 PUSH2 0x41B6 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x15A2 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1676 DUP4 PUSH2 0x1A0E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1683 DUP5 PUSH2 0x1857 JUMP JUMPDEST SWAP1 POP DUP1 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x16A4 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x16C5 JUMP JUMPDEST PUSH2 0x16AD DUP5 PUSH2 0x1A0E JUMP JUMPDEST PUSH2 0x16B6 DUP6 PUSH2 0x1857 JUMP JUMPDEST PUSH2 0x16C0 SWAP2 SWAP1 PUSH2 0x4059 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x16DB PUSH2 0x16D5 PUSH2 0x1BEC JUMP JUMPDEST DUP4 PUSH2 0x1CB4 JUMP JUMPDEST PUSH2 0x171A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1711 SWAP1 PUSH2 0x3D8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1726 DUP5 DUP5 DUP5 DUP5 PUSH2 0x223D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1737 DUP3 PUSH2 0x1B80 JUMP JUMPDEST PUSH2 0x1776 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x176D SWAP1 PUSH2 0x3D4D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x177E PUSH2 0xE8F JUMP JUMPDEST PUSH2 0x17AA JUMPI PUSH1 0xE PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1794 SWAP2 SWAP1 PUSH2 0x3A10 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0x1822 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH4 0xFFFFFFFF AND DUP4 PUSH1 0x11 SLOAD PUSH2 0x17E1 SWAP2 SWAP1 PUSH2 0x3F9E JUMP JUMPDEST PUSH2 0x17EB SWAP2 SWAP1 PUSH2 0x4250 JUMP JUMPDEST SWAP1 POP PUSH2 0x17F5 PUSH2 0x2299 JUMP JUMPDEST PUSH2 0x17FE DUP3 PUSH2 0x232B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x180F SWAP3 SWAP2 SWAP1 PUSH2 0x39B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0xE ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1843 SWAP3 SWAP2 SWAP1 PUSH2 0x39E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xF PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0x58807BAD0B376EFC12F5AD86AAC70E78ED67DEAE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1903 JUMPI PUSH1 0x1 SWAP1 POP PUSH2 0x1910 JUMP JUMPDEST PUSH2 0x190D DUP4 DUP4 PUSH2 0x248C JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x191E PUSH2 0x1BEC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x193C PUSH2 0x119F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1992 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1989 SWAP1 PUSH2 0x3D0D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1A02 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19F9 SWAP1 PUSH2 0x3B6D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1A0B DUP2 PUSH2 0x1FEE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x14 PUSH1 0x0 CALLDATASIZE SWAP1 POP LT ISZERO DUP1 ISZERO PUSH2 0x1A83 JUMPI POP PUSH2 0x1A82 CALLER PUSH2 0xE9B JUMP JUMPDEST JUMPDEST ISZERO PUSH2 0x1A97 JUMPI PUSH1 0x14 CALLDATASIZE SUB CALLDATALOAD PUSH1 0x60 SHR SWAP1 POP PUSH2 0x1A9B JUMP JUMPDEST CALLER SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x1B69 JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST DUP1 PUSH2 0x1B79 JUMPI POP PUSH2 0x1B78 DUP3 PUSH2 0x2520 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF6 PUSH2 0x1A67 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1C6E DUP4 PUSH2 0xEF5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CBF DUP3 PUSH2 0x1B80 JUMP JUMPDEST PUSH2 0x1CFE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CF5 SWAP1 PUSH2 0x3C2D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1D09 DUP4 PUSH2 0xEF5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x1D78 JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1D60 DUP5 PUSH2 0x827 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST DUP1 PUSH2 0x1D89 JUMPI POP PUSH2 0x1D88 DUP2 DUP6 PUSH2 0x18B0 JUMP JUMPDEST JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1DB2 DUP3 PUSH2 0xEF5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1E08 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1DFF SWAP1 PUSH2 0x3D2D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1E78 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E6F SWAP1 PUSH2 0x3BED JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1E83 DUP4 DUP4 DUP4 PUSH2 0x258A JUMP JUMPDEST PUSH2 0x1E8E PUSH1 0x0 DUP3 PUSH2 0x1BFB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1EDE SWAP2 SWAP1 PUSH2 0x4025 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1F35 SWAP2 SWAP1 PUSH2 0x3F9E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2121 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2118 SWAP1 PUSH2 0x3C0D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x6 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2212 SWAP2 SWAP1 PUSH2 0x3AD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x2239 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x269E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2248 DUP5 DUP5 DUP5 PUSH2 0x1D92 JUMP JUMPDEST PUSH2 0x2254 DUP5 DUP5 DUP5 DUP5 PUSH2 0x26F9 JUMP JUMPDEST PUSH2 0x2293 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x228A SWAP1 PUSH2 0x3B2D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xD DUP1 SLOAD PUSH2 0x22A8 SWAP1 PUSH2 0x4153 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x22D4 SWAP1 PUSH2 0x4153 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2321 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x22F6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2321 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2304 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x2373 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP PUSH2 0x2487 JUMP JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP3 EQ PUSH2 0x23A5 JUMPI DUP1 DUP1 PUSH2 0x238E SWAP1 PUSH2 0x41B6 JUMP JUMPDEST SWAP2 POP POP PUSH1 0xA DUP3 PUSH2 0x239E SWAP2 SWAP1 PUSH2 0x3FF4 JUMP JUMPDEST SWAP2 POP PUSH2 0x237B JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x23C1 JUMPI PUSH2 0x23C0 PUSH2 0x436C JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x23F3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST PUSH1 0x0 DUP6 EQ PUSH2 0x2480 JUMPI PUSH1 0x1 DUP3 PUSH2 0x240C SWAP2 SWAP1 PUSH2 0x4025 JUMP JUMPDEST SWAP2 POP PUSH1 0xA DUP6 PUSH2 0x241B SWAP2 SWAP1 PUSH2 0x4250 JUMP JUMPDEST PUSH1 0x30 PUSH2 0x2427 SWAP2 SWAP1 PUSH2 0x3F9E JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x243D JUMPI PUSH2 0x243C PUSH2 0x433D JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP6 PUSH2 0x2479 SWAP2 SWAP1 PUSH2 0x3FF4 JUMP JUMPDEST SWAP5 POP PUSH2 0x23F7 JUMP JUMPDEST DUP1 SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2595 DUP4 DUP4 DUP4 PUSH2 0x2890 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x25D8 JUMPI PUSH2 0x25D3 DUP2 PUSH2 0x2895 JUMP JUMPDEST PUSH2 0x2617 JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2616 JUMPI PUSH2 0x2615 DUP4 DUP3 PUSH2 0x28DE JUMP JUMPDEST JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x265A JUMPI PUSH2 0x2655 DUP2 PUSH2 0x2A4B JUMP JUMPDEST PUSH2 0x2699 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2698 JUMPI PUSH2 0x2697 DUP3 DUP3 PUSH2 0x2B1C JUMP JUMPDEST JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x26A8 DUP4 DUP4 PUSH2 0x2B9B JUMP JUMPDEST PUSH2 0x26B5 PUSH1 0x0 DUP5 DUP5 DUP5 PUSH2 0x26F9 JUMP JUMPDEST PUSH2 0x26F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x26EB SWAP1 PUSH2 0x3B2D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x271A DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2D69 JUMP JUMPDEST ISZERO PUSH2 0x2883 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 PUSH2 0x2743 PUSH2 0x1BEC JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2765 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3A62 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x277F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x27B0 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x27AD SWAP2 SWAP1 PUSH2 0x3361 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2833 JUMPI RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x27E0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x27E5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 DUP2 MLOAD EQ ISZERO PUSH2 0x282B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2822 SWAP1 PUSH2 0x3B2D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP2 POP POP PUSH2 0x2888 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD SWAP1 POP PUSH1 0xA PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x9 DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x28EB DUP5 PUSH2 0xFA7 JUMP JUMPDEST PUSH2 0x28F5 SWAP2 SWAP1 PUSH2 0x4025 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0x29DA JUMPI PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP1 PUSH1 0x7 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x8 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH1 0x8 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x7 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x9 DUP1 SLOAD SWAP1 POP PUSH2 0x2A5F SWAP2 SWAP1 PUSH2 0x4025 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0xA PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x9 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x2A8F JUMPI PUSH2 0x2A8E PUSH2 0x433D JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 PUSH1 0x9 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x2AB1 JUMPI PUSH2 0x2AB0 PUSH2 0x433D JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0xA PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0xA PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x9 DUP1 SLOAD DUP1 PUSH2 0x2B00 JUMPI PUSH2 0x2AFF PUSH2 0x430E JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B27 DUP4 PUSH2 0xFA7 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x7 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x8 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2C0B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2C02 SWAP1 PUSH2 0x3CAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C14 DUP2 PUSH2 0x1B80 JUMP JUMPDEST ISZERO PUSH2 0x2C54 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2C4B SWAP1 PUSH2 0x3BAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2C60 PUSH1 0x0 DUP4 DUP4 PUSH2 0x258A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2CB0 SWAP2 SWAP1 PUSH2 0x3F9E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 EXTCODESIZE SWAP1 POP PUSH1 0x0 DUP2 GT SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x2D88 SWAP1 PUSH2 0x4153 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2DAA JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2DF1 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2DC3 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x2DF1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2DF1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2DF0 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2DD5 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x2DFE SWAP2 SWAP1 PUSH2 0x2E02 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2E1B JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x2E03 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E32 PUSH2 0x2E2D DUP5 PUSH2 0x3E48 JUMP JUMPDEST PUSH2 0x3E23 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP DUP3 DUP6 PUSH1 0x20 DUP7 MUL DUP3 ADD GT ISZERO PUSH2 0x2E55 JUMPI PUSH2 0x2E54 PUSH2 0x43A0 JUMP JUMPDEST JUMPDEST PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2E85 JUMPI DUP2 PUSH2 0x2E6B DUP9 DUP3 PUSH2 0x2F83 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2E58 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EA2 PUSH2 0x2E9D DUP5 PUSH2 0x3E74 JUMP JUMPDEST PUSH2 0x3E23 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP DUP3 DUP6 PUSH1 0x20 DUP7 MUL DUP3 ADD GT ISZERO PUSH2 0x2EC5 JUMPI PUSH2 0x2EC4 PUSH2 0x43A0 JUMP JUMPDEST JUMPDEST PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2EF5 JUMPI DUP2 PUSH2 0x2EDB DUP9 DUP3 PUSH2 0x30A4 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2EC8 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F12 PUSH2 0x2F0D DUP5 PUSH2 0x3EA0 JUMP JUMPDEST PUSH2 0x3E23 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x2F2E JUMPI PUSH2 0x2F2D PUSH2 0x43A5 JUMP JUMPDEST JUMPDEST PUSH2 0x2F39 DUP5 DUP3 DUP6 PUSH2 0x4111 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F54 PUSH2 0x2F4F DUP5 PUSH2 0x3ED1 JUMP JUMPDEST PUSH2 0x3E23 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x2F70 JUMPI PUSH2 0x2F6F PUSH2 0x43A5 JUMP JUMPDEST JUMPDEST PUSH2 0x2F7B DUP5 DUP3 DUP6 PUSH2 0x4111 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2F92 DUP2 PUSH2 0x4A82 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2FAD JUMPI PUSH2 0x2FAC PUSH2 0x439B JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2FBD DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2E1F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2FDB JUMPI PUSH2 0x2FDA PUSH2 0x439B JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2FEB DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2E8F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3003 DUP2 PUSH2 0x4A99 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3018 DUP2 PUSH2 0x4AB0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x302D DUP2 PUSH2 0x4AB0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3048 JUMPI PUSH2 0x3047 PUSH2 0x439B JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3058 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2EFF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3076 JUMPI PUSH2 0x3075 PUSH2 0x439B JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3086 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2F41 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x309E DUP2 PUSH2 0x4AC7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x30B3 DUP2 PUSH2 0x4ADE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x30CF JUMPI PUSH2 0x30CE PUSH2 0x43AF JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x30DD DUP5 DUP3 DUP6 ADD PUSH2 0x2F83 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x30FD JUMPI PUSH2 0x30FC PUSH2 0x43AF JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x310B DUP6 DUP3 DUP7 ADD PUSH2 0x2F83 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x311C DUP6 DUP3 DUP7 ADD PUSH2 0x2F83 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x313F JUMPI PUSH2 0x313E PUSH2 0x43AF JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x314D DUP7 DUP3 DUP8 ADD PUSH2 0x2F83 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x315E DUP7 DUP3 DUP8 ADD PUSH2 0x2F83 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x316F DUP7 DUP3 DUP8 ADD PUSH2 0x308F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3193 JUMPI PUSH2 0x3192 PUSH2 0x43AF JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x31A1 DUP8 DUP3 DUP9 ADD PUSH2 0x2F83 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x31B2 DUP8 DUP3 DUP9 ADD PUSH2 0x2F83 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x31C3 DUP8 DUP3 DUP9 ADD PUSH2 0x308F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31E4 JUMPI PUSH2 0x31E3 PUSH2 0x43AA JUMP JUMPDEST JUMPDEST PUSH2 0x31F0 DUP8 DUP3 DUP9 ADD PUSH2 0x3033 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3213 JUMPI PUSH2 0x3212 PUSH2 0x43AF JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3221 DUP6 DUP3 DUP7 ADD PUSH2 0x2F83 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3232 DUP6 DUP3 DUP7 ADD PUSH2 0x2FF4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3253 JUMPI PUSH2 0x3252 PUSH2 0x43AF JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3261 DUP6 DUP3 DUP7 ADD PUSH2 0x2F83 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3272 DUP6 DUP3 DUP7 ADD PUSH2 0x308F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3293 JUMPI PUSH2 0x3292 PUSH2 0x43AF JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x32A1 DUP6 DUP3 DUP7 ADD PUSH2 0x2F83 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x32B2 DUP6 DUP3 DUP7 ADD PUSH2 0x30A4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x32D3 JUMPI PUSH2 0x32D2 PUSH2 0x43AF JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x32F1 JUMPI PUSH2 0x32F0 PUSH2 0x43AA JUMP JUMPDEST JUMPDEST PUSH2 0x32FD DUP6 DUP3 DUP7 ADD PUSH2 0x2F98 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x331E JUMPI PUSH2 0x331D PUSH2 0x43AA JUMP JUMPDEST JUMPDEST PUSH2 0x332A DUP6 DUP3 DUP7 ADD PUSH2 0x2FC6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x334A JUMPI PUSH2 0x3349 PUSH2 0x43AF JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3358 DUP5 DUP3 DUP6 ADD PUSH2 0x3009 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3377 JUMPI PUSH2 0x3376 PUSH2 0x43AF JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3385 DUP5 DUP3 DUP6 ADD PUSH2 0x301E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x33A4 JUMPI PUSH2 0x33A3 PUSH2 0x43AF JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33C2 JUMPI PUSH2 0x33C1 PUSH2 0x43AA JUMP JUMPDEST JUMPDEST PUSH2 0x33CE DUP5 DUP3 DUP6 ADD PUSH2 0x3061 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x33ED JUMPI PUSH2 0x33EC PUSH2 0x43AF JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x33FB DUP5 DUP3 DUP6 ADD PUSH2 0x308F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x341A JUMPI PUSH2 0x3419 PUSH2 0x43AF JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3428 DUP5 DUP3 DUP6 ADD PUSH2 0x30A4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x343D DUP4 DUP4 PUSH2 0x398C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3452 DUP2 PUSH2 0x408D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x3469 PUSH2 0x3464 DUP3 PUSH2 0x408D JUMP JUMPDEST PUSH2 0x422C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x347A DUP3 PUSH2 0x3F27 JUMP JUMPDEST PUSH2 0x3484 DUP2 DUP6 PUSH2 0x3F55 JUMP JUMPDEST SWAP4 POP PUSH2 0x348F DUP4 PUSH2 0x3F02 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x34C0 JUMPI DUP2 MLOAD PUSH2 0x34A7 DUP9 DUP3 PUSH2 0x3431 JUMP JUMPDEST SWAP8 POP PUSH2 0x34B2 DUP4 PUSH2 0x3F48 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x3493 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x34D6 DUP2 PUSH2 0x409F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34E7 DUP3 PUSH2 0x3F32 JUMP JUMPDEST PUSH2 0x34F1 DUP2 DUP6 PUSH2 0x3F66 JUMP JUMPDEST SWAP4 POP PUSH2 0x3501 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4120 JUMP JUMPDEST PUSH2 0x350A DUP2 PUSH2 0x43B4 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3520 DUP3 PUSH2 0x3F3D JUMP JUMPDEST PUSH2 0x352A DUP2 DUP6 PUSH2 0x3F82 JUMP JUMPDEST SWAP4 POP PUSH2 0x353A DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4120 JUMP JUMPDEST PUSH2 0x3543 DUP2 PUSH2 0x43B4 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3559 DUP3 PUSH2 0x3F3D JUMP JUMPDEST PUSH2 0x3563 DUP2 DUP6 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH2 0x3573 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x4120 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH2 0x358C DUP2 PUSH2 0x4153 JUMP JUMPDEST PUSH2 0x3596 DUP2 DUP7 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x1 DUP3 AND PUSH1 0x0 DUP2 EQ PUSH2 0x35B1 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x35C2 JUMPI PUSH2 0x35F5 JUMP JUMPDEST PUSH1 0xFF NOT DUP4 AND DUP7 MSTORE DUP2 DUP7 ADD SWAP4 POP PUSH2 0x35F5 JUMP JUMPDEST PUSH2 0x35CB DUP6 PUSH2 0x3F12 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x35ED JUMPI DUP2 SLOAD DUP2 DUP10 ADD MSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x35CE JUMP JUMPDEST DUP4 DUP9 ADD SWAP6 POP POP POP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x360B PUSH1 0x2B DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x3616 DUP3 PUSH2 0x43D2 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x362E PUSH1 0x32 DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x3639 DUP3 PUSH2 0x4421 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3651 PUSH1 0x1D DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x365C DUP3 PUSH2 0x4470 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3674 PUSH1 0x26 DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x367F DUP3 PUSH2 0x4499 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3697 PUSH1 0x38 DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x36A2 DUP3 PUSH2 0x44E8 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36BA PUSH1 0x1C DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x36C5 DUP3 PUSH2 0x4537 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36DD PUSH1 0x21 DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x36E8 DUP3 PUSH2 0x4560 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3700 PUSH1 0x24 DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x370B DUP3 PUSH2 0x45AF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3723 PUSH1 0x19 DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x372E DUP3 PUSH2 0x45FE JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3746 PUSH1 0x2C DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x3751 DUP3 PUSH2 0x4627 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3769 PUSH1 0x38 DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x3774 DUP3 PUSH2 0x4676 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x378C PUSH1 0x2A DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x3797 DUP3 PUSH2 0x46C5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37AF PUSH1 0x29 DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x37BA DUP3 PUSH2 0x4714 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37D2 PUSH1 0x20 DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x37DD DUP3 PUSH2 0x4763 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37F5 PUSH1 0x1C DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x3800 DUP3 PUSH2 0x478C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3818 PUSH1 0x2C DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x3823 DUP3 PUSH2 0x47B5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x383B PUSH1 0x5 DUP4 PUSH2 0x3F93 JUMP JUMPDEST SWAP2 POP PUSH2 0x3846 DUP3 PUSH2 0x4804 JUMP JUMPDEST PUSH1 0x5 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x385E PUSH1 0x20 DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x3869 DUP3 PUSH2 0x482D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3881 PUSH1 0x29 DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x388C DUP3 PUSH2 0x4856 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38A4 PUSH1 0x2F DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x38AF DUP3 PUSH2 0x48A5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38C7 PUSH1 0x21 DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x38D2 DUP3 PUSH2 0x48F4 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38EA PUSH1 0x0 DUP4 PUSH2 0x3F77 JUMP JUMPDEST SWAP2 POP PUSH2 0x38F5 DUP3 PUSH2 0x4943 JUMP JUMPDEST PUSH1 0x0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x390D PUSH1 0x31 DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x3918 DUP3 PUSH2 0x4946 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3930 PUSH1 0x2C DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x393B DUP3 PUSH2 0x4995 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3953 PUSH1 0x10 DUP4 PUSH2 0x3F93 JUMP JUMPDEST SWAP2 POP PUSH2 0x395E DUP3 PUSH2 0x49E4 JUMP JUMPDEST PUSH1 0x10 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3976 PUSH1 0x5F DUP4 PUSH2 0x3F82 JUMP JUMPDEST SWAP2 POP PUSH2 0x3981 DUP3 PUSH2 0x4A0D JUMP JUMPDEST PUSH1 0x60 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3995 DUP2 PUSH2 0x40F7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x39A4 DUP2 PUSH2 0x40F7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x39B3 DUP2 PUSH2 0x4101 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39C5 DUP3 DUP6 PUSH2 0x354E JUMP JUMPDEST SWAP2 POP PUSH2 0x39D1 DUP3 DUP5 PUSH2 0x354E JUMP JUMPDEST SWAP2 POP PUSH2 0x39DC DUP3 PUSH2 0x382E JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39F4 DUP3 DUP6 PUSH2 0x357F JUMP JUMPDEST SWAP2 POP PUSH2 0x3A00 DUP3 DUP5 PUSH2 0x3458 JUMP JUMPDEST PUSH1 0x14 DUP3 ADD SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A1C DUP3 DUP5 PUSH2 0x357F JUMP JUMPDEST SWAP2 POP PUSH2 0x3A27 DUP3 PUSH2 0x3946 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A3D DUP3 PUSH2 0x38DD JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3A5C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3449 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x3A77 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x3449 JUMP JUMPDEST PUSH2 0x3A84 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x3449 JUMP JUMPDEST PUSH2 0x3A91 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x399B JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x3AA3 DUP2 DUP5 PUSH2 0x34DC JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3AC8 DUP2 DUP5 PUSH2 0x346F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3AE5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x34CD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3B05 DUP2 DUP5 PUSH2 0x3515 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3B26 DUP2 PUSH2 0x35FE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3B46 DUP2 PUSH2 0x3621 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3B66 DUP2 PUSH2 0x3644 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3B86 DUP2 PUSH2 0x3667 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3BA6 DUP2 PUSH2 0x368A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3BC6 DUP2 PUSH2 0x36AD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3BE6 DUP2 PUSH2 0x36D0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3C06 DUP2 PUSH2 0x36F3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3C26 DUP2 PUSH2 0x3716 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3C46 DUP2 PUSH2 0x3739 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3C66 DUP2 PUSH2 0x375C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3C86 DUP2 PUSH2 0x377F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3CA6 DUP2 PUSH2 0x37A2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3CC6 DUP2 PUSH2 0x37C5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3CE6 DUP2 PUSH2 0x37E8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3D06 DUP2 PUSH2 0x380B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3D26 DUP2 PUSH2 0x3851 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3D46 DUP2 PUSH2 0x3874 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3D66 DUP2 PUSH2 0x3897 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3D86 DUP2 PUSH2 0x38BA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3DA6 DUP2 PUSH2 0x3900 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3DC6 DUP2 PUSH2 0x3923 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3DE6 DUP2 PUSH2 0x3969 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3E02 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x399B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3E1D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x39AA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E2D PUSH2 0x3E3E JUMP JUMPDEST SWAP1 POP PUSH2 0x3E39 DUP3 DUP3 PUSH2 0x4185 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3E63 JUMPI PUSH2 0x3E62 PUSH2 0x436C JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3E8F JUMPI PUSH2 0x3E8E PUSH2 0x436C JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3EBB JUMPI PUSH2 0x3EBA PUSH2 0x436C JUMP JUMPDEST JUMPDEST PUSH2 0x3EC4 DUP3 PUSH2 0x43B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3EEC JUMPI PUSH2 0x3EEB PUSH2 0x436C JUMP JUMPDEST JUMPDEST PUSH2 0x3EF5 DUP3 PUSH2 0x43B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FA9 DUP3 PUSH2 0x40F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x3FB4 DUP4 PUSH2 0x40F7 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x3FE9 JUMPI PUSH2 0x3FE8 PUSH2 0x4281 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3FFF DUP3 PUSH2 0x40F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x400A DUP4 PUSH2 0x40F7 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x401A JUMPI PUSH2 0x4019 PUSH2 0x42B0 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4030 DUP3 PUSH2 0x40F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x403B DUP4 PUSH2 0x40F7 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x404E JUMPI PUSH2 0x404D PUSH2 0x4281 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4064 DUP3 PUSH2 0x4101 JUMP JUMPDEST SWAP2 POP PUSH2 0x406F DUP4 PUSH2 0x4101 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x4082 JUMPI PUSH2 0x4081 PUSH2 0x4281 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4098 DUP3 PUSH2 0x40D7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x413E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x4123 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x414D JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x416B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x417F JUMPI PUSH2 0x417E PUSH2 0x42DF JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x418E DUP3 PUSH2 0x43B4 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x41AD JUMPI PUSH2 0x41AC PUSH2 0x436C JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41C1 DUP3 PUSH2 0x40F7 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x41F4 JUMPI PUSH2 0x41F3 PUSH2 0x4281 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x420A DUP3 PUSH2 0x4101 JUMP JUMPDEST SWAP2 POP PUSH4 0xFFFFFFFF DUP3 EQ ISZERO PUSH2 0x4221 JUMPI PUSH2 0x4220 PUSH2 0x4281 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4237 DUP3 PUSH2 0x423E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4249 DUP3 PUSH2 0x43C5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x425B DUP3 PUSH2 0x40F7 JUMP JUMPDEST SWAP2 POP PUSH2 0x4266 DUP4 PUSH2 0x40F7 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x4276 JUMPI PUSH2 0x4275 PUSH2 0x42B0 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x60 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x455243373231456E756D657261626C653A206F776E657220696E646578206F75 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x74206F6620626F756E6473000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4E6F76656C436F6C6C656374696F6E3A2073616C65206973206F766572000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4E6F76656C436F6C6C656374696F6E3A2072657175657374656420636F756E74 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x20657863656564732077686974656C697374206C696D69740000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4E6F76656C436F6C6C656374696F6E3A20616C72656164792072657665616C65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4552433732313A206F70657261746F7220717565727920666F72206E6F6E6578 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F74206F77 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E6572206E6F7220617070726F76656420666F7220616C6C0000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4552433732313A2062616C616E636520717565727920666F7220746865207A65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x726F206164647265737300000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4552433732313A206F776E657220717565727920666F72206E6F6E6578697374 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x656E7420746F6B656E0000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4E6F76656C436F6C6C656374696F6E3A20636170207265616368656400000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76656420717565727920666F72206E6F6E6578 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x697374656E7420746F6B656E0000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x2E6A736F6E000000000000000000000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E73666572206F6620746F6B656E20746861742069 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x73206E6F74206F776E0000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4552433732314D657461646174613A2055524920717565727920666F72206E6F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E6578697374656E7420746F6B656E0000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E736665722063616C6C6572206973206E6F74206F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x776E6572206E6F7220617070726F766564000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x455243373231456E756D657261626C653A20676C6F62616C20696E646578206F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7574206F6620626F756E64730000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x706C616365686F6C6465722E6A736F6E00000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4E6F76656C436F6C6C656374696F6E3A20696E76616C696420696E707574206C PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x656E677468732C20637573746F6D65727320616E6420746F6B656E436F756E74 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x20617272617973206D757374206265207468652073616D65206C656E67746800 PUSH1 0x40 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x4A8B DUP2 PUSH2 0x408D JUMP JUMPDEST DUP2 EQ PUSH2 0x4A96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4AA2 DUP2 PUSH2 0x409F JUMP JUMPDEST DUP2 EQ PUSH2 0x4AAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4AB9 DUP2 PUSH2 0x40AB JUMP JUMPDEST DUP2 EQ PUSH2 0x4AC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4AD0 DUP2 PUSH2 0x40F7 JUMP JUMPDEST DUP2 EQ PUSH2 0x4ADB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x4AE7 DUP2 PUSH2 0x4101 JUMP JUMPDEST DUP2 EQ PUSH2 0x4AF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC7 LOG3 0xDF PUSH13 0xD60D195C94C41280B01695CCAD 0xC3 SWAP11 0x26 0xD 0xDB 0xFC CREATE 0x23 0xBC 0xF6 PUSH5 0xA3EC4F5664 PUSH20 0x6F6C634300080700330000000000000000000000 ",
"sourceMap": "491:6005:24:-:0;;;657:1;626:32;;839:1;808:32;;847:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1002:575;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1265:5;1272:7;921:32:11;940:12;:10;;;:12;;:::i;:::-;921:18;;;:32;;:::i;:::-;1449:5:12;1441;:13;;;;;;;;;;;;:::i;:::-;;1474:7;1464;:17;;;;;;;;;;;;:::i;:::-;;1375:113;;1303:10:24::1;1291:22;;;;;;;;;;::::0;::::1;1343:18;1323:17;:38;;;;;;;;;;;;:::i;:::-;;1379:6;1371:5;:14;;;;;;;;;;;;:::i;:::-;;1396:32;1417:10;1396:20;;;:32;;:::i;:::-;1443:29;1490:25;1443:73;;1526:14;:29;;;1564:4;1526:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1281:296;1002:575:::0;;;;;;;491:6005;;6121:183;6236:7;6266:31;:29;;;;;:31;;:::i;:::-;6259:38;;6121:183;:::o;2270:187:11:-;2343:16;2362:6;;;;;;;;;;;2343:25;;2387:8;2378:6;;:17;;;;;;;;;;;;;;;;;;2441:8;2410:40;;2431:8;2410:40;;;;;;;;;;;;2333:124;2270:187;:::o;581:106:1:-;670:10;650:17;;:30;;;;;;;;;;;;;;;;;;581:106;:::o;1089:547::-;1151:11;1197:2;1178:8;;:15;;:21;;:55;;;;;1203:30;1222:10;1203:18;;;:30;;:::i;:::-;1178:55;1174:456;;;1554:2;1539:14;1535:22;1522:36;1519:2;1515:44;1508:51;;1174:456;;;1609:10;1603:16;;1174:456;1089:547;:::o;693:144::-;777:4;813:17;;;;;;;;;;;800:30;;:9;:30;;;793:37;;693:144;;;:::o;491:6005:24:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:421:26:-;96:5;121:66;137:49;179:6;137:49;:::i;:::-;121:66;:::i;:::-;112:75;;210:6;203:5;196:21;248:4;241:5;237:16;286:3;277:6;272:3;268:16;265:25;262:112;;;293:79;;:::i;:::-;262:112;383:39;415:6;410:3;405;383:39;:::i;:::-;102:326;7:421;;;;;:::o;434:143::-;491:5;522:6;516:13;507:22;;538:33;565:5;538:33;:::i;:::-;434:143;;;;:::o;583:159::-;648:5;679:6;673:13;664:22;;695:41;730:5;695:41;:::i;:::-;583:159;;;;:::o;762:355::-;829:5;878:3;871:4;863:6;859:17;855:27;845:122;;886:79;;:::i;:::-;845:122;996:6;990:13;1021:90;1107:3;1099:6;1092:4;1084:6;1080:17;1021:90;:::i;:::-;1012:99;;835:282;762:355;;;;:::o;1123:141::-;1179:5;1210:6;1204:13;1195:22;;1226:32;1252:5;1226:32;:::i;:::-;1123:141;;;;:::o;1270:1997::-;1441:6;1449;1457;1465;1473;1481;1489;1538:3;1526:9;1517:7;1513:23;1509:33;1506:120;;;1545:79;;:::i;:::-;1506:120;1686:1;1675:9;1671:17;1665:24;1716:18;1708:6;1705:30;1702:117;;;1738:79;;:::i;:::-;1702:117;1843:74;1909:7;1900:6;1889:9;1885:22;1843:74;:::i;:::-;1833:84;;1636:291;1987:2;1976:9;1972:18;1966:25;2018:18;2010:6;2007:30;2004:117;;;2040:79;;:::i;:::-;2004:117;2145:74;2211:7;2202:6;2191:9;2187:22;2145:74;:::i;:::-;2135:84;;1937:292;2268:2;2294:63;2349:7;2340:6;2329:9;2325:22;2294:63;:::i;:::-;2284:73;;2239:128;2427:2;2416:9;2412:18;2406:25;2458:18;2450:6;2447:30;2444:117;;;2480:79;;:::i;:::-;2444:117;2585:74;2651:7;2642:6;2631:9;2627:22;2585:74;:::i;:::-;2575:84;;2377:292;2729:3;2718:9;2714:19;2708:26;2761:18;2753:6;2750:30;2747:117;;;2783:79;;:::i;:::-;2747:117;2888:74;2954:7;2945:6;2934:9;2930:22;2888:74;:::i;:::-;2878:84;;2679:293;3011:3;3038:64;3094:7;3085:6;3074:9;3070:22;3038:64;:::i;:::-;3028:74;;2982:130;3151:3;3178:72;3242:7;3233:6;3222:9;3218:22;3178:72;:::i;:::-;3168:82;;3122:138;1270:1997;;;;;;;;;;:::o;3273:118::-;3360:24;3378:5;3360:24;:::i;:::-;3355:3;3348:37;3273:118;;:::o;3397:222::-;3490:4;3528:2;3517:9;3513:18;3505:26;;3541:71;3609:1;3598:9;3594:17;3585:6;3541:71;:::i;:::-;3397:222;;;;:::o;3625:129::-;3659:6;3686:20;;:::i;:::-;3676:30;;3715:33;3743:4;3735:6;3715:33;:::i;:::-;3625:129;;;:::o;3760:75::-;3793:6;3826:2;3820:9;3810:19;;3760:75;:::o;3841:308::-;3903:4;3993:18;3985:6;3982:30;3979:56;;;4015:18;;:::i;:::-;3979:56;4053:29;4075:6;4053:29;:::i;:::-;4045:37;;4137:4;4131;4127:15;4119:23;;3841:308;;;:::o;4155:96::-;4192:7;4221:24;4239:5;4221:24;:::i;:::-;4210:35;;4155:96;;;:::o;4257:104::-;4302:7;4331:24;4349:5;4331:24;:::i;:::-;4320:35;;4257:104;;;:::o;4367:126::-;4404:7;4444:42;4437:5;4433:54;4422:65;;4367:126;;;:::o;4499:93::-;4535:7;4575:10;4568:5;4564:22;4553:33;;4499:93;;;:::o;4598:307::-;4666:1;4676:113;4690:6;4687:1;4684:13;4676:113;;;4775:1;4770:3;4766:11;4760:18;4756:1;4751:3;4747:11;4740:39;4712:2;4709:1;4705:10;4700:15;;4676:113;;;4807:6;4804:1;4801:13;4798:101;;;4887:1;4878:6;4873:3;4869:16;4862:27;4798:101;4647:258;4598:307;;;:::o;4911:320::-;4955:6;4992:1;4986:4;4982:12;4972:22;;5039:1;5033:4;5029:12;5060:18;5050:81;;5116:4;5108:6;5104:17;5094:27;;5050:81;5178:2;5170:6;5167:14;5147:18;5144:38;5141:84;;;5197:18;;:::i;:::-;5141:84;4962:269;4911:320;;;:::o;5237:281::-;5320:27;5342:4;5320:27;:::i;:::-;5312:6;5308:40;5450:6;5438:10;5435:22;5414:18;5402:10;5399:34;5396:62;5393:88;;;5461:18;;:::i;:::-;5393:88;5501:10;5497:2;5490:22;5280:238;5237:281;;:::o;5524:180::-;5572:77;5569:1;5562:88;5669:4;5666:1;5659:15;5693:4;5690:1;5683:15;5710:180;5758:77;5755:1;5748:88;5855:4;5852:1;5845:15;5879:4;5876:1;5869:15;5896:117;6005:1;6002;5995:12;6019:117;6128:1;6125;6118:12;6142:117;6251:1;6248;6241:12;6265:117;6374:1;6371;6364:12;6388:102;6429:6;6480:2;6476:7;6471:2;6464:5;6460:14;6456:28;6446:38;;6388:102;;;:::o;6496:122::-;6569:24;6587:5;6569:24;:::i;:::-;6562:5;6559:35;6549:63;;6608:1;6605;6598:12;6549:63;6496:122;:::o;6624:138::-;6705:32;6731:5;6705:32;:::i;:::-;6698:5;6695:43;6685:71;;6752:1;6749;6742:12;6685:71;6624:138;:::o;6768:120::-;6840:23;6857:5;6840:23;:::i;:::-;6833:5;6830:34;6820:62;;6878:1;6875;6868:12;6820:62;6768:120;:::o;491:6005:24:-;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_addTokenToAllTokensEnumeration_2792": {
"entryPoint": 10389,
"id": 2792,
"parameterSlots": 1,
"returnSlots": 0
},
"@_addTokenToOwnerEnumeration_2772": {
"entryPoint": 11036,
"id": 2772,
"parameterSlots": 2,
"returnSlots": 0
},
"@_approve_2326": {
"entryPoint": 7163,
"id": 2326,
"parameterSlots": 2,
"returnSlots": 0
},
"@_baseURI_3939": {
"entryPoint": 8857,
"id": 3939,
"parameterSlots": 0,
"returnSlots": 1
},
"@_beforeTokenTransfer_2431": {
"entryPoint": 10384,
"id": 2431,
"parameterSlots": 3,
"returnSlots": 0
},
"@_beforeTokenTransfer_2742": {
"entryPoint": 9610,
"id": 2742,
"parameterSlots": 3,
"returnSlots": 0
},
"@_checkOnERC721Received_2420": {
"entryPoint": 9977,
"id": 2420,
"parameterSlots": 4,
"returnSlots": 1
},
"@_exists_2040": {
"entryPoint": 7040,
"id": 2040,
"parameterSlots": 1,
"returnSlots": 1
},
"@_isApprovedOrOwner_2081": {
"entryPoint": 7348,
"id": 2081,
"parameterSlots": 2,
"returnSlots": 1
},
"@_mint_2182": {
"entryPoint": 11163,
"id": 2182,
"parameterSlots": 2,
"returnSlots": 0
},
"@_msgSender_265": {
"entryPoint": 6759,
"id": 265,
"parameterSlots": 0,
"returnSlots": 1
},
"@_msgSender_4367": {
"entryPoint": 7148,
"id": 4367,
"parameterSlots": 0,
"returnSlots": 1
},
"@_removeTokenFromAllTokensEnumeration_2903": {
"entryPoint": 10827,
"id": 2903,
"parameterSlots": 1,
"returnSlots": 0
},
"@_removeTokenFromOwnerEnumeration_2855": {
"entryPoint": 10462,
"id": 2855,
"parameterSlots": 2,
"returnSlots": 0
},
"@_safeMint_2096": {
"entryPoint": 8735,
"id": 2096,
"parameterSlots": 2,
"returnSlots": 0
},
"@_safeMint_2125": {
"entryPoint": 9886,
"id": 2125,
"parameterSlots": 3,
"returnSlots": 0
},
"@_safeTransfer_2022": {
"entryPoint": 8765,
"id": 2022,
"parameterSlots": 4,
"returnSlots": 0
},
"@_setApprovalForAll_2358": {
"entryPoint": 8370,
"id": 2358,
"parameterSlots": 3,
"returnSlots": 0
},
"@_transferOwnership_1600": {
"entryPoint": 8174,
"id": 1600,
"parameterSlots": 1,
"returnSlots": 0
},
"@_transfer_2302": {
"entryPoint": 7570,
"id": 2302,
"parameterSlots": 3,
"returnSlots": 0
},
"@approve_1861": {
"entryPoint": 2220,
"id": 1861,
"parameterSlots": 2,
"returnSlots": 0
},
"@balanceOf_1719": {
"entryPoint": 4007,
"id": 1719,
"parameterSlots": 1,
"returnSlots": 1
},
"@canMintAmount_4077": {
"entryPoint": 5108,
"id": 4077,
"parameterSlots": 2,
"returnSlots": 1
},
"@contractURI_3957": {
"entryPoint": 6189,
"id": 3957,
"parameterSlots": 0,
"returnSlots": 1
},
"@getApproved_1882": {
"entryPoint": 2087,
"id": 1882,
"parameterSlots": 1,
"returnSlots": 1
},
"@isApprovedForAll_1917": {
"entryPoint": 9356,
"id": 1917,
"parameterSlots": 2,
"returnSlots": 1
},
"@isApprovedForAll_4324": {
"entryPoint": 6320,
"id": 4324,
"parameterSlots": 2,
"returnSlots": 1
},
"@isContract_2982": {
"entryPoint": 11625,
"id": 2982,
"parameterSlots": 1,
"returnSlots": 1
},
"@isRevealed_4196": {
"entryPoint": 3727,
"id": 4196,
"parameterSlots": 0,
"returnSlots": 1
},
"@isTrustedForwarder_238": {
"entryPoint": 3739,
"id": 238,
"parameterSlots": 1,
"returnSlots": 1
},
"@metadataProofHash_3876": {
"entryPoint": 4369,
"id": 3876,
"parameterSlots": 0,
"returnSlots": 0
},
"@mint_4139": {
"entryPoint": 5164,
"id": 4139,
"parameterSlots": 1,
"returnSlots": 0
},
"@mintableAmount_4061": {
"entryPoint": 5738,
"id": 4061,
"parameterSlots": 1,
"returnSlots": 1
},
"@mintedAmount_4025": {
"entryPoint": 6670,
"id": 4025,
"parameterSlots": 1,
"returnSlots": 1
},
"@name_1757": {
"entryPoint": 1941,
"id": 1757,
"parameterSlots": 0,
"returnSlots": 1
},
"@ownerOf_1747": {
"entryPoint": 3829,
"id": 1747,
"parameterSlots": 1,
"returnSlots": 1
},
"@owner_1529": {
"entryPoint": 4511,
"id": 1529,
"parameterSlots": 0,
"returnSlots": 1
},
"@renounceOwnership_1557": {
"entryPoint": 4191,
"id": 1557,
"parameterSlots": 0,
"returnSlots": 0
},
"@reveal_4185": {
"entryPoint": 3256,
"id": 4185,
"parameterSlots": 1,
"returnSlots": 0
},
"@safeTransferFrom_1963": {
"entryPoint": 2908,
"id": 1963,
"parameterSlots": 3,
"returnSlots": 0
},
"@safeTransferFrom_1993": {
"entryPoint": 5834,
"id": 1993,
"parameterSlots": 4,
"returnSlots": 0
},
"@setApprovalForAll_1899": {
"entryPoint": 5142,
"id": 1899,
"parameterSlots": 2,
"returnSlots": 0
},
"@setWhitelistedAmount_4001": {
"entryPoint": 4734,
"id": 4001,
"parameterSlots": 2,
"returnSlots": 0
},
"@startingIndex_3868": {
"entryPoint": 6183,
"id": 3868,
"parameterSlots": 0,
"returnSlots": 0
},
"@supplyCap_3874": {
"entryPoint": 4552,
"id": 3874,
"parameterSlots": 0,
"returnSlots": 0
},
"@supportsInterface_1695": {
"entryPoint": 6814,
"id": 1695,
"parameterSlots": 1,
"returnSlots": 1
},
"@supportsInterface_2616": {
"entryPoint": 1819,
"id": 2616,
"parameterSlots": 1,
"returnSlots": 1
},
"@supportsInterface_3507": {
"entryPoint": 9504,
"id": 3507,
"parameterSlots": 1,
"returnSlots": 1
},
"@symbol_1767": {
"entryPoint": 4588,
"id": 1767,
"parameterSlots": 0,
"returnSlots": 1
},
"@toString_3366": {
"entryPoint": 9003,
"id": 3366,
"parameterSlots": 1,
"returnSlots": 1
},
"@tokenByIndex_2678": {
"entryPoint": 3614,
"id": 2678,
"parameterSlots": 1,
"returnSlots": 1
},
"@tokenOfOwnerByIndex_2644": {
"entryPoint": 2609,
"id": 2644,
"parameterSlots": 2,
"returnSlots": 1
},
"@tokenURI_4296": {
"entryPoint": 5932,
"id": 4296,
"parameterSlots": 1,
"returnSlots": 1
},
"@totalSupply_2655": {
"entryPoint": 2500,
"id": 2655,
"parameterSlots": 0,
"returnSlots": 1
},
"@transferFrom_1944": {
"entryPoint": 2513,
"id": 1944,
"parameterSlots": 3,
"returnSlots": 0
},
"@transferOwnership_1580": {
"entryPoint": 6422,
"id": 1580,
"parameterSlots": 1,
"returnSlots": 0
},
"@trustedForwarder_215": {
"entryPoint": 4327,
"id": 215,
"parameterSlots": 0,
"returnSlots": 1
},
"@versionRecipient_3872": {
"entryPoint": 3114,
"id": 3872,
"parameterSlots": 0,
"returnSlots": 0
},
"@walletOfOwner_4244": {
"entryPoint": 2940,
"id": 4244,
"parameterSlots": 1,
"returnSlots": 1
},
"@whitelistedAmount_4013": {
"entryPoint": 6231,
"id": 4013,
"parameterSlots": 1,
"returnSlots": 1
},
"@withdraw_4354": {
"entryPoint": 2774,
"id": 4354,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 11807,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_available_length_t_array$_t_uint32_$dyn_memory_ptr": {
"entryPoint": 11919,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_available_length_t_bytes_memory_ptr": {
"entryPoint": 12031,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_available_length_t_string_memory_ptr": {
"entryPoint": 12097,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_address": {
"entryPoint": 12163,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 12184,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_array$_t_uint32_$dyn_memory_ptr": {
"entryPoint": 12230,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bool": {
"entryPoint": 12276,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes4": {
"entryPoint": 12297,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes4_fromMemory": {
"entryPoint": 12318,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes_memory_ptr": {
"entryPoint": 12339,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_string_memory_ptr": {
"entryPoint": 12385,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 12431,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint32": {
"entryPoint": 12452,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address": {
"entryPoint": 12473,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_address": {
"entryPoint": 12518,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_addresst_addresst_uint256": {
"entryPoint": 12582,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": {
"entryPoint": 12665,
"id": null,
"parameterSlots": 2,
"returnSlots": 4
},
"abi_decode_tuple_t_addresst_bool": {
"entryPoint": 12796,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_addresst_uint256": {
"entryPoint": 12860,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_addresst_uint32": {
"entryPoint": 12924,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint32_$dyn_memory_ptr": {
"entryPoint": 12988,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_bytes4": {
"entryPoint": 13108,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes4_fromMemory": {
"entryPoint": 13153,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_string_memory_ptr": {
"entryPoint": 13198,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 13271,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint32": {
"entryPoint": 13316,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encodeUpdatedPos_t_uint256_to_t_uint256": {
"entryPoint": 13361,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 13385,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_address_to_t_address_nonPadded_inplace_fromStack": {
"entryPoint": 13400,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack": {
"entryPoint": 13423,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_bool_to_t_bool_fromStack": {
"entryPoint": 13517,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack": {
"entryPoint": 13532,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 13589,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 13646,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_string_storage_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 13695,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack": {
"entryPoint": 13822,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack": {
"entryPoint": 13857,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_217ec19cffbac4e5e1fdbc4ed3ac5b10b80cf8f1a2d4b6f18592eaf7b9e41c76_to_t_string_memory_ptr_fromStack": {
"entryPoint": 13892,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack": {
"entryPoint": 13927,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_25ee9ded3380469d591e0c813b44286169495c0a471ee7cc12ba48da1b347e10_to_t_string_memory_ptr_fromStack": {
"entryPoint": 13962,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack": {
"entryPoint": 13997,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_3b3d7b38305edb8575fc735ff9f0e77e23661a5bb43558d5ce55afd7c820bde4_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14032,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14067,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14102,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14137,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14172,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14207,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14242,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14277,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_8d0a499c1dc5d8ed8c32edf19002261686f14e231a54e778311a2da765ffc981_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14312,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14347,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_94311adc0a0cd4e10be11b23bd4316b8cffa4adf693e8f96f5c075aa439a7972_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 14382,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14417,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14452,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14487,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14522,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 14557,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14592,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14627,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_e04f4faa40e5c7fab9ac4a38700c1efae048dba3e5c0f738c15c43a064a4687b_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 14662,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_ecaadc80e35280545a3d33795a2f929a714b377cdd48d49b3571fccbc80ec145_to_t_string_memory_ptr_fromStack": {
"entryPoint": 14697,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256": {
"entryPoint": 14732,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 14747,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint32_to_t_uint32_fromStack": {
"entryPoint": 14762,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_94311adc0a0cd4e10be11b23bd4316b8cffa4adf693e8f96f5c075aa439a7972__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 14777,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_packed_t_string_storage_t_address__to_t_string_memory_ptr_t_address__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 14824,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_packed_t_string_storage_t_stringliteral_e04f4faa40e5c7fab9ac4a38700c1efae048dba3e5c0f738c15c43a064a4687b__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 14864,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 14898,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 14919,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
"entryPoint": 14946,
"id": null,
"parameterSlots": 5,
"returnSlots": 1
},
"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": {
"entryPoint": 15022,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": 15056,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15083,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15117,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15149,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_217ec19cffbac4e5e1fdbc4ed3ac5b10b80cf8f1a2d4b6f18592eaf7b9e41c76__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15181,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15213,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_25ee9ded3380469d591e0c813b44286169495c0a471ee7cc12ba48da1b347e10__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15245,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15277,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_3b3d7b38305edb8575fc735ff9f0e77e23661a5bb43558d5ce55afd7c820bde4__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15309,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15341,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15373,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15405,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15437,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15469,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15501,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15533,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_8d0a499c1dc5d8ed8c32edf19002261686f14e231a54e778311a2da765ffc981__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15565,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15597,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15629,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15661,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15693,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15725,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15757,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15789,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_ecaadc80e35280545a3d33795a2f929a714b377cdd48d49b3571fccbc80ec145__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 15821,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 15853,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed": {
"entryPoint": 15880,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 15907,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": 15934,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_allocation_size_t_array$_t_address_$dyn_memory_ptr": {
"entryPoint": 15944,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_allocation_size_t_array$_t_uint32_$dyn_memory_ptr": {
"entryPoint": 15988,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_allocation_size_t_bytes_memory_ptr": {
"entryPoint": 16032,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_allocation_size_t_string_memory_ptr": {
"entryPoint": 16081,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_dataslot_t_array$_t_uint256_$dyn_memory_ptr": {
"entryPoint": 16130,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_dataslot_t_string_storage": {
"entryPoint": 16146,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_array$_t_uint256_$dyn_memory_ptr": {
"entryPoint": 16167,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_bytes_memory_ptr": {
"entryPoint": 16178,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 16189,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_nextElement_t_array$_t_uint256_$dyn_memory_ptr": {
"entryPoint": 16200,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack": {
"entryPoint": 16213,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack": {
"entryPoint": 16230,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 16247,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 16258,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 16275,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 16286,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_div_t_uint256": {
"entryPoint": 16372,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint256": {
"entryPoint": 16421,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint32": {
"entryPoint": 16473,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 16525,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 16543,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes4": {
"entryPoint": 16555,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 16599,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 16631,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint32": {
"entryPoint": 16641,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_calldata_to_memory": {
"entryPoint": 16657,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"copy_memory_to_memory": {
"entryPoint": 16672,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"extract_byte_array_length": {
"entryPoint": 16723,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"finalize_allocation": {
"entryPoint": 16773,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"increment_t_uint256": {
"entryPoint": 16822,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"increment_t_uint32": {
"entryPoint": 16895,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"leftAlign_t_address": {
"entryPoint": 16940,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"leftAlign_t_uint160": {
"entryPoint": 16958,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"mod_t_uint256": {
"entryPoint": 16976,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 17025,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x12": {
"entryPoint": 17072,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x22": {
"entryPoint": 17119,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x31": {
"entryPoint": 17166,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 17213,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 17260,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": {
"entryPoint": 17307,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef": {
"entryPoint": 17312,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae": {
"entryPoint": 17317,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": 17322,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 17327,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 17332,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"shift_left_96": {
"entryPoint": 17349,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c": {
"entryPoint": 17362,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e": {
"entryPoint": 17441,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_217ec19cffbac4e5e1fdbc4ed3ac5b10b80cf8f1a2d4b6f18592eaf7b9e41c76": {
"entryPoint": 17520,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe": {
"entryPoint": 17561,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_25ee9ded3380469d591e0c813b44286169495c0a471ee7cc12ba48da1b347e10": {
"entryPoint": 17640,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57": {
"entryPoint": 17719,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_3b3d7b38305edb8575fc735ff9f0e77e23661a5bb43558d5ce55afd7c820bde4": {
"entryPoint": 17760,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4": {
"entryPoint": 17839,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05": {
"entryPoint": 17918,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c": {
"entryPoint": 17959,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d": {
"entryPoint": 18038,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba": {
"entryPoint": 18117,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397": {
"entryPoint": 18196,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6": {
"entryPoint": 18275,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_8d0a499c1dc5d8ed8c32edf19002261686f14e231a54e778311a2da765ffc981": {
"entryPoint": 18316,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d": {
"entryPoint": 18357,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_94311adc0a0cd4e10be11b23bd4316b8cffa4adf693e8f96f5c075aa439a7972": {
"entryPoint": 18436,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe": {
"entryPoint": 18477,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950": {
"entryPoint": 18518,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb": {
"entryPoint": 18597,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942": {
"entryPoint": 18676,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470": {
"entryPoint": 18755,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2": {
"entryPoint": 18758,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc": {
"entryPoint": 18837,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_e04f4faa40e5c7fab9ac4a38700c1efae048dba3e5c0f738c15c43a064a4687b": {
"entryPoint": 18916,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_ecaadc80e35280545a3d33795a2f929a714b377cdd48d49b3571fccbc80ec145": {
"entryPoint": 18957,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 19074,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bool": {
"entryPoint": 19097,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes4": {
"entryPoint": 19120,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 19143,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint32": {
"entryPoint": 19166,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:53573:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "126:620:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "136:90:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "218:6:26"
}
],
"functionName": {
"name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "161:56:26"
},
"nodeType": "YulFunctionCall",
"src": "161:64:26"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "145:15:26"
},
"nodeType": "YulFunctionCall",
"src": "145:81:26"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "136:5:26"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "235:16:26",
"value": {
"name": "array",
"nodeType": "YulIdentifier",
"src": "246:5:26"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "239:3:26",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "268:5:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "275:6:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "261:6:26"
},
"nodeType": "YulFunctionCall",
"src": "261:21:26"
},
"nodeType": "YulExpressionStatement",
"src": "261:21:26"
},
{
"nodeType": "YulAssignment",
"src": "291:23:26",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "302:5:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "309:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "298:3:26"
},
"nodeType": "YulFunctionCall",
"src": "298:16:26"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "291:3:26"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "324:17:26",
"value": {
"name": "offset",
"nodeType": "YulIdentifier",
"src": "335:6:26"
},
"variables": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "328:3:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "390:103:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
"nodeType": "YulIdentifier",
"src": "404:77:26"
},
"nodeType": "YulFunctionCall",
"src": "404:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "404:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "360:3:26"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "369:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "377:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "365:3:26"
},
"nodeType": "YulFunctionCall",
"src": "365:17:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "356:3:26"
},
"nodeType": "YulFunctionCall",
"src": "356:27:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "385:3:26"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "353:2:26"
},
"nodeType": "YulFunctionCall",
"src": "353:36:26"
},
"nodeType": "YulIf",
"src": "350:143:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "562:178:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "577:21:26",
"value": {
"name": "src",
"nodeType": "YulIdentifier",
"src": "595:3:26"
},
"variables": [
{
"name": "elementPos",
"nodeType": "YulTypedName",
"src": "581:10:26",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "619:3:26"
},
{
"arguments": [
{
"name": "elementPos",
"nodeType": "YulIdentifier",
"src": "645:10:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "657:3:26"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "624:20:26"
},
"nodeType": "YulFunctionCall",
"src": "624:37:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "612:6:26"
},
"nodeType": "YulFunctionCall",
"src": "612:50:26"
},
"nodeType": "YulExpressionStatement",
"src": "612:50:26"
},
{
"nodeType": "YulAssignment",
"src": "675:21:26",
"value": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "686:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "691:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "682:3:26"
},
"nodeType": "YulFunctionCall",
"src": "682:14:26"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "675:3:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "709:21:26",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "720:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "725:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "716:3:26"
},
"nodeType": "YulFunctionCall",
"src": "716:14:26"
},
"variableNames": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "709:3:26"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "524:1:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "527:6:26"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "521:2:26"
},
"nodeType": "YulFunctionCall",
"src": "521:13:26"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "535:18:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "537:14:26",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "546:1:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "549:1:26",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "542:3:26"
},
"nodeType": "YulFunctionCall",
"src": "542:9:26"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "537:1:26"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "506:14:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "508:10:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "517:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "512:1:26",
"type": ""
}
]
}
]
},
"src": "502:238:26"
}
]
},
"name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "96:6:26",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "104:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "112:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "120:5:26",
"type": ""
}
],
"src": "24:722:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "869:618:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "879:89:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "960:6:26"
}
],
"functionName": {
"name": "array_allocation_size_t_array$_t_uint32_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "904:55:26"
},
"nodeType": "YulFunctionCall",
"src": "904:63:26"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "888:15:26"
},
"nodeType": "YulFunctionCall",
"src": "888:80:26"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "879:5:26"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "977:16:26",
"value": {
"name": "array",
"nodeType": "YulIdentifier",
"src": "988:5:26"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "981:3:26",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "1010:5:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1017:6:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1003:6:26"
},
"nodeType": "YulFunctionCall",
"src": "1003:21:26"
},
"nodeType": "YulExpressionStatement",
"src": "1003:21:26"
},
{
"nodeType": "YulAssignment",
"src": "1033:23:26",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "1044:5:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1051:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1040:3:26"
},
"nodeType": "YulFunctionCall",
"src": "1040:16:26"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1033:3:26"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1066:17:26",
"value": {
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1077:6:26"
},
"variables": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "1070:3:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1132:103:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
"nodeType": "YulIdentifier",
"src": "1146:77:26"
},
"nodeType": "YulFunctionCall",
"src": "1146:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "1146:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "1102:3:26"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1111:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1119:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "1107:3:26"
},
"nodeType": "YulFunctionCall",
"src": "1107:17:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1098:3:26"
},
"nodeType": "YulFunctionCall",
"src": "1098:27:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1127:3:26"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1095:2:26"
},
"nodeType": "YulFunctionCall",
"src": "1095:36:26"
},
"nodeType": "YulIf",
"src": "1092:143:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1304:177:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1319:21:26",
"value": {
"name": "src",
"nodeType": "YulIdentifier",
"src": "1337:3:26"
},
"variables": [
{
"name": "elementPos",
"nodeType": "YulTypedName",
"src": "1323:10:26",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1361:3:26"
},
{
"arguments": [
{
"name": "elementPos",
"nodeType": "YulIdentifier",
"src": "1386:10:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1398:3:26"
}
],
"functionName": {
"name": "abi_decode_t_uint32",
"nodeType": "YulIdentifier",
"src": "1366:19:26"
},
"nodeType": "YulFunctionCall",
"src": "1366:36:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1354:6:26"
},
"nodeType": "YulFunctionCall",
"src": "1354:49:26"
},
"nodeType": "YulExpressionStatement",
"src": "1354:49:26"
},
{
"nodeType": "YulAssignment",
"src": "1416:21:26",
"value": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1427:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1432:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1423:3:26"
},
"nodeType": "YulFunctionCall",
"src": "1423:14:26"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1416:3:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1450:21:26",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "1461:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1466:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1457:3:26"
},
"nodeType": "YulFunctionCall",
"src": "1457:14:26"
},
"variableNames": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "1450:3:26"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1266:1:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1269:6:26"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1263:2:26"
},
"nodeType": "YulFunctionCall",
"src": "1263:13:26"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "1277:18:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1279:14:26",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1288:1:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1291:1:26",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1284:3:26"
},
"nodeType": "YulFunctionCall",
"src": "1284:9:26"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1279:1:26"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "1248:14:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1250:10:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1259:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "1254:1:26",
"type": ""
}
]
}
]
},
"src": "1244:237:26"
}
]
},
"name": "abi_decode_available_length_t_array$_t_uint32_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "839:6:26",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "847:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "855:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "863:5:26",
"type": ""
}
],
"src": "768:719:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1576:327:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1586:74:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1652:6:26"
}
],
"functionName": {
"name": "array_allocation_size_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "1611:40:26"
},
"nodeType": "YulFunctionCall",
"src": "1611:48:26"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "1595:15:26"
},
"nodeType": "YulFunctionCall",
"src": "1595:65:26"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "1586:5:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "1676:5:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1683:6:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1669:6:26"
},
"nodeType": "YulFunctionCall",
"src": "1669:21:26"
},
"nodeType": "YulExpressionStatement",
"src": "1669:21:26"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1699:27:26",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "1714:5:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1721:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1710:3:26"
},
"nodeType": "YulFunctionCall",
"src": "1710:16:26"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "1703:3:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1764:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nodeType": "YulIdentifier",
"src": "1766:77:26"
},
"nodeType": "YulFunctionCall",
"src": "1766:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "1766:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "1745:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1750:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1741:3:26"
},
"nodeType": "YulFunctionCall",
"src": "1741:16:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1759:3:26"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1738:2:26"
},
"nodeType": "YulFunctionCall",
"src": "1738:25:26"
},
"nodeType": "YulIf",
"src": "1735:112:26"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "1880:3:26"
},
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1885:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1890:6:26"
}
],
"functionName": {
"name": "copy_calldata_to_memory",
"nodeType": "YulIdentifier",
"src": "1856:23:26"
},
"nodeType": "YulFunctionCall",
"src": "1856:41:26"
},
"nodeType": "YulExpressionStatement",
"src": "1856:41:26"
}
]
},
"name": "abi_decode_available_length_t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "1549:3:26",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1554:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1562:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "1570:5:26",
"type": ""
}
],
"src": "1493:410:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1993:328:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2003:75:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2070:6:26"
}
],
"functionName": {
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "2028:41:26"
},
"nodeType": "YulFunctionCall",
"src": "2028:49:26"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "2012:15:26"
},
"nodeType": "YulFunctionCall",
"src": "2012:66:26"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "2003:5:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "2094:5:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2101:6:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2087:6:26"
},
"nodeType": "YulFunctionCall",
"src": "2087:21:26"
},
"nodeType": "YulExpressionStatement",
"src": "2087:21:26"
},
{
"nodeType": "YulVariableDeclaration",
"src": "2117:27:26",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "2132:5:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2139:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2128:3:26"
},
"nodeType": "YulFunctionCall",
"src": "2128:16:26"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "2121:3:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2182:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nodeType": "YulIdentifier",
"src": "2184:77:26"
},
"nodeType": "YulFunctionCall",
"src": "2184:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "2184:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "2163:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2168:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2159:3:26"
},
"nodeType": "YulFunctionCall",
"src": "2159:16:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2177:3:26"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2156:2:26"
},
"nodeType": "YulFunctionCall",
"src": "2156:25:26"
},
"nodeType": "YulIf",
"src": "2153:112:26"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "2298:3:26"
},
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "2303:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2308:6:26"
}
],
"functionName": {
"name": "copy_calldata_to_memory",
"nodeType": "YulIdentifier",
"src": "2274:23:26"
},
"nodeType": "YulFunctionCall",
"src": "2274:41:26"
},
"nodeType": "YulExpressionStatement",
"src": "2274:41:26"
}
]
},
"name": "abi_decode_available_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "1966:3:26",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1971:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1979:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "1987:5:26",
"type": ""
}
],
"src": "1909:412:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2379:87:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2389:29:26",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2411:6:26"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2398:12:26"
},
"nodeType": "YulFunctionCall",
"src": "2398:20:26"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2389:5:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2454:5:26"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "2427:26:26"
},
"nodeType": "YulFunctionCall",
"src": "2427:33:26"
},
"nodeType": "YulExpressionStatement",
"src": "2427:33:26"
}
]
},
"name": "abi_decode_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2357:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2365:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2373:5:26",
"type": ""
}
],
"src": "2327:139:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2566:293:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2615:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulIdentifier",
"src": "2617:77:26"
},
"nodeType": "YulFunctionCall",
"src": "2617:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "2617:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2594:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2602:4:26",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2590:3:26"
},
"nodeType": "YulFunctionCall",
"src": "2590:17:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2609:3:26"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2586:3:26"
},
"nodeType": "YulFunctionCall",
"src": "2586:27:26"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2579:6:26"
},
"nodeType": "YulFunctionCall",
"src": "2579:35:26"
},
"nodeType": "YulIf",
"src": "2576:122:26"
},
{
"nodeType": "YulVariableDeclaration",
"src": "2707:34:26",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2734:6:26"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2721:12:26"
},
"nodeType": "YulFunctionCall",
"src": "2721:20:26"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2711:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2750:103:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2826:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2834:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2822:3:26"
},
"nodeType": "YulFunctionCall",
"src": "2822:17:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2841:6:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2849:3:26"
}
],
"functionName": {
"name": "abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "2759:62:26"
},
"nodeType": "YulFunctionCall",
"src": "2759:94:26"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "2750:5:26"
}
]
}
]
},
"name": "abi_decode_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2544:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2552:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "2560:5:26",
"type": ""
}
],
"src": "2489:370:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2957:292:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3006:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulIdentifier",
"src": "3008:77:26"
},
"nodeType": "YulFunctionCall",
"src": "3008:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "3008:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2985:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2993:4:26",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2981:3:26"
},
"nodeType": "YulFunctionCall",
"src": "2981:17:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3000:3:26"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2977:3:26"
},
"nodeType": "YulFunctionCall",
"src": "2977:27:26"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2970:6:26"
},
"nodeType": "YulFunctionCall",
"src": "2970:35:26"
},
"nodeType": "YulIf",
"src": "2967:122:26"
},
{
"nodeType": "YulVariableDeclaration",
"src": "3098:34:26",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3125:6:26"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3112:12:26"
},
"nodeType": "YulFunctionCall",
"src": "3112:20:26"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3102:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3141:102:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3216:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3224:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3212:3:26"
},
"nodeType": "YulFunctionCall",
"src": "3212:17:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3231:6:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3239:3:26"
}
],
"functionName": {
"name": "abi_decode_available_length_t_array$_t_uint32_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "3150:61:26"
},
"nodeType": "YulFunctionCall",
"src": "3150:93:26"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "3141:5:26"
}
]
}
]
},
"name": "abi_decode_t_array$_t_uint32_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2935:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2943:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "2951:5:26",
"type": ""
}
],
"src": "2881:368:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3304:84:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3314:29:26",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3336:6:26"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3323:12:26"
},
"nodeType": "YulFunctionCall",
"src": "3323:20:26"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3314:5:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3376:5:26"
}
],
"functionName": {
"name": "validator_revert_t_bool",
"nodeType": "YulIdentifier",
"src": "3352:23:26"
},
"nodeType": "YulFunctionCall",
"src": "3352:30:26"
},
"nodeType": "YulExpressionStatement",
"src": "3352:30:26"
}
]
},
"name": "abi_decode_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3282:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3290:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3298:5:26",
"type": ""
}
],
"src": "3255:133:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3445:86:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3455:29:26",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3477:6:26"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3464:12:26"
},
"nodeType": "YulFunctionCall",
"src": "3464:20:26"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3455:5:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3519:5:26"
}
],
"functionName": {
"name": "validator_revert_t_bytes4",
"nodeType": "YulIdentifier",
"src": "3493:25:26"
},
"nodeType": "YulFunctionCall",
"src": "3493:32:26"
},
"nodeType": "YulExpressionStatement",
"src": "3493:32:26"
}
]
},
"name": "abi_decode_t_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3423:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3431:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3439:5:26",
"type": ""
}
],
"src": "3394:137:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3599:79:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3609:22:26",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3624:6:26"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "3618:5:26"
},
"nodeType": "YulFunctionCall",
"src": "3618:13:26"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3609:5:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3666:5:26"
}
],
"functionName": {
"name": "validator_revert_t_bytes4",
"nodeType": "YulIdentifier",
"src": "3640:25:26"
},
"nodeType": "YulFunctionCall",
"src": "3640:32:26"
},
"nodeType": "YulExpressionStatement",
"src": "3640:32:26"
}
]
},
"name": "abi_decode_t_bytes4_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3577:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3585:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3593:5:26",
"type": ""
}
],
"src": "3537:141:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3758:277:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3807:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulIdentifier",
"src": "3809:77:26"
},
"nodeType": "YulFunctionCall",
"src": "3809:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "3809:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3786:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3794:4:26",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3782:3:26"
},
"nodeType": "YulFunctionCall",
"src": "3782:17:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3801:3:26"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3778:3:26"
},
"nodeType": "YulFunctionCall",
"src": "3778:27:26"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3771:6:26"
},
"nodeType": "YulFunctionCall",
"src": "3771:35:26"
},
"nodeType": "YulIf",
"src": "3768:122:26"
},
{
"nodeType": "YulVariableDeclaration",
"src": "3899:34:26",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3926:6:26"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3913:12:26"
},
"nodeType": "YulFunctionCall",
"src": "3913:20:26"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3903:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3942:87:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4002:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4010:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3998:3:26"
},
"nodeType": "YulFunctionCall",
"src": "3998:17:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4017:6:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4025:3:26"
}
],
"functionName": {
"name": "abi_decode_available_length_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "3951:46:26"
},
"nodeType": "YulFunctionCall",
"src": "3951:78:26"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "3942:5:26"
}
]
}
]
},
"name": "abi_decode_t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3736:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3744:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "3752:5:26",
"type": ""
}
],
"src": "3697:338:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4117:278:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4166:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulIdentifier",
"src": "4168:77:26"
},
"nodeType": "YulFunctionCall",
"src": "4168:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "4168:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4145:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4153:4:26",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4141:3:26"
},
"nodeType": "YulFunctionCall",
"src": "4141:17:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4160:3:26"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "4137:3:26"
},
"nodeType": "YulFunctionCall",
"src": "4137:27:26"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "4130:6:26"
},
"nodeType": "YulFunctionCall",
"src": "4130:35:26"
},
"nodeType": "YulIf",
"src": "4127:122:26"
},
{
"nodeType": "YulVariableDeclaration",
"src": "4258:34:26",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4285:6:26"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "4272:12:26"
},
"nodeType": "YulFunctionCall",
"src": "4272:20:26"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4262:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4301:88:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4362:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4370:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4358:3:26"
},
"nodeType": "YulFunctionCall",
"src": "4358:17:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4377:6:26"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4385:3:26"
}
],
"functionName": {
"name": "abi_decode_available_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "4310:47:26"
},
"nodeType": "YulFunctionCall",
"src": "4310:79:26"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "4301:5:26"
}
]
}
]
},
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4095:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4103:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "4111:5:26",
"type": ""
}
],
"src": "4055:340:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4453:87:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4463:29:26",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4485:6:26"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "4472:12:26"
},
"nodeType": "YulFunctionCall",
"src": "4472:20:26"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4463:5:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4528:5:26"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "4501:26:26"
},
"nodeType": "YulFunctionCall",
"src": "4501:33:26"
},
"nodeType": "YulExpressionStatement",
"src": "4501:33:26"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4431:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4439:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4447:5:26",
"type": ""
}
],
"src": "4401:139:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4597:86:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4607:29:26",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4629:6:26"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "4616:12:26"
},
"nodeType": "YulFunctionCall",
"src": "4616:20:26"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4607:5:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4671:5:26"
}
],
"functionName": {
"name": "validator_revert_t_uint32",
"nodeType": "YulIdentifier",
"src": "4645:25:26"
},
"nodeType": "YulFunctionCall",
"src": "4645:32:26"
},
"nodeType": "YulExpressionStatement",
"src": "4645:32:26"
}
]
},
"name": "abi_decode_t_uint32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4575:6:26",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4583:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4591:5:26",
"type": ""
}
],
"src": "4546:137:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4755:263:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4801:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "4803:77:26"
},
"nodeType": "YulFunctionCall",
"src": "4803:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "4803:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4776:7:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4785:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4772:3:26"
},
"nodeType": "YulFunctionCall",
"src": "4772:23:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4797:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "4768:3:26"
},
"nodeType": "YulFunctionCall",
"src": "4768:32:26"
},
"nodeType": "YulIf",
"src": "4765:119:26"
},
{
"nodeType": "YulBlock",
"src": "4894:117:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4909:15:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4923:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4913:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4938:63:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4973:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4984:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4969:3:26"
},
"nodeType": "YulFunctionCall",
"src": "4969:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4993:7:26"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "4948:20:26"
},
"nodeType": "YulFunctionCall",
"src": "4948:53:26"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4938:6:26"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4725:9:26",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "4736:7:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4748:6:26",
"type": ""
}
],
"src": "4689:329:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5107:391:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5153:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "5155:77:26"
},
"nodeType": "YulFunctionCall",
"src": "5155:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "5155:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5128:7:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5137:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5124:3:26"
},
"nodeType": "YulFunctionCall",
"src": "5124:23:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5149:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5120:3:26"
},
"nodeType": "YulFunctionCall",
"src": "5120:32:26"
},
"nodeType": "YulIf",
"src": "5117:119:26"
},
{
"nodeType": "YulBlock",
"src": "5246:117:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5261:15:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5275:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5265:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5290:63:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5325:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5336:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5321:3:26"
},
"nodeType": "YulFunctionCall",
"src": "5321:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5345:7:26"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "5300:20:26"
},
"nodeType": "YulFunctionCall",
"src": "5300:53:26"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5290:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "5373:118:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5388:16:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5402:2:26",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5392:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5418:63:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5453:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5464:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5449:3:26"
},
"nodeType": "YulFunctionCall",
"src": "5449:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5473:7:26"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "5428:20:26"
},
"nodeType": "YulFunctionCall",
"src": "5428:53:26"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "5418:6:26"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5069:9:26",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5080:7:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5092:6:26",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "5100:6:26",
"type": ""
}
],
"src": "5024:474:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5604:519:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5650:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "5652:77:26"
},
"nodeType": "YulFunctionCall",
"src": "5652:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "5652:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5625:7:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5634:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5621:3:26"
},
"nodeType": "YulFunctionCall",
"src": "5621:23:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5646:2:26",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5617:3:26"
},
"nodeType": "YulFunctionCall",
"src": "5617:32:26"
},
"nodeType": "YulIf",
"src": "5614:119:26"
},
{
"nodeType": "YulBlock",
"src": "5743:117:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5758:15:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5772:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5762:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5787:63:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5822:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5833:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5818:3:26"
},
"nodeType": "YulFunctionCall",
"src": "5818:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5842:7:26"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "5797:20:26"
},
"nodeType": "YulFunctionCall",
"src": "5797:53:26"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5787:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "5870:118:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5885:16:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5899:2:26",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5889:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5915:63:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5950:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5961:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5946:3:26"
},
"nodeType": "YulFunctionCall",
"src": "5946:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5970:7:26"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "5925:20:26"
},
"nodeType": "YulFunctionCall",
"src": "5925:53:26"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "5915:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "5998:118:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6013:16:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6027:2:26",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6017:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6043:63:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6078:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6089:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6074:3:26"
},
"nodeType": "YulFunctionCall",
"src": "6074:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6098:7:26"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "6053:20:26"
},
"nodeType": "YulFunctionCall",
"src": "6053:53:26"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "6043:6:26"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5558:9:26",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5569:7:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5581:6:26",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "5589:6:26",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "5597:6:26",
"type": ""
}
],
"src": "5504:619:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6255:817:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "6302:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "6304:77:26"
},
"nodeType": "YulFunctionCall",
"src": "6304:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "6304:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6276:7:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6285:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "6272:3:26"
},
"nodeType": "YulFunctionCall",
"src": "6272:23:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6297:3:26",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "6268:3:26"
},
"nodeType": "YulFunctionCall",
"src": "6268:33:26"
},
"nodeType": "YulIf",
"src": "6265:120:26"
},
{
"nodeType": "YulBlock",
"src": "6395:117:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6410:15:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6424:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6414:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6439:63:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6474:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6485:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6470:3:26"
},
"nodeType": "YulFunctionCall",
"src": "6470:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6494:7:26"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "6449:20:26"
},
"nodeType": "YulFunctionCall",
"src": "6449:53:26"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6439:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "6522:118:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6537:16:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6551:2:26",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6541:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6567:63:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6602:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6613:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6598:3:26"
},
"nodeType": "YulFunctionCall",
"src": "6598:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6622:7:26"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "6577:20:26"
},
"nodeType": "YulFunctionCall",
"src": "6577:53:26"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "6567:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "6650:118:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6665:16:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "6679:2:26",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6669:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "6695:63:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6730:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6741:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6726:3:26"
},
"nodeType": "YulFunctionCall",
"src": "6726:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6750:7:26"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "6705:20:26"
},
"nodeType": "YulFunctionCall",
"src": "6705:53:26"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "6695:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "6778:287:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6793:46:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6824:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6835:2:26",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6820:3:26"
},
"nodeType": "YulFunctionCall",
"src": "6820:18:26"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "6807:12:26"
},
"nodeType": "YulFunctionCall",
"src": "6807:32:26"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "6797:6:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6886:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "6888:77:26"
},
"nodeType": "YulFunctionCall",
"src": "6888:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "6888:79:26"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6858:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6866:18:26",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "6855:2:26"
},
"nodeType": "YulFunctionCall",
"src": "6855:30:26"
},
"nodeType": "YulIf",
"src": "6852:117:26"
},
{
"nodeType": "YulAssignment",
"src": "6983:72:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7027:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "7038:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7023:3:26"
},
"nodeType": "YulFunctionCall",
"src": "7023:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "7047:7:26"
}
],
"functionName": {
"name": "abi_decode_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "6993:29:26"
},
"nodeType": "YulFunctionCall",
"src": "6993:62:26"
},
"variableNames": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "6983:6:26"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6201:9:26",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "6212:7:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6224:6:26",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "6232:6:26",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "6240:6:26",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "6248:6:26",
"type": ""
}
],
"src": "6129:943:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7158:388:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "7204:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "7206:77:26"
},
"nodeType": "YulFunctionCall",
"src": "7206:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "7206:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "7179:7:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7188:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "7175:3:26"
},
"nodeType": "YulFunctionCall",
"src": "7175:23:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7200:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "7171:3:26"
},
"nodeType": "YulFunctionCall",
"src": "7171:32:26"
},
"nodeType": "YulIf",
"src": "7168:119:26"
},
{
"nodeType": "YulBlock",
"src": "7297:117:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7312:15:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "7326:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "7316:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "7341:63:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7376:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "7387:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7372:3:26"
},
"nodeType": "YulFunctionCall",
"src": "7372:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "7396:7:26"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "7351:20:26"
},
"nodeType": "YulFunctionCall",
"src": "7351:53:26"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7341:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "7424:115:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7439:16:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "7453:2:26",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "7443:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "7469:60:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7501:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "7512:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7497:3:26"
},
"nodeType": "YulFunctionCall",
"src": "7497:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "7521:7:26"
}
],
"functionName": {
"name": "abi_decode_t_bool",
"nodeType": "YulIdentifier",
"src": "7479:17:26"
},
"nodeType": "YulFunctionCall",
"src": "7479:50:26"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "7469:6:26"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7120:9:26",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "7131:7:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7143:6:26",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "7151:6:26",
"type": ""
}
],
"src": "7078:468:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7635:391:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "7681:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "7683:77:26"
},
"nodeType": "YulFunctionCall",
"src": "7683:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "7683:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "7656:7:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7665:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "7652:3:26"
},
"nodeType": "YulFunctionCall",
"src": "7652:23:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7677:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "7648:3:26"
},
"nodeType": "YulFunctionCall",
"src": "7648:32:26"
},
"nodeType": "YulIf",
"src": "7645:119:26"
},
{
"nodeType": "YulBlock",
"src": "7774:117:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7789:15:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "7803:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "7793:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "7818:63:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7853:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "7864:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7849:3:26"
},
"nodeType": "YulFunctionCall",
"src": "7849:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "7873:7:26"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "7828:20:26"
},
"nodeType": "YulFunctionCall",
"src": "7828:53:26"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7818:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "7901:118:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7916:16:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "7930:2:26",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "7920:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "7946:63:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7981:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "7992:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7977:3:26"
},
"nodeType": "YulFunctionCall",
"src": "7977:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8001:7:26"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "7956:20:26"
},
"nodeType": "YulFunctionCall",
"src": "7956:53:26"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "7946:6:26"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7597:9:26",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "7608:7:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7620:6:26",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "7628:6:26",
"type": ""
}
],
"src": "7552:474:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8114:390:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "8160:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "8162:77:26"
},
"nodeType": "YulFunctionCall",
"src": "8162:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "8162:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8135:7:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8144:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "8131:3:26"
},
"nodeType": "YulFunctionCall",
"src": "8131:23:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8156:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "8127:3:26"
},
"nodeType": "YulFunctionCall",
"src": "8127:32:26"
},
"nodeType": "YulIf",
"src": "8124:119:26"
},
{
"nodeType": "YulBlock",
"src": "8253:117:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8268:15:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8282:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "8272:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "8297:63:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8332:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8343:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8328:3:26"
},
"nodeType": "YulFunctionCall",
"src": "8328:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8352:7:26"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "8307:20:26"
},
"nodeType": "YulFunctionCall",
"src": "8307:53:26"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8297:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "8380:117:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8395:16:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8409:2:26",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "8399:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "8425:62:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8459:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8470:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8455:3:26"
},
"nodeType": "YulFunctionCall",
"src": "8455:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8479:7:26"
}
],
"functionName": {
"name": "abi_decode_t_uint32",
"nodeType": "YulIdentifier",
"src": "8435:19:26"
},
"nodeType": "YulFunctionCall",
"src": "8435:52:26"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "8425:6:26"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8076:9:26",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "8087:7:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8099:6:26",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "8107:6:26",
"type": ""
}
],
"src": "8032:472:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8642:760:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "8688:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "8690:77:26"
},
"nodeType": "YulFunctionCall",
"src": "8690:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "8690:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8663:7:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8672:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "8659:3:26"
},
"nodeType": "YulFunctionCall",
"src": "8659:23:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8684:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "8655:3:26"
},
"nodeType": "YulFunctionCall",
"src": "8655:32:26"
},
"nodeType": "YulIf",
"src": "8652:119:26"
},
{
"nodeType": "YulBlock",
"src": "8781:302:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8796:45:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8827:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8838:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8823:3:26"
},
"nodeType": "YulFunctionCall",
"src": "8823:17:26"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "8810:12:26"
},
"nodeType": "YulFunctionCall",
"src": "8810:31:26"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "8800:6:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "8888:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "8890:77:26"
},
"nodeType": "YulFunctionCall",
"src": "8890:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "8890:79:26"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8860:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8868:18:26",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "8857:2:26"
},
"nodeType": "YulFunctionCall",
"src": "8857:30:26"
},
"nodeType": "YulIf",
"src": "8854:117:26"
},
{
"nodeType": "YulAssignment",
"src": "8985:88:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9045:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "9056:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9041:3:26"
},
"nodeType": "YulFunctionCall",
"src": "9041:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "9065:7:26"
}
],
"functionName": {
"name": "abi_decode_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "8995:45:26"
},
"nodeType": "YulFunctionCall",
"src": "8995:78:26"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8985:6:26"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "9093:302:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "9108:46:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9139:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9150:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9135:3:26"
},
"nodeType": "YulFunctionCall",
"src": "9135:18:26"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "9122:12:26"
},
"nodeType": "YulFunctionCall",
"src": "9122:32:26"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "9112:6:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9201:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "9203:77:26"
},
"nodeType": "YulFunctionCall",
"src": "9203:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "9203:79:26"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "9173:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9181:18:26",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "9170:2:26"
},
"nodeType": "YulFunctionCall",
"src": "9170:30:26"
},
"nodeType": "YulIf",
"src": "9167:117:26"
},
{
"nodeType": "YulAssignment",
"src": "9298:87:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9357:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "9368:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9353:3:26"
},
"nodeType": "YulFunctionCall",
"src": "9353:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "9377:7:26"
}
],
"functionName": {
"name": "abi_decode_t_array$_t_uint32_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "9308:44:26"
},
"nodeType": "YulFunctionCall",
"src": "9308:77:26"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "9298:6:26"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint32_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8604:9:26",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "8615:7:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8627:6:26",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "8635:6:26",
"type": ""
}
],
"src": "8510:892:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9473:262:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "9519:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "9521:77:26"
},
"nodeType": "YulFunctionCall",
"src": "9521:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "9521:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "9494:7:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9503:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "9490:3:26"
},
"nodeType": "YulFunctionCall",
"src": "9490:23:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9515:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "9486:3:26"
},
"nodeType": "YulFunctionCall",
"src": "9486:32:26"
},
"nodeType": "YulIf",
"src": "9483:119:26"
},
{
"nodeType": "YulBlock",
"src": "9612:116:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "9627:15:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "9641:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "9631:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "9656:62:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9690:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "9701:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9686:3:26"
},
"nodeType": "YulFunctionCall",
"src": "9686:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "9710:7:26"
}
],
"functionName": {
"name": "abi_decode_t_bytes4",
"nodeType": "YulIdentifier",
"src": "9666:19:26"
},
"nodeType": "YulFunctionCall",
"src": "9666:52:26"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "9656:6:26"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9443:9:26",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "9454:7:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "9466:6:26",
"type": ""
}
],
"src": "9408:327:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9817:273:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "9863:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "9865:77:26"
},
"nodeType": "YulFunctionCall",
"src": "9865:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "9865:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "9838:7:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "9847:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "9834:3:26"
},
"nodeType": "YulFunctionCall",
"src": "9834:23:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9859:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "9830:3:26"
},
"nodeType": "YulFunctionCall",
"src": "9830:32:26"
},
"nodeType": "YulIf",
"src": "9827:119:26"
},
{
"nodeType": "YulBlock",
"src": "9956:127:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "9971:15:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "9985:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "9975:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "10000:73:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10045:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "10056:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10041:3:26"
},
"nodeType": "YulFunctionCall",
"src": "10041:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "10065:7:26"
}
],
"functionName": {
"name": "abi_decode_t_bytes4_fromMemory",
"nodeType": "YulIdentifier",
"src": "10010:30:26"
},
"nodeType": "YulFunctionCall",
"src": "10010:63:26"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "10000:6:26"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes4_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "9787:9:26",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "9798:7:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "9810:6:26",
"type": ""
}
],
"src": "9741:349:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10172:433:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "10218:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "10220:77:26"
},
"nodeType": "YulFunctionCall",
"src": "10220:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "10220:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "10193:7:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10202:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "10189:3:26"
},
"nodeType": "YulFunctionCall",
"src": "10189:23:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10214:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "10185:3:26"
},
"nodeType": "YulFunctionCall",
"src": "10185:32:26"
},
"nodeType": "YulIf",
"src": "10182:119:26"
},
{
"nodeType": "YulBlock",
"src": "10311:287:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "10326:45:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10357:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10368:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10353:3:26"
},
"nodeType": "YulFunctionCall",
"src": "10353:17:26"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "10340:12:26"
},
"nodeType": "YulFunctionCall",
"src": "10340:31:26"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "10330:6:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "10418:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "10420:77:26"
},
"nodeType": "YulFunctionCall",
"src": "10420:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "10420:79:26"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "10390:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10398:18:26",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "10387:2:26"
},
"nodeType": "YulFunctionCall",
"src": "10387:30:26"
},
"nodeType": "YulIf",
"src": "10384:117:26"
},
{
"nodeType": "YulAssignment",
"src": "10515:73:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10560:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "10571:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10556:3:26"
},
"nodeType": "YulFunctionCall",
"src": "10556:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "10580:7:26"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "10525:30:26"
},
"nodeType": "YulFunctionCall",
"src": "10525:63:26"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "10515:6:26"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10142:9:26",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "10153:7:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "10165:6:26",
"type": ""
}
],
"src": "10096:509:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10677:263:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "10723:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "10725:77:26"
},
"nodeType": "YulFunctionCall",
"src": "10725:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "10725:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "10698:7:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10707:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "10694:3:26"
},
"nodeType": "YulFunctionCall",
"src": "10694:23:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10719:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "10690:3:26"
},
"nodeType": "YulFunctionCall",
"src": "10690:32:26"
},
"nodeType": "YulIf",
"src": "10687:119:26"
},
{
"nodeType": "YulBlock",
"src": "10816:117:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "10831:15:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "10845:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "10835:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "10860:63:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10895:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "10906:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10891:3:26"
},
"nodeType": "YulFunctionCall",
"src": "10891:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "10915:7:26"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "10870:20:26"
},
"nodeType": "YulFunctionCall",
"src": "10870:53:26"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "10860:6:26"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10647:9:26",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "10658:7:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "10670:6:26",
"type": ""
}
],
"src": "10611:329:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11011:262:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "11057:83:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "11059:77:26"
},
"nodeType": "YulFunctionCall",
"src": "11059:79:26"
},
"nodeType": "YulExpressionStatement",
"src": "11059:79:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "11032:7:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11041:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "11028:3:26"
},
"nodeType": "YulFunctionCall",
"src": "11028:23:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11053:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "11024:3:26"
},
"nodeType": "YulFunctionCall",
"src": "11024:32:26"
},
"nodeType": "YulIf",
"src": "11021:119:26"
},
{
"nodeType": "YulBlock",
"src": "11150:116:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "11165:15:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "11179:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "11169:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "11194:62:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "11228:9:26"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "11239:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11224:3:26"
},
"nodeType": "YulFunctionCall",
"src": "11224:22:26"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "11248:7:26"
}
],
"functionName": {
"name": "abi_decode_t_uint32",
"nodeType": "YulIdentifier",
"src": "11204:19:26"
},
"nodeType": "YulFunctionCall",
"src": "11204:52:26"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11194:6:26"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10981:9:26",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "10992:7:26",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11004:6:26",
"type": ""
}
],
"src": "10946:327:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11359:99:26",
"statements": [
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11403:6:26"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11411:3:26"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "11369:33:26"
},
"nodeType": "YulFunctionCall",
"src": "11369:46:26"
},
"nodeType": "YulExpressionStatement",
"src": "11369:46:26"
},
{
"nodeType": "YulAssignment",
"src": "11424:28:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11442:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11447:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11438:3:26"
},
"nodeType": "YulFunctionCall",
"src": "11438:14:26"
},
"variableNames": [
{
"name": "updatedPos",
"nodeType": "YulIdentifier",
"src": "11424:10:26"
}
]
}
]
},
"name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11332:6:26",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "11340:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "updatedPos",
"nodeType": "YulTypedName",
"src": "11348:10:26",
"type": ""
}
],
"src": "11279:179:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11529:53:26",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11546:3:26"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11569:5:26"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "11551:17:26"
},
"nodeType": "YulFunctionCall",
"src": "11551:24:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11539:6:26"
},
"nodeType": "YulFunctionCall",
"src": "11539:37:26"
},
"nodeType": "YulExpressionStatement",
"src": "11539:37:26"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11517:5:26",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "11524:3:26",
"type": ""
}
],
"src": "11464:118:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11671:74:26",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11688:3:26"
},
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11731:5:26"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "11713:17:26"
},
"nodeType": "YulFunctionCall",
"src": "11713:24:26"
}
],
"functionName": {
"name": "leftAlign_t_address",
"nodeType": "YulIdentifier",
"src": "11693:19:26"
},
"nodeType": "YulFunctionCall",
"src": "11693:45:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "11681:6:26"
},
"nodeType": "YulFunctionCall",
"src": "11681:58:26"
},
"nodeType": "YulExpressionStatement",
"src": "11681:58:26"
}
]
},
"name": "abi_encode_t_address_to_t_address_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11659:5:26",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "11666:3:26",
"type": ""
}
],
"src": "11588:157:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11905:608:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "11915:68:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11977:5:26"
}
],
"functionName": {
"name": "array_length_t_array$_t_uint256_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "11929:47:26"
},
"nodeType": "YulFunctionCall",
"src": "11929:54:26"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "11919:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "11992:93:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12073:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "12078:6:26"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "11999:73:26"
},
"nodeType": "YulFunctionCall",
"src": "11999:86:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11992:3:26"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "12094:71:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "12159:5:26"
}
],
"functionName": {
"name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "12109:49:26"
},
"nodeType": "YulFunctionCall",
"src": "12109:56:26"
},
"variables": [
{
"name": "baseRef",
"nodeType": "YulTypedName",
"src": "12098:7:26",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "12174:21:26",
"value": {
"name": "baseRef",
"nodeType": "YulIdentifier",
"src": "12188:7:26"
},
"variables": [
{
"name": "srcPtr",
"nodeType": "YulTypedName",
"src": "12178:6:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "12264:224:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "12278:34:26",
"value": {
"arguments": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "12305:6:26"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "12299:5:26"
},
"nodeType": "YulFunctionCall",
"src": "12299:13:26"
},
"variables": [
{
"name": "elementValue0",
"nodeType": "YulTypedName",
"src": "12282:13:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "12325:70:26",
"value": {
"arguments": [
{
"name": "elementValue0",
"nodeType": "YulIdentifier",
"src": "12376:13:26"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12391:3:26"
}
],
"functionName": {
"name": "abi_encodeUpdatedPos_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "12332:43:26"
},
"nodeType": "YulFunctionCall",
"src": "12332:63:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12325:3:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "12408:70:26",
"value": {
"arguments": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "12471:6:26"
}
],
"functionName": {
"name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr",
"nodeType": "YulIdentifier",
"src": "12418:52:26"
},
"nodeType": "YulFunctionCall",
"src": "12418:60:26"
},
"variableNames": [
{
"name": "srcPtr",
"nodeType": "YulIdentifier",
"src": "12408:6:26"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "12226:1:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "12229:6:26"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "12223:2:26"
},
"nodeType": "YulFunctionCall",
"src": "12223:13:26"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "12237:18:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12239:14:26",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "12248:1:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12251:1:26",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12244:3:26"
},
"nodeType": "YulFunctionCall",
"src": "12244:9:26"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "12239:1:26"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "12208:14:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "12210:10:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "12219:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "12214:1:26",
"type": ""
}
]
}
]
},
"src": "12204:284:26"
},
{
"nodeType": "YulAssignment",
"src": "12497:10:26",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12504:3:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "12497:3:26"
}
]
}
]
},
"name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11884:5:26",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "11891:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "11900:3:26",
"type": ""
}
],
"src": "11781:732:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12578:50:26",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12595:3:26"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "12615:5:26"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "12600:14:26"
},
"nodeType": "YulFunctionCall",
"src": "12600:21:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "12588:6:26"
},
"nodeType": "YulFunctionCall",
"src": "12588:34:26"
},
"nodeType": "YulExpressionStatement",
"src": "12588:34:26"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "12566:5:26",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "12573:3:26",
"type": ""
}
],
"src": "12519:109:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12724:270:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "12734:52:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "12780:5:26"
}
],
"functionName": {
"name": "array_length_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "12748:31:26"
},
"nodeType": "YulFunctionCall",
"src": "12748:38:26"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "12738:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "12795:77:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12860:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "12865:6:26"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "12802:57:26"
},
"nodeType": "YulFunctionCall",
"src": "12802:70:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12795:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "12907:5:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12914:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12903:3:26"
},
"nodeType": "YulFunctionCall",
"src": "12903:16:26"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12921:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "12926:6:26"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "12881:21:26"
},
"nodeType": "YulFunctionCall",
"src": "12881:52:26"
},
"nodeType": "YulExpressionStatement",
"src": "12881:52:26"
},
{
"nodeType": "YulAssignment",
"src": "12942:46:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12953:3:26"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "12980:6:26"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "12958:21:26"
},
"nodeType": "YulFunctionCall",
"src": "12958:29:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12949:3:26"
},
"nodeType": "YulFunctionCall",
"src": "12949:39:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "12942:3:26"
}
]
}
]
},
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "12705:5:26",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "12712:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "12720:3:26",
"type": ""
}
],
"src": "12634:360:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13092:272:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "13102:53:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "13149:5:26"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "13116:32:26"
},
"nodeType": "YulFunctionCall",
"src": "13116:39:26"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "13106:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "13164:78:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13230:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "13235:6:26"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "13171:58:26"
},
"nodeType": "YulFunctionCall",
"src": "13171:71:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13164:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "13277:5:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13284:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13273:3:26"
},
"nodeType": "YulFunctionCall",
"src": "13273:16:26"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13291:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "13296:6:26"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "13251:21:26"
},
"nodeType": "YulFunctionCall",
"src": "13251:52:26"
},
"nodeType": "YulExpressionStatement",
"src": "13251:52:26"
},
{
"nodeType": "YulAssignment",
"src": "13312:46:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13323:3:26"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "13350:6:26"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "13328:21:26"
},
"nodeType": "YulFunctionCall",
"src": "13328:29:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13319:3:26"
},
"nodeType": "YulFunctionCall",
"src": "13319:39:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "13312:3:26"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "13073:5:26",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "13080:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "13088:3:26",
"type": ""
}
],
"src": "13000:364:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13480:267:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "13490:53:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "13537:5:26"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "13504:32:26"
},
"nodeType": "YulFunctionCall",
"src": "13504:39:26"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "13494:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "13552:96:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13636:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "13641:6:26"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "13559:76:26"
},
"nodeType": "YulFunctionCall",
"src": "13559:89:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13552:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "13683:5:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13690:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13679:3:26"
},
"nodeType": "YulFunctionCall",
"src": "13679:16:26"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13697:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "13702:6:26"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "13657:21:26"
},
"nodeType": "YulFunctionCall",
"src": "13657:52:26"
},
"nodeType": "YulExpressionStatement",
"src": "13657:52:26"
},
{
"nodeType": "YulAssignment",
"src": "13718:23:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13729:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "13734:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13725:3:26"
},
"nodeType": "YulFunctionCall",
"src": "13725:16:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "13718:3:26"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "13461:5:26",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "13468:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "13476:3:26",
"type": ""
}
],
"src": "13370:377:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13884:738:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "13894:29:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "13917:5:26"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "13911:5:26"
},
"nodeType": "YulFunctionCall",
"src": "13911:12:26"
},
"variables": [
{
"name": "slotValue",
"nodeType": "YulTypedName",
"src": "13898:9:26",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "13932:50:26",
"value": {
"arguments": [
{
"name": "slotValue",
"nodeType": "YulIdentifier",
"src": "13972:9:26"
}
],
"functionName": {
"name": "extract_byte_array_length",
"nodeType": "YulIdentifier",
"src": "13946:25:26"
},
"nodeType": "YulFunctionCall",
"src": "13946:36:26"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "13936:6:26",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "13991:96:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14075:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "14080:6:26"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "13998:76:26"
},
"nodeType": "YulFunctionCall",
"src": "13998:89:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13991:3:26"
}
]
},
{
"cases": [
{
"body": {
"nodeType": "YulBlock",
"src": "14136:130:26",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14189:3:26"
},
{
"arguments": [
{
"name": "slotValue",
"nodeType": "YulIdentifier",
"src": "14198:9:26"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14213:4:26",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "14209:3:26"
},
"nodeType": "YulFunctionCall",
"src": "14209:9:26"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "14194:3:26"
},
"nodeType": "YulFunctionCall",
"src": "14194:25:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14182:6:26"
},
"nodeType": "YulFunctionCall",
"src": "14182:38:26"
},
"nodeType": "YulExpressionStatement",
"src": "14182:38:26"
},
{
"nodeType": "YulAssignment",
"src": "14233:23:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14244:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "14249:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14240:3:26"
},
"nodeType": "YulFunctionCall",
"src": "14240:16:26"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "14233:3:26"
}
]
}
]
},
"nodeType": "YulCase",
"src": "14129:137:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "14134:1:26",
"type": "",
"value": "0"
}
},
{
"body": {
"nodeType": "YulBlock",
"src": "14282:334:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "14327:53:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "14374:5:26"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "14342:31:26"
},
"nodeType": "YulFunctionCall",
"src": "14342:38:26"
},
"variables": [
{
"name": "dataPos",
"nodeType": "YulTypedName",
"src": "14331:7:26",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "14393:10:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "14402:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "14397:1:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "14460:110:26",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14489:3:26"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "14494:1:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14485:3:26"
},
"nodeType": "YulFunctionCall",
"src": "14485:11:26"
},
{
"arguments": [
{
"name": "dataPos",
"nodeType": "YulIdentifier",
"src": "14504:7:26"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "14498:5:26"
},
"nodeType": "YulFunctionCall",
"src": "14498:14:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14478:6:26"
},
"nodeType": "YulFunctionCall",
"src": "14478:35:26"
},
"nodeType": "YulExpressionStatement",
"src": "14478:35:26"
},
{
"nodeType": "YulAssignment",
"src": "14530:26:26",
"value": {
"arguments": [
{
"name": "dataPos",
"nodeType": "YulIdentifier",
"src": "14545:7:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14554:1:26",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14541:3:26"
},
"nodeType": "YulFunctionCall",
"src": "14541:15:26"
},
"variableNames": [
{
"name": "dataPos",
"nodeType": "YulIdentifier",
"src": "14530:7:26"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "14427:1:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "14430:6:26"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "14424:2:26"
},
"nodeType": "YulFunctionCall",
"src": "14424:13:26"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "14438:21:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14440:17:26",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "14449:1:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14452:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14445:3:26"
},
"nodeType": "YulFunctionCall",
"src": "14445:12:26"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "14440:1:26"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "14420:3:26",
"statements": []
},
"src": "14416:154:26"
},
{
"nodeType": "YulAssignment",
"src": "14583:23:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14594:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "14599:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14590:3:26"
},
"nodeType": "YulFunctionCall",
"src": "14590:16:26"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "14583:3:26"
}
]
}
]
},
"nodeType": "YulCase",
"src": "14275:341:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "14280:1:26",
"type": "",
"value": "1"
}
}
],
"expression": {
"arguments": [
{
"name": "slotValue",
"nodeType": "YulIdentifier",
"src": "14107:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14118:1:26",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "14103:3:26"
},
"nodeType": "YulFunctionCall",
"src": "14103:17:26"
},
"nodeType": "YulSwitch",
"src": "14096:520:26"
}
]
},
"name": "abi_encode_t_string_storage_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "13865:5:26",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "13872:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "13880:3:26",
"type": ""
}
],
"src": "13777:845:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14774:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14784:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14850:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14855:2:26",
"type": "",
"value": "43"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "14791:58:26"
},
"nodeType": "YulFunctionCall",
"src": "14791:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14784:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14956:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c",
"nodeType": "YulIdentifier",
"src": "14867:88:26"
},
"nodeType": "YulFunctionCall",
"src": "14867:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "14867:93:26"
},
{
"nodeType": "YulAssignment",
"src": "14969:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14980:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14985:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14976:3:26"
},
"nodeType": "YulFunctionCall",
"src": "14976:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "14969:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "14762:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "14770:3:26",
"type": ""
}
],
"src": "14628:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15146:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15156:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15222:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15227:2:26",
"type": "",
"value": "50"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "15163:58:26"
},
"nodeType": "YulFunctionCall",
"src": "15163:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15156:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15328:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
"nodeType": "YulIdentifier",
"src": "15239:88:26"
},
"nodeType": "YulFunctionCall",
"src": "15239:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "15239:93:26"
},
{
"nodeType": "YulAssignment",
"src": "15341:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15352:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15357:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15348:3:26"
},
"nodeType": "YulFunctionCall",
"src": "15348:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "15341:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "15134:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "15142:3:26",
"type": ""
}
],
"src": "15000:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15518:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15528:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15594:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15599:2:26",
"type": "",
"value": "29"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "15535:58:26"
},
"nodeType": "YulFunctionCall",
"src": "15535:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15528:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15700:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_217ec19cffbac4e5e1fdbc4ed3ac5b10b80cf8f1a2d4b6f18592eaf7b9e41c76",
"nodeType": "YulIdentifier",
"src": "15611:88:26"
},
"nodeType": "YulFunctionCall",
"src": "15611:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "15611:93:26"
},
{
"nodeType": "YulAssignment",
"src": "15713:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15724:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15729:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15720:3:26"
},
"nodeType": "YulFunctionCall",
"src": "15720:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "15713:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_217ec19cffbac4e5e1fdbc4ed3ac5b10b80cf8f1a2d4b6f18592eaf7b9e41c76_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "15506:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "15514:3:26",
"type": ""
}
],
"src": "15372:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15890:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15900:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15966:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15971:2:26",
"type": "",
"value": "38"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "15907:58:26"
},
"nodeType": "YulFunctionCall",
"src": "15907:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15900:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16072:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
"nodeType": "YulIdentifier",
"src": "15983:88:26"
},
"nodeType": "YulFunctionCall",
"src": "15983:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "15983:93:26"
},
{
"nodeType": "YulAssignment",
"src": "16085:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16096:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16101:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16092:3:26"
},
"nodeType": "YulFunctionCall",
"src": "16092:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "16085:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "15878:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "15886:3:26",
"type": ""
}
],
"src": "15744:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16262:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "16272:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16338:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16343:2:26",
"type": "",
"value": "56"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "16279:58:26"
},
"nodeType": "YulFunctionCall",
"src": "16279:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16272:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16444:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_25ee9ded3380469d591e0c813b44286169495c0a471ee7cc12ba48da1b347e10",
"nodeType": "YulIdentifier",
"src": "16355:88:26"
},
"nodeType": "YulFunctionCall",
"src": "16355:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "16355:93:26"
},
{
"nodeType": "YulAssignment",
"src": "16457:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16468:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16473:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16464:3:26"
},
"nodeType": "YulFunctionCall",
"src": "16464:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "16457:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_25ee9ded3380469d591e0c813b44286169495c0a471ee7cc12ba48da1b347e10_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "16250:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "16258:3:26",
"type": ""
}
],
"src": "16116:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16634:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "16644:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16710:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16715:2:26",
"type": "",
"value": "28"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "16651:58:26"
},
"nodeType": "YulFunctionCall",
"src": "16651:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16644:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16816:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
"nodeType": "YulIdentifier",
"src": "16727:88:26"
},
"nodeType": "YulFunctionCall",
"src": "16727:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "16727:93:26"
},
{
"nodeType": "YulAssignment",
"src": "16829:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16840:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16845:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16836:3:26"
},
"nodeType": "YulFunctionCall",
"src": "16836:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "16829:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "16622:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "16630:3:26",
"type": ""
}
],
"src": "16488:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17006:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "17016:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17082:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17087:2:26",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "17023:58:26"
},
"nodeType": "YulFunctionCall",
"src": "17023:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17016:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17188:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_3b3d7b38305edb8575fc735ff9f0e77e23661a5bb43558d5ce55afd7c820bde4",
"nodeType": "YulIdentifier",
"src": "17099:88:26"
},
"nodeType": "YulFunctionCall",
"src": "17099:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "17099:93:26"
},
{
"nodeType": "YulAssignment",
"src": "17201:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17212:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17217:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17208:3:26"
},
"nodeType": "YulFunctionCall",
"src": "17208:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "17201:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_3b3d7b38305edb8575fc735ff9f0e77e23661a5bb43558d5ce55afd7c820bde4_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "16994:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "17002:3:26",
"type": ""
}
],
"src": "16860:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17378:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "17388:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17454:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17459:2:26",
"type": "",
"value": "36"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "17395:58:26"
},
"nodeType": "YulFunctionCall",
"src": "17395:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17388:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17560:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
"nodeType": "YulIdentifier",
"src": "17471:88:26"
},
"nodeType": "YulFunctionCall",
"src": "17471:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "17471:93:26"
},
{
"nodeType": "YulAssignment",
"src": "17573:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17584:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17589:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17580:3:26"
},
"nodeType": "YulFunctionCall",
"src": "17580:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "17573:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "17366:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "17374:3:26",
"type": ""
}
],
"src": "17232:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17750:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "17760:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17826:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17831:2:26",
"type": "",
"value": "25"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "17767:58:26"
},
"nodeType": "YulFunctionCall",
"src": "17767:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17760:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17932:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
"nodeType": "YulIdentifier",
"src": "17843:88:26"
},
"nodeType": "YulFunctionCall",
"src": "17843:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "17843:93:26"
},
{
"nodeType": "YulAssignment",
"src": "17945:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17956:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17961:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17952:3:26"
},
"nodeType": "YulFunctionCall",
"src": "17952:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "17945:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "17738:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "17746:3:26",
"type": ""
}
],
"src": "17604:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18122:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "18132:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18198:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18203:2:26",
"type": "",
"value": "44"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "18139:58:26"
},
"nodeType": "YulFunctionCall",
"src": "18139:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18132:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18304:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c",
"nodeType": "YulIdentifier",
"src": "18215:88:26"
},
"nodeType": "YulFunctionCall",
"src": "18215:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "18215:93:26"
},
{
"nodeType": "YulAssignment",
"src": "18317:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18328:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18333:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18324:3:26"
},
"nodeType": "YulFunctionCall",
"src": "18324:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "18317:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "18110:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "18118:3:26",
"type": ""
}
],
"src": "17976:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18494:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "18504:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18570:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18575:2:26",
"type": "",
"value": "56"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "18511:58:26"
},
"nodeType": "YulFunctionCall",
"src": "18511:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18504:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18676:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d",
"nodeType": "YulIdentifier",
"src": "18587:88:26"
},
"nodeType": "YulFunctionCall",
"src": "18587:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "18587:93:26"
},
{
"nodeType": "YulAssignment",
"src": "18689:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18700:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18705:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18696:3:26"
},
"nodeType": "YulFunctionCall",
"src": "18696:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "18689:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "18482:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "18490:3:26",
"type": ""
}
],
"src": "18348:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18866:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "18876:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18942:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18947:2:26",
"type": "",
"value": "42"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "18883:58:26"
},
"nodeType": "YulFunctionCall",
"src": "18883:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "18876:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19048:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba",
"nodeType": "YulIdentifier",
"src": "18959:88:26"
},
"nodeType": "YulFunctionCall",
"src": "18959:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "18959:93:26"
},
{
"nodeType": "YulAssignment",
"src": "19061:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19072:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19077:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19068:3:26"
},
"nodeType": "YulFunctionCall",
"src": "19068:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "19061:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "18854:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "18862:3:26",
"type": ""
}
],
"src": "18720:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19238:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19248:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19314:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19319:2:26",
"type": "",
"value": "41"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "19255:58:26"
},
"nodeType": "YulFunctionCall",
"src": "19255:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19248:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19420:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397",
"nodeType": "YulIdentifier",
"src": "19331:88:26"
},
"nodeType": "YulFunctionCall",
"src": "19331:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "19331:93:26"
},
{
"nodeType": "YulAssignment",
"src": "19433:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19444:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19449:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19440:3:26"
},
"nodeType": "YulFunctionCall",
"src": "19440:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "19433:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "19226:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "19234:3:26",
"type": ""
}
],
"src": "19092:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19610:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19620:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19686:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19691:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "19627:58:26"
},
"nodeType": "YulFunctionCall",
"src": "19627:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19620:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19792:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
"nodeType": "YulIdentifier",
"src": "19703:88:26"
},
"nodeType": "YulFunctionCall",
"src": "19703:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "19703:93:26"
},
{
"nodeType": "YulAssignment",
"src": "19805:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19816:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19821:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19812:3:26"
},
"nodeType": "YulFunctionCall",
"src": "19812:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "19805:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "19598:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "19606:3:26",
"type": ""
}
],
"src": "19464:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19982:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19992:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20058:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20063:2:26",
"type": "",
"value": "28"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "19999:58:26"
},
"nodeType": "YulFunctionCall",
"src": "19999:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19992:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20164:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_8d0a499c1dc5d8ed8c32edf19002261686f14e231a54e778311a2da765ffc981",
"nodeType": "YulIdentifier",
"src": "20075:88:26"
},
"nodeType": "YulFunctionCall",
"src": "20075:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "20075:93:26"
},
{
"nodeType": "YulAssignment",
"src": "20177:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20188:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20193:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20184:3:26"
},
"nodeType": "YulFunctionCall",
"src": "20184:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "20177:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_8d0a499c1dc5d8ed8c32edf19002261686f14e231a54e778311a2da765ffc981_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "19970:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "19978:3:26",
"type": ""
}
],
"src": "19836:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20354:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "20364:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20430:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20435:2:26",
"type": "",
"value": "44"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "20371:58:26"
},
"nodeType": "YulFunctionCall",
"src": "20371:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20364:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20536:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d",
"nodeType": "YulIdentifier",
"src": "20447:88:26"
},
"nodeType": "YulFunctionCall",
"src": "20447:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "20447:93:26"
},
{
"nodeType": "YulAssignment",
"src": "20549:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20560:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20565:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20556:3:26"
},
"nodeType": "YulFunctionCall",
"src": "20556:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "20549:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "20342:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "20350:3:26",
"type": ""
}
],
"src": "20208:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20744:236:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "20754:91:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20838:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20843:1:26",
"type": "",
"value": "5"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "20761:76:26"
},
"nodeType": "YulFunctionCall",
"src": "20761:84:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20754:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20943:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_94311adc0a0cd4e10be11b23bd4316b8cffa4adf693e8f96f5c075aa439a7972",
"nodeType": "YulIdentifier",
"src": "20854:88:26"
},
"nodeType": "YulFunctionCall",
"src": "20854:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "20854:93:26"
},
{
"nodeType": "YulAssignment",
"src": "20956:18:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "20967:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20972:1:26",
"type": "",
"value": "5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20963:3:26"
},
"nodeType": "YulFunctionCall",
"src": "20963:11:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "20956:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_94311adc0a0cd4e10be11b23bd4316b8cffa4adf693e8f96f5c075aa439a7972_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "20732:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "20740:3:26",
"type": ""
}
],
"src": "20580:400:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21132:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "21142:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21208:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21213:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "21149:58:26"
},
"nodeType": "YulFunctionCall",
"src": "21149:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21142:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21314:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
"nodeType": "YulIdentifier",
"src": "21225:88:26"
},
"nodeType": "YulFunctionCall",
"src": "21225:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "21225:93:26"
},
{
"nodeType": "YulAssignment",
"src": "21327:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21338:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21343:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21334:3:26"
},
"nodeType": "YulFunctionCall",
"src": "21334:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "21327:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "21120:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "21128:3:26",
"type": ""
}
],
"src": "20986:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21504:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "21514:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21580:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21585:2:26",
"type": "",
"value": "41"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "21521:58:26"
},
"nodeType": "YulFunctionCall",
"src": "21521:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21514:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21686:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950",
"nodeType": "YulIdentifier",
"src": "21597:88:26"
},
"nodeType": "YulFunctionCall",
"src": "21597:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "21597:93:26"
},
{
"nodeType": "YulAssignment",
"src": "21699:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21710:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21715:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21706:3:26"
},
"nodeType": "YulFunctionCall",
"src": "21706:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "21699:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "21492:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "21500:3:26",
"type": ""
}
],
"src": "21358:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21876:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "21886:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21952:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21957:2:26",
"type": "",
"value": "47"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "21893:58:26"
},
"nodeType": "YulFunctionCall",
"src": "21893:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "21886:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22058:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb",
"nodeType": "YulIdentifier",
"src": "21969:88:26"
},
"nodeType": "YulFunctionCall",
"src": "21969:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "21969:93:26"
},
{
"nodeType": "YulAssignment",
"src": "22071:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22082:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22087:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22078:3:26"
},
"nodeType": "YulFunctionCall",
"src": "22078:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "22071:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "21864:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "21872:3:26",
"type": ""
}
],
"src": "21730:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22248:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "22258:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22324:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22329:2:26",
"type": "",
"value": "33"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "22265:58:26"
},
"nodeType": "YulFunctionCall",
"src": "22265:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22258:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22430:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
"nodeType": "YulIdentifier",
"src": "22341:88:26"
},
"nodeType": "YulFunctionCall",
"src": "22341:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "22341:93:26"
},
{
"nodeType": "YulAssignment",
"src": "22443:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22454:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22459:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22450:3:26"
},
"nodeType": "YulFunctionCall",
"src": "22450:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "22443:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "22236:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "22244:3:26",
"type": ""
}
],
"src": "22102:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22637:235:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "22647:90:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22730:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22735:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "22654:75:26"
},
"nodeType": "YulFunctionCall",
"src": "22654:83:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22647:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22835:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"nodeType": "YulIdentifier",
"src": "22746:88:26"
},
"nodeType": "YulFunctionCall",
"src": "22746:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "22746:93:26"
},
{
"nodeType": "YulAssignment",
"src": "22848:18:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "22859:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22864:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22855:3:26"
},
"nodeType": "YulFunctionCall",
"src": "22855:11:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "22848:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "22625:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "22633:3:26",
"type": ""
}
],
"src": "22474:398:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23024:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "23034:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23100:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23105:2:26",
"type": "",
"value": "49"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "23041:58:26"
},
"nodeType": "YulFunctionCall",
"src": "23041:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23034:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23206:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2",
"nodeType": "YulIdentifier",
"src": "23117:88:26"
},
"nodeType": "YulFunctionCall",
"src": "23117:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "23117:93:26"
},
{
"nodeType": "YulAssignment",
"src": "23219:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23230:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23235:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23226:3:26"
},
"nodeType": "YulFunctionCall",
"src": "23226:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "23219:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "23012:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "23020:3:26",
"type": ""
}
],
"src": "22878:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23396:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "23406:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23472:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23477:2:26",
"type": "",
"value": "44"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "23413:58:26"
},
"nodeType": "YulFunctionCall",
"src": "23413:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23406:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23578:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc",
"nodeType": "YulIdentifier",
"src": "23489:88:26"
},
"nodeType": "YulFunctionCall",
"src": "23489:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "23489:93:26"
},
{
"nodeType": "YulAssignment",
"src": "23591:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23602:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23607:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23598:3:26"
},
"nodeType": "YulFunctionCall",
"src": "23598:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "23591:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "23384:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "23392:3:26",
"type": ""
}
],
"src": "23250:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23786:238:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "23796:92:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23880:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23885:2:26",
"type": "",
"value": "16"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "23803:76:26"
},
"nodeType": "YulFunctionCall",
"src": "23803:85:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23796:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "23986:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_e04f4faa40e5c7fab9ac4a38700c1efae048dba3e5c0f738c15c43a064a4687b",
"nodeType": "YulIdentifier",
"src": "23897:88:26"
},
"nodeType": "YulFunctionCall",
"src": "23897:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "23897:93:26"
},
{
"nodeType": "YulAssignment",
"src": "23999:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "24010:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24015:2:26",
"type": "",
"value": "16"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24006:3:26"
},
"nodeType": "YulFunctionCall",
"src": "24006:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "23999:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_e04f4faa40e5c7fab9ac4a38700c1efae048dba3e5c0f738c15c43a064a4687b_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "23774:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "23782:3:26",
"type": ""
}
],
"src": "23622:402:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "24176:220:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "24186:74:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "24252:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24257:2:26",
"type": "",
"value": "95"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "24193:58:26"
},
"nodeType": "YulFunctionCall",
"src": "24193:67:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "24186:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "24358:3:26"
}
],
"functionName": {
"name": "store_literal_in_memory_ecaadc80e35280545a3d33795a2f929a714b377cdd48d49b3571fccbc80ec145",
"nodeType": "YulIdentifier",
"src": "24269:88:26"
},
"nodeType": "YulFunctionCall",
"src": "24269:93:26"
},
"nodeType": "YulExpressionStatement",
"src": "24269:93:26"
},
{
"nodeType": "YulAssignment",
"src": "24371:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "24382:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24387:2:26",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24378:3:26"
},
"nodeType": "YulFunctionCall",
"src": "24378:12:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "24371:3:26"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_ecaadc80e35280545a3d33795a2f929a714b377cdd48d49b3571fccbc80ec145_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "24164:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "24172:3:26",
"type": ""
}
],
"src": "24030:366:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "24457:53:26",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "24474:3:26"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "24497:5:26"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "24479:17:26"
},
"nodeType": "YulFunctionCall",
"src": "24479:24:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "24467:6:26"
},
"nodeType": "YulFunctionCall",
"src": "24467:37:26"
},
"nodeType": "YulExpressionStatement",
"src": "24467:37:26"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "24445:5:26",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "24452:3:26",
"type": ""
}
],
"src": "24402:108:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "24581:53:26",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "24598:3:26"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "24621:5:26"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "24603:17:26"
},
"nodeType": "YulFunctionCall",
"src": "24603:24:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "24591:6:26"
},
"nodeType": "YulFunctionCall",
"src": "24591:37:26"
},
"nodeType": "YulExpressionStatement",
"src": "24591:37:26"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "24569:5:26",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "24576:3:26",
"type": ""
}
],
"src": "24516:118:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "24703:52:26",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "24720:3:26"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "24742:5:26"
}
],
"functionName": {
"name": "cleanup_t_uint32",
"nodeType": "YulIdentifier",
"src": "24725:16:26"
},
"nodeType": "YulFunctionCall",
"src": "24725:23:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "24713:6:26"
},
"nodeType": "YulFunctionCall",
"src": "24713:36:26"
},
"nodeType": "YulExpressionStatement",
"src": "24713:36:26"
}
]
},
"name": "abi_encode_t_uint32_to_t_uint32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "24691:5:26",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "24698:3:26",
"type": ""
}
],
"src": "24640:115:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "25046:416:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "25057:102:26",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "25146:6:26"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "25155:3:26"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "25064:81:26"
},
"nodeType": "YulFunctionCall",
"src": "25064:95:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "25057:3:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "25169:102:26",
"value": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "25258:6:26"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "25267:3:26"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "25176:81:26"
},
"nodeType": "YulFunctionCall",
"src": "25176:95:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "25169:3:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "25281:155:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "25432:3:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_94311adc0a0cd4e10be11b23bd4316b8cffa4adf693e8f96f5c075aa439a7972_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "25288:142:26"
},
"nodeType": "YulFunctionCall",
"src": "25288:148:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "25281:3:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "25446:10:26",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "25453:3:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "25446:3:26"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr_t_stringliteral_94311adc0a0cd4e10be11b23bd4316b8cffa4adf693e8f96f5c075aa439a7972__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "25017:3:26",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "25023:6:26",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "25031:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "25042:3:26",
"type": ""
}
],
"src": "24761:701:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "25629:249:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "25640:99:26",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "25726:6:26"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "25735:3:26"
}
],
"functionName": {
"name": "abi_encode_t_string_storage_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "25647:78:26"
},
"nodeType": "YulFunctionCall",
"src": "25647:92:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "25640:3:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "25811:6:26"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "25820:3:26"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "25749:61:26"
},
"nodeType": "YulFunctionCall",
"src": "25749:75:26"
},
"nodeType": "YulExpressionStatement",
"src": "25749:75:26"
},
{
"nodeType": "YulAssignment",
"src": "25833:19:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "25844:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25849:2:26",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25840:3:26"
},
"nodeType": "YulFunctionCall",
"src": "25840:12:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "25833:3:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "25862:10:26",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "25869:3:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "25862:3:26"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_string_storage_t_address__to_t_string_memory_ptr_t_address__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "25600:3:26",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "25606:6:26",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "25614:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "25625:3:26",
"type": ""
}
],
"src": "25468:410:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "26118:301:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "26129:99:26",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "26215:6:26"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "26224:3:26"
}
],
"functionName": {
"name": "abi_encode_t_string_storage_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "26136:78:26"
},
"nodeType": "YulFunctionCall",
"src": "26136:92:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "26129:3:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "26238:155:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "26389:3:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_e04f4faa40e5c7fab9ac4a38700c1efae048dba3e5c0f738c15c43a064a4687b_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "26245:142:26"
},
"nodeType": "YulFunctionCall",
"src": "26245:148:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "26238:3:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "26403:10:26",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "26410:3:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "26403:3:26"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_string_storage_t_stringliteral_e04f4faa40e5c7fab9ac4a38700c1efae048dba3e5c0f738c15c43a064a4687b__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "26097:3:26",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "26103:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "26114:3:26",
"type": ""
}
],
"src": "25884:535:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "26613:191:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "26624:154:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "26774:3:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "26631:141:26"
},
"nodeType": "YulFunctionCall",
"src": "26631:147:26"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "26624:3:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "26788:10:26",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "26795:3:26"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "26788:3:26"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "26600:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "26609:3:26",
"type": ""
}
],
"src": "26425:379:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "26908:124:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "26918:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "26930:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26941:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "26926:3:26"
},
"nodeType": "YulFunctionCall",
"src": "26926:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "26918:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "26998:6:26"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27011:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27022:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27007:3:26"
},
"nodeType": "YulFunctionCall",
"src": "27007:17:26"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "26954:43:26"
},
"nodeType": "YulFunctionCall",
"src": "26954:71:26"
},
"nodeType": "YulExpressionStatement",
"src": "26954:71:26"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "26880:9:26",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "26892:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "26903:4:26",
"type": ""
}
],
"src": "26810:222:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "27238:440:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "27248:27:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27260:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27271:3:26",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27256:3:26"
},
"nodeType": "YulFunctionCall",
"src": "27256:19:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "27248:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "27329:6:26"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27342:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27353:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27338:3:26"
},
"nodeType": "YulFunctionCall",
"src": "27338:17:26"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "27285:43:26"
},
"nodeType": "YulFunctionCall",
"src": "27285:71:26"
},
"nodeType": "YulExpressionStatement",
"src": "27285:71:26"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "27410:6:26"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27423:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27434:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27419:3:26"
},
"nodeType": "YulFunctionCall",
"src": "27419:18:26"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "27366:43:26"
},
"nodeType": "YulFunctionCall",
"src": "27366:72:26"
},
"nodeType": "YulExpressionStatement",
"src": "27366:72:26"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "27492:6:26"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27505:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27516:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27501:3:26"
},
"nodeType": "YulFunctionCall",
"src": "27501:18:26"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "27448:43:26"
},
"nodeType": "YulFunctionCall",
"src": "27448:72:26"
},
"nodeType": "YulExpressionStatement",
"src": "27448:72:26"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27541:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27552:2:26",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27537:3:26"
},
"nodeType": "YulFunctionCall",
"src": "27537:18:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "27561:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27567:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "27557:3:26"
},
"nodeType": "YulFunctionCall",
"src": "27557:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "27530:6:26"
},
"nodeType": "YulFunctionCall",
"src": "27530:48:26"
},
"nodeType": "YulExpressionStatement",
"src": "27530:48:26"
},
{
"nodeType": "YulAssignment",
"src": "27587:84:26",
"value": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "27657:6:26"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "27666:4:26"
}
],
"functionName": {
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "27595:61:26"
},
"nodeType": "YulFunctionCall",
"src": "27595:76:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "27587:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "27186:9:26",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "27198:6:26",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "27206:6:26",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "27214:6:26",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "27222:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "27233:4:26",
"type": ""
}
],
"src": "27038:640:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "27832:225:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "27842:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27854:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27865:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27850:3:26"
},
"nodeType": "YulFunctionCall",
"src": "27850:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "27842:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27889:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27900:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27885:3:26"
},
"nodeType": "YulFunctionCall",
"src": "27885:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "27908:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "27914:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "27904:3:26"
},
"nodeType": "YulFunctionCall",
"src": "27904:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "27878:6:26"
},
"nodeType": "YulFunctionCall",
"src": "27878:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "27878:47:26"
},
{
"nodeType": "YulAssignment",
"src": "27934:116:26",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "28036:6:26"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "28045:4:26"
}
],
"functionName": {
"name": "abi_encode_t_array$_t_uint256_$dyn_memory_ptr_to_t_array$_t_uint256_$dyn_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "27942:93:26"
},
"nodeType": "YulFunctionCall",
"src": "27942:108:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "27934:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "27804:9:26",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "27816:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "27827:4:26",
"type": ""
}
],
"src": "27684:373:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "28155:118:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "28165:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28177:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28188:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28173:3:26"
},
"nodeType": "YulFunctionCall",
"src": "28173:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "28165:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "28239:6:26"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28252:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28263:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28248:3:26"
},
"nodeType": "YulFunctionCall",
"src": "28248:17:26"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "28201:37:26"
},
"nodeType": "YulFunctionCall",
"src": "28201:65:26"
},
"nodeType": "YulExpressionStatement",
"src": "28201:65:26"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "28127:9:26",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "28139:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "28150:4:26",
"type": ""
}
],
"src": "28063:210:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "28397:195:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "28407:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28419:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28430:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28415:3:26"
},
"nodeType": "YulFunctionCall",
"src": "28415:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "28407:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28454:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28465:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28450:3:26"
},
"nodeType": "YulFunctionCall",
"src": "28450:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "28473:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28479:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "28469:3:26"
},
"nodeType": "YulFunctionCall",
"src": "28469:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "28443:6:26"
},
"nodeType": "YulFunctionCall",
"src": "28443:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "28443:47:26"
},
{
"nodeType": "YulAssignment",
"src": "28499:86:26",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "28571:6:26"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "28580:4:26"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "28507:63:26"
},
"nodeType": "YulFunctionCall",
"src": "28507:78:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "28499:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "28369:9:26",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "28381:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "28392:4:26",
"type": ""
}
],
"src": "28279:313:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "28769:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "28779:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28791:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28802:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28787:3:26"
},
"nodeType": "YulFunctionCall",
"src": "28787:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "28779:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28826:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28837:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28822:3:26"
},
"nodeType": "YulFunctionCall",
"src": "28822:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "28845:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "28851:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "28841:3:26"
},
"nodeType": "YulFunctionCall",
"src": "28841:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "28815:6:26"
},
"nodeType": "YulFunctionCall",
"src": "28815:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "28815:47:26"
},
{
"nodeType": "YulAssignment",
"src": "28871:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "29005:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "28879:124:26"
},
"nodeType": "YulFunctionCall",
"src": "28879:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "28871:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "28749:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "28764:4:26",
"type": ""
}
],
"src": "28598:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "29194:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "29204:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "29216:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "29227:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "29212:3:26"
},
"nodeType": "YulFunctionCall",
"src": "29212:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "29204:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "29251:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "29262:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "29247:3:26"
},
"nodeType": "YulFunctionCall",
"src": "29247:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "29270:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "29276:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "29266:3:26"
},
"nodeType": "YulFunctionCall",
"src": "29266:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "29240:6:26"
},
"nodeType": "YulFunctionCall",
"src": "29240:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "29240:47:26"
},
{
"nodeType": "YulAssignment",
"src": "29296:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "29430:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "29304:124:26"
},
"nodeType": "YulFunctionCall",
"src": "29304:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "29296:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "29174:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "29189:4:26",
"type": ""
}
],
"src": "29023:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "29619:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "29629:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "29641:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "29652:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "29637:3:26"
},
"nodeType": "YulFunctionCall",
"src": "29637:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "29629:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "29676:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "29687:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "29672:3:26"
},
"nodeType": "YulFunctionCall",
"src": "29672:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "29695:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "29701:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "29691:3:26"
},
"nodeType": "YulFunctionCall",
"src": "29691:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "29665:6:26"
},
"nodeType": "YulFunctionCall",
"src": "29665:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "29665:47:26"
},
{
"nodeType": "YulAssignment",
"src": "29721:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "29855:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_217ec19cffbac4e5e1fdbc4ed3ac5b10b80cf8f1a2d4b6f18592eaf7b9e41c76_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "29729:124:26"
},
"nodeType": "YulFunctionCall",
"src": "29729:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "29721:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_217ec19cffbac4e5e1fdbc4ed3ac5b10b80cf8f1a2d4b6f18592eaf7b9e41c76__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "29599:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "29614:4:26",
"type": ""
}
],
"src": "29448:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "30044:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "30054:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "30066:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "30077:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "30062:3:26"
},
"nodeType": "YulFunctionCall",
"src": "30062:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "30054:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "30101:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "30112:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "30097:3:26"
},
"nodeType": "YulFunctionCall",
"src": "30097:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "30120:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "30126:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "30116:3:26"
},
"nodeType": "YulFunctionCall",
"src": "30116:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "30090:6:26"
},
"nodeType": "YulFunctionCall",
"src": "30090:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "30090:47:26"
},
{
"nodeType": "YulAssignment",
"src": "30146:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "30280:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "30154:124:26"
},
"nodeType": "YulFunctionCall",
"src": "30154:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "30146:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "30024:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "30039:4:26",
"type": ""
}
],
"src": "29873:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "30469:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "30479:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "30491:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "30502:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "30487:3:26"
},
"nodeType": "YulFunctionCall",
"src": "30487:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "30479:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "30526:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "30537:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "30522:3:26"
},
"nodeType": "YulFunctionCall",
"src": "30522:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "30545:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "30551:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "30541:3:26"
},
"nodeType": "YulFunctionCall",
"src": "30541:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "30515:6:26"
},
"nodeType": "YulFunctionCall",
"src": "30515:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "30515:47:26"
},
{
"nodeType": "YulAssignment",
"src": "30571:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "30705:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_25ee9ded3380469d591e0c813b44286169495c0a471ee7cc12ba48da1b347e10_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "30579:124:26"
},
"nodeType": "YulFunctionCall",
"src": "30579:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "30571:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_25ee9ded3380469d591e0c813b44286169495c0a471ee7cc12ba48da1b347e10__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "30449:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "30464:4:26",
"type": ""
}
],
"src": "30298:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "30894:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "30904:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "30916:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "30927:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "30912:3:26"
},
"nodeType": "YulFunctionCall",
"src": "30912:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "30904:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "30951:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "30962:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "30947:3:26"
},
"nodeType": "YulFunctionCall",
"src": "30947:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "30970:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "30976:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "30966:3:26"
},
"nodeType": "YulFunctionCall",
"src": "30966:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "30940:6:26"
},
"nodeType": "YulFunctionCall",
"src": "30940:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "30940:47:26"
},
{
"nodeType": "YulAssignment",
"src": "30996:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "31130:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "31004:124:26"
},
"nodeType": "YulFunctionCall",
"src": "31004:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "30996:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "30874:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "30889:4:26",
"type": ""
}
],
"src": "30723:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "31319:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "31329:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "31341:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31352:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "31337:3:26"
},
"nodeType": "YulFunctionCall",
"src": "31337:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "31329:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "31376:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31387:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "31372:3:26"
},
"nodeType": "YulFunctionCall",
"src": "31372:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "31395:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "31401:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "31391:3:26"
},
"nodeType": "YulFunctionCall",
"src": "31391:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "31365:6:26"
},
"nodeType": "YulFunctionCall",
"src": "31365:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "31365:47:26"
},
{
"nodeType": "YulAssignment",
"src": "31421:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "31555:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_3b3d7b38305edb8575fc735ff9f0e77e23661a5bb43558d5ce55afd7c820bde4_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "31429:124:26"
},
"nodeType": "YulFunctionCall",
"src": "31429:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "31421:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_3b3d7b38305edb8575fc735ff9f0e77e23661a5bb43558d5ce55afd7c820bde4__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "31299:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "31314:4:26",
"type": ""
}
],
"src": "31148:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "31744:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "31754:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "31766:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31777:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "31762:3:26"
},
"nodeType": "YulFunctionCall",
"src": "31762:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "31754:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "31801:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31812:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "31797:3:26"
},
"nodeType": "YulFunctionCall",
"src": "31797:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "31820:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "31826:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "31816:3:26"
},
"nodeType": "YulFunctionCall",
"src": "31816:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "31790:6:26"
},
"nodeType": "YulFunctionCall",
"src": "31790:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "31790:47:26"
},
{
"nodeType": "YulAssignment",
"src": "31846:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "31980:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "31854:124:26"
},
"nodeType": "YulFunctionCall",
"src": "31854:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "31846:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "31724:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "31739:4:26",
"type": ""
}
],
"src": "31573:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "32169:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "32179:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "32191:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32202:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "32187:3:26"
},
"nodeType": "YulFunctionCall",
"src": "32187:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "32179:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "32226:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32237:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "32222:3:26"
},
"nodeType": "YulFunctionCall",
"src": "32222:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "32245:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "32251:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "32241:3:26"
},
"nodeType": "YulFunctionCall",
"src": "32241:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "32215:6:26"
},
"nodeType": "YulFunctionCall",
"src": "32215:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "32215:47:26"
},
{
"nodeType": "YulAssignment",
"src": "32271:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "32405:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "32279:124:26"
},
"nodeType": "YulFunctionCall",
"src": "32279:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "32271:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "32149:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "32164:4:26",
"type": ""
}
],
"src": "31998:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "32594:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "32604:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "32616:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32627:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "32612:3:26"
},
"nodeType": "YulFunctionCall",
"src": "32612:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "32604:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "32651:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32662:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "32647:3:26"
},
"nodeType": "YulFunctionCall",
"src": "32647:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "32670:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "32676:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "32666:3:26"
},
"nodeType": "YulFunctionCall",
"src": "32666:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "32640:6:26"
},
"nodeType": "YulFunctionCall",
"src": "32640:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "32640:47:26"
},
{
"nodeType": "YulAssignment",
"src": "32696:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "32830:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "32704:124:26"
},
"nodeType": "YulFunctionCall",
"src": "32704:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "32696:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "32574:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "32589:4:26",
"type": ""
}
],
"src": "32423:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "33019:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "33029:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "33041:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "33052:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "33037:3:26"
},
"nodeType": "YulFunctionCall",
"src": "33037:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "33029:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "33076:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "33087:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "33072:3:26"
},
"nodeType": "YulFunctionCall",
"src": "33072:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "33095:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "33101:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "33091:3:26"
},
"nodeType": "YulFunctionCall",
"src": "33091:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "33065:6:26"
},
"nodeType": "YulFunctionCall",
"src": "33065:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "33065:47:26"
},
{
"nodeType": "YulAssignment",
"src": "33121:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "33255:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "33129:124:26"
},
"nodeType": "YulFunctionCall",
"src": "33129:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "33121:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "32999:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "33014:4:26",
"type": ""
}
],
"src": "32848:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "33444:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "33454:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "33466:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "33477:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "33462:3:26"
},
"nodeType": "YulFunctionCall",
"src": "33462:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "33454:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "33501:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "33512:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "33497:3:26"
},
"nodeType": "YulFunctionCall",
"src": "33497:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "33520:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "33526:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "33516:3:26"
},
"nodeType": "YulFunctionCall",
"src": "33516:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "33490:6:26"
},
"nodeType": "YulFunctionCall",
"src": "33490:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "33490:47:26"
},
{
"nodeType": "YulAssignment",
"src": "33546:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "33680:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "33554:124:26"
},
"nodeType": "YulFunctionCall",
"src": "33554:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "33546:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "33424:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "33439:4:26",
"type": ""
}
],
"src": "33273:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "33869:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "33879:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "33891:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "33902:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "33887:3:26"
},
"nodeType": "YulFunctionCall",
"src": "33887:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "33879:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "33926:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "33937:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "33922:3:26"
},
"nodeType": "YulFunctionCall",
"src": "33922:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "33945:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "33951:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "33941:3:26"
},
"nodeType": "YulFunctionCall",
"src": "33941:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "33915:6:26"
},
"nodeType": "YulFunctionCall",
"src": "33915:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "33915:47:26"
},
{
"nodeType": "YulAssignment",
"src": "33971:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "34105:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "33979:124:26"
},
"nodeType": "YulFunctionCall",
"src": "33979:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "33971:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "33849:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "33864:4:26",
"type": ""
}
],
"src": "33698:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "34294:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "34304:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "34316:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "34327:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "34312:3:26"
},
"nodeType": "YulFunctionCall",
"src": "34312:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "34304:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "34351:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "34362:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "34347:3:26"
},
"nodeType": "YulFunctionCall",
"src": "34347:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "34370:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "34376:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "34366:3:26"
},
"nodeType": "YulFunctionCall",
"src": "34366:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "34340:6:26"
},
"nodeType": "YulFunctionCall",
"src": "34340:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "34340:47:26"
},
{
"nodeType": "YulAssignment",
"src": "34396:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "34530:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "34404:124:26"
},
"nodeType": "YulFunctionCall",
"src": "34404:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "34396:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "34274:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "34289:4:26",
"type": ""
}
],
"src": "34123:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "34719:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "34729:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "34741:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "34752:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "34737:3:26"
},
"nodeType": "YulFunctionCall",
"src": "34737:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "34729:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "34776:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "34787:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "34772:3:26"
},
"nodeType": "YulFunctionCall",
"src": "34772:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "34795:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "34801:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "34791:3:26"
},
"nodeType": "YulFunctionCall",
"src": "34791:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "34765:6:26"
},
"nodeType": "YulFunctionCall",
"src": "34765:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "34765:47:26"
},
{
"nodeType": "YulAssignment",
"src": "34821:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "34955:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_8d0a499c1dc5d8ed8c32edf19002261686f14e231a54e778311a2da765ffc981_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "34829:124:26"
},
"nodeType": "YulFunctionCall",
"src": "34829:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "34821:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_8d0a499c1dc5d8ed8c32edf19002261686f14e231a54e778311a2da765ffc981__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "34699:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "34714:4:26",
"type": ""
}
],
"src": "34548:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "35144:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "35154:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "35166:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "35177:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "35162:3:26"
},
"nodeType": "YulFunctionCall",
"src": "35162:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "35154:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "35201:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "35212:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "35197:3:26"
},
"nodeType": "YulFunctionCall",
"src": "35197:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "35220:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "35226:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "35216:3:26"
},
"nodeType": "YulFunctionCall",
"src": "35216:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "35190:6:26"
},
"nodeType": "YulFunctionCall",
"src": "35190:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "35190:47:26"
},
{
"nodeType": "YulAssignment",
"src": "35246:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "35380:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "35254:124:26"
},
"nodeType": "YulFunctionCall",
"src": "35254:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "35246:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "35124:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "35139:4:26",
"type": ""
}
],
"src": "34973:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "35569:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "35579:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "35591:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "35602:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "35587:3:26"
},
"nodeType": "YulFunctionCall",
"src": "35587:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "35579:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "35626:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "35637:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "35622:3:26"
},
"nodeType": "YulFunctionCall",
"src": "35622:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "35645:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "35651:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "35641:3:26"
},
"nodeType": "YulFunctionCall",
"src": "35641:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "35615:6:26"
},
"nodeType": "YulFunctionCall",
"src": "35615:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "35615:47:26"
},
{
"nodeType": "YulAssignment",
"src": "35671:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "35805:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "35679:124:26"
},
"nodeType": "YulFunctionCall",
"src": "35679:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "35671:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "35549:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "35564:4:26",
"type": ""
}
],
"src": "35398:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "35994:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "36004:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "36016:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "36027:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "36012:3:26"
},
"nodeType": "YulFunctionCall",
"src": "36012:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "36004:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "36051:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "36062:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "36047:3:26"
},
"nodeType": "YulFunctionCall",
"src": "36047:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "36070:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "36076:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "36066:3:26"
},
"nodeType": "YulFunctionCall",
"src": "36066:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "36040:6:26"
},
"nodeType": "YulFunctionCall",
"src": "36040:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "36040:47:26"
},
{
"nodeType": "YulAssignment",
"src": "36096:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "36230:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "36104:124:26"
},
"nodeType": "YulFunctionCall",
"src": "36104:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "36096:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "35974:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "35989:4:26",
"type": ""
}
],
"src": "35823:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "36419:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "36429:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "36441:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "36452:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "36437:3:26"
},
"nodeType": "YulFunctionCall",
"src": "36437:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "36429:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "36476:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "36487:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "36472:3:26"
},
"nodeType": "YulFunctionCall",
"src": "36472:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "36495:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "36501:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "36491:3:26"
},
"nodeType": "YulFunctionCall",
"src": "36491:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "36465:6:26"
},
"nodeType": "YulFunctionCall",
"src": "36465:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "36465:47:26"
},
{
"nodeType": "YulAssignment",
"src": "36521:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "36655:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "36529:124:26"
},
"nodeType": "YulFunctionCall",
"src": "36529:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "36521:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "36399:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "36414:4:26",
"type": ""
}
],
"src": "36248:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "36844:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "36854:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "36866:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "36877:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "36862:3:26"
},
"nodeType": "YulFunctionCall",
"src": "36862:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "36854:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "36901:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "36912:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "36897:3:26"
},
"nodeType": "YulFunctionCall",
"src": "36897:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "36920:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "36926:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "36916:3:26"
},
"nodeType": "YulFunctionCall",
"src": "36916:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "36890:6:26"
},
"nodeType": "YulFunctionCall",
"src": "36890:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "36890:47:26"
},
{
"nodeType": "YulAssignment",
"src": "36946:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "37080:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "36954:124:26"
},
"nodeType": "YulFunctionCall",
"src": "36954:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "36946:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "36824:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "36839:4:26",
"type": ""
}
],
"src": "36673:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "37269:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "37279:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "37291:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "37302:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "37287:3:26"
},
"nodeType": "YulFunctionCall",
"src": "37287:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "37279:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "37326:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "37337:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "37322:3:26"
},
"nodeType": "YulFunctionCall",
"src": "37322:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "37345:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "37351:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "37341:3:26"
},
"nodeType": "YulFunctionCall",
"src": "37341:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "37315:6:26"
},
"nodeType": "YulFunctionCall",
"src": "37315:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "37315:47:26"
},
{
"nodeType": "YulAssignment",
"src": "37371:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "37505:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "37379:124:26"
},
"nodeType": "YulFunctionCall",
"src": "37379:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "37371:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "37249:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "37264:4:26",
"type": ""
}
],
"src": "37098:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "37694:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "37704:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "37716:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "37727:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "37712:3:26"
},
"nodeType": "YulFunctionCall",
"src": "37712:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "37704:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "37751:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "37762:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "37747:3:26"
},
"nodeType": "YulFunctionCall",
"src": "37747:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "37770:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "37776:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "37766:3:26"
},
"nodeType": "YulFunctionCall",
"src": "37766:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "37740:6:26"
},
"nodeType": "YulFunctionCall",
"src": "37740:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "37740:47:26"
},
{
"nodeType": "YulAssignment",
"src": "37796:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "37930:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "37804:124:26"
},
"nodeType": "YulFunctionCall",
"src": "37804:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "37796:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "37674:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "37689:4:26",
"type": ""
}
],
"src": "37523:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "38119:248:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "38129:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "38141:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "38152:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "38137:3:26"
},
"nodeType": "YulFunctionCall",
"src": "38137:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "38129:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "38176:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "38187:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "38172:3:26"
},
"nodeType": "YulFunctionCall",
"src": "38172:17:26"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "38195:4:26"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "38201:9:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "38191:3:26"
},
"nodeType": "YulFunctionCall",
"src": "38191:20:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "38165:6:26"
},
"nodeType": "YulFunctionCall",
"src": "38165:47:26"
},
"nodeType": "YulExpressionStatement",
"src": "38165:47:26"
},
{
"nodeType": "YulAssignment",
"src": "38221:139:26",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "38355:4:26"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_ecaadc80e35280545a3d33795a2f929a714b377cdd48d49b3571fccbc80ec145_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "38229:124:26"
},
"nodeType": "YulFunctionCall",
"src": "38229:131:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "38221:4:26"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_ecaadc80e35280545a3d33795a2f929a714b377cdd48d49b3571fccbc80ec145__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "38099:9:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "38114:4:26",
"type": ""
}
],
"src": "37948:419:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "38471:124:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "38481:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "38493:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "38504:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "38489:3:26"
},
"nodeType": "YulFunctionCall",
"src": "38489:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "38481:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "38561:6:26"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "38574:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "38585:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "38570:3:26"
},
"nodeType": "YulFunctionCall",
"src": "38570:17:26"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "38517:43:26"
},
"nodeType": "YulFunctionCall",
"src": "38517:71:26"
},
"nodeType": "YulExpressionStatement",
"src": "38517:71:26"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "38443:9:26",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "38455:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "38466:4:26",
"type": ""
}
],
"src": "38373:222:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "38697:122:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "38707:26:26",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "38719:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "38730:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "38715:3:26"
},
"nodeType": "YulFunctionCall",
"src": "38715:18:26"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "38707:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "38785:6:26"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "38798:9:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "38809:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "38794:3:26"
},
"nodeType": "YulFunctionCall",
"src": "38794:17:26"
}
],
"functionName": {
"name": "abi_encode_t_uint32_to_t_uint32_fromStack",
"nodeType": "YulIdentifier",
"src": "38743:41:26"
},
"nodeType": "YulFunctionCall",
"src": "38743:69:26"
},
"nodeType": "YulExpressionStatement",
"src": "38743:69:26"
}
]
},
"name": "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "38669:9:26",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "38681:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "38692:4:26",
"type": ""
}
],
"src": "38601:218:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "38866:88:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "38876:30:26",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nodeType": "YulIdentifier",
"src": "38886:18:26"
},
"nodeType": "YulFunctionCall",
"src": "38886:20:26"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "38876:6:26"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "38935:6:26"
},
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "38943:4:26"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "38915:19:26"
},
"nodeType": "YulFunctionCall",
"src": "38915:33:26"
},
"nodeType": "YulExpressionStatement",
"src": "38915:33:26"
}
]
},
"name": "allocate_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "38850:4:26",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "38859:6:26",
"type": ""
}
],
"src": "38825:129:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "39000:35:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "39010:19:26",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "39026:2:26",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "39020:5:26"
},
"nodeType": "YulFunctionCall",
"src": "39020:9:26"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "39010:6:26"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "38993:6:26",
"type": ""
}
],
"src": "38960:75:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "39123:229:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "39228:22:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "39230:16:26"
},
"nodeType": "YulFunctionCall",
"src": "39230:18:26"
},
"nodeType": "YulExpressionStatement",
"src": "39230:18:26"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "39200:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "39208:18:26",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "39197:2:26"
},
"nodeType": "YulFunctionCall",
"src": "39197:30:26"
},
"nodeType": "YulIf",
"src": "39194:56:26"
},
{
"nodeType": "YulAssignment",
"src": "39260:25:26",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "39272:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "39280:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "39268:3:26"
},
"nodeType": "YulFunctionCall",
"src": "39268:17:26"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "39260:4:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "39322:23:26",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "39334:4:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "39340:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "39330:3:26"
},
"nodeType": "YulFunctionCall",
"src": "39330:15:26"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "39322:4:26"
}
]
}
]
},
"name": "array_allocation_size_t_array$_t_address_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "39107:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "39118:4:26",
"type": ""
}
],
"src": "39041:311:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "39439:229:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "39544:22:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "39546:16:26"
},
"nodeType": "YulFunctionCall",
"src": "39546:18:26"
},
"nodeType": "YulExpressionStatement",
"src": "39546:18:26"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "39516:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "39524:18:26",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "39513:2:26"
},
"nodeType": "YulFunctionCall",
"src": "39513:30:26"
},
"nodeType": "YulIf",
"src": "39510:56:26"
},
{
"nodeType": "YulAssignment",
"src": "39576:25:26",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "39588:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "39596:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "39584:3:26"
},
"nodeType": "YulFunctionCall",
"src": "39584:17:26"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "39576:4:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "39638:23:26",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "39650:4:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "39656:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "39646:3:26"
},
"nodeType": "YulFunctionCall",
"src": "39646:15:26"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "39638:4:26"
}
]
}
]
},
"name": "array_allocation_size_t_array$_t_uint32_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "39423:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "39434:4:26",
"type": ""
}
],
"src": "39358:310:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "39740:241:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "39845:22:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "39847:16:26"
},
"nodeType": "YulFunctionCall",
"src": "39847:18:26"
},
"nodeType": "YulExpressionStatement",
"src": "39847:18:26"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "39817:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "39825:18:26",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "39814:2:26"
},
"nodeType": "YulFunctionCall",
"src": "39814:30:26"
},
"nodeType": "YulIf",
"src": "39811:56:26"
},
{
"nodeType": "YulAssignment",
"src": "39877:37:26",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "39907:6:26"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "39885:21:26"
},
"nodeType": "YulFunctionCall",
"src": "39885:29:26"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "39877:4:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "39951:23:26",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "39963:4:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "39969:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "39959:3:26"
},
"nodeType": "YulFunctionCall",
"src": "39959:15:26"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "39951:4:26"
}
]
}
]
},
"name": "array_allocation_size_t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "39724:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "39735:4:26",
"type": ""
}
],
"src": "39674:307:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "40054:241:26",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "40159:22:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "40161:16:26"
},
"nodeType": "YulFunctionCall",
"src": "40161:18:26"
},
"nodeType": "YulExpressionStatement",
"src": "40161:18:26"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "40131:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "40139:18:26",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "40128:2:26"
},
"nodeType": "YulFunctionCall",
"src": "40128:30:26"
},
"nodeType": "YulIf",
"src": "40125:56:26"
},
{
"nodeType": "YulAssignment",
"src": "40191:37:26",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "40221:6:26"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "40199:21:26"
},
"nodeType": "YulFunctionCall",
"src": "40199:29:26"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "40191:4:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "40265:23:26",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "40277:4:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "40283:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "40273:3:26"
},
"nodeType": "YulFunctionCall",
"src": "40273:15:26"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "40265:4:26"
}
]
}
]
},
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "40038:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "40049:4:26",
"type": ""
}
],
"src": "39987:308:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "40373:60:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "40383:11:26",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "40391:3:26"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "40383:4:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "40404:22:26",
"value": {
"arguments": [
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "40416:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "40421:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "40412:3:26"
},
"nodeType": "YulFunctionCall",
"src": "40412:14:26"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "40404:4:26"
}
]
}
]
},
"name": "array_dataslot_t_array$_t_uint256_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "40360:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "40368:4:26",
"type": ""
}
],
"src": "40301:132:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "40493:87:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "40503:11:26",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "40511:3:26"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "40503:4:26"
}
]
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "40531:1:26",
"type": "",
"value": "0"
},
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "40534:3:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "40524:6:26"
},
"nodeType": "YulFunctionCall",
"src": "40524:14:26"
},
"nodeType": "YulExpressionStatement",
"src": "40524:14:26"
},
{
"nodeType": "YulAssignment",
"src": "40547:26:26",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "40565:1:26",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "40568:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "keccak256",
"nodeType": "YulIdentifier",
"src": "40555:9:26"
},
"nodeType": "YulFunctionCall",
"src": "40555:18:26"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "40547:4:26"
}
]
}
]
},
"name": "array_dataslot_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "40480:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "40488:4:26",
"type": ""
}
],
"src": "40439:141:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "40660:40:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "40671:22:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "40687:5:26"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "40681:5:26"
},
"nodeType": "YulFunctionCall",
"src": "40681:12:26"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "40671:6:26"
}
]
}
]
},
"name": "array_length_t_array$_t_uint256_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "40643:5:26",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "40653:6:26",
"type": ""
}
],
"src": "40586:114:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "40764:40:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "40775:22:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "40791:5:26"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "40785:5:26"
},
"nodeType": "YulFunctionCall",
"src": "40785:12:26"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "40775:6:26"
}
]
}
]
},
"name": "array_length_t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "40747:5:26",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "40757:6:26",
"type": ""
}
],
"src": "40706:98:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "40869:40:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "40880:22:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "40896:5:26"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "40890:5:26"
},
"nodeType": "YulFunctionCall",
"src": "40890:12:26"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "40880:6:26"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "40852:5:26",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "40862:6:26",
"type": ""
}
],
"src": "40810:99:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "40990:38:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "41000:22:26",
"value": {
"arguments": [
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "41012:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "41017:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "41008:3:26"
},
"nodeType": "YulFunctionCall",
"src": "41008:14:26"
},
"variableNames": [
{
"name": "next",
"nodeType": "YulIdentifier",
"src": "41000:4:26"
}
]
}
]
},
"name": "array_nextElement_t_array$_t_uint256_$dyn_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "40977:3:26",
"type": ""
}
],
"returnVariables": [
{
"name": "next",
"nodeType": "YulTypedName",
"src": "40985:4:26",
"type": ""
}
],
"src": "40915:113:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "41145:73:26",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "41162:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "41167:6:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "41155:6:26"
},
"nodeType": "YulFunctionCall",
"src": "41155:19:26"
},
"nodeType": "YulExpressionStatement",
"src": "41155:19:26"
},
{
"nodeType": "YulAssignment",
"src": "41183:29:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "41202:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "41207:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "41198:3:26"
},
"nodeType": "YulFunctionCall",
"src": "41198:14:26"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "41183:11:26"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_array$_t_uint256_$dyn_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "41117:3:26",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "41122:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "41133:11:26",
"type": ""
}
],
"src": "41034:184:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "41319:73:26",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "41336:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "41341:6:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "41329:6:26"
},
"nodeType": "YulFunctionCall",
"src": "41329:19:26"
},
"nodeType": "YulExpressionStatement",
"src": "41329:19:26"
},
{
"nodeType": "YulAssignment",
"src": "41357:29:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "41376:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "41381:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "41372:3:26"
},
"nodeType": "YulFunctionCall",
"src": "41372:14:26"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "41357:11:26"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "41291:3:26",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "41296:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "41307:11:26",
"type": ""
}
],
"src": "41224:168:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "41511:34:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "41521:18:26",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "41536:3:26"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "41521:11:26"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "41483:3:26",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "41488:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "41499:11:26",
"type": ""
}
],
"src": "41398:147:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "41647:73:26",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "41664:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "41669:6:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "41657:6:26"
},
"nodeType": "YulFunctionCall",
"src": "41657:19:26"
},
"nodeType": "YulExpressionStatement",
"src": "41657:19:26"
},
{
"nodeType": "YulAssignment",
"src": "41685:29:26",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "41704:3:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "41709:4:26",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "41700:3:26"
},
"nodeType": "YulFunctionCall",
"src": "41700:14:26"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "41685:11:26"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "41619:3:26",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "41624:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "41635:11:26",
"type": ""
}
],
"src": "41551:169:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "41840:34:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "41850:18:26",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "41865:3:26"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "41850:11:26"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "41812:3:26",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "41817:6:26",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "41828:11:26",
"type": ""
}
],
"src": "41726:148:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "41924:261:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "41934:25:26",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "41957:1:26"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "41939:17:26"
},
"nodeType": "YulFunctionCall",
"src": "41939:20:26"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "41934:1:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "41968:25:26",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "41991:1:26"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "41973:17:26"
},
"nodeType": "YulFunctionCall",
"src": "41973:20:26"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "41968:1:26"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "42131:22:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "42133:16:26"
},
"nodeType": "YulFunctionCall",
"src": "42133:18:26"
},
"nodeType": "YulExpressionStatement",
"src": "42133:18:26"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "42052:1:26"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "42059:66:26",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "42127:1:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "42055:3:26"
},
"nodeType": "YulFunctionCall",
"src": "42055:74:26"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "42049:2:26"
},
"nodeType": "YulFunctionCall",
"src": "42049:81:26"
},
"nodeType": "YulIf",
"src": "42046:107:26"
},
{
"nodeType": "YulAssignment",
"src": "42163:16:26",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "42174:1:26"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "42177:1:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "42170:3:26"
},
"nodeType": "YulFunctionCall",
"src": "42170:9:26"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "42163:3:26"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "41911:1:26",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "41914:1:26",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "41920:3:26",
"type": ""
}
],
"src": "41880:305:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "42233:143:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "42243:25:26",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "42266:1:26"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "42248:17:26"
},
"nodeType": "YulFunctionCall",
"src": "42248:20:26"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "42243:1:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "42277:25:26",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "42300:1:26"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "42282:17:26"
},
"nodeType": "YulFunctionCall",
"src": "42282:20:26"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "42277:1:26"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "42324:22:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x12",
"nodeType": "YulIdentifier",
"src": "42326:16:26"
},
"nodeType": "YulFunctionCall",
"src": "42326:18:26"
},
"nodeType": "YulExpressionStatement",
"src": "42326:18:26"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "42321:1:26"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "42314:6:26"
},
"nodeType": "YulFunctionCall",
"src": "42314:9:26"
},
"nodeType": "YulIf",
"src": "42311:35:26"
},
{
"nodeType": "YulAssignment",
"src": "42356:14:26",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "42365:1:26"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "42368:1:26"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "42361:3:26"
},
"nodeType": "YulFunctionCall",
"src": "42361:9:26"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "42356:1:26"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "42222:1:26",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "42225:1:26",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "42231:1:26",
"type": ""
}
],
"src": "42191:185:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "42427:146:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "42437:25:26",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "42460:1:26"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "42442:17:26"
},
"nodeType": "YulFunctionCall",
"src": "42442:20:26"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "42437:1:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "42471:25:26",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "42494:1:26"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "42476:17:26"
},
"nodeType": "YulFunctionCall",
"src": "42476:20:26"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "42471:1:26"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "42518:22:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "42520:16:26"
},
"nodeType": "YulFunctionCall",
"src": "42520:18:26"
},
"nodeType": "YulExpressionStatement",
"src": "42520:18:26"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "42512:1:26"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "42515:1:26"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "42509:2:26"
},
"nodeType": "YulFunctionCall",
"src": "42509:8:26"
},
"nodeType": "YulIf",
"src": "42506:34:26"
},
{
"nodeType": "YulAssignment",
"src": "42550:17:26",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "42562:1:26"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "42565:1:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "42558:3:26"
},
"nodeType": "YulFunctionCall",
"src": "42558:9:26"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "42550:4:26"
}
]
}
]
},
"name": "checked_sub_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "42413:1:26",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "42416:1:26",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "42422:4:26",
"type": ""
}
],
"src": "42382:191:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "42623:144:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "42633:24:26",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "42655:1:26"
}
],
"functionName": {
"name": "cleanup_t_uint32",
"nodeType": "YulIdentifier",
"src": "42638:16:26"
},
"nodeType": "YulFunctionCall",
"src": "42638:19:26"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "42633:1:26"
}
]
},
{
"nodeType": "YulAssignment",
"src": "42666:24:26",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "42688:1:26"
}
],
"functionName": {
"name": "cleanup_t_uint32",
"nodeType": "YulIdentifier",
"src": "42671:16:26"
},
"nodeType": "YulFunctionCall",
"src": "42671:19:26"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "42666:1:26"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "42712:22:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "42714:16:26"
},
"nodeType": "YulFunctionCall",
"src": "42714:18:26"
},
"nodeType": "YulExpressionStatement",
"src": "42714:18:26"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "42706:1:26"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "42709:1:26"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "42703:2:26"
},
"nodeType": "YulFunctionCall",
"src": "42703:8:26"
},
"nodeType": "YulIf",
"src": "42700:34:26"
},
{
"nodeType": "YulAssignment",
"src": "42744:17:26",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "42756:1:26"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "42759:1:26"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "42752:3:26"
},
"nodeType": "YulFunctionCall",
"src": "42752:9:26"
},
"variableNames": [
{
"name": "diff",
"nodeType": "YulIdentifier",
"src": "42744:4:26"
}
]
}
]
},
"name": "checked_sub_t_uint32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "42609:1:26",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "42612:1:26",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nodeType": "YulTypedName",
"src": "42618:4:26",
"type": ""
}
],
"src": "42579:188:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "42818:51:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "42828:35:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "42857:5:26"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "42839:17:26"
},
"nodeType": "YulFunctionCall",
"src": "42839:24:26"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "42828:7:26"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "42800:5:26",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "42810:7:26",
"type": ""
}
],
"src": "42773:96:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "42917:48:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "42927:32:26",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "42952:5:26"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "42945:6:26"
},
"nodeType": "YulFunctionCall",
"src": "42945:13:26"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "42938:6:26"
},
"nodeType": "YulFunctionCall",
"src": "42938:21:26"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "42927:7:26"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "42899:5:26",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "42909:7:26",
"type": ""
}
],
"src": "42875:90:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "43015:105:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "43025:89:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "43040:5:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "43047:66:26",
"type": "",
"value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "43036:3:26"
},
"nodeType": "YulFunctionCall",
"src": "43036:78:26"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "43025:7:26"
}
]
}
]
},
"name": "cleanup_t_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "42997:5:26",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "43007:7:26",
"type": ""
}
],
"src": "42971:149:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "43171:81:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "43181:65:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "43196:5:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "43203:42:26",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "43192:3:26"
},
"nodeType": "YulFunctionCall",
"src": "43192:54:26"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "43181:7:26"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "43153:5:26",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "43163:7:26",
"type": ""
}
],
"src": "43126:126:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "43303:32:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "43313:16:26",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "43324:5:26"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "43313:7:26"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "43285:5:26",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "43295:7:26",
"type": ""
}
],
"src": "43258:77:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "43385:49:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "43395:33:26",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "43410:5:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "43417:10:26",
"type": "",
"value": "0xffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "43406:3:26"
},
"nodeType": "YulFunctionCall",
"src": "43406:22:26"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "43395:7:26"
}
]
}
]
},
"name": "cleanup_t_uint32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "43367:5:26",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "43377:7:26",
"type": ""
}
],
"src": "43341:93:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "43491:103:26",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "43514:3:26"
},
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "43519:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "43524:6:26"
}
],
"functionName": {
"name": "calldatacopy",
"nodeType": "YulIdentifier",
"src": "43501:12:26"
},
"nodeType": "YulFunctionCall",
"src": "43501:30:26"
},
"nodeType": "YulExpressionStatement",
"src": "43501:30:26"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "43572:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "43577:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "43568:3:26"
},
"nodeType": "YulFunctionCall",
"src": "43568:16:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "43586:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "43561:6:26"
},
"nodeType": "YulFunctionCall",
"src": "43561:27:26"
},
"nodeType": "YulExpressionStatement",
"src": "43561:27:26"
}
]
},
"name": "copy_calldata_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "43473:3:26",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "43478:3:26",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "43483:6:26",
"type": ""
}
],
"src": "43440:154:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "43649:258:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "43659:10:26",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "43668:1:26",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "43663:1:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "43728:63:26",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "43753:3:26"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "43758:1:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "43749:3:26"
},
"nodeType": "YulFunctionCall",
"src": "43749:11:26"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "43772:3:26"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "43777:1:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "43768:3:26"
},
"nodeType": "YulFunctionCall",
"src": "43768:11:26"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "43762:5:26"
},
"nodeType": "YulFunctionCall",
"src": "43762:18:26"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "43742:6:26"
},
"nodeType": "YulFunctionCall",
"src": "43742:39:26"
},
"nodeType": "YulExpressionStatement",
"src": "43742:39:26"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "43689:1:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "43692:6:26"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "43686:2:26"
},
"nodeType": "YulFunctionCall",
"src": "43686:13:26"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "43700:19:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "43702:15:26",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "43711:1:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "43714:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "43707:3:26"
},
"nodeType": "YulFunctionCall",
"src": "43707:10:26"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "43702:1:26"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "43682:3:26",
"statements": []
},
"src": "43678:113:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "43825:76:26",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "43875:3:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "43880:6:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "43871:3:26"
},
"nodeType": "YulFunctionCall",
"src": "43871:16:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "43889:1:26",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "43864:6:26"
},
"nodeType": "YulFunctionCall",
"src": "43864:27:26"
},
"nodeType": "YulExpressionStatement",
"src": "43864:27:26"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "43806:1:26"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "43809:6:26"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "43803:2:26"
},
"nodeType": "YulFunctionCall",
"src": "43803:13:26"
},
"nodeType": "YulIf",
"src": "43800:101:26"
}
]
},
"name": "copy_memory_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "43631:3:26",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "43636:3:26",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "43641:6:26",
"type": ""
}
],
"src": "43600:307:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "43964:269:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "43974:22:26",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "43988:4:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "43994:1:26",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "43984:3:26"
},
"nodeType": "YulFunctionCall",
"src": "43984:12:26"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "43974:6:26"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "44005:38:26",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "44035:4:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "44041:1:26",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "44031:3:26"
},
"nodeType": "YulFunctionCall",
"src": "44031:12:26"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "44009:18:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "44082:51:26",
"statements": [
{
"nodeType": "YulAssignment",
"src": "44096:27:26",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "44110:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "44118:4:26",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "44106:3:26"
},
"nodeType": "YulFunctionCall",
"src": "44106:17:26"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "44096:6:26"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "44062:18:26"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "44055:6:26"
},
"nodeType": "YulFunctionCall",
"src": "44055:26:26"
},
"nodeType": "YulIf",
"src": "44052:81:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "44185:42:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "44199:16:26"
},
"nodeType": "YulFunctionCall",
"src": "44199:18:26"
},
"nodeType": "YulExpressionStatement",
"src": "44199:18:26"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "44149:18:26"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "44172:6:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "44180:2:26",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "44169:2:26"
},
"nodeType": "YulFunctionCall",
"src": "44169:14:26"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "44146:2:26"
},
"nodeType": "YulFunctionCall",
"src": "44146:38:26"
},
"nodeType": "YulIf",
"src": "44143:84:26"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "43948:4:26",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "43957:6:26",
"type": ""
}
],
"src": "43913:320:26"
},
{
"body": {
"nodeType": "YulBlock",
"src": "44282:238:26",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "44292:58:26",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "44314:6:26"
},
{
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "44344:4:26"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "44322:21:26"
},
"nodeType": "YulFunctionCall",
"src": "44322:27:26"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "44310:3:26"
},
"nodeType": "YulFunctionCall",
"src": "44310:40:26"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "44296:10:26",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "44461:22:26",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "44463:16:26"
},
"nodeType": "YulFunctionCall",
"src": "44463:18:26"
},
"nodeType": "YulExpressionStatement",
"src": "44463:18:26"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "44404:10:26"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "44416:18:26",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "44401:2:26"
},
"nodeType": "YulFunctionCall",
"src": "44401:34:26"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "44440:10:26"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "44452:6:26"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "44437:2:26"
},
"nodeType": "YulFunctionCall",
"src": "44437:22:26"
}
],
"functionName": {
"name":
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment