Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Reinis-FRP/e0d305091fb43f9323dcf17e90e7badf to your computer and use it in GitHub Desktop.
Save Reinis-FRP/e0d305091fb43f9323dcf17e90e7badf 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: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (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 Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
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 (last updated v4.7.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.0;
import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* TIP: For a detailed writeup see our guide
* https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC20
* applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* The default value of {decimals} is 18. To select a different value for
* {decimals} you should overload it.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
* - the caller must have allowance for ``from``'s tokens of at least
* `amount`.
*/
function transferFrom(
address from,
address to,
uint256 amount
) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves `amount` of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
*/
function _transfer(
address from,
address to,
uint256 amount
) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
}
_balances[to] += amount;
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
}
_totalSupply -= amount;
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Updates `owner` s allowance for `spender` based on spent `amount`.
*
* Does not update the allowance amount in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Might emit an {Approval} event.
*/
function _spendAllowance(
address owner,
address spender,
uint256 amount
) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens 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 amount
) internal virtual {}
/**
* @dev Hook that is called after any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* has been transferred to `to`.
* - when `from` is zero, `amount` tokens have been minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in
* https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].
*
* Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by
* presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't
* need to send a transaction, and thus is not required to hold Ether at all.
*/
interface IERC20Permit {
/**
* @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,
* given ``owner``'s signed approval.
*
* IMPORTANT: The same issues {IERC20-approve} has related to transaction
* ordering also apply here.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `deadline` must be a timestamp in the future.
* - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`
* over the EIP712-formatted function arguments.
* - the signature must use ``owner``'s current nonce (see {nonces}).
*
* For more information on the signature format, see the
* https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP
* section].
*/
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
/**
* @dev Returns the current nonce for `owner`. This value must be
* included whenever a signature is generated for {permit}.
*
* Every successful call to {permit} increases ``owner``'s nonce by one. This
* prevents a signature from being used multiple times.
*/
function nonces(address owner) external view returns (uint256);
/**
* @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.
*/
// solhint-disable-next-line func-name-mixedcase
function DOMAIN_SEPARATOR() external view returns (bytes32);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.0;
import "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/utils/SafeERC20.sol)
pragma solidity ^0.8.0;
import "../IERC20.sol";
import "../extensions/draft-IERC20Permit.sol";
import "../../../utils/Address.sol";
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using Address for address;
function safeTransfer(
IERC20 token,
address to,
uint256 value
) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(
IERC20 token,
address from,
address to,
uint256 value
) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
/**
* @dev Deprecated. This function has issues similar to the ones found in
* {IERC20-approve}, and its usage is discouraged.
*
* Whenever possible, use {safeIncreaseAllowance} and
* {safeDecreaseAllowance} instead.
*/
function safeApprove(
IERC20 token,
address spender,
uint256 value
) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
require(
(value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
uint256 newAllowance = token.allowance(address(this), spender) + value;
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
unchecked {
uint256 oldAllowance = token.allowance(address(this), spender);
require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
uint256 newAllowance = oldAllowance - value;
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
}
function safePermit(
IERC20Permit token,
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) internal {
uint256 nonceBefore = token.nonces(owner);
token.permit(owner, spender, value, deadline, v, r, s);
uint256 nonceAfter = token.nonces(owner);
require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed");
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function _callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
// the target address contains contract code and also asserts for success in the low-level call.
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) {
// Return data is optional
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @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
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 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
/// @solidity memory-safe-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: AGPL-3.0-only
pragma solidity ^0.8.0;
import "../interfaces/AddressWhitelistInterface.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "./Lockable.sol";
/**
* @title A contract to track a whitelist of addresses.
*/
contract AddressWhitelist is AddressWhitelistInterface, Ownable, Lockable {
enum Status { None, In, Out }
mapping(address => Status) public whitelist;
address[] public whitelistIndices;
event AddedToWhitelist(address indexed addedAddress);
event RemovedFromWhitelist(address indexed removedAddress);
/**
* @notice Adds an address to the whitelist.
* @param newElement the new address to add.
*/
function addToWhitelist(address newElement) external override nonReentrant() onlyOwner {
// Ignore if address is already included
if (whitelist[newElement] == Status.In) {
return;
}
// Only append new addresses to the array, never a duplicate
if (whitelist[newElement] == Status.None) {
whitelistIndices.push(newElement);
}
whitelist[newElement] = Status.In;
emit AddedToWhitelist(newElement);
}
/**
* @notice Removes an address from the whitelist.
* @param elementToRemove the existing address to remove.
*/
function removeFromWhitelist(address elementToRemove) external override nonReentrant() onlyOwner {
if (whitelist[elementToRemove] != Status.Out) {
whitelist[elementToRemove] = Status.Out;
emit RemovedFromWhitelist(elementToRemove);
}
}
/**
* @notice Checks whether an address is on the whitelist.
* @param elementToCheck the address to check.
* @return True if `elementToCheck` is on the whitelist, or False.
*/
function isOnWhitelist(address elementToCheck) external view override nonReentrantView() returns (bool) {
return whitelist[elementToCheck] == Status.In;
}
/**
* @notice Gets all addresses that are currently included in the whitelist.
* @dev Note: This method skips over, but still iterates through addresses. It is possible for this call to run out
* of gas if a large number of addresses have been removed. To reduce the likelihood of this unlikely scenario, we
* can modify the implementation so that when addresses are removed, the last addresses in the array is moved to
* the empty index.
* @return activeWhitelist the list of addresses on the whitelist.
*/
function getWhitelist() external view override nonReentrantView() returns (address[] memory activeWhitelist) {
// Determine size of whitelist first
uint256 activeCount = 0;
for (uint256 i = 0; i < whitelistIndices.length; i++) {
if (whitelist[whitelistIndices[i]] == Status.In) {
activeCount++;
}
}
// Populate whitelist
activeWhitelist = new address[](activeCount);
activeCount = 0;
for (uint256 i = 0; i < whitelistIndices.length; i++) {
address addr = whitelistIndices[i];
if (whitelist[addr] == Status.In) {
activeWhitelist[activeCount] = addr;
activeCount++;
}
}
}
}
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.0;
/**
* @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract
* is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol
* and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.
*/
contract Lockable {
bool private _notEntered;
constructor() {
// Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every
// call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full
// refund coming into effect.
_notEntered = true;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to
* prevent this from happening by making the `nonReentrant` function external, and making it call a `private`
* function that does the actual state modification.
*/
modifier nonReentrant() {
_preEntranceCheck();
_preEntranceSet();
_;
_postEntranceReset();
}
/**
* @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.
*/
modifier nonReentrantView() {
_preEntranceCheck();
_;
}
// Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.
// On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being
// re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and
// then call `_postEntranceReset()`.
// View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.
function _preEntranceCheck() internal view {
// On the first call to nonReentrant, _notEntered will be true
require(_notEntered, "ReentrancyGuard: reentrant call");
}
function _preEntranceSet() internal {
// Any calls to nonReentrant after this point will fail
_notEntered = false;
}
function _postEntranceReset() internal {
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_notEntered = true;
}
// These functions are intended to be used by child contracts to temporarily disable and re-enable the guard.
// Intended use:
// _startReentrantGuardDisabled();
// ...
// _endReentrantGuardDisabled();
//
// IMPORTANT: these should NEVER be used in a method that isn't inside a nonReentrant block. Otherwise, it's
// possible to permanently lock your contract.
function _startReentrantGuardDisabled() internal {
_notEntered = true;
}
function _endReentrantGuardDisabled() internal {
_notEntered = false;
}
}
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.0;
import "./Timer.sol";
/**
* @title Base class that provides time overrides, but only if being run in test mode.
*/
abstract contract Testable {
// If the contract is being run in production, then `timerAddress` will be the 0x0 address.
// Note: this variable should be set on construction and never modified.
address public timerAddress;
/**
* @notice Constructs the Testable contract. Called by child contracts.
* @param _timerAddress Contract that stores the current time in a testing environment.
* Must be set to 0x0 for production environments that use live time.
*/
constructor(address _timerAddress) {
timerAddress = _timerAddress;
}
/**
* @notice Reverts if not running in test mode.
*/
modifier onlyIfTest {
require(timerAddress != address(0x0));
_;
}
/**
* @notice Sets the current time.
* @dev Will revert if not running in test mode.
* @param time timestamp to set current Testable time to.
*/
function setCurrentTime(uint256 time) external onlyIfTest {
Timer(timerAddress).setCurrentTime(time);
}
/**
* @notice Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode.
* Otherwise, it will return the block timestamp.
* @return uint for the current Testable timestamp.
*/
function getCurrentTime() public view virtual returns (uint256) {
if (timerAddress != address(0x0)) {
return Timer(timerAddress).getCurrentTime();
} else {
return block.timestamp; // solhint-disable-line not-rely-on-time
}
}
}
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.0;
/**
* @title Universal store of current contract time for testing environments.
*/
contract Timer {
uint256 private currentTime;
constructor() {
currentTime = block.timestamp; // solhint-disable-line not-rely-on-time
}
/**
* @notice Sets the current time.
* @dev Will revert if not running in test mode.
* @param time timestamp to set `currentTime` to.
*/
function setCurrentTime(uint256 time) external {
currentTime = time;
}
/**
* @notice Gets the currentTime variable set in the Timer.
* @return uint256 for the current Testable timestamp.
*/
function getCurrentTime() public view returns (uint256) {
return currentTime;
}
}
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.0;
interface AddressWhitelistInterface {
function addToWhitelist(address newElement) external;
function removeFromWhitelist(address newElement) external;
function isOnWhitelist(address newElement) external view returns (bool);
function getWhitelist() external view returns (address[] memory);
}
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.0;
/**
* @title Stores common interface names used throughout the DVM by registration in the Finder.
*/
library OracleInterfaces {
bytes32 public constant Oracle = "Oracle";
bytes32 public constant IdentifierWhitelist = "IdentifierWhitelist";
bytes32 public constant Store = "Store";
bytes32 public constant FinancialContractsAdmin = "FinancialContractsAdmin";
bytes32 public constant Registry = "Registry";
bytes32 public constant CollateralWhitelist = "CollateralWhitelist";
bytes32 public constant OptimisticOracle = "OptimisticOracle";
bytes32 public constant OptimisticOracleV2 = "OptimisticOracleV2";
bytes32 public constant Bridge = "Bridge";
bytes32 public constant GenericHandler = "GenericHandler";
bytes32 public constant SkinnyOptimisticOracle = "SkinnyOptimisticOracle";
bytes32 public constant ChildMessenger = "ChildMessenger";
bytes32 public constant OracleHub = "OracleHub";
bytes32 public constant OracleSpoke = "OracleSpoke";
}
/**
* @title Commonly re-used values for contracts associated with the OptimisticOracle.
*/
library OptimisticOracleConstraints {
// Any price request submitted to the OptimisticOracle must contain ancillary data no larger than this value.
// This value must be <= the Voting contract's `ancillaryBytesLimit` constant value otherwise it is possible
// that a price can be requested to the OptimisticOracle successfully, but cannot be resolved by the DVM which
// refuses to accept a price request made with ancillary data length over a certain size.
uint256 public constant ancillaryBytesLimit = 8192;
}
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.0;
/**
* @title Provides addresses of the live contracts implementing certain interfaces.
* @dev Examples are the Oracle or Store interfaces.
*/
interface FinderInterface {
/**
* @notice Updates the address of the contract that implements `interfaceName`.
* @param interfaceName bytes32 encoding of the interface name that is either changed or registered.
* @param implementationAddress address of the deployed contract that implements the interface.
*/
function changeImplementationAddress(bytes32 interfaceName, address implementationAddress) external;
/**
* @notice Gets the address of the contract that implements the given `interfaceName`.
* @param interfaceName queried interface.
* @return implementationAddress address of the deployed contract that implements the interface.
*/
function getImplementationAddress(bytes32 interfaceName) external view returns (address);
}
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.0;
/**
* @title Interface for whitelists of supported identifiers that the oracle can provide prices for.
*/
interface IdentifierWhitelistInterface {
/**
* @notice Adds the provided identifier as a supported identifier.
* @dev Price requests using this identifier will succeed after this call.
* @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.
*/
function addSupportedIdentifier(bytes32 identifier) external;
/**
* @notice Removes the identifier from the whitelist.
* @dev Price requests using this identifier will no longer succeed after this call.
* @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.
*/
function removeSupportedIdentifier(bytes32 identifier) external;
/**
* @notice Checks whether an identifier is on the whitelist.
* @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.
* @return bool if the identifier is supported (or not).
*/
function isIdentifierSupported(bytes32 identifier) external view returns (bool);
}
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "./FinderInterface.sol";
/**
* @title Financial contract facing Oracle interface.
* @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.
*/
abstract contract OptimisticOracleV2Interface {
event RequestPrice(
address indexed requester,
bytes32 identifier,
uint256 timestamp,
bytes ancillaryData,
address currency,
uint256 reward,
uint256 finalFee
);
event ProposePrice(
address indexed requester,
address indexed proposer,
bytes32 identifier,
uint256 timestamp,
bytes ancillaryData,
int256 proposedPrice,
uint256 expirationTimestamp,
address currency
);
event DisputePrice(
address indexed requester,
address indexed proposer,
address indexed disputer,
bytes32 identifier,
uint256 timestamp,
bytes ancillaryData,
int256 proposedPrice
);
event Settle(
address indexed requester,
address indexed proposer,
address indexed disputer,
bytes32 identifier,
uint256 timestamp,
bytes ancillaryData,
int256 price,
uint256 payout
);
// Struct representing the state of a price request.
enum State {
Invalid, // Never requested.
Requested, // Requested, no other actions taken.
Proposed, // Proposed, but not expired or disputed yet.
Expired, // Proposed, not disputed, past liveness.
Disputed, // Disputed, but no DVM price returned yet.
Resolved, // Disputed and DVM price is available.
Settled // Final price has been set in the contract (can get here from Expired or Resolved).
}
struct RequestSettings {
bool eventBased; // True if the request is set to be event-based.
bool refundOnDispute; // True if the requester should be refunded their reward on dispute.
bool callbackOnPriceProposed; // True if callbackOnPriceProposed callback is required.
bool callbackOnPriceDisputed; // True if callbackOnPriceDisputed callback is required.
bool callbackOnPriceSettled; // True if callbackOnPriceSettled callback is required.
uint256 bond; // Bond that the proposer and disputer must pay on top of the final fee.
uint256 customLiveness; // Custom liveness value set by the requester.
}
// Struct representing a price request.
struct Request {
address proposer; // Address of the proposer.
address disputer; // Address of the disputer.
IERC20 currency; // ERC20 token used to pay rewards and fees.
bool settled; // True if the request is settled.
RequestSettings requestSettings; // Custom settings associated with a request.
int256 proposedPrice; // Price that the proposer submitted.
int256 resolvedPrice; // Price resolved once the request is settled.
uint256 expirationTime; // Time at which the request auto-settles without a dispute.
uint256 reward; // Amount of the currency to pay to the proposer on settlement.
uint256 finalFee; // Final fee to pay to the Store upon request to the DVM.
}
// This value must be <= the Voting contract's `ancillaryBytesLimit` value otherwise it is possible
// that a price can be requested to this contract successfully, but cannot be disputed because the DVM refuses
// to accept a price request made with ancillary data length over a certain size.
uint256 public constant ancillaryBytesLimit = 8192;
function defaultLiveness() external view virtual returns (uint256);
function finder() external view virtual returns (FinderInterface);
function getCurrentTime() external view virtual returns (uint256);
// Note: this is required so that typechain generates a return value with named fields.
mapping(bytes32 => Request) public requests;
/**
* @notice Requests a new price.
* @param identifier price identifier being requested.
* @param timestamp timestamp of the price being requested.
* @param ancillaryData ancillary data representing additional args being passed with the price request.
* @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.
* @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,
* which could make sense if the contract requests and proposes the value in the same call or
* provides its own reward system.
* @return totalBond default bond (final fee) + final fee that the proposer and disputer will be required to pay.
* This can be changed with a subsequent call to setBond().
*/
function requestPrice(
bytes32 identifier,
uint256 timestamp,
bytes memory ancillaryData,
IERC20 currency,
uint256 reward
) external virtual returns (uint256 totalBond);
/**
* @notice Set the proposal bond associated with a price request.
* @param identifier price identifier to identify the existing request.
* @param timestamp timestamp to identify the existing request.
* @param ancillaryData ancillary data of the price being requested.
* @param bond custom bond amount to set.
* @return totalBond new bond + final fee that the proposer and disputer will be required to pay. This can be
* changed again with a subsequent call to setBond().
*/
function setBond(
bytes32 identifier,
uint256 timestamp,
bytes memory ancillaryData,
uint256 bond
) external virtual returns (uint256 totalBond);
/**
* @notice Sets the request to refund the reward if the proposal is disputed. This can help to "hedge" the caller
* in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's
* bond, so there is still profit to be made even if the reward is refunded.
* @param identifier price identifier to identify the existing request.
* @param timestamp timestamp to identify the existing request.
* @param ancillaryData ancillary data of the price being requested.
*/
function setRefundOnDispute(
bytes32 identifier,
uint256 timestamp,
bytes memory ancillaryData
) external virtual;
/**
* @notice Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before
* being auto-resolved.
* @param identifier price identifier to identify the existing request.
* @param timestamp timestamp to identify the existing request.
* @param ancillaryData ancillary data of the price being requested.
* @param customLiveness new custom liveness.
*/
function setCustomLiveness(
bytes32 identifier,
uint256 timestamp,
bytes memory ancillaryData,
uint256 customLiveness
) external virtual;
/**
* @notice Sets the request to be an "event-based" request.
* @dev Calling this method has a few impacts on the request:
*
* 1. The timestamp at which the request is evaluated is the time of the proposal, not the timestamp associated
* with the request.
*
* 2. The proposer cannot propose the "too early" value (TOO_EARLY_RESPONSE). This is to ensure that a proposer who
* prematurely proposes a response loses their bond.
*
* 3. RefundoOnDispute is automatically set, meaning disputes trigger the reward to be automatically refunded to
* the requesting contract.
*
* @param identifier price identifier to identify the existing request.
* @param timestamp timestamp to identify the existing request.
* @param ancillaryData ancillary data of the price being requested.
*/
function setEventBased(
bytes32 identifier,
uint256 timestamp,
bytes memory ancillaryData
) external virtual;
/**
* @notice Sets which callbacks should be enabled for the request.
* @param identifier price identifier to identify the existing request.
* @param timestamp timestamp to identify the existing request.
* @param ancillaryData ancillary data of the price being requested.
* @param callbackOnPriceProposed whether to enable the callback onPriceProposed.
* @param callbackOnPriceDisputed whether to enable the callback onPriceDisputed.
* @param callbackOnPriceSettled whether to enable the callback onPriceSettled.
*/
function setCallbacks(
bytes32 identifier,
uint256 timestamp,
bytes memory ancillaryData,
bool callbackOnPriceProposed,
bool callbackOnPriceDisputed,
bool callbackOnPriceSettled
) external virtual;
/**
* @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come
* from this proposal. However, any bonds are pulled from the caller.
* @param proposer address to set as the proposer.
* @param requester sender of the initial price request.
* @param identifier price identifier to identify the existing request.
* @param timestamp timestamp to identify the existing request.
* @param ancillaryData ancillary data of the price being requested.
* @param proposedPrice price being proposed.
* @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to
* the proposer once settled if the proposal is correct.
*/
function proposePriceFor(
address proposer,
address requester,
bytes32 identifier,
uint256 timestamp,
bytes memory ancillaryData,
int256 proposedPrice
) public virtual returns (uint256 totalBond);
/**
* @notice Proposes a price value for an existing price request.
* @param requester sender of the initial price request.
* @param identifier price identifier to identify the existing request.
* @param timestamp timestamp to identify the existing request.
* @param ancillaryData ancillary data of the price being requested.
* @param proposedPrice price being proposed.
* @return totalBond the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to
* the proposer once settled if the proposal is correct.
*/
function proposePrice(
address requester,
bytes32 identifier,
uint256 timestamp,
bytes memory ancillaryData,
int256 proposedPrice
) external virtual returns (uint256 totalBond);
/**
* @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will
* receive any rewards that come from this dispute. However, any bonds are pulled from the caller.
* @param disputer address to set as the disputer.
* @param requester sender of the initial price request.
* @param identifier price identifier to identify the existing request.
* @param timestamp timestamp to identify the existing request.
* @param ancillaryData ancillary data of the price being requested.
* @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to
* the disputer once settled if the dispute was value (the proposal was incorrect).
*/
function disputePriceFor(
address disputer,
address requester,
bytes32 identifier,
uint256 timestamp,
bytes memory ancillaryData
) public virtual returns (uint256 totalBond);
/**
* @notice Disputes a price value for an existing price request with an active proposal.
* @param requester sender of the initial price request.
* @param identifier price identifier to identify the existing request.
* @param timestamp timestamp to identify the existing request.
* @param ancillaryData ancillary data of the price being requested.
* @return totalBond the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to
* the disputer once settled if the dispute was valid (the proposal was incorrect).
*/
function disputePrice(
address requester,
bytes32 identifier,
uint256 timestamp,
bytes memory ancillaryData
) external virtual returns (uint256 totalBond);
/**
* @notice Retrieves a price that was previously requested by a caller. Reverts if the request is not settled
* or settleable. Note: this method is not view so that this call may actually settle the price request if it
* hasn't been settled.
* @param identifier price identifier to identify the existing request.
* @param timestamp timestamp to identify the existing request.
* @param ancillaryData ancillary data of the price being requested.
* @return resolved price.
*/
function settleAndGetPrice(
bytes32 identifier,
uint256 timestamp,
bytes memory ancillaryData
) external virtual returns (int256);
/**
* @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.
* @param requester sender of the initial price request.
* @param identifier price identifier to identify the existing request.
* @param timestamp timestamp to identify the existing request.
* @param ancillaryData ancillary data of the price being requested.
* @return payout the amount that the "winner" (proposer or disputer) receives on settlement. This amount includes
* the returned bonds as well as additional rewards.
*/
function settle(
address requester,
bytes32 identifier,
uint256 timestamp,
bytes memory ancillaryData
) external virtual returns (uint256 payout);
/**
* @notice Gets the current data structure containing all information about a price request.
* @param requester sender of the initial price request.
* @param identifier price identifier to identify the existing request.
* @param timestamp timestamp to identify the existing request.
* @param ancillaryData ancillary data of the price being requested.
* @return the Request data structure.
*/
function getRequest(
address requester,
bytes32 identifier,
uint256 timestamp,
bytes memory ancillaryData
) public view virtual returns (Request memory);
/**
* @notice Returns the state of a price request.
* @param requester sender of the initial price request.
* @param identifier price identifier to identify the existing request.
* @param timestamp timestamp to identify the existing request.
* @param ancillaryData ancillary data of the price being requested.
* @return the State enum value.
*/
function getState(
address requester,
bytes32 identifier,
uint256 timestamp,
bytes memory ancillaryData
) public view virtual returns (State);
/**
* @notice Checks if a given request has resolved or been settled (i.e the optimistic oracle has a price).
* @param requester sender of the initial price request.
* @param identifier price identifier to identify the existing request.
* @param timestamp timestamp to identify the existing request.
* @param ancillaryData ancillary data of the price being requested.
* @return true if price has resolved or settled, false otherwise.
*/
function hasPrice(
address requester,
bytes32 identifier,
uint256 timestamp,
bytes memory ancillaryData
) public view virtual returns (bool);
function stampAncillaryData(bytes memory ancillaryData, address requester)
public
view
virtual
returns (bytes memory);
}
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.0;
/**
* @title Financial contract facing Oracle interface.
* @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.
*/
abstract contract OracleAncillaryInterface {
/**
* @notice Enqueues a request (if a request isn't already present) for the given `identifier`, `time` pair.
* @dev Time must be in the past and the identifier must be supported.
* @param identifier uniquely identifies the price requested. eg BTC/USD (encoded as bytes32) could be requested.
* @param ancillaryData arbitrary data appended to a price request to give the voters more info from the caller.
* @param time unix timestamp for the price request.
*/
function requestPrice(
bytes32 identifier,
uint256 time,
bytes memory ancillaryData
) public virtual;
/**
* @notice Whether the price for `identifier` and `time` is available.
* @dev Time must be in the past and the identifier must be supported.
* @param identifier uniquely identifies the price requested. eg BTC/USD (encoded as bytes32) could be requested.
* @param time unix timestamp for the price request.
* @param ancillaryData arbitrary data appended to a price request to give the voters more info from the caller.
* @return bool if the DVM has resolved to a price for the given identifier and timestamp.
*/
function hasPrice(
bytes32 identifier,
uint256 time,
bytes memory ancillaryData
) public view virtual returns (bool);
/**
* @notice Gets the price for `identifier` and `time` if it has already been requested and resolved.
* @dev If the price is not available, the method reverts.
* @param identifier uniquely identifies the price requested. eg BTC/USD (encoded as bytes32) could be requested.
* @param time unix timestamp for the price request.
* @param ancillaryData arbitrary data appended to a price request to give the voters more info from the caller.
* @return int256 representing the resolved price for the given identifier and timestamp.
*/
function getPrice(
bytes32 identifier,
uint256 time,
bytes memory ancillaryData
) public view virtual returns (int256);
}
{
"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
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_1707": {
"entryPoint": null,
"id": 1707,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_decode_t_address_fromMemory": {
"entryPoint": 402,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address_fromMemory": {
"entryPoint": 425,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_address_fromMemory": {
"entryPoint": 475,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack": {
"entryPoint": 546,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": 563,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 592,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 612,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 622,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 654,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 659,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:2147:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "70:80:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "80:22:13",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "95:6:13"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "89:5:13"
},
"nodeType": "YulFunctionCall",
"src": "89:13:13"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "80:5:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "138:5:13"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "111:26:13"
},
"nodeType": "YulFunctionCall",
"src": "111:33:13"
},
"nodeType": "YulExpressionStatement",
"src": "111:33:13"
}
]
},
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "48:6:13",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "56:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "64:5:13",
"type": ""
}
],
"src": "7:143:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "233:274:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "279:83:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "281:77:13"
},
"nodeType": "YulFunctionCall",
"src": "281:79:13"
},
"nodeType": "YulExpressionStatement",
"src": "281:79:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "254:7:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "263:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "250:3:13"
},
"nodeType": "YulFunctionCall",
"src": "250:23:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "275:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "246:3:13"
},
"nodeType": "YulFunctionCall",
"src": "246:32:13"
},
"nodeType": "YulIf",
"src": "243:119:13"
},
{
"nodeType": "YulBlock",
"src": "372:128:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "387:15:13",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "401:1:13",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "391:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "416:74:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "462:9:13"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "473:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "458:3:13"
},
"nodeType": "YulFunctionCall",
"src": "458:22:13"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "482:7:13"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "426:31:13"
},
"nodeType": "YulFunctionCall",
"src": "426:64:13"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "416:6:13"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "203:9:13",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "214:7:13",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "226:6:13",
"type": ""
}
],
"src": "156:351:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "607:413:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "653:83:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "655:77:13"
},
"nodeType": "YulFunctionCall",
"src": "655:79:13"
},
"nodeType": "YulExpressionStatement",
"src": "655:79:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "628:7:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "637:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "624:3:13"
},
"nodeType": "YulFunctionCall",
"src": "624:23:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "649:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "620:3:13"
},
"nodeType": "YulFunctionCall",
"src": "620:32:13"
},
"nodeType": "YulIf",
"src": "617:119:13"
},
{
"nodeType": "YulBlock",
"src": "746:128:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "761:15:13",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "775:1:13",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "765:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "790:74:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "836:9:13"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "847:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "832:3:13"
},
"nodeType": "YulFunctionCall",
"src": "832:22:13"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "856:7:13"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "800:31:13"
},
"nodeType": "YulFunctionCall",
"src": "800:64:13"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "790:6:13"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "884:129:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "899:16:13",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "913:2:13",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "903:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "929:74:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "975:9:13"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "986:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "971:3:13"
},
"nodeType": "YulFunctionCall",
"src": "971:22:13"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "995:7:13"
}
],
"functionName": {
"name": "abi_decode_t_address_fromMemory",
"nodeType": "YulIdentifier",
"src": "939:31:13"
},
"nodeType": "YulFunctionCall",
"src": "939:64:13"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "929:6:13"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "569:9:13",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "580:7:13",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "592:6:13",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "600:6:13",
"type": ""
}
],
"src": "513:507:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1091:53:13",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1108:3:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1131:5:13"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "1113:17:13"
},
"nodeType": "YulFunctionCall",
"src": "1113:24:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1101:6:13"
},
"nodeType": "YulFunctionCall",
"src": "1101:37:13"
},
"nodeType": "YulExpressionStatement",
"src": "1101:37:13"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1079:5:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1086:3:13",
"type": ""
}
],
"src": "1026:118:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1248:124:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1258:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1270:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1281:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1266:3:13"
},
"nodeType": "YulFunctionCall",
"src": "1266:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1258:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1338:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1351:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1362:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1347:3:13"
},
"nodeType": "YulFunctionCall",
"src": "1347:17:13"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "1294:43:13"
},
"nodeType": "YulFunctionCall",
"src": "1294:71:13"
},
"nodeType": "YulExpressionStatement",
"src": "1294:71:13"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1220:9:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1232:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1243:4:13",
"type": ""
}
],
"src": "1150:222:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1418:35:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1428:19:13",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1444:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1438:5:13"
},
"nodeType": "YulFunctionCall",
"src": "1438:9:13"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1428:6:13"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1411:6:13",
"type": ""
}
],
"src": "1378:75:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1504:51:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1514:35:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1543:5:13"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "1525:17:13"
},
"nodeType": "YulFunctionCall",
"src": "1525:24:13"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1514:7:13"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1486:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1496:7:13",
"type": ""
}
],
"src": "1459:96:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1606:32:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1616:16:13",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1627:5:13"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1616:7:13"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1588:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1598:7:13",
"type": ""
}
],
"src": "1561:77:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1689:81:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1699:65:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1714:5:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1721:42:13",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1710:3:13"
},
"nodeType": "YulFunctionCall",
"src": "1710:54:13"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1699:7:13"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1671:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1681:7:13",
"type": ""
}
],
"src": "1644:126:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1865:28:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1882:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1885:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1875:6:13"
},
"nodeType": "YulFunctionCall",
"src": "1875:12:13"
},
"nodeType": "YulExpressionStatement",
"src": "1875:12:13"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "1776:117:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1988:28:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2005:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2008:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1998:6:13"
},
"nodeType": "YulFunctionCall",
"src": "1998:12:13"
},
"nodeType": "YulExpressionStatement",
"src": "1998:12:13"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "1899:117:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2065:79:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2122:16:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2131:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2134:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2124:6:13"
},
"nodeType": "YulFunctionCall",
"src": "2124:12:13"
},
"nodeType": "YulExpressionStatement",
"src": "2124:12:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2088:5:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2113:5:13"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "2095:17:13"
},
"nodeType": "YulFunctionCall",
"src": "2095:24:13"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2085:2:13"
},
"nodeType": "YulFunctionCall",
"src": "2085:35:13"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2078:6:13"
},
"nodeType": "YulFunctionCall",
"src": "2078:43:13"
},
"nodeType": "YulIf",
"src": "2075:63:13"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2058:5:13",
"type": ""
}
],
"src": "2022:122:13"
}
]
},
"contents": "{\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_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\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 validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 13,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "60e06040523480156200001157600080fd5b5060405162002d3e38038062002d3e8339818101604052810190620000379190620001db565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1663aafd5e407f4f7074696d69737469634f7261636c65563200000000000000000000000000006040518263ffffffff1660e01b815260040162000100919062000233565b60206040518083038186803b1580156200011957600080fd5b505afa1580156200012e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001549190620001a9565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002ad565b600081519050620001a38162000293565b92915050565b600060208284031215620001c257620001c16200028e565b5b6000620001d28482850162000192565b91505092915050565b60008060408385031215620001f557620001f46200028e565b5b6000620002058582860162000192565b9250506020620002188582860162000192565b9150509250929050565b6200022d8162000264565b82525050565b60006020820190506200024a600083018462000222565b92915050565b60006200025d826200026e565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200029e8162000250565b8114620002aa57600080fd5b50565b60805160601c60a05160601c60c05160601c612a046200033a600039600081816104d60152818161082401528181610c1a01528181610f2401528181610f90015261115601526000818161027d015281816109db01528181610bbb01528181610ce001528181610db301528181610e6701528181610f6e0152610fd60152600061111a0152612a046000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80638921a614116100715780638921a614146101925780638b35e14e146101b057806397523661146101cc578063b9a3c84c146101ea578063c0b6b37e14610208578063e5a6b10f14610238576100b4565b806304cc1fd5146100b9578063067c4fd6146100d557806310a3a54b146101055780634fe4ecbf14610123578063563fcbe31461014157806357215d0614610174575b600080fd5b6100d360048036038101906100ce919061194f565b610256565b005b6100ef60048036038101906100ea91906119d2565b6105b3565b6040516100fc9190611f80565b60405180910390f35b61010d6108dc565b60405161011a91906122ae565b60405180910390f35b61012b6108e7565b60405161013891906122ae565b60405180910390f35b61015b60048036038101906101569190611922565b6108ee565b60405161016b9493929190611f34565b60405180910390f35b61017c6109d3565b60405161018991906122ae565b60405180910390f35b61019a6109d9565b6040516101a791906120df565b60405180910390f35b6101ca60048036038101906101c59190611922565b6109fd565b005b6101d46110f4565b6040516101e19190611f80565b60405180910390f35b6101f2611118565b6040516101ff91906120a9565b60405180910390f35b610222600480360381019061021d9190611922565b61113c565b60405161022f9190611f80565b60405180910390f35b610240611154565b60405161024d91906120c4565b60405180910390f35b60006102628484611178565b90503373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146102f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e99061216e565b60405180910390fd5b60006001600083815260200190815260200160002054905060008060008381526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff1615151515815260200160018201805461035490612593565b80601f016020809104026020016040519081016040528092919081815260200182805461038090612593565b80156103cd5780601f106103a2576101008083540402835291602001916103cd565b820191906000526020600020905b8154815290600101906020018083116103b057829003601f168201915b505050505081526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152505090506001600084815260200190815260200160002060009055670de0b6b3a764000084141561054d57600080838152602001908152602001600020600080820160006101000a81549060ff021916905560018201600061049691906116ce565b6002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160009055505061051a816040015182606001517f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166111ab9092919063ffffffff16565b81837f7a556a7dd17e7c65d9162b71bf1434aab934a041cdde071ee2653901c7a5c38260405160405180910390a36105aa565b600080600084815260200190815260200160002060000160006101000a81548160ff02191690831515021790555081837faebcfd3c9d59eec021c4ecaf988ae8afc864298b4db60a4a545cef73553c309f60405160405180910390a35b50505050505050565b600061012c8585905011156105fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f49061218e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561066d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106649061214e565b60405180910390fd5b600082116106b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a7906121ce565b60405180910390fd5b6107004386868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508585611231565b9050600073ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079d9061222e565b60405180910390fd5b6000806000838152602001908152602001600020905085858260010191906107cf92919061170e565b50838160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508281600301819055506108693330857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661126a909392919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16837fc2b482042db21b04bedfcbe9aca28571d55735d4a510157034ac5fbaa0bac8568989886040516108cb939291906120fa565b60405180910390a450949350505050565b66038d7ea4c6800081565b6201518081565b60006020528060005260406000206000915090508060000160009054906101000a900460ff169080600101805461092490612593565b80601f016020809104026020016040519081016040528092919081815260200182805461095090612593565b801561099d5780601f106109725761010080835404028352916020019161099d565b820191906000526020600020905b81548152906001019060200180831161098057829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b61012c81565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9e9061224e565b60405180910390fd5b8060000160009054906101000a900460ff1615610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af0906121ee565b60405180910390fd5b60018160000160006101000a81548160ff0219169083151502179055506000429050600060405180608001604052806045815260200161298a60459139836001016040518060400160405280600281526020017f3f22000000000000000000000000000000000000000000000000000000000000815250604051602001610b8293929190611e12565b60405160208183030381529060405290506000610b9f8383611178565b90508460016000838152602001908152602001600020819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311df92f17f5945535f4f525f4e4f5f5155455259000000000000000000000000000000000085857f000000000000000000000000000000000000000000000000000000000000000060006040518663ffffffff1660e01b8152600401610c5b959493929190612003565b602060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cad9190611a46565b506000670de0b6b3a764000066038d7ea4c680008660030154610cd0919061242f565b610cda91906123fe565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5a755a7f5945535f4f525f4e4f5f515545525900000000000000000000000000000000008787866040518563ffffffff1660e01b8152600401610d5d949392919061205d565b602060405180830381600087803b158015610d7757600080fd5b505af1158015610d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610daf9190611a46565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663473c45fe7f5945535f4f525f4e4f5f515545525900000000000000000000000000000000008787620151806040518563ffffffff1660e01b8152600401610e33949392919061205d565b600060405180830381600087803b158015610e4d57600080fd5b505af1158015610e61573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f327b0757f5945535f4f525f4e4f5f51554552590000000000000000000000000000000000878760008060016040518763ffffffff1660e01b8152600401610eea96959493929190611f9b565b600060405180830381600087803b158015610f0457600080fd5b505af1158015610f18573d6000803e3d6000fd5b50505050610f693330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661126a909392919063ffffffff16565b610fd47f0000000000000000000000000000000000000000000000000000000000000000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166112f39092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637c82288f33307f5945535f4f525f4e4f5f515545525900000000000000000000000000000000008989670de0b6b3a76400006040518763ffffffff1660e01b815260040161105f96959493929190611e6c565b602060405180830381600087803b15801561107957600080fd5b505af115801561108d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b19190611a46565b5086837f3e9086131cd56a11cb2fc7a195ff02167e166171a0357a11f6ee490775b51119876040516110e391906122ae565b60405180910390a350505050505050565b7f5945535f4f525f4e4f5f5155455259000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60016020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000828260405160200161118d9291906122c9565b60405160208183030381529060405280519060200120905092915050565b61122c8363a9059cbb60e01b84846040516024016111ca929190611f0b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611451565b505050565b60008484848460405160200161124a94939291906122f9565b604051602081830303815290604052805190602001209050949350505050565b6112ed846323b872dd60e01b85858560405160240161128b93929190611ed4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611451565b50505050565b600081148061138c575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b815260040161133a929190611e43565b60206040518083038186803b15801561135257600080fd5b505afa158015611366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138a9190611a46565b145b6113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c29061228e565b60405180910390fd5b61144c8363095ea7b360e01b84846040516024016113ea929190611f0b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611451565b505050565b60006114b3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166115189092919063ffffffff16565b905060008151111561151357808060200190518101906114d391906118f5565b611512576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115099061226e565b60405180910390fd5b5b505050565b60606115278484600085611530565b90509392505050565b606082471015611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c906121ae565b60405180910390fd5b61157e85611644565b6115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b49061220e565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516115e69190611dfb565b60006040518083038185875af1925050503d8060008114611623576040519150601f19603f3d011682016040523d82523d6000602084013e611628565b606091505b5091509150611638828286611667565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60608315611677578290506116c7565b60008351111561168a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116be919061212c565b60405180910390fd5b9392505050565b5080546116da90612593565b6000825580601f106116ec575061170b565b601f01602090049060005260206000209081019061170a9190611794565b5b50565b82805461171a90612593565b90600052602060002090601f01602090048101928261173c5760008555611783565b82601f1061175557803560ff1916838001178555611783565b82800160010185558215611783579182015b82811115611782578235825591602001919060010190611767565b5b5090506117909190611794565b5090565b5b808211156117ad576000816000905550600101611795565b5090565b60006117c46117bf8461236a565b612345565b9050828152602081018484840111156117e0576117df6126c1565b5b6117eb848285612551565b509392505050565b60008135905061180281612916565b92915050565b6000815190506118178161292d565b92915050565b60008135905061182c81612944565b92915050565b600082601f830112611847576118466126b7565b5b81356118578482602086016117b1565b91505092915050565b60008135905061186f8161295b565b92915050565b60008083601f84011261188b5761188a6126b7565b5b8235905067ffffffffffffffff8111156118a8576118a76126b2565b5b6020830191508360018202830111156118c4576118c36126bc565b5b9250929050565b6000813590506118da81612972565b92915050565b6000815190506118ef81612972565b92915050565b60006020828403121561190b5761190a6126cb565b5b600061191984828501611808565b91505092915050565b600060208284031215611938576119376126cb565b5b60006119468482850161181d565b91505092915050565b60008060008060808587031215611969576119686126cb565b5b60006119778782880161181d565b9450506020611988878288016118cb565b935050604085013567ffffffffffffffff8111156119a9576119a86126c6565b5b6119b587828801611832565b92505060606119c687828801611860565b91505092959194509250565b600080600080606085870312156119ec576119eb6126cb565b5b600085013567ffffffffffffffff811115611a0a57611a096126c6565b5b611a1687828801611875565b94509450506020611a29878288016117f3565b9250506040611a3a878288016118cb565b91505092959194509250565b600060208284031215611a5c57611a5b6126cb565b5b6000611a6a848285016118e0565b91505092915050565b611a7c81612489565b82525050565b611a8b8161249b565b82525050565b611a9a816124a7565b82525050565b6000611aab826123b0565b611ab581856123c6565b9350611ac5818560208601612560565b611ace816126d0565b840191505092915050565b6000611ae4826123b0565b611aee81856123d7565b9350611afe818560208601612560565b80840191505092915050565b611b13816124e5565b82525050565b611b22816124f7565b82525050565b611b3181612509565b82525050565b611b40816124b1565b82525050565b611b4f8161251b565b82525050565b6000611b6183856123e2565b9350611b6e838584612551565b611b77836126d0565b840190509392505050565b6000611b8d826123bb565b611b9781856123e2565b9350611ba7818560208601612560565b611bb0816126d0565b840191505092915050565b6000611bc6826123bb565b611bd081856123f3565b9350611be0818560208601612560565b80840191505092915050565b60008154611bf981612593565b611c0381866123f3565b94506001821660008114611c1e5760018114611c2f57611c62565b60ff19831686528186019350611c62565b611c388561239b565b60005b83811015611c5a57815481890152600182019150602081019050611c3b565b838801955050505b50505092915050565b6000611c786017836123e2565b9150611c83826126e1565b602082019050919050565b6000611c9b6015836123e2565b9150611ca68261270a565b602082019050919050565b6000611cbe601a836123e2565b9150611cc982612733565b602082019050919050565b6000611ce16026836123e2565b9150611cec8261275c565b604082019050919050565b6000611d046018836123e2565b9150611d0f826127ab565b602082019050919050565b6000611d276017836123e2565b9150611d32826127d4565b602082019050919050565b6000611d4a601d836123e2565b9150611d55826127fd565b602082019050919050565b6000611d6d6015836123e2565b9150611d7882612826565b602082019050919050565b6000611d906014836123e2565b9150611d9b8261284f565b602082019050919050565b6000611db3602a836123e2565b9150611dbe82612878565b604082019050919050565b6000611dd66036836123e2565b9150611de1826128c7565b604082019050919050565b611df5816124db565b82525050565b6000611e078284611ad9565b915081905092915050565b6000611e1e8286611bbb565b9150611e2a8285611bec565b9150611e368284611bbb565b9150819050949350505050565b6000604082019050611e586000830185611a73565b611e656020830184611a73565b9392505050565b600060c082019050611e816000830189611a73565b611e8e6020830188611a73565b611e9b6040830187611a91565b611ea86060830186611dec565b8181036080830152611eba8185611aa0565b9050611ec960a0830184611b37565b979650505050505050565b6000606082019050611ee96000830186611a73565b611ef66020830185611a73565b611f036040830184611dec565b949350505050565b6000604082019050611f206000830185611a73565b611f2d6020830184611dec565b9392505050565b6000608082019050611f496000830187611a82565b8181036020830152611f5b8186611b82565b9050611f6a6040830185611a73565b611f776060830184611dec565b95945050505050565b6000602082019050611f956000830184611a91565b92915050565b600060c082019050611fb06000830189611a91565b611fbd6020830188611dec565b8181036040830152611fcf8187611aa0565b9050611fde6060830186611a82565b611feb6080830185611a82565b611ff860a0830184611a82565b979650505050505050565b600060a0820190506120186000830188611a91565b6120256020830187611dec565b81810360408301526120378186611aa0565b90506120466060830185611b19565b6120536080830184611b46565b9695505050505050565b60006080820190506120726000830187611a91565b61207f6020830186611dec565b81810360408301526120918185611aa0565b90506120a06060830184611dec565b95945050505050565b60006020820190506120be6000830184611b0a565b92915050565b60006020820190506120d96000830184611b19565b92915050565b60006020820190506120f46000830184611b28565b92915050565b60006040820190508181036000830152612115818587611b55565b90506121246020830184611dec565b949350505050565b600060208201905081810360008301526121468184611b82565b905092915050565b6000602082019050818103600083015261216781611c6b565b9050919050565b6000602082019050818103600083015261218781611c8e565b9050919050565b600060208201905081810360008301526121a781611cb1565b9050919050565b600060208201905081810360008301526121c781611cd4565b9050919050565b600060208201905081810360008301526121e781611cf7565b9050919050565b6000602082019050818103600083015261220781611d1a565b9050919050565b6000602082019050818103600083015261222781611d3d565b9050919050565b6000602082019050818103600083015261224781611d60565b9050919050565b6000602082019050818103600083015261226781611d83565b9050919050565b6000602082019050818103600083015261228781611da6565b9050919050565b600060208201905081810360008301526122a781611dc9565b9050919050565b60006020820190506122c36000830184611dec565b92915050565b60006040820190506122de6000830185611dec565b81810360208301526122f08184611aa0565b90509392505050565b600060808201905061230e6000830187611dec565b81810360208301526123208186611b82565b905061232f6040830185611a73565b61233c6060830184611dec565b95945050505050565b600061234f612360565b905061235b82826125c5565b919050565b6000604051905090565b600067ffffffffffffffff82111561238557612384612683565b5b61238e826126d0565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000612409826124db565b9150612414836124db565b92508261242457612423612625565b5b828204905092915050565b600061243a826124db565b9150612445836124db565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561247e5761247d6125f6565b5b828202905092915050565b6000612494826124bb565b9050919050565b60008115159050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006124f08261252d565b9050919050565b60006125028261252d565b9050919050565b60006125148261252d565b9050919050565b6000612526826124db565b9050919050565b60006125388261253f565b9050919050565b600061254a826124bb565b9050919050565b82818337600083830152505050565b60005b8381101561257e578082015181840152602081019050612563565b8381111561258d576000848401525b50505050565b600060028204905060018216806125ab57607f821691505b602082108114156125bf576125be612654565b5b50919050565b6125ce826126d0565b810181811067ffffffffffffffff821117156125ed576125ec612683565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f496e76616c696420696e73757265642061646472657373000000000000000000600082015250565b7f556e617574686f72697a65642063616c6c6261636b0000000000000000000000600082015250565b7f4576656e74206465736372697074696f6e20746f6f206c6f6e67000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e742073686f756c642062652061626f766520300000000000000000600082015250565b7f436c61696d20616c726561647920696e69746961746564000000000000000000600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f506f6c69637920616c7265616479206973737565640000000000000000000000600082015250565b7f496e737572616e6365206e6f7420697373756564000000000000000000000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b61291f81612489565b811461292a57600080fd5b50565b6129368161249b565b811461294157600080fd5b50565b61294d816124a7565b811461295857600080fd5b50565b612964816124b1565b811461296f57600080fd5b50565b61297b816124db565b811461298657600080fd5b5056fe713a224861642074686520666f6c6c6f77696e6720696e7375726564206576656e74206f63637572726564206173206f6620726571756573742074696d657374616d703a20a2646970667358221220bf30773aea34fc61ec5b6f3e63e9a72614bef8072e00effbfd9282f00ecf415564736f6c63430008070033",
"opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2D3E CODESIZE SUB DUP1 PUSH3 0x2D3E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x1DB JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xC0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAFD5E40 PUSH32 0x4F7074696D69737469634F7261636C6556320000000000000000000000000000 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x100 SWAP2 SWAP1 PUSH3 0x233 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x12E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x154 SWAP2 SWAP1 PUSH3 0x1A9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x60 SHL DUP2 MSTORE POP POP POP POP PUSH3 0x2AD JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x1A3 DUP2 PUSH3 0x293 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x1C2 JUMPI PUSH3 0x1C1 PUSH3 0x28E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH3 0x1D2 DUP5 DUP3 DUP6 ADD PUSH3 0x192 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1F5 JUMPI PUSH3 0x1F4 PUSH3 0x28E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH3 0x205 DUP6 DUP3 DUP7 ADD PUSH3 0x192 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0x218 DUP6 DUP3 DUP7 ADD PUSH3 0x192 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH3 0x22D DUP2 PUSH3 0x264 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x24A PUSH1 0x0 DUP4 ADD DUP5 PUSH3 0x222 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x25D DUP3 PUSH3 0x26E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x29E DUP2 PUSH3 0x250 JUMP JUMPDEST DUP2 EQ PUSH3 0x2AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x2A04 PUSH3 0x33A PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x4D6 ADD MSTORE DUP2 DUP2 PUSH2 0x824 ADD MSTORE DUP2 DUP2 PUSH2 0xC1A ADD MSTORE DUP2 DUP2 PUSH2 0xF24 ADD MSTORE DUP2 DUP2 PUSH2 0xF90 ADD MSTORE PUSH2 0x1156 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x27D ADD MSTORE DUP2 DUP2 PUSH2 0x9DB ADD MSTORE DUP2 DUP2 PUSH2 0xBBB ADD MSTORE DUP2 DUP2 PUSH2 0xCE0 ADD MSTORE DUP2 DUP2 PUSH2 0xDB3 ADD MSTORE DUP2 DUP2 PUSH2 0xE67 ADD MSTORE DUP2 DUP2 PUSH2 0xF6E ADD MSTORE PUSH2 0xFD6 ADD MSTORE PUSH1 0x0 PUSH2 0x111A ADD MSTORE PUSH2 0x2A04 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 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8921A614 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8921A614 EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x8B35E14E EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x97523661 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0xB9A3C84C EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0xC0B6B37E EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xE5A6B10F EQ PUSH2 0x238 JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x4CC1FD5 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x67C4FD6 EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0x10A3A54B EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x4FE4ECBF EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x563FCBE3 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0x57215D06 EQ PUSH2 0x174 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x194F JUMP JUMPDEST PUSH2 0x256 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xEF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xEA SWAP2 SWAP1 PUSH2 0x19D2 JUMP JUMPDEST PUSH2 0x5B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFC SWAP2 SWAP1 PUSH2 0x1F80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x8DC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x22AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x138 SWAP2 SWAP1 PUSH2 0x22AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x156 SWAP2 SWAP1 PUSH2 0x1922 JUMP JUMPDEST PUSH2 0x8EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1F34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17C PUSH2 0x9D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x189 SWAP2 SWAP1 PUSH2 0x22AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x20DF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1CA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1C5 SWAP2 SWAP1 PUSH2 0x1922 JUMP JUMPDEST PUSH2 0x9FD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D4 PUSH2 0x10F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E1 SWAP2 SWAP1 PUSH2 0x1F80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH2 0x1118 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x20A9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x222 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x21D SWAP2 SWAP1 PUSH2 0x1922 JUMP JUMPDEST PUSH2 0x113C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22F SWAP2 SWAP1 PUSH2 0x1F80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x240 PUSH2 0x1154 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24D SWAP2 SWAP1 PUSH2 0x20C4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x262 DUP5 DUP5 PUSH2 0x1178 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E9 SWAP1 PUSH2 0x216E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH2 0x354 SWAP1 PUSH2 0x2593 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 0x380 SWAP1 PUSH2 0x2593 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3CD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3A2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3CD 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 0x3B0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP PUSH1 0x1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH8 0xDE0B6B3A7640000 DUP5 EQ ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH1 0xFF MUL NOT AND SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 PUSH2 0x496 SWAP2 SWAP1 PUSH2 0x16CE JUMP JUMPDEST PUSH1 0x2 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE POP POP PUSH2 0x51A DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x11AB SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 DUP4 PUSH32 0x7A556A7DD17E7C65D9162B71BF1434AAB934A041CDDE071EE2653901C7A5C382 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x5AA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP4 PUSH32 0xAEBCFD3C9D59EEC021C4ECAF988AE8AFC864298B4DB60A4A545CEF73553C309F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12C DUP6 DUP6 SWAP1 POP GT ISZERO PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5F4 SWAP1 PUSH2 0x218E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x66D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x664 SWAP1 PUSH2 0x214E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x6B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6A7 SWAP1 PUSH2 0x21CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x700 NUMBER DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP DUP6 DUP6 PUSH2 0x1231 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x79D SWAP1 PUSH2 0x222E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP6 DUP6 DUP3 PUSH1 0x1 ADD SWAP2 SWAP1 PUSH2 0x7CF SWAP3 SWAP2 SWAP1 PUSH2 0x170E JUMP JUMPDEST POP DUP4 DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP3 DUP2 PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x869 CALLER ADDRESS DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x126A SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0xC2B482042DB21B04BEDFCBE9ACA28571D55735D4A510157034AC5FBAA0BAC856 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD PUSH2 0x8CB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x20FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH7 0x38D7EA4C68000 DUP2 JUMP JUMPDEST PUSH3 0x15180 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH2 0x924 SWAP1 PUSH2 0x2593 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 0x950 SWAP1 PUSH2 0x2593 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x99D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x972 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x99D 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 0x980 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 DUP1 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x3 ADD SLOAD SWAP1 POP DUP5 JUMP JUMPDEST PUSH2 0x12C DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAA7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA9E SWAP1 PUSH2 0x224E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xAF9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAF0 SWAP1 PUSH2 0x21EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 TIMESTAMP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x298A PUSH1 0x45 SWAP2 CODECOPY DUP4 PUSH1 0x1 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3F22000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB82 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E12 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH1 0x0 PUSH2 0xB9F DUP4 DUP4 PUSH2 0x1178 JUMP JUMPDEST SWAP1 POP DUP5 PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x11DF92F1 PUSH32 0x5945535F4F525F4E4F5F51554552590000000000000000000000000000000000 DUP6 DUP6 PUSH32 0x0 PUSH1 0x0 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC5B SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2003 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC89 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCAD SWAP2 SWAP1 PUSH2 0x1A46 JUMP JUMPDEST POP PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH7 0x38D7EA4C68000 DUP7 PUSH1 0x3 ADD SLOAD PUSH2 0xCD0 SWAP2 SWAP1 PUSH2 0x242F JUMP JUMPDEST PUSH2 0xCDA SWAP2 SWAP1 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAD5A755A PUSH32 0x5945535F4F525F4E4F5F51554552590000000000000000000000000000000000 DUP8 DUP8 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD5D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x205D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDAF SWAP2 SWAP1 PUSH2 0x1A46 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x473C45FE PUSH32 0x5945535F4F525F4E4F5F51554552590000000000000000000000000000000000 DUP8 DUP8 PUSH3 0x15180 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE33 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x205D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE61 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF327B075 PUSH32 0x5945535F4F525F4E4F5F51554552590000000000000000000000000000000000 DUP8 DUP8 PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xEEA SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1F9B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF18 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xF69 CALLER ADDRESS DUP4 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x126A SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xFD4 PUSH32 0x0 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x12F3 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7C82288F CALLER ADDRESS PUSH32 0x5945535F4F525F4E4F5F51554552590000000000000000000000000000000000 DUP10 DUP10 PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x105F SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E6C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1079 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x108D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10B1 SWAP2 SWAP1 PUSH2 0x1A46 JUMP JUMPDEST POP DUP7 DUP4 PUSH32 0x3E9086131CD56A11CB2FC7A195FF02167E166171A0357A11F6EE490775B51119 DUP8 PUSH1 0x40 MLOAD PUSH2 0x10E3 SWAP2 SWAP1 PUSH2 0x22AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x5945535F4F525F4E4F5F51554552590000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x118D SWAP3 SWAP2 SWAP1 PUSH2 0x22C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x122C DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x11CA SWAP3 SWAP2 SWAP1 PUSH2 0x1F0B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x1451 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x124A SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x22F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x12ED DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x128B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1ED4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x1451 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EQ DUP1 PUSH2 0x138C JUMPI POP PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDD62ED3E ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x133A SWAP3 SWAP2 SWAP1 PUSH2 0x1E43 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1366 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x138A SWAP2 SWAP1 PUSH2 0x1A46 JUMP JUMPDEST EQ JUMPDEST PUSH2 0x13CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13C2 SWAP1 PUSH2 0x228E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x144C DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x13EA SWAP3 SWAP2 SWAP1 PUSH2 0x1F0B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x1451 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1518 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT ISZERO PUSH2 0x1513 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x14D3 SWAP2 SWAP1 PUSH2 0x18F5 JUMP JUMPDEST PUSH2 0x1512 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1509 SWAP1 PUSH2 0x226E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1527 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x1530 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x1575 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x156C SWAP1 PUSH2 0x21AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x157E DUP6 PUSH2 0x1644 JUMP JUMPDEST PUSH2 0x15BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15B4 SWAP1 PUSH2 0x220E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x15E6 SWAP2 SWAP1 PUSH2 0x1DFB 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 0x1623 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 0x1628 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1638 DUP3 DUP3 DUP7 PUSH2 0x1667 JUMP JUMPDEST SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1677 JUMPI DUP3 SWAP1 POP PUSH2 0x16C7 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD GT ISZERO PUSH2 0x168A JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16BE SWAP2 SWAP1 PUSH2 0x212C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x16DA SWAP1 PUSH2 0x2593 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x16EC JUMPI POP PUSH2 0x170B JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x170A SWAP2 SWAP1 PUSH2 0x1794 JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x171A SWAP1 PUSH2 0x2593 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x173C JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x1783 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x1755 JUMPI DUP1 CALLDATALOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1783 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1783 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1782 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1767 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x1790 SWAP2 SWAP1 PUSH2 0x1794 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x17AD JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x1795 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17C4 PUSH2 0x17BF DUP5 PUSH2 0x236A JUMP JUMPDEST PUSH2 0x2345 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x17E0 JUMPI PUSH2 0x17DF PUSH2 0x26C1 JUMP JUMPDEST JUMPDEST PUSH2 0x17EB DUP5 DUP3 DUP6 PUSH2 0x2551 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1802 DUP2 PUSH2 0x2916 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1817 DUP2 PUSH2 0x292D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x182C DUP2 PUSH2 0x2944 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1847 JUMPI PUSH2 0x1846 PUSH2 0x26B7 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1857 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x17B1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x186F DUP2 PUSH2 0x295B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x188B JUMPI PUSH2 0x188A PUSH2 0x26B7 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18A8 JUMPI PUSH2 0x18A7 PUSH2 0x26B2 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x18C4 JUMPI PUSH2 0x18C3 PUSH2 0x26BC JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x18DA DUP2 PUSH2 0x2972 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x18EF DUP2 PUSH2 0x2972 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x190B JUMPI PUSH2 0x190A PUSH2 0x26CB JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1919 DUP5 DUP3 DUP6 ADD PUSH2 0x1808 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1938 JUMPI PUSH2 0x1937 PUSH2 0x26CB JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1946 DUP5 DUP3 DUP6 ADD PUSH2 0x181D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1969 JUMPI PUSH2 0x1968 PUSH2 0x26CB JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1977 DUP8 DUP3 DUP9 ADD PUSH2 0x181D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x1988 DUP8 DUP3 DUP9 ADD PUSH2 0x18CB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19A9 JUMPI PUSH2 0x19A8 PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST PUSH2 0x19B5 DUP8 DUP3 DUP9 ADD PUSH2 0x1832 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x19C6 DUP8 DUP3 DUP9 ADD PUSH2 0x1860 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x19EC JUMPI PUSH2 0x19EB PUSH2 0x26CB JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A0A JUMPI PUSH2 0x1A09 PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST PUSH2 0x1A16 DUP8 DUP3 DUP9 ADD PUSH2 0x1875 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 PUSH2 0x1A29 DUP8 DUP3 DUP9 ADD PUSH2 0x17F3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x1A3A DUP8 DUP3 DUP9 ADD PUSH2 0x18CB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A5C JUMPI PUSH2 0x1A5B PUSH2 0x26CB JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1A6A DUP5 DUP3 DUP6 ADD PUSH2 0x18E0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A7C DUP2 PUSH2 0x2489 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A8B DUP2 PUSH2 0x249B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A9A DUP2 PUSH2 0x24A7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AAB DUP3 PUSH2 0x23B0 JUMP JUMPDEST PUSH2 0x1AB5 DUP2 DUP6 PUSH2 0x23C6 JUMP JUMPDEST SWAP4 POP PUSH2 0x1AC5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2560 JUMP JUMPDEST PUSH2 0x1ACE DUP2 PUSH2 0x26D0 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AE4 DUP3 PUSH2 0x23B0 JUMP JUMPDEST PUSH2 0x1AEE DUP2 DUP6 PUSH2 0x23D7 JUMP JUMPDEST SWAP4 POP PUSH2 0x1AFE DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2560 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1B13 DUP2 PUSH2 0x24E5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1B22 DUP2 PUSH2 0x24F7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1B31 DUP2 PUSH2 0x2509 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1B40 DUP2 PUSH2 0x24B1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1B4F DUP2 PUSH2 0x251B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B61 DUP4 DUP6 PUSH2 0x23E2 JUMP JUMPDEST SWAP4 POP PUSH2 0x1B6E DUP4 DUP6 DUP5 PUSH2 0x2551 JUMP JUMPDEST PUSH2 0x1B77 DUP4 PUSH2 0x26D0 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B8D DUP3 PUSH2 0x23BB JUMP JUMPDEST PUSH2 0x1B97 DUP2 DUP6 PUSH2 0x23E2 JUMP JUMPDEST SWAP4 POP PUSH2 0x1BA7 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2560 JUMP JUMPDEST PUSH2 0x1BB0 DUP2 PUSH2 0x26D0 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BC6 DUP3 PUSH2 0x23BB JUMP JUMPDEST PUSH2 0x1BD0 DUP2 DUP6 PUSH2 0x23F3 JUMP JUMPDEST SWAP4 POP PUSH2 0x1BE0 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2560 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH2 0x1BF9 DUP2 PUSH2 0x2593 JUMP JUMPDEST PUSH2 0x1C03 DUP2 DUP7 PUSH2 0x23F3 JUMP JUMPDEST SWAP5 POP PUSH1 0x1 DUP3 AND PUSH1 0x0 DUP2 EQ PUSH2 0x1C1E JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x1C2F JUMPI PUSH2 0x1C62 JUMP JUMPDEST PUSH1 0xFF NOT DUP4 AND DUP7 MSTORE DUP2 DUP7 ADD SWAP4 POP PUSH2 0x1C62 JUMP JUMPDEST PUSH2 0x1C38 DUP6 PUSH2 0x239B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C5A JUMPI DUP2 SLOAD DUP2 DUP10 ADD MSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1C3B JUMP JUMPDEST DUP4 DUP9 ADD SWAP6 POP POP POP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C78 PUSH1 0x17 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C83 DUP3 PUSH2 0x26E1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C9B PUSH1 0x15 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1CA6 DUP3 PUSH2 0x270A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CBE PUSH1 0x1A DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1CC9 DUP3 PUSH2 0x2733 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CE1 PUSH1 0x26 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1CEC DUP3 PUSH2 0x275C JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D04 PUSH1 0x18 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D0F DUP3 PUSH2 0x27AB JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D27 PUSH1 0x17 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D32 DUP3 PUSH2 0x27D4 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D4A PUSH1 0x1D DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D55 DUP3 PUSH2 0x27FD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D6D PUSH1 0x15 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D78 DUP3 PUSH2 0x2826 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D90 PUSH1 0x14 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D9B DUP3 PUSH2 0x284F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DB3 PUSH1 0x2A DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1DBE DUP3 PUSH2 0x2878 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD6 PUSH1 0x36 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1DE1 DUP3 PUSH2 0x28C7 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1DF5 DUP2 PUSH2 0x24DB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E07 DUP3 DUP5 PUSH2 0x1AD9 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E1E DUP3 DUP7 PUSH2 0x1BBB JUMP JUMPDEST SWAP2 POP PUSH2 0x1E2A DUP3 DUP6 PUSH2 0x1BEC JUMP JUMPDEST SWAP2 POP PUSH2 0x1E36 DUP3 DUP5 PUSH2 0x1BBB JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1E58 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1E65 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1A73 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x1E81 PUSH1 0x0 DUP4 ADD DUP10 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1E8E PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1E9B PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0x1EA8 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1DEC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1EBA DUP2 DUP6 PUSH2 0x1AA0 JUMP JUMPDEST SWAP1 POP PUSH2 0x1EC9 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1B37 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x1EE9 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1EF6 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1F03 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1DEC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1F20 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1F2D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1DEC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x1F49 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1A82 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1F5B DUP2 DUP7 PUSH2 0x1B82 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F6A PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1F77 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1DEC JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1F95 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A91 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x1FB0 PUSH1 0x0 DUP4 ADD DUP10 PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0x1FBD PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x1DEC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1FCF DUP2 DUP8 PUSH2 0x1AA0 JUMP JUMPDEST SWAP1 POP PUSH2 0x1FDE PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x1FEB PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x1FF8 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1A82 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x2018 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0x2025 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x1DEC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x2037 DUP2 DUP7 PUSH2 0x1AA0 JUMP JUMPDEST SWAP1 POP PUSH2 0x2046 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x1B19 JUMP JUMPDEST PUSH2 0x2053 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1B46 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2072 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0x207F PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1DEC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x2091 DUP2 DUP6 PUSH2 0x1AA0 JUMP JUMPDEST SWAP1 POP PUSH2 0x20A0 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1DEC JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x20BE PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1B0A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x20D9 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1B19 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x20F4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1B28 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2115 DUP2 DUP6 DUP8 PUSH2 0x1B55 JUMP JUMPDEST SWAP1 POP PUSH2 0x2124 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1DEC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2146 DUP2 DUP5 PUSH2 0x1B82 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 0x2167 DUP2 PUSH2 0x1C6B 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 0x2187 DUP2 PUSH2 0x1C8E 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 0x21A7 DUP2 PUSH2 0x1CB1 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 0x21C7 DUP2 PUSH2 0x1CD4 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 0x21E7 DUP2 PUSH2 0x1CF7 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 0x2207 DUP2 PUSH2 0x1D1A 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 0x2227 DUP2 PUSH2 0x1D3D 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 0x2247 DUP2 PUSH2 0x1D60 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 0x2267 DUP2 PUSH2 0x1D83 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 0x2287 DUP2 PUSH2 0x1DA6 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 0x22A7 DUP2 PUSH2 0x1DC9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x22C3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1DEC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x22DE PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1DEC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x22F0 DUP2 DUP5 PUSH2 0x1AA0 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x230E PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1DEC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x2320 DUP2 DUP7 PUSH2 0x1B82 JUMP JUMPDEST SWAP1 POP PUSH2 0x232F PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x233C PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1DEC JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x234F PUSH2 0x2360 JUMP JUMPDEST SWAP1 POP PUSH2 0x235B DUP3 DUP3 PUSH2 0x25C5 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 0x2385 JUMPI PUSH2 0x2384 PUSH2 0x2683 JUMP JUMPDEST JUMPDEST PUSH2 0x238E DUP3 PUSH2 0x26D0 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 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 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 0x2409 DUP3 PUSH2 0x24DB JUMP JUMPDEST SWAP2 POP PUSH2 0x2414 DUP4 PUSH2 0x24DB JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x2424 JUMPI PUSH2 0x2423 PUSH2 0x2625 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x243A DUP3 PUSH2 0x24DB JUMP JUMPDEST SWAP2 POP PUSH2 0x2445 DUP4 PUSH2 0x24DB JUMP JUMPDEST SWAP3 POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x247E JUMPI PUSH2 0x247D PUSH2 0x25F6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MUL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2494 DUP3 PUSH2 0x24BB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 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 PUSH2 0x24F0 DUP3 PUSH2 0x252D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2502 DUP3 PUSH2 0x252D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2514 DUP3 PUSH2 0x252D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2526 DUP3 PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2538 DUP3 PUSH2 0x253F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x254A DUP3 PUSH2 0x24BB JUMP JUMPDEST 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 0x257E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2563 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x258D 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 0x25AB JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x25BF JUMPI PUSH2 0x25BE PUSH2 0x2654 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x25CE DUP3 PUSH2 0x26D0 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x25ED JUMPI PUSH2 0x25EC PUSH2 0x2683 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP 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 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 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C696420696E73757265642061646472657373000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x556E617574686F72697A65642063616C6C6261636B0000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4576656E74206465736372697074696F6E20746F6F206C6F6E67000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x416D6F756E742073686F756C642062652061626F766520300000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x436C61696D20616C726561647920696E69746961746564000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x506F6C69637920616C7265616479206973737565640000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x496E737572616E6365206E6F7420697373756564000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x20746F206E6F6E2D7A65726F20616C6C6F77616E636500000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x291F DUP2 PUSH2 0x2489 JUMP JUMPDEST DUP2 EQ PUSH2 0x292A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2936 DUP2 PUSH2 0x249B JUMP JUMPDEST DUP2 EQ PUSH2 0x2941 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x294D DUP2 PUSH2 0x24A7 JUMP JUMPDEST DUP2 EQ PUSH2 0x2958 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2964 DUP2 PUSH2 0x24B1 JUMP JUMPDEST DUP2 EQ PUSH2 0x296F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x297B DUP2 PUSH2 0x24DB JUMP JUMPDEST DUP2 EQ PUSH2 0x2986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH18 0x3A224861642074686520666F6C6C6F77696E PUSH8 0x20696E7375726564 KECCAK256 PUSH6 0x76656E74206F PUSH4 0x63757272 PUSH6 0x64206173206F PUSH7 0x20726571756573 PUSH21 0x2074696D657374616D703A20A26469706673582212 KECCAK256 0xBF ADDRESS PUSH24 0x3AEA34FC61EC5B6F3E63E9A72614BEF8072E00EFFBFD9282 CREATE 0xE 0xCF COINBASE SSTORE PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
"sourceMap": "1169:9401:12:-:0;;;4001:287;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4091:14;4066:40;;;;;;;;;;;;4134:9;4116:28;;;;;;;;;;;;4203:14;4187:56;;;4244:35;4187:93;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4154:127;;;;;;;;;;;;4001:287;;1169:9401;;7:143:13;64:5;95:6;89:13;80:22;;111:33;138:5;111:33;:::i;:::-;7:143;;;;:::o;156:351::-;226:6;275:2;263:9;254:7;250:23;246:32;243:119;;;281:79;;:::i;:::-;243:119;401:1;426:64;482:7;473:6;462:9;458:22;426:64;:::i;:::-;416:74;;372:128;156:351;;;;:::o;513:507::-;592:6;600;649:2;637:9;628:7;624:23;620:32;617:119;;;655:79;;:::i;:::-;617:119;775:1;800:64;856:7;847:6;836:9;832:22;800:64;:::i;:::-;790:74;;746:128;913:2;939:64;995:7;986:6;975:9;971:22;939:64;:::i;:::-;929:74;;884:129;513:507;;;;;:::o;1026:118::-;1113:24;1131:5;1113:24;:::i;:::-;1108:3;1101:37;1026:118;;:::o;1150:222::-;1243:4;1281:2;1270:9;1266:18;1258:26;;1294:71;1362:1;1351:9;1347:17;1338:6;1294:71;:::i;:::-;1150:222;;;;:::o;1459:96::-;1496:7;1525:24;1543:5;1525:24;:::i;:::-;1514:35;;1459:96;;;:::o;1561:77::-;1598:7;1627:5;1616:16;;1561:77;;;:::o;1644:126::-;1681:7;1721:42;1714:5;1710:54;1699:65;;1644:126;;;:::o;1899:117::-;2008:1;2005;1998:12;2022:122;2095:24;2113:5;2095:24;:::i;:::-;2088:5;2085:35;2075:63;;2134:1;2131;2124:12;2075:63;2022:122;:::o;1169:9401:12:-;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@MAX_EVENT_DESCRIPTION_SIZE_1642": {
"entryPoint": 2515,
"id": 1642,
"parameterSlots": 0,
"returnSlots": 0
},
"@_callOptionalReturn_506": {
"entryPoint": 5201,
"id": 506,
"parameterSlots": 2,
"returnSlots": 0
},
"@_getClaimId_2107": {
"entryPoint": 4472,
"id": 2107,
"parameterSlots": 2,
"returnSlots": 1
},
"@_getPolicyId_2089": {
"entryPoint": 4657,
"id": 2089,
"parameterSlots": 4,
"returnSlots": 1
},
"@currency_1639": {
"entryPoint": 4436,
"id": 1639,
"parameterSlots": 0,
"returnSlots": 0
},
"@finder_1633": {
"entryPoint": 4376,
"id": 1633,
"parameterSlots": 0,
"returnSlots": 0
},
"@functionCallWithValue_666": {
"entryPoint": 5424,
"id": 666,
"parameterSlots": 4,
"returnSlots": 1
},
"@functionCall_596": {
"entryPoint": 5400,
"id": 596,
"parameterSlots": 3,
"returnSlots": 1
},
"@insuranceClaims_1613": {
"entryPoint": 4412,
"id": 1613,
"parameterSlots": 0,
"returnSlots": 0
},
"@insurancePolicies_1609": {
"entryPoint": 2286,
"id": 1609,
"parameterSlots": 0,
"returnSlots": 0
},
"@isContract_525": {
"entryPoint": 5700,
"id": 525,
"parameterSlots": 1,
"returnSlots": 1
},
"@issueInsurance_1817": {
"entryPoint": 1459,
"id": 1817,
"parameterSlots": 4,
"returnSlots": 1
},
"@oo_1636": {
"entryPoint": 2521,
"id": 1636,
"parameterSlots": 0,
"returnSlots": 0
},
"@optimisticOracleLivenessTime_1621": {
"entryPoint": 2279,
"id": 1621,
"parameterSlots": 0,
"returnSlots": 0
},
"@oracleBondPercentage_1616": {
"entryPoint": 2268,
"id": 1616,
"parameterSlots": 0,
"returnSlots": 0
},
"@priceIdentifier_1624": {
"entryPoint": 4340,
"id": 1624,
"parameterSlots": 0,
"returnSlots": 0
},
"@priceSettled_2065": {
"entryPoint": 598,
"id": 2065,
"parameterSlots": 4,
"returnSlots": 0
},
"@safeApprove_328": {
"entryPoint": 4851,
"id": 328,
"parameterSlots": 3,
"returnSlots": 0
},
"@safeTransferFrom_284": {
"entryPoint": 4714,
"id": 284,
"parameterSlots": 4,
"returnSlots": 0
},
"@safeTransfer_258": {
"entryPoint": 4523,
"id": 258,
"parameterSlots": 3,
"returnSlots": 0
},
"@submitClaim_1979": {
"entryPoint": 2557,
"id": 1979,
"parameterSlots": 1,
"returnSlots": 0
},
"@verifyCallResult_801": {
"entryPoint": 5735,
"id": 801,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_available_length_t_bytes_memory_ptr": {
"entryPoint": 6065,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_address": {
"entryPoint": 6131,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bool_fromMemory": {
"entryPoint": 6152,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes32": {
"entryPoint": 6173,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes_memory_ptr": {
"entryPoint": 6194,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_int256": {
"entryPoint": 6240,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_string_calldata_ptr": {
"entryPoint": 6261,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_t_uint256": {
"entryPoint": 6347,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256_fromMemory": {
"entryPoint": 6368,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bool_fromMemory": {
"entryPoint": 6389,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32": {
"entryPoint": 6434,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32t_uint256t_bytes_memory_ptrt_int256": {
"entryPoint": 6479,
"id": null,
"parameterSlots": 2,
"returnSlots": 4
},
"abi_decode_tuple_t_string_calldata_ptrt_addresst_uint256": {
"entryPoint": 6610,
"id": null,
"parameterSlots": 2,
"returnSlots": 4
},
"abi_decode_tuple_t_uint256_fromMemory": {
"entryPoint": 6726,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 6771,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bool_to_t_bool_fromStack": {
"entryPoint": 6786,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack": {
"entryPoint": 6801,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack": {
"entryPoint": 6816,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 6873,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_contract$_FinderInterface_$1216_to_t_address_fromStack": {
"entryPoint": 6922,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_contract$_IERC20_$190_to_t_address_fromStack": {
"entryPoint": 6937,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_contract$_OptimisticOracleV2Interface_$1582_to_t_address_fromStack": {
"entryPoint": 6952,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_int256_to_t_int256_fromStack": {
"entryPoint": 6967,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_rational_0_by_1_to_t_uint256_fromStack": {
"entryPoint": 6982,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 6997,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7042,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 7099,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_string_storage_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 7148,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_stringliteral_31a27b2540ab06c48c548f1322928111bf775677522ce27cb1141fd9d696da78_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7275,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_397aaaccf4e12d92be59946dfcacdf68dc2c5b82b4a37f6e4ef2cd79e09c3db4_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7310,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_50ae26a9d347302aae8564609c1d5427cb95105a08621ec1fae953f198eab5c4_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7345,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7380,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_5e579a0cb871fe308cb1e293544f75d10c9dbe3def875f5a1f99f0aa2786aa3f_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7415,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_5fed739a4c4ad18f14b01264a20ed404d60f63cdf6342f522a3cc353b6a41860_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7450,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7485,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_d4b8fa0e2cd41e5501dc9c5b6b1a5aefcb71cb9c0fbdce8f12de17fb679490d1_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7520,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_de188bf9c213a5d1bbbfbc484f92c9ad3ffdc25d107da4fbdec7b8bd7197460e_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7555,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7590,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25_to_t_string_memory_ptr_fromStack": {
"entryPoint": 7625,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 7660,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 7675,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_packed_t_string_memory_ptr_t_string_storage_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 7698,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
"entryPoint": 7747,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_address_t_bytes32_t_uint256_t_bytes_memory_ptr_t_int256__to_t_address_t_address_t_bytes32_t_uint256_t_bytes_memory_ptr_t_int256__fromStack_reversed": {
"entryPoint": 7788,
"id": null,
"parameterSlots": 7,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
"entryPoint": 7892,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
"entryPoint": 7947,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_bool_t_string_memory_ptr_t_address_t_uint256__to_t_bool_t_string_memory_ptr_t_address_t_uint256__fromStack_reversed": {
"entryPoint": 7988,
"id": null,
"parameterSlots": 5,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": 8064,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32_t_uint256_t_bytes_memory_ptr_t_bool_t_bool_t_bool__to_t_bytes32_t_uint256_t_bytes_memory_ptr_t_bool_t_bool_t_bool__fromStack_reversed": {
"entryPoint": 8091,
"id": null,
"parameterSlots": 7,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32_t_uint256_t_bytes_memory_ptr_t_contract$_IERC20_$190_t_rational_0_by_1__to_t_bytes32_t_uint256_t_bytes_memory_ptr_t_address_t_uint256__fromStack_reversed": {
"entryPoint": 8195,
"id": null,
"parameterSlots": 6,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32_t_uint256_t_bytes_memory_ptr_t_uint256__to_t_bytes32_t_uint256_t_bytes_memory_ptr_t_uint256__fromStack_reversed": {
"entryPoint": 8285,
"id": null,
"parameterSlots": 5,
"returnSlots": 1
},
"abi_encode_tuple_t_contract$_FinderInterface_$1216__to_t_address__fromStack_reversed": {
"entryPoint": 8361,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_contract$_IERC20_$190__to_t_address__fromStack_reversed": {
"entryPoint": 8388,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_contract$_OptimisticOracleV2Interface_$1582__to_t_address__fromStack_reversed": {
"entryPoint": 8415,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_calldata_ptr_t_uint256__to_t_string_memory_ptr_t_uint256__fromStack_reversed": {
"entryPoint": 8442,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8492,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_31a27b2540ab06c48c548f1322928111bf775677522ce27cb1141fd9d696da78__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8526,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_397aaaccf4e12d92be59946dfcacdf68dc2c5b82b4a37f6e4ef2cd79e09c3db4__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8558,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_50ae26a9d347302aae8564609c1d5427cb95105a08621ec1fae953f198eab5c4__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8590,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8622,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_5e579a0cb871fe308cb1e293544f75d10c9dbe3def875f5a1f99f0aa2786aa3f__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8654,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_5fed739a4c4ad18f14b01264a20ed404d60f63cdf6342f522a3cc353b6a41860__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8686,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8718,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_d4b8fa0e2cd41e5501dc9c5b6b1a5aefcb71cb9c0fbdce8f12de17fb679490d1__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8750,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_de188bf9c213a5d1bbbfbc484f92c9ad3ffdc25d107da4fbdec7b8bd7197460e__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8782,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8814,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 8846,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 8878,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
"entryPoint": 8905,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256_t_string_memory_ptr_t_address_t_uint256__to_t_uint256_t_string_memory_ptr_t_address_t_uint256__fromStack_reversed": {
"entryPoint": 8953,
"id": null,
"parameterSlots": 5,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 9029,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": 9056,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_allocation_size_t_bytes_memory_ptr": {
"entryPoint": 9066,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_dataslot_t_string_storage": {
"entryPoint": 9115,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_bytes_memory_ptr": {
"entryPoint": 9136,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 9147,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack": {
"entryPoint": 9158,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 9175,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 9186,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 9203,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_div_t_uint256": {
"entryPoint": 9214,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_mul_t_uint256": {
"entryPoint": 9263,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 9353,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 9371,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 9383,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_int256": {
"entryPoint": 9393,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 9403,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 9435,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_contract$_FinderInterface_$1216_to_t_address": {
"entryPoint": 9445,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_contract$_IERC20_$190_to_t_address": {
"entryPoint": 9463,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_contract$_OptimisticOracleV2Interface_$1582_to_t_address": {
"entryPoint": 9481,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_rational_0_by_1_to_t_uint256": {
"entryPoint": 9499,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_uint160_to_t_address": {
"entryPoint": 9517,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_uint160_to_t_uint160": {
"entryPoint": 9535,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_calldata_to_memory": {
"entryPoint": 9553,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"copy_memory_to_memory": {
"entryPoint": 9568,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"extract_byte_array_length": {
"entryPoint": 9619,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"finalize_allocation": {
"entryPoint": 9669,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"panic_error_0x11": {
"entryPoint": 9718,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x12": {
"entryPoint": 9765,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x22": {
"entryPoint": 9812,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 9859,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490": {
"entryPoint": 9906,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": {
"entryPoint": 9911,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef": {
"entryPoint": 9916,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae": {
"entryPoint": 9921,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": 9926,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 9931,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 9936,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"store_literal_in_memory_31a27b2540ab06c48c548f1322928111bf775677522ce27cb1141fd9d696da78": {
"entryPoint": 9953,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_397aaaccf4e12d92be59946dfcacdf68dc2c5b82b4a37f6e4ef2cd79e09c3db4": {
"entryPoint": 9994,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_50ae26a9d347302aae8564609c1d5427cb95105a08621ec1fae953f198eab5c4": {
"entryPoint": 10035,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c": {
"entryPoint": 10076,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_5e579a0cb871fe308cb1e293544f75d10c9dbe3def875f5a1f99f0aa2786aa3f": {
"entryPoint": 10155,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_5fed739a4c4ad18f14b01264a20ed404d60f63cdf6342f522a3cc353b6a41860": {
"entryPoint": 10196,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad": {
"entryPoint": 10237,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_d4b8fa0e2cd41e5501dc9c5b6b1a5aefcb71cb9c0fbdce8f12de17fb679490d1": {
"entryPoint": 10278,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_de188bf9c213a5d1bbbfbc484f92c9ad3ffdc25d107da4fbdec7b8bd7197460e": {
"entryPoint": 10319,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd": {
"entryPoint": 10360,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25": {
"entryPoint": 10439,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 10518,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bool": {
"entryPoint": 10541,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes32": {
"entryPoint": 10564,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_int256": {
"entryPoint": 10587,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 10610,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:35705:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "90:327:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "100:74:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "166:6:13"
}
],
"functionName": {
"name": "array_allocation_size_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "125:40:13"
},
"nodeType": "YulFunctionCall",
"src": "125:48:13"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "109:15:13"
},
"nodeType": "YulFunctionCall",
"src": "109:65:13"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "100:5:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "190:5:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "197:6:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "183:6:13"
},
"nodeType": "YulFunctionCall",
"src": "183:21:13"
},
"nodeType": "YulExpressionStatement",
"src": "183:21:13"
},
{
"nodeType": "YulVariableDeclaration",
"src": "213:27:13",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "228:5:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "235:4:13",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "224:3:13"
},
"nodeType": "YulFunctionCall",
"src": "224:16:13"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "217:3:13",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "278:83:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nodeType": "YulIdentifier",
"src": "280:77:13"
},
"nodeType": "YulFunctionCall",
"src": "280:79:13"
},
"nodeType": "YulExpressionStatement",
"src": "280:79:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "259:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "264:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "255:3:13"
},
"nodeType": "YulFunctionCall",
"src": "255:16:13"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "273:3:13"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "252:2:13"
},
"nodeType": "YulFunctionCall",
"src": "252:25:13"
},
"nodeType": "YulIf",
"src": "249:112:13"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "394:3:13"
},
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "399:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "404:6:13"
}
],
"functionName": {
"name": "copy_calldata_to_memory",
"nodeType": "YulIdentifier",
"src": "370:23:13"
},
"nodeType": "YulFunctionCall",
"src": "370:41:13"
},
"nodeType": "YulExpressionStatement",
"src": "370:41:13"
}
]
},
"name": "abi_decode_available_length_t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "63:3:13",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "68:6:13",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "76:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "84:5:13",
"type": ""
}
],
"src": "7:410:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "475:87:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "485:29:13",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "507:6:13"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "494:12:13"
},
"nodeType": "YulFunctionCall",
"src": "494:20:13"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "485:5:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "550:5:13"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "523:26:13"
},
"nodeType": "YulFunctionCall",
"src": "523:33:13"
},
"nodeType": "YulExpressionStatement",
"src": "523:33:13"
}
]
},
"name": "abi_decode_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "453:6:13",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "461:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "469:5:13",
"type": ""
}
],
"src": "423:139:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "628:77:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "638:22:13",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "653:6:13"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "647:5:13"
},
"nodeType": "YulFunctionCall",
"src": "647:13:13"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "638:5:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "693:5:13"
}
],
"functionName": {
"name": "validator_revert_t_bool",
"nodeType": "YulIdentifier",
"src": "669:23:13"
},
"nodeType": "YulFunctionCall",
"src": "669:30:13"
},
"nodeType": "YulExpressionStatement",
"src": "669:30:13"
}
]
},
"name": "abi_decode_t_bool_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "606:6:13",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "614:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "622:5:13",
"type": ""
}
],
"src": "568:137:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "763:87:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "773:29:13",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "795:6:13"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "782:12:13"
},
"nodeType": "YulFunctionCall",
"src": "782:20:13"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "773:5:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "838:5:13"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nodeType": "YulIdentifier",
"src": "811:26:13"
},
"nodeType": "YulFunctionCall",
"src": "811:33:13"
},
"nodeType": "YulExpressionStatement",
"src": "811:33:13"
}
]
},
"name": "abi_decode_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "741:6:13",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "749:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "757:5:13",
"type": ""
}
],
"src": "711:139:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "930:277:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "979:83:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulIdentifier",
"src": "981:77:13"
},
"nodeType": "YulFunctionCall",
"src": "981:79:13"
},
"nodeType": "YulExpressionStatement",
"src": "981:79:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "958:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "966:4:13",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "954:3:13"
},
"nodeType": "YulFunctionCall",
"src": "954:17:13"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "973:3:13"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "950:3:13"
},
"nodeType": "YulFunctionCall",
"src": "950:27:13"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "943:6:13"
},
"nodeType": "YulFunctionCall",
"src": "943:35:13"
},
"nodeType": "YulIf",
"src": "940:122:13"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1071:34:13",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1098:6:13"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1085:12:13"
},
"nodeType": "YulFunctionCall",
"src": "1085:20:13"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1075:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1114:87:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1174:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1182:4:13",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1170:3:13"
},
"nodeType": "YulFunctionCall",
"src": "1170:17:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1189:6:13"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1197:3:13"
}
],
"functionName": {
"name": "abi_decode_available_length_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "1123:46:13"
},
"nodeType": "YulFunctionCall",
"src": "1123:78:13"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "1114:5:13"
}
]
}
]
},
"name": "abi_decode_t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "908:6:13",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "916:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "924:5:13",
"type": ""
}
],
"src": "869:338:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1264:86:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1274:29:13",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1296:6:13"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1283:12:13"
},
"nodeType": "YulFunctionCall",
"src": "1283:20:13"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1274:5:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1338:5:13"
}
],
"functionName": {
"name": "validator_revert_t_int256",
"nodeType": "YulIdentifier",
"src": "1312:25:13"
},
"nodeType": "YulFunctionCall",
"src": "1312:32:13"
},
"nodeType": "YulExpressionStatement",
"src": "1312:32:13"
}
]
},
"name": "abi_decode_t_int256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1242:6:13",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1250:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1258:5:13",
"type": ""
}
],
"src": "1213:137:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1445:478:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1494:83:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulIdentifier",
"src": "1496:77:13"
},
"nodeType": "YulFunctionCall",
"src": "1496:79:13"
},
"nodeType": "YulExpressionStatement",
"src": "1496:79:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1473:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1481:4:13",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1469:3:13"
},
"nodeType": "YulFunctionCall",
"src": "1469:17:13"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1488:3:13"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1465:3:13"
},
"nodeType": "YulFunctionCall",
"src": "1465:27:13"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1458:6:13"
},
"nodeType": "YulFunctionCall",
"src": "1458:35:13"
},
"nodeType": "YulIf",
"src": "1455:122:13"
},
{
"nodeType": "YulAssignment",
"src": "1586:30:13",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1609:6:13"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1596:12:13"
},
"nodeType": "YulFunctionCall",
"src": "1596:20:13"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1586:6:13"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1659:83:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490",
"nodeType": "YulIdentifier",
"src": "1661:77:13"
},
"nodeType": "YulFunctionCall",
"src": "1661:79:13"
},
"nodeType": "YulExpressionStatement",
"src": "1661:79:13"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1631:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1639:18:13",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1628:2:13"
},
"nodeType": "YulFunctionCall",
"src": "1628:30:13"
},
"nodeType": "YulIf",
"src": "1625:117:13"
},
{
"nodeType": "YulAssignment",
"src": "1751:29:13",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1767:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1775:4:13",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1763:3:13"
},
"nodeType": "YulFunctionCall",
"src": "1763:17:13"
},
"variableNames": [
{
"name": "arrayPos",
"nodeType": "YulIdentifier",
"src": "1751:8:13"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1834:83:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
"nodeType": "YulIdentifier",
"src": "1836:77:13"
},
"nodeType": "YulFunctionCall",
"src": "1836:79:13"
},
"nodeType": "YulExpressionStatement",
"src": "1836:79:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "arrayPos",
"nodeType": "YulIdentifier",
"src": "1799:8:13"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1813:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1821:4:13",
"type": "",
"value": "0x01"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "1809:3:13"
},
"nodeType": "YulFunctionCall",
"src": "1809:17:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1795:3:13"
},
"nodeType": "YulFunctionCall",
"src": "1795:32:13"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1829:3:13"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1792:2:13"
},
"nodeType": "YulFunctionCall",
"src": "1792:41:13"
},
"nodeType": "YulIf",
"src": "1789:128:13"
}
]
},
"name": "abi_decode_t_string_calldata_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1412:6:13",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1420:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "arrayPos",
"nodeType": "YulTypedName",
"src": "1428:8:13",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1438:6:13",
"type": ""
}
],
"src": "1370:553:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1981:87:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1991:29:13",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2013:6:13"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2000:12:13"
},
"nodeType": "YulFunctionCall",
"src": "2000:20:13"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1991:5:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2056:5:13"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "2029:26:13"
},
"nodeType": "YulFunctionCall",
"src": "2029:33:13"
},
"nodeType": "YulExpressionStatement",
"src": "2029:33:13"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1959:6:13",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1967:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1975:5:13",
"type": ""
}
],
"src": "1929:139:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2137:80:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2147:22:13",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2162:6:13"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2156:5:13"
},
"nodeType": "YulFunctionCall",
"src": "2156:13:13"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2147:5:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2205:5:13"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "2178:26:13"
},
"nodeType": "YulFunctionCall",
"src": "2178:33:13"
},
"nodeType": "YulExpressionStatement",
"src": "2178:33:13"
}
]
},
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2115:6:13",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2123:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2131:5:13",
"type": ""
}
],
"src": "2074:143:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2297:271:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2343:83:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "2345:77:13"
},
"nodeType": "YulFunctionCall",
"src": "2345:79:13"
},
"nodeType": "YulExpressionStatement",
"src": "2345:79:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2318:7:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2327:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2314:3:13"
},
"nodeType": "YulFunctionCall",
"src": "2314:23:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2339:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2310:3:13"
},
"nodeType": "YulFunctionCall",
"src": "2310:32:13"
},
"nodeType": "YulIf",
"src": "2307:119:13"
},
{
"nodeType": "YulBlock",
"src": "2436:125:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2451:15:13",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2465:1:13",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2455:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2480:71:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2523:9:13"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2534:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2519:3:13"
},
"nodeType": "YulFunctionCall",
"src": "2519:22:13"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2543:7:13"
}
],
"functionName": {
"name": "abi_decode_t_bool_fromMemory",
"nodeType": "YulIdentifier",
"src": "2490:28:13"
},
"nodeType": "YulFunctionCall",
"src": "2490:61:13"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2480:6:13"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bool_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2267:9:13",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2278:7:13",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2290:6:13",
"type": ""
}
],
"src": "2223:345:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2640:263:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2686:83:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "2688:77:13"
},
"nodeType": "YulFunctionCall",
"src": "2688:79:13"
},
"nodeType": "YulExpressionStatement",
"src": "2688:79:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2661:7:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2670:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2657:3:13"
},
"nodeType": "YulFunctionCall",
"src": "2657:23:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2682:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2653:3:13"
},
"nodeType": "YulFunctionCall",
"src": "2653:32:13"
},
"nodeType": "YulIf",
"src": "2650:119:13"
},
{
"nodeType": "YulBlock",
"src": "2779:117:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2794:15:13",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2808:1:13",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2798:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2823:63:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2858:9:13"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2869:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2854:3:13"
},
"nodeType": "YulFunctionCall",
"src": "2854:22:13"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2878:7:13"
}
],
"functionName": {
"name": "abi_decode_t_bytes32",
"nodeType": "YulIdentifier",
"src": "2833:20:13"
},
"nodeType": "YulFunctionCall",
"src": "2833:53:13"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2823:6:13"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2610:9:13",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2621:7:13",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2633:6:13",
"type": ""
}
],
"src": "2574:329:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3034:816:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3081:83:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "3083:77:13"
},
"nodeType": "YulFunctionCall",
"src": "3083:79:13"
},
"nodeType": "YulExpressionStatement",
"src": "3083:79:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3055:7:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3064:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3051:3:13"
},
"nodeType": "YulFunctionCall",
"src": "3051:23:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3076:3:13",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3047:3:13"
},
"nodeType": "YulFunctionCall",
"src": "3047:33:13"
},
"nodeType": "YulIf",
"src": "3044:120:13"
},
{
"nodeType": "YulBlock",
"src": "3174:117:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3189:15:13",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3203:1:13",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3193:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3218:63:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3253:9:13"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3264:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3249:3:13"
},
"nodeType": "YulFunctionCall",
"src": "3249:22:13"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3273:7:13"
}
],
"functionName": {
"name": "abi_decode_t_bytes32",
"nodeType": "YulIdentifier",
"src": "3228:20:13"
},
"nodeType": "YulFunctionCall",
"src": "3228:53:13"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3218:6:13"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "3301:118:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3316:16:13",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3330:2:13",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3320:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3346:63:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3381:9:13"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3392:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3377:3:13"
},
"nodeType": "YulFunctionCall",
"src": "3377:22:13"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3401:7:13"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "3356:20:13"
},
"nodeType": "YulFunctionCall",
"src": "3356:53:13"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "3346:6:13"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "3429:287:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3444:46:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3475:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3486:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3471:3:13"
},
"nodeType": "YulFunctionCall",
"src": "3471:18:13"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3458:12:13"
},
"nodeType": "YulFunctionCall",
"src": "3458:32:13"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3448:6:13",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3537:83:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "3539:77:13"
},
"nodeType": "YulFunctionCall",
"src": "3539:79:13"
},
"nodeType": "YulExpressionStatement",
"src": "3539:79:13"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3509:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3517:18:13",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3506:2:13"
},
"nodeType": "YulFunctionCall",
"src": "3506:30:13"
},
"nodeType": "YulIf",
"src": "3503:117:13"
},
{
"nodeType": "YulAssignment",
"src": "3634:72:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3678:9:13"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3689:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3674:3:13"
},
"nodeType": "YulFunctionCall",
"src": "3674:22:13"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3698:7:13"
}
],
"functionName": {
"name": "abi_decode_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "3644:29:13"
},
"nodeType": "YulFunctionCall",
"src": "3644:62:13"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "3634:6:13"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "3726:117:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3741:16:13",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3755:2:13",
"type": "",
"value": "96"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3745:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3771:62:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3805:9:13"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3816:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3801:3:13"
},
"nodeType": "YulFunctionCall",
"src": "3801:22:13"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3825:7:13"
}
],
"functionName": {
"name": "abi_decode_t_int256",
"nodeType": "YulIdentifier",
"src": "3781:19:13"
},
"nodeType": "YulFunctionCall",
"src": "3781:52:13"
},
"variableNames": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "3771:6:13"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32t_uint256t_bytes_memory_ptrt_int256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2980:9:13",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2991:7:13",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3003:6:13",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3011:6:13",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "3019:6:13",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "3027:6:13",
"type": ""
}
],
"src": "2909:941:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3976:699:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4022:83:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "4024:77:13"
},
"nodeType": "YulFunctionCall",
"src": "4024:79:13"
},
"nodeType": "YulExpressionStatement",
"src": "4024:79:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3997:7:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4006:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3993:3:13"
},
"nodeType": "YulFunctionCall",
"src": "3993:23:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4018:2:13",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3989:3:13"
},
"nodeType": "YulFunctionCall",
"src": "3989:32:13"
},
"nodeType": "YulIf",
"src": "3986:119:13"
},
{
"nodeType": "YulBlock",
"src": "4115:297:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4130:45:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4161:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4172:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4157:3:13"
},
"nodeType": "YulFunctionCall",
"src": "4157:17:13"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "4144:12:13"
},
"nodeType": "YulFunctionCall",
"src": "4144:31:13"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4134:6:13",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4222:83:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "4224:77:13"
},
"nodeType": "YulFunctionCall",
"src": "4224:79:13"
},
"nodeType": "YulExpressionStatement",
"src": "4224:79:13"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4194:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4202:18:13",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "4191:2:13"
},
"nodeType": "YulFunctionCall",
"src": "4191:30:13"
},
"nodeType": "YulIf",
"src": "4188:117:13"
},
{
"nodeType": "YulAssignment",
"src": "4319:83:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4374:9:13"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4385:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4370:3:13"
},
"nodeType": "YulFunctionCall",
"src": "4370:22:13"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4394:7:13"
}
],
"functionName": {
"name": "abi_decode_t_string_calldata_ptr",
"nodeType": "YulIdentifier",
"src": "4337:32:13"
},
"nodeType": "YulFunctionCall",
"src": "4337:65:13"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4319:6:13"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "4327:6:13"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "4422:118:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4437:16:13",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4451:2:13",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4441:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4467:63:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4502:9:13"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4513:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4498:3:13"
},
"nodeType": "YulFunctionCall",
"src": "4498:22:13"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4522:7:13"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "4477:20:13"
},
"nodeType": "YulFunctionCall",
"src": "4477:53:13"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "4467:6:13"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "4550:118:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4565:16:13",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4579:2:13",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4569:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4595:63:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4630:9:13"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4641:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4626:3:13"
},
"nodeType": "YulFunctionCall",
"src": "4626:22:13"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4650:7:13"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "4605:20:13"
},
"nodeType": "YulFunctionCall",
"src": "4605:53:13"
},
"variableNames": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "4595:6:13"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_string_calldata_ptrt_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3922:9:13",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "3933:7:13",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3945:6:13",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3953:6:13",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "3961:6:13",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "3969:6:13",
"type": ""
}
],
"src": "3856:819:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4758:274:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4804:83:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "4806:77:13"
},
"nodeType": "YulFunctionCall",
"src": "4806:79:13"
},
"nodeType": "YulExpressionStatement",
"src": "4806:79:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4779:7:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4788:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4775:3:13"
},
"nodeType": "YulFunctionCall",
"src": "4775:23:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4800:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "4771:3:13"
},
"nodeType": "YulFunctionCall",
"src": "4771:32:13"
},
"nodeType": "YulIf",
"src": "4768:119:13"
},
{
"nodeType": "YulBlock",
"src": "4897:128:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4912:15:13",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4926:1:13",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4916:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4941:74:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4987:9:13"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4998:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4983:3:13"
},
"nodeType": "YulFunctionCall",
"src": "4983:22:13"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5007:7:13"
}
],
"functionName": {
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulIdentifier",
"src": "4951:31:13"
},
"nodeType": "YulFunctionCall",
"src": "4951:64:13"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4941:6:13"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4728:9:13",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "4739:7:13",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4751:6:13",
"type": ""
}
],
"src": "4681:351:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5103:53:13",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5120:3:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5143:5:13"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "5125:17:13"
},
"nodeType": "YulFunctionCall",
"src": "5125:24:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5113:6:13"
},
"nodeType": "YulFunctionCall",
"src": "5113:37:13"
},
"nodeType": "YulExpressionStatement",
"src": "5113:37:13"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5091:5:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5098:3:13",
"type": ""
}
],
"src": "5038:118:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5221:50:13",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5238:3:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5258:5:13"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "5243:14:13"
},
"nodeType": "YulFunctionCall",
"src": "5243:21:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5231:6:13"
},
"nodeType": "YulFunctionCall",
"src": "5231:34:13"
},
"nodeType": "YulExpressionStatement",
"src": "5231:34:13"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5209:5:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5216:3:13",
"type": ""
}
],
"src": "5162:109:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5342:53:13",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5359:3:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5382:5:13"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "5364:17:13"
},
"nodeType": "YulFunctionCall",
"src": "5364:24:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5352:6:13"
},
"nodeType": "YulFunctionCall",
"src": "5352:37:13"
},
"nodeType": "YulExpressionStatement",
"src": "5352:37:13"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5330:5:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5337:3:13",
"type": ""
}
],
"src": "5277:118:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5491:270:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5501:52:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5547:5:13"
}
],
"functionName": {
"name": "array_length_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "5515:31:13"
},
"nodeType": "YulFunctionCall",
"src": "5515:38:13"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "5505:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5562:77:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5627:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5632:6:13"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "5569:57:13"
},
"nodeType": "YulFunctionCall",
"src": "5569:70:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5562:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5674:5:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5681:4:13",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5670:3:13"
},
"nodeType": "YulFunctionCall",
"src": "5670:16:13"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5688:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5693:6:13"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "5648:21:13"
},
"nodeType": "YulFunctionCall",
"src": "5648:52:13"
},
"nodeType": "YulExpressionStatement",
"src": "5648:52:13"
},
{
"nodeType": "YulAssignment",
"src": "5709:46:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5720:3:13"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5747:6:13"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "5725:21:13"
},
"nodeType": "YulFunctionCall",
"src": "5725:29:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5716:3:13"
},
"nodeType": "YulFunctionCall",
"src": "5716:39:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "5709:3:13"
}
]
}
]
},
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5472:5:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5479:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5487:3:13",
"type": ""
}
],
"src": "5401:360:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5875:265:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5885:52:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5931:5:13"
}
],
"functionName": {
"name": "array_length_t_bytes_memory_ptr",
"nodeType": "YulIdentifier",
"src": "5899:31:13"
},
"nodeType": "YulFunctionCall",
"src": "5899:38:13"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "5889:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5946:95:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6029:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6034:6:13"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "5953:75:13"
},
"nodeType": "YulFunctionCall",
"src": "5953:88:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5946:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6076:5:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6083:4:13",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6072:3:13"
},
"nodeType": "YulFunctionCall",
"src": "6072:16:13"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6090:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6095:6:13"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "6050:21:13"
},
"nodeType": "YulFunctionCall",
"src": "6050:52:13"
},
"nodeType": "YulExpressionStatement",
"src": "6050:52:13"
},
{
"nodeType": "YulAssignment",
"src": "6111:23:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6122:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6127:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6118:3:13"
},
"nodeType": "YulFunctionCall",
"src": "6118:16:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "6111:3:13"
}
]
}
]
},
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5856:5:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5863:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5871:3:13",
"type": ""
}
],
"src": "5767:373:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6235:90:13",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6252:3:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6312:5:13"
}
],
"functionName": {
"name": "convert_t_contract$_FinderInterface_$1216_to_t_address",
"nodeType": "YulIdentifier",
"src": "6257:54:13"
},
"nodeType": "YulFunctionCall",
"src": "6257:61:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6245:6:13"
},
"nodeType": "YulFunctionCall",
"src": "6245:74:13"
},
"nodeType": "YulExpressionStatement",
"src": "6245:74:13"
}
]
},
"name": "abi_encode_t_contract$_FinderInterface_$1216_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6223:5:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6230:3:13",
"type": ""
}
],
"src": "6146:179:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6410:80:13",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6427:3:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6477:5:13"
}
],
"functionName": {
"name": "convert_t_contract$_IERC20_$190_to_t_address",
"nodeType": "YulIdentifier",
"src": "6432:44:13"
},
"nodeType": "YulFunctionCall",
"src": "6432:51:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6420:6:13"
},
"nodeType": "YulFunctionCall",
"src": "6420:64:13"
},
"nodeType": "YulExpressionStatement",
"src": "6420:64:13"
}
]
},
"name": "abi_encode_t_contract$_IERC20_$190_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6398:5:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6405:3:13",
"type": ""
}
],
"src": "6331:159:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6597:102:13",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6614:3:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6686:5:13"
}
],
"functionName": {
"name": "convert_t_contract$_OptimisticOracleV2Interface_$1582_to_t_address",
"nodeType": "YulIdentifier",
"src": "6619:66:13"
},
"nodeType": "YulFunctionCall",
"src": "6619:73:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6607:6:13"
},
"nodeType": "YulFunctionCall",
"src": "6607:86:13"
},
"nodeType": "YulExpressionStatement",
"src": "6607:86:13"
}
]
},
"name": "abi_encode_t_contract$_OptimisticOracleV2Interface_$1582_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6585:5:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6592:3:13",
"type": ""
}
],
"src": "6496:203:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6768:52:13",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6785:3:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6807:5:13"
}
],
"functionName": {
"name": "cleanup_t_int256",
"nodeType": "YulIdentifier",
"src": "6790:16:13"
},
"nodeType": "YulFunctionCall",
"src": "6790:23:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6778:6:13"
},
"nodeType": "YulFunctionCall",
"src": "6778:36:13"
},
"nodeType": "YulExpressionStatement",
"src": "6778:36:13"
}
]
},
"name": "abi_encode_t_int256_to_t_int256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6756:5:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6763:3:13",
"type": ""
}
],
"src": "6705:115:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6899:74:13",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6916:3:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6960:5:13"
}
],
"functionName": {
"name": "convert_t_rational_0_by_1_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "6921:38:13"
},
"nodeType": "YulFunctionCall",
"src": "6921:45:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6909:6:13"
},
"nodeType": "YulFunctionCall",
"src": "6909:58:13"
},
"nodeType": "YulExpressionStatement",
"src": "6909:58:13"
}
]
},
"name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6887:5:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6894:3:13",
"type": ""
}
],
"src": "6826:147:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7105:202:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7115:78:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7181:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7186:6:13"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "7122:58:13"
},
"nodeType": "YulFunctionCall",
"src": "7122:71:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7115:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "7227:5:13"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7234:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7239:6:13"
}
],
"functionName": {
"name": "copy_calldata_to_memory",
"nodeType": "YulIdentifier",
"src": "7203:23:13"
},
"nodeType": "YulFunctionCall",
"src": "7203:43:13"
},
"nodeType": "YulExpressionStatement",
"src": "7203:43:13"
},
{
"nodeType": "YulAssignment",
"src": "7255:46:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7266:3:13"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7293:6:13"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "7271:21:13"
},
"nodeType": "YulFunctionCall",
"src": "7271:29:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7262:3:13"
},
"nodeType": "YulFunctionCall",
"src": "7262:39:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "7255:3:13"
}
]
}
]
},
"name": "abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "start",
"nodeType": "YulTypedName",
"src": "7078:5:13",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "7085:6:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7093:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7101:3:13",
"type": ""
}
],
"src": "7003:304:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7405:272:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7415:53:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7462:5:13"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "7429:32:13"
},
"nodeType": "YulFunctionCall",
"src": "7429:39:13"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "7419:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "7477:78:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7543:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7548:6:13"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "7484:58:13"
},
"nodeType": "YulFunctionCall",
"src": "7484:71:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7477:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7590:5:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7597:4:13",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7586:3:13"
},
"nodeType": "YulFunctionCall",
"src": "7586:16:13"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7604:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7609:6:13"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "7564:21:13"
},
"nodeType": "YulFunctionCall",
"src": "7564:52:13"
},
"nodeType": "YulExpressionStatement",
"src": "7564:52:13"
},
{
"nodeType": "YulAssignment",
"src": "7625:46:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7636:3:13"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7663:6:13"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "7641:21:13"
},
"nodeType": "YulFunctionCall",
"src": "7641:29:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7632:3:13"
},
"nodeType": "YulFunctionCall",
"src": "7632:39:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "7625:3:13"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7386:5:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7393:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7401:3:13",
"type": ""
}
],
"src": "7313:364:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7793:267:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7803:53:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7850:5:13"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "7817:32:13"
},
"nodeType": "YulFunctionCall",
"src": "7817:39:13"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "7807:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "7865:96:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7949:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7954:6:13"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "7872:76:13"
},
"nodeType": "YulFunctionCall",
"src": "7872:89:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7865:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7996:5:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8003:4:13",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7992:3:13"
},
"nodeType": "YulFunctionCall",
"src": "7992:16:13"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8010:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8015:6:13"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "7970:21:13"
},
"nodeType": "YulFunctionCall",
"src": "7970:52:13"
},
"nodeType": "YulExpressionStatement",
"src": "7970:52:13"
},
{
"nodeType": "YulAssignment",
"src": "8031:23:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8042:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8047:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8038:3:13"
},
"nodeType": "YulFunctionCall",
"src": "8038:16:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8031:3:13"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7774:5:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7781:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7789:3:13",
"type": ""
}
],
"src": "7683:377:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8197:738:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8207:29:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "8230:5:13"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "8224:5:13"
},
"nodeType": "YulFunctionCall",
"src": "8224:12:13"
},
"variables": [
{
"name": "slotValue",
"nodeType": "YulTypedName",
"src": "8211:9:13",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "8245:50:13",
"value": {
"arguments": [
{
"name": "slotValue",
"nodeType": "YulIdentifier",
"src": "8285:9:13"
}
],
"functionName": {
"name": "extract_byte_array_length",
"nodeType": "YulIdentifier",
"src": "8259:25:13"
},
"nodeType": "YulFunctionCall",
"src": "8259:36:13"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "8249:6:13",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "8304:96:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8388:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8393:6:13"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "8311:76:13"
},
"nodeType": "YulFunctionCall",
"src": "8311:89:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8304:3:13"
}
]
},
{
"cases": [
{
"body": {
"nodeType": "YulBlock",
"src": "8449:130:13",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8502:3:13"
},
{
"arguments": [
{
"name": "slotValue",
"nodeType": "YulIdentifier",
"src": "8511:9:13"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8526:4:13",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "8522:3:13"
},
"nodeType": "YulFunctionCall",
"src": "8522:9:13"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "8507:3:13"
},
"nodeType": "YulFunctionCall",
"src": "8507:25:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8495:6:13"
},
"nodeType": "YulFunctionCall",
"src": "8495:38:13"
},
"nodeType": "YulExpressionStatement",
"src": "8495:38:13"
},
{
"nodeType": "YulAssignment",
"src": "8546:23:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8557:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8562:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8553:3:13"
},
"nodeType": "YulFunctionCall",
"src": "8553:16:13"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "8546:3:13"
}
]
}
]
},
"nodeType": "YulCase",
"src": "8442:137:13",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8447:1:13",
"type": "",
"value": "0"
}
},
{
"body": {
"nodeType": "YulBlock",
"src": "8595:334:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8640:53:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "8687:5:13"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "8655:31:13"
},
"nodeType": "YulFunctionCall",
"src": "8655:38:13"
},
"variables": [
{
"name": "dataPos",
"nodeType": "YulTypedName",
"src": "8644:7:13",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "8706:10:13",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8715:1:13",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "8710:1:13",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "8773:110:13",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8802:3:13"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "8807:1:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8798:3:13"
},
"nodeType": "YulFunctionCall",
"src": "8798:11:13"
},
{
"arguments": [
{
"name": "dataPos",
"nodeType": "YulIdentifier",
"src": "8817:7:13"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "8811:5:13"
},
"nodeType": "YulFunctionCall",
"src": "8811:14:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8791:6:13"
},
"nodeType": "YulFunctionCall",
"src": "8791:35:13"
},
"nodeType": "YulExpressionStatement",
"src": "8791:35:13"
},
{
"nodeType": "YulAssignment",
"src": "8843:26:13",
"value": {
"arguments": [
{
"name": "dataPos",
"nodeType": "YulIdentifier",
"src": "8858:7:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8867:1:13",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8854:3:13"
},
"nodeType": "YulFunctionCall",
"src": "8854:15:13"
},
"variableNames": [
{
"name": "dataPos",
"nodeType": "YulIdentifier",
"src": "8843:7:13"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "8740:1:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8743:6:13"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "8737:2:13"
},
"nodeType": "YulFunctionCall",
"src": "8737:13:13"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "8751:21:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8753:17:13",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "8762:1:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8765:4:13",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8758:3:13"
},
"nodeType": "YulFunctionCall",
"src": "8758:12:13"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "8753:1:13"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "8733:3:13",
"statements": []
},
"src": "8729:154:13"
},
{
"nodeType": "YulAssignment",
"src": "8896:23:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "8907:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8912:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8903:3:13"
},
"nodeType": "YulFunctionCall",
"src": "8903:16:13"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "8896:3:13"
}
]
}
]
},
"nodeType": "YulCase",
"src": "8588:341:13",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8593:1:13",
"type": "",
"value": "1"
}
}
],
"expression": {
"arguments": [
{
"name": "slotValue",
"nodeType": "YulIdentifier",
"src": "8420:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8431:1:13",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "8416:3:13"
},
"nodeType": "YulFunctionCall",
"src": "8416:17:13"
},
"nodeType": "YulSwitch",
"src": "8409:520:13"
}
]
},
"name": "abi_encode_t_string_storage_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "8178:5:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "8185:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "8193:3:13",
"type": ""
}
],
"src": "8090:845:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9087:220:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9097:74:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9163:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9168:2:13",
"type": "",
"value": "23"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "9104:58:13"
},
"nodeType": "YulFunctionCall",
"src": "9104:67:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9097:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9269:3:13"
}
],
"functionName": {
"name": "store_literal_in_memory_31a27b2540ab06c48c548f1322928111bf775677522ce27cb1141fd9d696da78",
"nodeType": "YulIdentifier",
"src": "9180:88:13"
},
"nodeType": "YulFunctionCall",
"src": "9180:93:13"
},
"nodeType": "YulExpressionStatement",
"src": "9180:93:13"
},
{
"nodeType": "YulAssignment",
"src": "9282:19:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9293:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9298:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9289:3:13"
},
"nodeType": "YulFunctionCall",
"src": "9289:12:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "9282:3:13"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_31a27b2540ab06c48c548f1322928111bf775677522ce27cb1141fd9d696da78_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9075:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "9083:3:13",
"type": ""
}
],
"src": "8941:366:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9459:220:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9469:74:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9535:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9540:2:13",
"type": "",
"value": "21"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "9476:58:13"
},
"nodeType": "YulFunctionCall",
"src": "9476:67:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9469:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9641:3:13"
}
],
"functionName": {
"name": "store_literal_in_memory_397aaaccf4e12d92be59946dfcacdf68dc2c5b82b4a37f6e4ef2cd79e09c3db4",
"nodeType": "YulIdentifier",
"src": "9552:88:13"
},
"nodeType": "YulFunctionCall",
"src": "9552:93:13"
},
"nodeType": "YulExpressionStatement",
"src": "9552:93:13"
},
{
"nodeType": "YulAssignment",
"src": "9654:19:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9665:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9670:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9661:3:13"
},
"nodeType": "YulFunctionCall",
"src": "9661:12:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "9654:3:13"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_397aaaccf4e12d92be59946dfcacdf68dc2c5b82b4a37f6e4ef2cd79e09c3db4_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9447:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "9455:3:13",
"type": ""
}
],
"src": "9313:366:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9831:220:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9841:74:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9907:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9912:2:13",
"type": "",
"value": "26"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "9848:58:13"
},
"nodeType": "YulFunctionCall",
"src": "9848:67:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9841:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10013:3:13"
}
],
"functionName": {
"name": "store_literal_in_memory_50ae26a9d347302aae8564609c1d5427cb95105a08621ec1fae953f198eab5c4",
"nodeType": "YulIdentifier",
"src": "9924:88:13"
},
"nodeType": "YulFunctionCall",
"src": "9924:93:13"
},
"nodeType": "YulExpressionStatement",
"src": "9924:93:13"
},
{
"nodeType": "YulAssignment",
"src": "10026:19:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10037:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10042:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10033:3:13"
},
"nodeType": "YulFunctionCall",
"src": "10033:12:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "10026:3:13"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_50ae26a9d347302aae8564609c1d5427cb95105a08621ec1fae953f198eab5c4_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9819:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "9827:3:13",
"type": ""
}
],
"src": "9685:366:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10203:220:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10213:74:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10279:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10284:2:13",
"type": "",
"value": "38"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "10220:58:13"
},
"nodeType": "YulFunctionCall",
"src": "10220:67:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10213:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10385:3:13"
}
],
"functionName": {
"name": "store_literal_in_memory_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
"nodeType": "YulIdentifier",
"src": "10296:88:13"
},
"nodeType": "YulFunctionCall",
"src": "10296:93:13"
},
"nodeType": "YulExpressionStatement",
"src": "10296:93:13"
},
{
"nodeType": "YulAssignment",
"src": "10398:19:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10409:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10414:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10405:3:13"
},
"nodeType": "YulFunctionCall",
"src": "10405:12:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "10398:3:13"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "10191:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "10199:3:13",
"type": ""
}
],
"src": "10057:366:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10575:220:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10585:74:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10651:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10656:2:13",
"type": "",
"value": "24"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "10592:58:13"
},
"nodeType": "YulFunctionCall",
"src": "10592:67:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10585:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10757:3:13"
}
],
"functionName": {
"name": "store_literal_in_memory_5e579a0cb871fe308cb1e293544f75d10c9dbe3def875f5a1f99f0aa2786aa3f",
"nodeType": "YulIdentifier",
"src": "10668:88:13"
},
"nodeType": "YulFunctionCall",
"src": "10668:93:13"
},
"nodeType": "YulExpressionStatement",
"src": "10668:93:13"
},
{
"nodeType": "YulAssignment",
"src": "10770:19:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10781:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10786:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10777:3:13"
},
"nodeType": "YulFunctionCall",
"src": "10777:12:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "10770:3:13"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_5e579a0cb871fe308cb1e293544f75d10c9dbe3def875f5a1f99f0aa2786aa3f_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "10563:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "10571:3:13",
"type": ""
}
],
"src": "10429:366:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10947:220:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10957:74:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11023:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11028:2:13",
"type": "",
"value": "23"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "10964:58:13"
},
"nodeType": "YulFunctionCall",
"src": "10964:67:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "10957:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11129:3:13"
}
],
"functionName": {
"name": "store_literal_in_memory_5fed739a4c4ad18f14b01264a20ed404d60f63cdf6342f522a3cc353b6a41860",
"nodeType": "YulIdentifier",
"src": "11040:88:13"
},
"nodeType": "YulFunctionCall",
"src": "11040:93:13"
},
"nodeType": "YulExpressionStatement",
"src": "11040:93:13"
},
{
"nodeType": "YulAssignment",
"src": "11142:19:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11153:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11158:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11149:3:13"
},
"nodeType": "YulFunctionCall",
"src": "11149:12:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "11142:3:13"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_5fed739a4c4ad18f14b01264a20ed404d60f63cdf6342f522a3cc353b6a41860_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "10935:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "10943:3:13",
"type": ""
}
],
"src": "10801:366:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11319:220:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11329:74:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11395:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11400:2:13",
"type": "",
"value": "29"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "11336:58:13"
},
"nodeType": "YulFunctionCall",
"src": "11336:67:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11329:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11501:3:13"
}
],
"functionName": {
"name": "store_literal_in_memory_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
"nodeType": "YulIdentifier",
"src": "11412:88:13"
},
"nodeType": "YulFunctionCall",
"src": "11412:93:13"
},
"nodeType": "YulExpressionStatement",
"src": "11412:93:13"
},
{
"nodeType": "YulAssignment",
"src": "11514:19:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11525:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11530:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11521:3:13"
},
"nodeType": "YulFunctionCall",
"src": "11521:12:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "11514:3:13"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "11307:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "11315:3:13",
"type": ""
}
],
"src": "11173:366:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11691:220:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11701:74:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11767:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11772:2:13",
"type": "",
"value": "21"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "11708:58:13"
},
"nodeType": "YulFunctionCall",
"src": "11708:67:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11701:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11873:3:13"
}
],
"functionName": {
"name": "store_literal_in_memory_d4b8fa0e2cd41e5501dc9c5b6b1a5aefcb71cb9c0fbdce8f12de17fb679490d1",
"nodeType": "YulIdentifier",
"src": "11784:88:13"
},
"nodeType": "YulFunctionCall",
"src": "11784:93:13"
},
"nodeType": "YulExpressionStatement",
"src": "11784:93:13"
},
{
"nodeType": "YulAssignment",
"src": "11886:19:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11897:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11902:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11893:3:13"
},
"nodeType": "YulFunctionCall",
"src": "11893:12:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "11886:3:13"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_d4b8fa0e2cd41e5501dc9c5b6b1a5aefcb71cb9c0fbdce8f12de17fb679490d1_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "11679:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "11687:3:13",
"type": ""
}
],
"src": "11545:366:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12063:220:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12073:74:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12139:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12144:2:13",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "12080:58:13"
},
"nodeType": "YulFunctionCall",
"src": "12080:67:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12073:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12245:3:13"
}
],
"functionName": {
"name": "store_literal_in_memory_de188bf9c213a5d1bbbfbc484f92c9ad3ffdc25d107da4fbdec7b8bd7197460e",
"nodeType": "YulIdentifier",
"src": "12156:88:13"
},
"nodeType": "YulFunctionCall",
"src": "12156:93:13"
},
"nodeType": "YulExpressionStatement",
"src": "12156:93:13"
},
{
"nodeType": "YulAssignment",
"src": "12258:19:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12269:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12274:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12265:3:13"
},
"nodeType": "YulFunctionCall",
"src": "12265:12:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "12258:3:13"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_de188bf9c213a5d1bbbfbc484f92c9ad3ffdc25d107da4fbdec7b8bd7197460e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "12051:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "12059:3:13",
"type": ""
}
],
"src": "11917:366:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12435:220:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12445:74:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12511:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12516:2:13",
"type": "",
"value": "42"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "12452:58:13"
},
"nodeType": "YulFunctionCall",
"src": "12452:67:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12445:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12617:3:13"
}
],
"functionName": {
"name": "store_literal_in_memory_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
"nodeType": "YulIdentifier",
"src": "12528:88:13"
},
"nodeType": "YulFunctionCall",
"src": "12528:93:13"
},
"nodeType": "YulExpressionStatement",
"src": "12528:93:13"
},
{
"nodeType": "YulAssignment",
"src": "12630:19:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12641:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12646:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12637:3:13"
},
"nodeType": "YulFunctionCall",
"src": "12637:12:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "12630:3:13"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "12423:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "12431:3:13",
"type": ""
}
],
"src": "12289:366:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12807:220:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12817:74:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12883:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12888:2:13",
"type": "",
"value": "54"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "12824:58:13"
},
"nodeType": "YulFunctionCall",
"src": "12824:67:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12817:3:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "12989:3:13"
}
],
"functionName": {
"name": "store_literal_in_memory_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
"nodeType": "YulIdentifier",
"src": "12900:88:13"
},
"nodeType": "YulFunctionCall",
"src": "12900:93:13"
},
"nodeType": "YulExpressionStatement",
"src": "12900:93:13"
},
{
"nodeType": "YulAssignment",
"src": "13002:19:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13013:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13018:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "13009:3:13"
},
"nodeType": "YulFunctionCall",
"src": "13009:12:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "13002:3:13"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "12795:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "12803:3:13",
"type": ""
}
],
"src": "12661:366:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13098:53:13",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13115:3:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "13138:5:13"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "13120:17:13"
},
"nodeType": "YulFunctionCall",
"src": "13120:24:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "13108:6:13"
},
"nodeType": "YulFunctionCall",
"src": "13108:37:13"
},
"nodeType": "YulExpressionStatement",
"src": "13108:37:13"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "13086:5:13",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "13093:3:13",
"type": ""
}
],
"src": "13033:118:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13291:137:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13302:100:13",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "13389:6:13"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13398:3:13"
}
],
"functionName": {
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "13309:79:13"
},
"nodeType": "YulFunctionCall",
"src": "13309:93:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13302:3:13"
}
]
},
{
"nodeType": "YulAssignment",
"src": "13412:10:13",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13419:3:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "13412:3:13"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "13270:3:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "13276:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "13287:3:13",
"type": ""
}
],
"src": "13157:271:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13663:360:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13674:102:13",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "13763:6:13"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13772:3:13"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "13681:81:13"
},
"nodeType": "YulFunctionCall",
"src": "13681:95:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13674:3:13"
}
]
},
{
"nodeType": "YulAssignment",
"src": "13786:99:13",
"value": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "13872:6:13"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13881:3:13"
}
],
"functionName": {
"name": "abi_encode_t_string_storage_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "13793:78:13"
},
"nodeType": "YulFunctionCall",
"src": "13793:92:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13786:3:13"
}
]
},
{
"nodeType": "YulAssignment",
"src": "13895:102:13",
"value": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "13984:6:13"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13993:3:13"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "13902:81:13"
},
"nodeType": "YulFunctionCall",
"src": "13902:95:13"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "13895:3:13"
}
]
},
{
"nodeType": "YulAssignment",
"src": "14007:10:13",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14014:3:13"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "14007:3:13"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_storage_t_string_memory_ptr__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": "13626:3:13",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "13632:6:13",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "13640:6:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "13648:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "13659:3:13",
"type": ""
}
],
"src": "13434:589:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14155:206:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14165:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14177:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14188:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14173:3:13"
},
"nodeType": "YulFunctionCall",
"src": "14173:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14165:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "14245:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14258:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14269:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14254:3:13"
},
"nodeType": "YulFunctionCall",
"src": "14254:17:13"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "14201:43:13"
},
"nodeType": "YulFunctionCall",
"src": "14201:71:13"
},
"nodeType": "YulExpressionStatement",
"src": "14201:71:13"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "14326:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14339:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14350:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14335:3:13"
},
"nodeType": "YulFunctionCall",
"src": "14335:18:13"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "14282:43:13"
},
"nodeType": "YulFunctionCall",
"src": "14282:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "14282:72:13"
}
]
},
"name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "14119:9:13",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "14131:6:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "14139:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "14150:4:13",
"type": ""
}
],
"src": "14029:332:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14621:604:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14631:27:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14643:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14654:3:13",
"type": "",
"value": "192"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14639:3:13"
},
"nodeType": "YulFunctionCall",
"src": "14639:19:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "14631:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "14712:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14725:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14736:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14721:3:13"
},
"nodeType": "YulFunctionCall",
"src": "14721:17:13"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "14668:43:13"
},
"nodeType": "YulFunctionCall",
"src": "14668:71:13"
},
"nodeType": "YulExpressionStatement",
"src": "14668:71:13"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "14793:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14806:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14817:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14802:3:13"
},
"nodeType": "YulFunctionCall",
"src": "14802:18:13"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "14749:43:13"
},
"nodeType": "YulFunctionCall",
"src": "14749:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "14749:72:13"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "14875:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14888:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14899:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14884:3:13"
},
"nodeType": "YulFunctionCall",
"src": "14884:18:13"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "14831:43:13"
},
"nodeType": "YulFunctionCall",
"src": "14831:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "14831:72:13"
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "14957:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "14970:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14981:2:13",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14966:3:13"
},
"nodeType": "YulFunctionCall",
"src": "14966:18:13"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "14913:43:13"
},
"nodeType": "YulFunctionCall",
"src": "14913:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "14913:72:13"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15006:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15017:3:13",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15002:3:13"
},
"nodeType": "YulFunctionCall",
"src": "15002:19:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15027:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15033:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "15023:3:13"
},
"nodeType": "YulFunctionCall",
"src": "15023:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14995:6:13"
},
"nodeType": "YulFunctionCall",
"src": "14995:49:13"
},
"nodeType": "YulExpressionStatement",
"src": "14995:49:13"
},
{
"nodeType": "YulAssignment",
"src": "15053:84:13",
"value": {
"arguments": [
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "15123:6:13"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15132:4:13"
}
],
"functionName": {
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "15061:61:13"
},
"nodeType": "YulFunctionCall",
"src": "15061:76:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15053:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value5",
"nodeType": "YulIdentifier",
"src": "15189:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15202:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15213:3:13",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15198:3:13"
},
"nodeType": "YulFunctionCall",
"src": "15198:19:13"
}
],
"functionName": {
"name": "abi_encode_t_int256_to_t_int256_fromStack",
"nodeType": "YulIdentifier",
"src": "15147:41:13"
},
"nodeType": "YulFunctionCall",
"src": "15147:71:13"
},
"nodeType": "YulExpressionStatement",
"src": "15147:71:13"
}
]
},
"name": "abi_encode_tuple_t_address_t_address_t_bytes32_t_uint256_t_bytes_memory_ptr_t_int256__to_t_address_t_address_t_bytes32_t_uint256_t_bytes_memory_ptr_t_int256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "14553:9:13",
"type": ""
},
{
"name": "value5",
"nodeType": "YulTypedName",
"src": "14565:6:13",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "14573:6:13",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "14581:6:13",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "14589:6:13",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "14597:6:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "14605:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "14616:4:13",
"type": ""
}
],
"src": "14367:858:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15385:288:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15395:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15407:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15418:2:13",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15403:3:13"
},
"nodeType": "YulFunctionCall",
"src": "15403:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15395:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "15475:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15488:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15499:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15484:3:13"
},
"nodeType": "YulFunctionCall",
"src": "15484:17:13"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "15431:43:13"
},
"nodeType": "YulFunctionCall",
"src": "15431:71:13"
},
"nodeType": "YulExpressionStatement",
"src": "15431:71:13"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "15556:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15569:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15580:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15565:3:13"
},
"nodeType": "YulFunctionCall",
"src": "15565:18:13"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "15512:43:13"
},
"nodeType": "YulFunctionCall",
"src": "15512:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "15512:72:13"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "15638:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15651:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15662:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15647:3:13"
},
"nodeType": "YulFunctionCall",
"src": "15647:18:13"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "15594:43:13"
},
"nodeType": "YulFunctionCall",
"src": "15594:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "15594:72:13"
}
]
},
"name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "15341:9:13",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "15353:6:13",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "15361:6:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "15369:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "15380:4:13",
"type": ""
}
],
"src": "15231:442:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15805:206:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15815:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15827:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15838:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15823:3:13"
},
"nodeType": "YulFunctionCall",
"src": "15823:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "15815:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "15895:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15908:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15919:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15904:3:13"
},
"nodeType": "YulFunctionCall",
"src": "15904:17:13"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "15851:43:13"
},
"nodeType": "YulFunctionCall",
"src": "15851:71:13"
},
"nodeType": "YulExpressionStatement",
"src": "15851:71:13"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "15976:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "15989:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16000:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15985:3:13"
},
"nodeType": "YulFunctionCall",
"src": "15985:18:13"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "15932:43:13"
},
"nodeType": "YulFunctionCall",
"src": "15932:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "15932:72:13"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "15769:9:13",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "15781:6:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "15789:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "15800:4:13",
"type": ""
}
],
"src": "15679:332:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16213:436:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "16223:27:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16235:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16246:3:13",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16231:3:13"
},
"nodeType": "YulFunctionCall",
"src": "16231:19:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16223:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "16298:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16311:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16322:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16307:3:13"
},
"nodeType": "YulFunctionCall",
"src": "16307:17:13"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "16260:37:13"
},
"nodeType": "YulFunctionCall",
"src": "16260:65:13"
},
"nodeType": "YulExpressionStatement",
"src": "16260:65:13"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16346:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16357:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16342:3:13"
},
"nodeType": "YulFunctionCall",
"src": "16342:18:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16366:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16372:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "16362:3:13"
},
"nodeType": "YulFunctionCall",
"src": "16362:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "16335:6:13"
},
"nodeType": "YulFunctionCall",
"src": "16335:48:13"
},
"nodeType": "YulExpressionStatement",
"src": "16335:48:13"
},
{
"nodeType": "YulAssignment",
"src": "16392:86:13",
"value": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "16464:6:13"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16473:4:13"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "16400:63:13"
},
"nodeType": "YulFunctionCall",
"src": "16400:78:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16392:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "16532:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16545:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16556:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16541:3:13"
},
"nodeType": "YulFunctionCall",
"src": "16541:18:13"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "16488:43:13"
},
"nodeType": "YulFunctionCall",
"src": "16488:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "16488:72:13"
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "16614:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16627:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16638:2:13",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16623:3:13"
},
"nodeType": "YulFunctionCall",
"src": "16623:18:13"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "16570:43:13"
},
"nodeType": "YulFunctionCall",
"src": "16570:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "16570:72:13"
}
]
},
"name": "abi_encode_tuple_t_bool_t_string_memory_ptr_t_address_t_uint256__to_t_bool_t_string_memory_ptr_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "16161:9:13",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "16173:6:13",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "16181:6:13",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "16189:6:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "16197:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "16208:4:13",
"type": ""
}
],
"src": "16017:632:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16753:124:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "16763:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16775:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16786:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16771:3:13"
},
"nodeType": "YulFunctionCall",
"src": "16771:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "16763:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "16843:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "16856:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16867:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16852:3:13"
},
"nodeType": "YulFunctionCall",
"src": "16852:17:13"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "16799:43:13"
},
"nodeType": "YulFunctionCall",
"src": "16799:71:13"
},
"nodeType": "YulExpressionStatement",
"src": "16799:71:13"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "16725:9:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "16737:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "16748:4:13",
"type": ""
}
],
"src": "16655:222:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17121:588:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "17131:27:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17143:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17154:3:13",
"type": "",
"value": "192"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17139:3:13"
},
"nodeType": "YulFunctionCall",
"src": "17139:19:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17131:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "17212:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17225:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17236:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17221:3:13"
},
"nodeType": "YulFunctionCall",
"src": "17221:17:13"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "17168:43:13"
},
"nodeType": "YulFunctionCall",
"src": "17168:71:13"
},
"nodeType": "YulExpressionStatement",
"src": "17168:71:13"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "17293:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17306:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17317:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17302:3:13"
},
"nodeType": "YulFunctionCall",
"src": "17302:18:13"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "17249:43:13"
},
"nodeType": "YulFunctionCall",
"src": "17249:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "17249:72:13"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17342:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17353:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17338:3:13"
},
"nodeType": "YulFunctionCall",
"src": "17338:18:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17362:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17368:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "17358:3:13"
},
"nodeType": "YulFunctionCall",
"src": "17358:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17331:6:13"
},
"nodeType": "YulFunctionCall",
"src": "17331:48:13"
},
"nodeType": "YulExpressionStatement",
"src": "17331:48:13"
},
{
"nodeType": "YulAssignment",
"src": "17388:84:13",
"value": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "17458:6:13"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17467:4:13"
}
],
"functionName": {
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "17396:61:13"
},
"nodeType": "YulFunctionCall",
"src": "17396:76:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17388:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "17520:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17533:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17544:2:13",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17529:3:13"
},
"nodeType": "YulFunctionCall",
"src": "17529:18:13"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "17482:37:13"
},
"nodeType": "YulFunctionCall",
"src": "17482:66:13"
},
"nodeType": "YulExpressionStatement",
"src": "17482:66:13"
},
{
"expression": {
"arguments": [
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "17596:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17609:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17620:3:13",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17605:3:13"
},
"nodeType": "YulFunctionCall",
"src": "17605:19:13"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "17558:37:13"
},
"nodeType": "YulFunctionCall",
"src": "17558:67:13"
},
"nodeType": "YulExpressionStatement",
"src": "17558:67:13"
},
{
"expression": {
"arguments": [
{
"name": "value5",
"nodeType": "YulIdentifier",
"src": "17673:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17686:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17697:3:13",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17682:3:13"
},
"nodeType": "YulFunctionCall",
"src": "17682:19:13"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "17635:37:13"
},
"nodeType": "YulFunctionCall",
"src": "17635:67:13"
},
"nodeType": "YulExpressionStatement",
"src": "17635:67:13"
}
]
},
"name": "abi_encode_tuple_t_bytes32_t_uint256_t_bytes_memory_ptr_t_bool_t_bool_t_bool__to_t_bytes32_t_uint256_t_bytes_memory_ptr_t_bool_t_bool_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "17053:9:13",
"type": ""
},
{
"name": "value5",
"nodeType": "YulTypedName",
"src": "17065:6:13",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "17073:6:13",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "17081:6:13",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "17089:6:13",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "17097:6:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "17105:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "17116:4:13",
"type": ""
}
],
"src": "16883:826:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17965:545:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "17975:27:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17987:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17998:3:13",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17983:3:13"
},
"nodeType": "YulFunctionCall",
"src": "17983:19:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17975:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "18056:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18069:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18080:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18065:3:13"
},
"nodeType": "YulFunctionCall",
"src": "18065:17:13"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "18012:43:13"
},
"nodeType": "YulFunctionCall",
"src": "18012:71:13"
},
"nodeType": "YulExpressionStatement",
"src": "18012:71:13"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "18137:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18150:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18161:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18146:3:13"
},
"nodeType": "YulFunctionCall",
"src": "18146:18:13"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "18093:43:13"
},
"nodeType": "YulFunctionCall",
"src": "18093:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "18093:72:13"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18186:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18197:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18182:3:13"
},
"nodeType": "YulFunctionCall",
"src": "18182:18:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18206:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18212:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "18202:3:13"
},
"nodeType": "YulFunctionCall",
"src": "18202:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18175:6:13"
},
"nodeType": "YulFunctionCall",
"src": "18175:48:13"
},
"nodeType": "YulExpressionStatement",
"src": "18175:48:13"
},
{
"nodeType": "YulAssignment",
"src": "18232:84:13",
"value": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "18302:6:13"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18311:4:13"
}
],
"functionName": {
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "18240:61:13"
},
"nodeType": "YulFunctionCall",
"src": "18240:76:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18232:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "18384:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18397:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18408:2:13",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18393:3:13"
},
"nodeType": "YulFunctionCall",
"src": "18393:18:13"
}
],
"functionName": {
"name": "abi_encode_t_contract$_IERC20_$190_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "18326:57:13"
},
"nodeType": "YulFunctionCall",
"src": "18326:86:13"
},
"nodeType": "YulExpressionStatement",
"src": "18326:86:13"
},
{
"expression": {
"arguments": [
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "18474:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18487:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18498:3:13",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18483:3:13"
},
"nodeType": "YulFunctionCall",
"src": "18483:19:13"
}
],
"functionName": {
"name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "18422:51:13"
},
"nodeType": "YulFunctionCall",
"src": "18422:81:13"
},
"nodeType": "YulExpressionStatement",
"src": "18422:81:13"
}
]
},
"name": "abi_encode_tuple_t_bytes32_t_uint256_t_bytes_memory_ptr_t_contract$_IERC20_$190_t_rational_0_by_1__to_t_bytes32_t_uint256_t_bytes_memory_ptr_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "17905:9:13",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "17917:6:13",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "17925:6:13",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "17933:6:13",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "17941:6:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "17949:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "17960:4:13",
"type": ""
}
],
"src": "17715:795:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18716:440:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "18726:27:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18738:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18749:3:13",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18734:3:13"
},
"nodeType": "YulFunctionCall",
"src": "18734:19:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18726:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "18807:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18820:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18831:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18816:3:13"
},
"nodeType": "YulFunctionCall",
"src": "18816:17:13"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "18763:43:13"
},
"nodeType": "YulFunctionCall",
"src": "18763:71:13"
},
"nodeType": "YulExpressionStatement",
"src": "18763:71:13"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "18888:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18901:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18912:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18897:3:13"
},
"nodeType": "YulFunctionCall",
"src": "18897:18:13"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "18844:43:13"
},
"nodeType": "YulFunctionCall",
"src": "18844:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "18844:72:13"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18937:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18948:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18933:3:13"
},
"nodeType": "YulFunctionCall",
"src": "18933:18:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18957:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "18963:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "18953:3:13"
},
"nodeType": "YulFunctionCall",
"src": "18953:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18926:6:13"
},
"nodeType": "YulFunctionCall",
"src": "18926:48:13"
},
"nodeType": "YulExpressionStatement",
"src": "18926:48:13"
},
{
"nodeType": "YulAssignment",
"src": "18983:84:13",
"value": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "19053:6:13"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19062:4:13"
}
],
"functionName": {
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "18991:61:13"
},
"nodeType": "YulFunctionCall",
"src": "18991:76:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "18983:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "19121:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19134:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19145:2:13",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19130:3:13"
},
"nodeType": "YulFunctionCall",
"src": "19130:18:13"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "19077:43:13"
},
"nodeType": "YulFunctionCall",
"src": "19077:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "19077:72:13"
}
]
},
"name": "abi_encode_tuple_t_bytes32_t_uint256_t_bytes_memory_ptr_t_uint256__to_t_bytes32_t_uint256_t_bytes_memory_ptr_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "18664:9:13",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "18676:6:13",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "18684:6:13",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "18692:6:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "18700:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "18711:4:13",
"type": ""
}
],
"src": "18516:640:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19284:148:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19294:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19306:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19317:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19302:3:13"
},
"nodeType": "YulFunctionCall",
"src": "19302:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19294:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "19398:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19411:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19422:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19407:3:13"
},
"nodeType": "YulFunctionCall",
"src": "19407:17:13"
}
],
"functionName": {
"name": "abi_encode_t_contract$_FinderInterface_$1216_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "19330:67:13"
},
"nodeType": "YulFunctionCall",
"src": "19330:95:13"
},
"nodeType": "YulExpressionStatement",
"src": "19330:95:13"
}
]
},
"name": "abi_encode_tuple_t_contract$_FinderInterface_$1216__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "19256:9:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "19268:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "19279:4:13",
"type": ""
}
],
"src": "19162:270:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19550:138:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19560:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19572:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19583:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19568:3:13"
},
"nodeType": "YulFunctionCall",
"src": "19568:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19560:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "19654:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19667:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19678:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19663:3:13"
},
"nodeType": "YulFunctionCall",
"src": "19663:17:13"
}
],
"functionName": {
"name": "abi_encode_t_contract$_IERC20_$190_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "19596:57:13"
},
"nodeType": "YulFunctionCall",
"src": "19596:85:13"
},
"nodeType": "YulExpressionStatement",
"src": "19596:85:13"
}
]
},
"name": "abi_encode_tuple_t_contract$_IERC20_$190__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "19522:9:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "19534:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "19545:4:13",
"type": ""
}
],
"src": "19438:250:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19828:160:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19838:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19850:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19861:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19846:3:13"
},
"nodeType": "YulFunctionCall",
"src": "19846:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19838:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "19954:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19967:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19978:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19963:3:13"
},
"nodeType": "YulFunctionCall",
"src": "19963:17:13"
}
],
"functionName": {
"name": "abi_encode_t_contract$_OptimisticOracleV2Interface_$1582_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "19874:79:13"
},
"nodeType": "YulFunctionCall",
"src": "19874:107:13"
},
"nodeType": "YulExpressionStatement",
"src": "19874:107:13"
}
]
},
"name": "abi_encode_tuple_t_contract$_OptimisticOracleV2Interface_$1582__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "19800:9:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "19812:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "19823:4:13",
"type": ""
}
],
"src": "19694:294:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20150:287:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "20160:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20172:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20183:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20168:3:13"
},
"nodeType": "YulFunctionCall",
"src": "20168:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20160:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20207:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20218:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20203:3:13"
},
"nodeType": "YulFunctionCall",
"src": "20203:17:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20226:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20232:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "20222:3:13"
},
"nodeType": "YulFunctionCall",
"src": "20222:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "20196:6:13"
},
"nodeType": "YulFunctionCall",
"src": "20196:47:13"
},
"nodeType": "YulExpressionStatement",
"src": "20196:47:13"
},
{
"nodeType": "YulAssignment",
"src": "20252:96:13",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "20326:6:13"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "20334:6:13"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20343:4:13"
}
],
"functionName": {
"name": "abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "20260:65:13"
},
"nodeType": "YulFunctionCall",
"src": "20260:88:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20252:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "20402:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20415:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20426:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20411:3:13"
},
"nodeType": "YulFunctionCall",
"src": "20411:18:13"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "20358:43:13"
},
"nodeType": "YulFunctionCall",
"src": "20358:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "20358:72:13"
}
]
},
"name": "abi_encode_tuple_t_string_calldata_ptr_t_uint256__to_t_string_memory_ptr_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "20106:9:13",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "20118:6:13",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "20126:6:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "20134:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "20145:4:13",
"type": ""
}
],
"src": "19994:443:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20561:195:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "20571:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20583:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20594:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20579:3:13"
},
"nodeType": "YulFunctionCall",
"src": "20579:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20571:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20618:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20629:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20614:3:13"
},
"nodeType": "YulFunctionCall",
"src": "20614:17:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20637:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20643:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "20633:3:13"
},
"nodeType": "YulFunctionCall",
"src": "20633:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "20607:6:13"
},
"nodeType": "YulFunctionCall",
"src": "20607:47:13"
},
"nodeType": "YulExpressionStatement",
"src": "20607:47:13"
},
{
"nodeType": "YulAssignment",
"src": "20663:86:13",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "20735:6:13"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20744:4:13"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "20671:63:13"
},
"nodeType": "YulFunctionCall",
"src": "20671:78:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20663:4:13"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "20533:9:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "20545:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "20556:4:13",
"type": ""
}
],
"src": "20443:313:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "20933:248:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "20943:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20955:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "20966:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20951:3:13"
},
"nodeType": "YulFunctionCall",
"src": "20951:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "20943:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "20990:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21001:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "20986:3:13"
},
"nodeType": "YulFunctionCall",
"src": "20986:17:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21009:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21015:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "21005:3:13"
},
"nodeType": "YulFunctionCall",
"src": "21005:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "20979:6:13"
},
"nodeType": "YulFunctionCall",
"src": "20979:47:13"
},
"nodeType": "YulExpressionStatement",
"src": "20979:47:13"
},
{
"nodeType": "YulAssignment",
"src": "21035:139:13",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21169:4:13"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_31a27b2540ab06c48c548f1322928111bf775677522ce27cb1141fd9d696da78_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "21043:124:13"
},
"nodeType": "YulFunctionCall",
"src": "21043:131:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21035:4:13"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_31a27b2540ab06c48c548f1322928111bf775677522ce27cb1141fd9d696da78__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "20913:9:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "20928:4:13",
"type": ""
}
],
"src": "20762:419:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21358:248:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "21368:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21380:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21391:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21376:3:13"
},
"nodeType": "YulFunctionCall",
"src": "21376:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21368:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21415:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21426:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21411:3:13"
},
"nodeType": "YulFunctionCall",
"src": "21411:17:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21434:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21440:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "21430:3:13"
},
"nodeType": "YulFunctionCall",
"src": "21430:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21404:6:13"
},
"nodeType": "YulFunctionCall",
"src": "21404:47:13"
},
"nodeType": "YulExpressionStatement",
"src": "21404:47:13"
},
{
"nodeType": "YulAssignment",
"src": "21460:139:13",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21594:4:13"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_397aaaccf4e12d92be59946dfcacdf68dc2c5b82b4a37f6e4ef2cd79e09c3db4_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "21468:124:13"
},
"nodeType": "YulFunctionCall",
"src": "21468:131:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21460:4:13"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_397aaaccf4e12d92be59946dfcacdf68dc2c5b82b4a37f6e4ef2cd79e09c3db4__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "21338:9:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "21353:4:13",
"type": ""
}
],
"src": "21187:419:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "21783:248:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "21793:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21805:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21816:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21801:3:13"
},
"nodeType": "YulFunctionCall",
"src": "21801:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21793:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21840:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "21851:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "21836:3:13"
},
"nodeType": "YulFunctionCall",
"src": "21836:17:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21859:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "21865:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "21855:3:13"
},
"nodeType": "YulFunctionCall",
"src": "21855:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "21829:6:13"
},
"nodeType": "YulFunctionCall",
"src": "21829:47:13"
},
"nodeType": "YulExpressionStatement",
"src": "21829:47:13"
},
{
"nodeType": "YulAssignment",
"src": "21885:139:13",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22019:4:13"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_50ae26a9d347302aae8564609c1d5427cb95105a08621ec1fae953f198eab5c4_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "21893:124:13"
},
"nodeType": "YulFunctionCall",
"src": "21893:131:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "21885:4:13"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_50ae26a9d347302aae8564609c1d5427cb95105a08621ec1fae953f198eab5c4__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "21763:9:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "21778:4:13",
"type": ""
}
],
"src": "21612:419:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22208:248:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "22218:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22230:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22241:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22226:3:13"
},
"nodeType": "YulFunctionCall",
"src": "22226:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22218:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22265:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22276:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22261:3:13"
},
"nodeType": "YulFunctionCall",
"src": "22261:17:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22284:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22290:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "22280:3:13"
},
"nodeType": "YulFunctionCall",
"src": "22280:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22254:6:13"
},
"nodeType": "YulFunctionCall",
"src": "22254:47:13"
},
"nodeType": "YulExpressionStatement",
"src": "22254:47:13"
},
{
"nodeType": "YulAssignment",
"src": "22310:139:13",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22444:4:13"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "22318:124:13"
},
"nodeType": "YulFunctionCall",
"src": "22318:131:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22310:4:13"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "22188:9:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "22203:4:13",
"type": ""
}
],
"src": "22037:419:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "22633:248:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "22643:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22655:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22666:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22651:3:13"
},
"nodeType": "YulFunctionCall",
"src": "22651:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22643:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22690:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "22701:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "22686:3:13"
},
"nodeType": "YulFunctionCall",
"src": "22686:17:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22709:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "22715:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "22705:3:13"
},
"nodeType": "YulFunctionCall",
"src": "22705:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "22679:6:13"
},
"nodeType": "YulFunctionCall",
"src": "22679:47:13"
},
"nodeType": "YulExpressionStatement",
"src": "22679:47:13"
},
{
"nodeType": "YulAssignment",
"src": "22735:139:13",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22869:4:13"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_5e579a0cb871fe308cb1e293544f75d10c9dbe3def875f5a1f99f0aa2786aa3f_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "22743:124:13"
},
"nodeType": "YulFunctionCall",
"src": "22743:131:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "22735:4:13"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_5e579a0cb871fe308cb1e293544f75d10c9dbe3def875f5a1f99f0aa2786aa3f__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "22613:9:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "22628:4:13",
"type": ""
}
],
"src": "22462:419:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23058:248:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "23068:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23080:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23091:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23076:3:13"
},
"nodeType": "YulFunctionCall",
"src": "23076:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "23068:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23115:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23126:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23111:3:13"
},
"nodeType": "YulFunctionCall",
"src": "23111:17:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "23134:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23140:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "23130:3:13"
},
"nodeType": "YulFunctionCall",
"src": "23130:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "23104:6:13"
},
"nodeType": "YulFunctionCall",
"src": "23104:47:13"
},
"nodeType": "YulExpressionStatement",
"src": "23104:47:13"
},
{
"nodeType": "YulAssignment",
"src": "23160:139:13",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "23294:4:13"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_5fed739a4c4ad18f14b01264a20ed404d60f63cdf6342f522a3cc353b6a41860_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "23168:124:13"
},
"nodeType": "YulFunctionCall",
"src": "23168:131:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "23160:4:13"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_5fed739a4c4ad18f14b01264a20ed404d60f63cdf6342f522a3cc353b6a41860__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "23038:9:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "23053:4:13",
"type": ""
}
],
"src": "22887:419:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23483:248:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "23493:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23505:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23516:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23501:3:13"
},
"nodeType": "YulFunctionCall",
"src": "23501:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "23493:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23540:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23551:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23536:3:13"
},
"nodeType": "YulFunctionCall",
"src": "23536:17:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "23559:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23565:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "23555:3:13"
},
"nodeType": "YulFunctionCall",
"src": "23555:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "23529:6:13"
},
"nodeType": "YulFunctionCall",
"src": "23529:47:13"
},
"nodeType": "YulExpressionStatement",
"src": "23529:47:13"
},
{
"nodeType": "YulAssignment",
"src": "23585:139:13",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "23719:4:13"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "23593:124:13"
},
"nodeType": "YulFunctionCall",
"src": "23593:131:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "23585:4:13"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "23463:9:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "23478:4:13",
"type": ""
}
],
"src": "23312:419:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "23908:248:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "23918:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23930:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23941:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23926:3:13"
},
"nodeType": "YulFunctionCall",
"src": "23926:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "23918:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23965:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "23976:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "23961:3:13"
},
"nodeType": "YulFunctionCall",
"src": "23961:17:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "23984:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "23990:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "23980:3:13"
},
"nodeType": "YulFunctionCall",
"src": "23980:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "23954:6:13"
},
"nodeType": "YulFunctionCall",
"src": "23954:47:13"
},
"nodeType": "YulExpressionStatement",
"src": "23954:47:13"
},
{
"nodeType": "YulAssignment",
"src": "24010:139:13",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "24144:4:13"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_d4b8fa0e2cd41e5501dc9c5b6b1a5aefcb71cb9c0fbdce8f12de17fb679490d1_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "24018:124:13"
},
"nodeType": "YulFunctionCall",
"src": "24018:131:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "24010:4:13"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_d4b8fa0e2cd41e5501dc9c5b6b1a5aefcb71cb9c0fbdce8f12de17fb679490d1__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "23888:9:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "23903:4:13",
"type": ""
}
],
"src": "23737:419:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "24333:248:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "24343:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24355:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24366:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24351:3:13"
},
"nodeType": "YulFunctionCall",
"src": "24351:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "24343:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24390:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24401:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24386:3:13"
},
"nodeType": "YulFunctionCall",
"src": "24386:17:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "24409:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24415:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "24405:3:13"
},
"nodeType": "YulFunctionCall",
"src": "24405:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "24379:6:13"
},
"nodeType": "YulFunctionCall",
"src": "24379:47:13"
},
"nodeType": "YulExpressionStatement",
"src": "24379:47:13"
},
{
"nodeType": "YulAssignment",
"src": "24435:139:13",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "24569:4:13"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_de188bf9c213a5d1bbbfbc484f92c9ad3ffdc25d107da4fbdec7b8bd7197460e_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "24443:124:13"
},
"nodeType": "YulFunctionCall",
"src": "24443:131:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "24435:4:13"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_de188bf9c213a5d1bbbfbc484f92c9ad3ffdc25d107da4fbdec7b8bd7197460e__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "24313:9:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "24328:4:13",
"type": ""
}
],
"src": "24162:419:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "24758:248:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "24768:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24780:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24791:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24776:3:13"
},
"nodeType": "YulFunctionCall",
"src": "24776:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "24768:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24815:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "24826:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "24811:3:13"
},
"nodeType": "YulFunctionCall",
"src": "24811:17:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "24834:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "24840:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "24830:3:13"
},
"nodeType": "YulFunctionCall",
"src": "24830:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "24804:6:13"
},
"nodeType": "YulFunctionCall",
"src": "24804:47:13"
},
"nodeType": "YulExpressionStatement",
"src": "24804:47:13"
},
{
"nodeType": "YulAssignment",
"src": "24860:139:13",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "24994:4:13"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "24868:124:13"
},
"nodeType": "YulFunctionCall",
"src": "24868:131:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "24860:4:13"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "24738:9:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "24753:4:13",
"type": ""
}
],
"src": "24587:419:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "25183:248:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "25193:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25205:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25216:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25201:3:13"
},
"nodeType": "YulFunctionCall",
"src": "25201:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "25193:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25240:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25251:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25236:3:13"
},
"nodeType": "YulFunctionCall",
"src": "25236:17:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "25259:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25265:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "25255:3:13"
},
"nodeType": "YulFunctionCall",
"src": "25255:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25229:6:13"
},
"nodeType": "YulFunctionCall",
"src": "25229:47:13"
},
"nodeType": "YulExpressionStatement",
"src": "25229:47:13"
},
{
"nodeType": "YulAssignment",
"src": "25285:139:13",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "25419:4:13"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "25293:124:13"
},
"nodeType": "YulFunctionCall",
"src": "25293:131:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "25285:4:13"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "25163:9:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "25178:4:13",
"type": ""
}
],
"src": "25012:419:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "25535:124:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "25545:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25557:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25568:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25553:3:13"
},
"nodeType": "YulFunctionCall",
"src": "25553:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "25545:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "25625:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25638:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25649:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25634:3:13"
},
"nodeType": "YulFunctionCall",
"src": "25634:17:13"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "25581:43:13"
},
"nodeType": "YulFunctionCall",
"src": "25581:71:13"
},
"nodeType": "YulExpressionStatement",
"src": "25581:71:13"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "25507:9:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "25519:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "25530:4:13",
"type": ""
}
],
"src": "25437:222:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "25809:275:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "25819:26:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25831:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25842:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25827:3:13"
},
"nodeType": "YulFunctionCall",
"src": "25827:18:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "25819:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "25899:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25912:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25923:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25908:3:13"
},
"nodeType": "YulFunctionCall",
"src": "25908:17:13"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "25855:43:13"
},
"nodeType": "YulFunctionCall",
"src": "25855:71:13"
},
"nodeType": "YulExpressionStatement",
"src": "25855:71:13"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25947:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "25958:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "25943:3:13"
},
"nodeType": "YulFunctionCall",
"src": "25943:18:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "25967:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "25973:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "25963:3:13"
},
"nodeType": "YulFunctionCall",
"src": "25963:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "25936:6:13"
},
"nodeType": "YulFunctionCall",
"src": "25936:48:13"
},
"nodeType": "YulExpressionStatement",
"src": "25936:48:13"
},
{
"nodeType": "YulAssignment",
"src": "25993:84:13",
"value": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "26063:6:13"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "26072:4:13"
}
],
"functionName": {
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "26001:61:13"
},
"nodeType": "YulFunctionCall",
"src": "26001:76:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "25993:4:13"
}
]
}
]
},
"name": "abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "25773:9:13",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "25785:6:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "25793:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "25804:4:13",
"type": ""
}
],
"src": "25665:419:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "26292:442:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "26302:27:13",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "26314:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26325:3:13",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "26310:3:13"
},
"nodeType": "YulFunctionCall",
"src": "26310:19:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "26302:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "26383:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "26396:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26407:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "26392:3:13"
},
"nodeType": "YulFunctionCall",
"src": "26392:17:13"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "26339:43:13"
},
"nodeType": "YulFunctionCall",
"src": "26339:71:13"
},
"nodeType": "YulExpressionStatement",
"src": "26339:71:13"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "26431:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26442:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "26427:3:13"
},
"nodeType": "YulFunctionCall",
"src": "26427:18:13"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "26451:4:13"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "26457:9:13"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "26447:3:13"
},
"nodeType": "YulFunctionCall",
"src": "26447:20:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "26420:6:13"
},
"nodeType": "YulFunctionCall",
"src": "26420:48:13"
},
"nodeType": "YulExpressionStatement",
"src": "26420:48:13"
},
{
"nodeType": "YulAssignment",
"src": "26477:86:13",
"value": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "26549:6:13"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "26558:4:13"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "26485:63:13"
},
"nodeType": "YulFunctionCall",
"src": "26485:78:13"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "26477:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "26617:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "26630:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26641:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "26626:3:13"
},
"nodeType": "YulFunctionCall",
"src": "26626:18:13"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "26573:43:13"
},
"nodeType": "YulFunctionCall",
"src": "26573:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "26573:72:13"
},
{
"expression": {
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "26699:6:13"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "26712:9:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26723:2:13",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "26708:3:13"
},
"nodeType": "YulFunctionCall",
"src": "26708:18:13"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "26655:43:13"
},
"nodeType": "YulFunctionCall",
"src": "26655:72:13"
},
"nodeType": "YulExpressionStatement",
"src": "26655:72:13"
}
]
},
"name": "abi_encode_tuple_t_uint256_t_string_memory_ptr_t_address_t_uint256__to_t_uint256_t_string_memory_ptr_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "26240:9:13",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "26252:6:13",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "26260:6:13",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "26268:6:13",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "26276:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "26287:4:13",
"type": ""
}
],
"src": "26090:644:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "26781:88:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "26791:30:13",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nodeType": "YulIdentifier",
"src": "26801:18:13"
},
"nodeType": "YulFunctionCall",
"src": "26801:20:13"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "26791:6:13"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "26850:6:13"
},
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "26858:4:13"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "26830:19:13"
},
"nodeType": "YulFunctionCall",
"src": "26830:33:13"
},
"nodeType": "YulExpressionStatement",
"src": "26830:33:13"
}
]
},
"name": "allocate_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "26765:4:13",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "26774:6:13",
"type": ""
}
],
"src": "26740:129:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "26915:35:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "26925:19:13",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "26941:2:13",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "26935:5:13"
},
"nodeType": "YulFunctionCall",
"src": "26935:9:13"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "26925:6:13"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "26908:6:13",
"type": ""
}
],
"src": "26875:75:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "27022:241:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "27127:22:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "27129:16:13"
},
"nodeType": "YulFunctionCall",
"src": "27129:18:13"
},
"nodeType": "YulExpressionStatement",
"src": "27129:18:13"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "27099:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27107:18:13",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "27096:2:13"
},
"nodeType": "YulFunctionCall",
"src": "27096:30:13"
},
"nodeType": "YulIf",
"src": "27093:56:13"
},
{
"nodeType": "YulAssignment",
"src": "27159:37:13",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "27189:6:13"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "27167:21:13"
},
"nodeType": "YulFunctionCall",
"src": "27167:29:13"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "27159:4:13"
}
]
},
{
"nodeType": "YulAssignment",
"src": "27233:23:13",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "27245:4:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27251:4:13",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27241:3:13"
},
"nodeType": "YulFunctionCall",
"src": "27241:15:13"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "27233:4:13"
}
]
}
]
},
"name": "array_allocation_size_t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "27006:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "27017:4:13",
"type": ""
}
],
"src": "26956:307:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "27323:87:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "27333:11:13",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "27341:3:13"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "27333:4:13"
}
]
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27361:1:13",
"type": "",
"value": "0"
},
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "27364:3:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "27354:6:13"
},
"nodeType": "YulFunctionCall",
"src": "27354:14:13"
},
"nodeType": "YulExpressionStatement",
"src": "27354:14:13"
},
{
"nodeType": "YulAssignment",
"src": "27377:26:13",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27395:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27398:4:13",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "keccak256",
"nodeType": "YulIdentifier",
"src": "27385:9:13"
},
"nodeType": "YulFunctionCall",
"src": "27385:18:13"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "27377:4:13"
}
]
}
]
},
"name": "array_dataslot_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "27310:3:13",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "27318:4:13",
"type": ""
}
],
"src": "27269:141:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "27474:40:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "27485:22:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "27501:5:13"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "27495:5:13"
},
"nodeType": "YulFunctionCall",
"src": "27495:12:13"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "27485:6:13"
}
]
}
]
},
"name": "array_length_t_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "27457:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "27467:6:13",
"type": ""
}
],
"src": "27416:98:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "27579:40:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "27590:22:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "27606:5:13"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "27600:5:13"
},
"nodeType": "YulFunctionCall",
"src": "27600:12:13"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "27590:6:13"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "27562:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "27572:6:13",
"type": ""
}
],
"src": "27520:99:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "27720:73:13",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "27737:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "27742:6:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "27730:6:13"
},
"nodeType": "YulFunctionCall",
"src": "27730:19:13"
},
"nodeType": "YulExpressionStatement",
"src": "27730:19:13"
},
{
"nodeType": "YulAssignment",
"src": "27758:29:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "27777:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "27782:4:13",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "27773:3:13"
},
"nodeType": "YulFunctionCall",
"src": "27773:14:13"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "27758:11:13"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "27692:3:13",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "27697:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "27708:11:13",
"type": ""
}
],
"src": "27625:168:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "27912:34:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "27922:18:13",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "27937:3:13"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "27922:11:13"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "27884:3:13",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "27889:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "27900:11:13",
"type": ""
}
],
"src": "27799:147:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "28048:73:13",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "28065:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "28070:6:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "28058:6:13"
},
"nodeType": "YulFunctionCall",
"src": "28058:19:13"
},
"nodeType": "YulExpressionStatement",
"src": "28058:19:13"
},
{
"nodeType": "YulAssignment",
"src": "28086:29:13",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "28105:3:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28110:4:13",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "28101:3:13"
},
"nodeType": "YulFunctionCall",
"src": "28101:14:13"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "28086:11:13"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "28020:3:13",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "28025:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "28036:11:13",
"type": ""
}
],
"src": "27952:169:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "28241:34:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "28251:18:13",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "28266:3:13"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "28251:11:13"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "28213:3:13",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "28218:6:13",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "28229:11:13",
"type": ""
}
],
"src": "28127:148:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "28323:143:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "28333:25:13",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "28356:1:13"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "28338:17:13"
},
"nodeType": "YulFunctionCall",
"src": "28338:20:13"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "28333:1:13"
}
]
},
{
"nodeType": "YulAssignment",
"src": "28367:25:13",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "28390:1:13"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "28372:17:13"
},
"nodeType": "YulFunctionCall",
"src": "28372:20:13"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "28367:1:13"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "28414:22:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x12",
"nodeType": "YulIdentifier",
"src": "28416:16:13"
},
"nodeType": "YulFunctionCall",
"src": "28416:18:13"
},
"nodeType": "YulExpressionStatement",
"src": "28416:18:13"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "28411:1:13"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "28404:6:13"
},
"nodeType": "YulFunctionCall",
"src": "28404:9:13"
},
"nodeType": "YulIf",
"src": "28401:35:13"
},
{
"nodeType": "YulAssignment",
"src": "28446:14:13",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "28455:1:13"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "28458:1:13"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "28451:3:13"
},
"nodeType": "YulFunctionCall",
"src": "28451:9:13"
},
"variableNames": [
{
"name": "r",
"nodeType": "YulIdentifier",
"src": "28446:1:13"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "28312:1:13",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "28315:1:13",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nodeType": "YulTypedName",
"src": "28321:1:13",
"type": ""
}
],
"src": "28281:185:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "28520:300:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "28530:25:13",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "28553:1:13"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "28535:17:13"
},
"nodeType": "YulFunctionCall",
"src": "28535:20:13"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "28530:1:13"
}
]
},
{
"nodeType": "YulAssignment",
"src": "28564:25:13",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "28587:1:13"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "28569:17:13"
},
"nodeType": "YulFunctionCall",
"src": "28569:20:13"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "28564:1:13"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "28762:22:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "28764:16:13"
},
"nodeType": "YulFunctionCall",
"src": "28764:18:13"
},
"nodeType": "YulExpressionStatement",
"src": "28764:18:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "28674:1:13"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "28667:6:13"
},
"nodeType": "YulFunctionCall",
"src": "28667:9:13"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "28660:6:13"
},
"nodeType": "YulFunctionCall",
"src": "28660:17:13"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "28682:1:13"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "28689:66:13",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "28757:1:13"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "28685:3:13"
},
"nodeType": "YulFunctionCall",
"src": "28685:74:13"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "28679:2:13"
},
"nodeType": "YulFunctionCall",
"src": "28679:81:13"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "28656:3:13"
},
"nodeType": "YulFunctionCall",
"src": "28656:105:13"
},
"nodeType": "YulIf",
"src": "28653:131:13"
},
{
"nodeType": "YulAssignment",
"src": "28794:20:13",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "28809:1:13"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "28812:1:13"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "28805:3:13"
},
"nodeType": "YulFunctionCall",
"src": "28805:9:13"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "28794:7:13"
}
]
}
]
},
"name": "checked_mul_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "28503:1:13",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "28506:1:13",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "28512:7:13",
"type": ""
}
],
"src": "28472:348:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "28871:51:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "28881:35:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "28910:5:13"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "28892:17:13"
},
"nodeType": "YulFunctionCall",
"src": "28892:24:13"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "28881:7:13"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "28853:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "28863:7:13",
"type": ""
}
],
"src": "28826:96:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "28970:48:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "28980:32:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "29005:5:13"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "28998:6:13"
},
"nodeType": "YulFunctionCall",
"src": "28998:13:13"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "28991:6:13"
},
"nodeType": "YulFunctionCall",
"src": "28991:21:13"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "28980:7:13"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "28952:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "28962:7:13",
"type": ""
}
],
"src": "28928:90:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "29069:32:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "29079:16:13",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "29090:5:13"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "29079:7:13"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "29051:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "29061:7:13",
"type": ""
}
],
"src": "29024:77:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "29151:32:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "29161:16:13",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "29172:5:13"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "29161:7:13"
}
]
}
]
},
"name": "cleanup_t_int256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "29133:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "29143:7:13",
"type": ""
}
],
"src": "29107:76:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "29234:81:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "29244:65:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "29259:5:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "29266:42:13",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "29255:3:13"
},
"nodeType": "YulFunctionCall",
"src": "29255:54:13"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "29244:7:13"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "29216:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "29226:7:13",
"type": ""
}
],
"src": "29189:126:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "29366:32:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "29376:16:13",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "29387:5:13"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "29376:7:13"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "29348:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "29358:7:13",
"type": ""
}
],
"src": "29321:77:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "29488:66:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "29498:50:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "29542:5:13"
}
],
"functionName": {
"name": "convert_t_uint160_to_t_address",
"nodeType": "YulIdentifier",
"src": "29511:30:13"
},
"nodeType": "YulFunctionCall",
"src": "29511:37:13"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "29498:9:13"
}
]
}
]
},
"name": "convert_t_contract$_FinderInterface_$1216_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "29468:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "29478:9:13",
"type": ""
}
],
"src": "29404:150:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "29634:66:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "29644:50:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "29688:5:13"
}
],
"functionName": {
"name": "convert_t_uint160_to_t_address",
"nodeType": "YulIdentifier",
"src": "29657:30:13"
},
"nodeType": "YulFunctionCall",
"src": "29657:37:13"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "29644:9:13"
}
]
}
]
},
"name": "convert_t_contract$_IERC20_$190_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "29614:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "29624:9:13",
"type": ""
}
],
"src": "29560:140:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "29802:66:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "29812:50:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "29856:5:13"
}
],
"functionName": {
"name": "convert_t_uint160_to_t_address",
"nodeType": "YulIdentifier",
"src": "29825:30:13"
},
"nodeType": "YulFunctionCall",
"src": "29825:37:13"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "29812:9:13"
}
]
}
]
},
"name": "convert_t_contract$_OptimisticOracleV2Interface_$1582_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "29782:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "29792:9:13",
"type": ""
}
],
"src": "29706:162:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "29942:53:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "29952:37:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "29983:5:13"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "29965:17:13"
},
"nodeType": "YulFunctionCall",
"src": "29965:24:13"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "29952:9:13"
}
]
}
]
},
"name": "convert_t_rational_0_by_1_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "29922:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "29932:9:13",
"type": ""
}
],
"src": "29874:121:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "30061:66:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "30071:50:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "30115:5:13"
}
],
"functionName": {
"name": "convert_t_uint160_to_t_uint160",
"nodeType": "YulIdentifier",
"src": "30084:30:13"
},
"nodeType": "YulFunctionCall",
"src": "30084:37:13"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "30071:9:13"
}
]
}
]
},
"name": "convert_t_uint160_to_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "30041:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "30051:9:13",
"type": ""
}
],
"src": "30001:126:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "30193:53:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "30203:37:13",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "30234:5:13"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "30216:17:13"
},
"nodeType": "YulFunctionCall",
"src": "30216:24:13"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "30203:9:13"
}
]
}
]
},
"name": "convert_t_uint160_to_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "30173:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "30183:9:13",
"type": ""
}
],
"src": "30133:113:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "30303:103:13",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "30326:3:13"
},
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "30331:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "30336:6:13"
}
],
"functionName": {
"name": "calldatacopy",
"nodeType": "YulIdentifier",
"src": "30313:12:13"
},
"nodeType": "YulFunctionCall",
"src": "30313:30:13"
},
"nodeType": "YulExpressionStatement",
"src": "30313:30:13"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "30384:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "30389:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "30380:3:13"
},
"nodeType": "YulFunctionCall",
"src": "30380:16:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "30398:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "30373:6:13"
},
"nodeType": "YulFunctionCall",
"src": "30373:27:13"
},
"nodeType": "YulExpressionStatement",
"src": "30373:27:13"
}
]
},
"name": "copy_calldata_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "30285:3:13",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "30290:3:13",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "30295:6:13",
"type": ""
}
],
"src": "30252:154:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "30461:258:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "30471:10:13",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "30480:1:13",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "30475:1:13",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "30540:63:13",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "30565:3:13"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "30570:1:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "30561:3:13"
},
"nodeType": "YulFunctionCall",
"src": "30561:11:13"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "30584:3:13"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "30589:1:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "30580:3:13"
},
"nodeType": "YulFunctionCall",
"src": "30580:11:13"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "30574:5:13"
},
"nodeType": "YulFunctionCall",
"src": "30574:18:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "30554:6:13"
},
"nodeType": "YulFunctionCall",
"src": "30554:39:13"
},
"nodeType": "YulExpressionStatement",
"src": "30554:39:13"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "30501:1:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "30504:6:13"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "30498:2:13"
},
"nodeType": "YulFunctionCall",
"src": "30498:13:13"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "30512:19:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "30514:15:13",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "30523:1:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "30526:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "30519:3:13"
},
"nodeType": "YulFunctionCall",
"src": "30519:10:13"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "30514:1:13"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "30494:3:13",
"statements": []
},
"src": "30490:113:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "30637:76:13",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "30687:3:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "30692:6:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "30683:3:13"
},
"nodeType": "YulFunctionCall",
"src": "30683:16:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "30701:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "30676:6:13"
},
"nodeType": "YulFunctionCall",
"src": "30676:27:13"
},
"nodeType": "YulExpressionStatement",
"src": "30676:27:13"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "30618:1:13"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "30621:6:13"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "30615:2:13"
},
"nodeType": "YulFunctionCall",
"src": "30615:13:13"
},
"nodeType": "YulIf",
"src": "30612:101:13"
}
]
},
"name": "copy_memory_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "30443:3:13",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "30448:3:13",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "30453:6:13",
"type": ""
}
],
"src": "30412:307:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "30776:269:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "30786:22:13",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "30800:4:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "30806:1:13",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "30796:3:13"
},
"nodeType": "YulFunctionCall",
"src": "30796:12:13"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "30786:6:13"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "30817:38:13",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "30847:4:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "30853:1:13",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "30843:3:13"
},
"nodeType": "YulFunctionCall",
"src": "30843:12:13"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "30821:18:13",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "30894:51:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "30908:27:13",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "30922:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "30930:4:13",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "30918:3:13"
},
"nodeType": "YulFunctionCall",
"src": "30918:17:13"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "30908:6:13"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "30874:18:13"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "30867:6:13"
},
"nodeType": "YulFunctionCall",
"src": "30867:26:13"
},
"nodeType": "YulIf",
"src": "30864:81:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "30997:42:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "31011:16:13"
},
"nodeType": "YulFunctionCall",
"src": "31011:18:13"
},
"nodeType": "YulExpressionStatement",
"src": "31011:18:13"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "30961:18:13"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "30984:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "30992:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "30981:2:13"
},
"nodeType": "YulFunctionCall",
"src": "30981:14:13"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "30958:2:13"
},
"nodeType": "YulFunctionCall",
"src": "30958:38:13"
},
"nodeType": "YulIf",
"src": "30955:84:13"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "30760:4:13",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "30769:6:13",
"type": ""
}
],
"src": "30725:320:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "31094:238:13",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "31104:58:13",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "31126:6:13"
},
{
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "31156:4:13"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "31134:21:13"
},
"nodeType": "YulFunctionCall",
"src": "31134:27:13"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "31122:3:13"
},
"nodeType": "YulFunctionCall",
"src": "31122:40:13"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "31108:10:13",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "31273:22:13",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "31275:16:13"
},
"nodeType": "YulFunctionCall",
"src": "31275:18:13"
},
"nodeType": "YulExpressionStatement",
"src": "31275:18:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "31216:10:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31228:18:13",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "31213:2:13"
},
"nodeType": "YulFunctionCall",
"src": "31213:34:13"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "31252:10:13"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "31264:6:13"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "31249:2:13"
},
"nodeType": "YulFunctionCall",
"src": "31249:22:13"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "31210:2:13"
},
"nodeType": "YulFunctionCall",
"src": "31210:62:13"
},
"nodeType": "YulIf",
"src": "31207:88:13"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31311:2:13",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "31315:10:13"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "31304:6:13"
},
"nodeType": "YulFunctionCall",
"src": "31304:22:13"
},
"nodeType": "YulExpressionStatement",
"src": "31304:22:13"
}
]
},
"name": "finalize_allocation",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "31080:6:13",
"type": ""
},
{
"name": "size",
"nodeType": "YulTypedName",
"src": "31088:4:13",
"type": ""
}
],
"src": "31051:281:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "31366:152:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31383:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31386:77:13",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "31376:6:13"
},
"nodeType": "YulFunctionCall",
"src": "31376:88:13"
},
"nodeType": "YulExpressionStatement",
"src": "31376:88:13"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31480:1:13",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31483:4:13",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "31473:6:13"
},
"nodeType": "YulFunctionCall",
"src": "31473:15:13"
},
"nodeType": "YulExpressionStatement",
"src": "31473:15:13"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31504:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31507:4:13",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "31497:6:13"
},
"nodeType": "YulFunctionCall",
"src": "31497:15:13"
},
"nodeType": "YulExpressionStatement",
"src": "31497:15:13"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "31338:180:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "31552:152:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31569:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31572:77:13",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "31562:6:13"
},
"nodeType": "YulFunctionCall",
"src": "31562:88:13"
},
"nodeType": "YulExpressionStatement",
"src": "31562:88:13"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31666:1:13",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31669:4:13",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "31659:6:13"
},
"nodeType": "YulFunctionCall",
"src": "31659:15:13"
},
"nodeType": "YulExpressionStatement",
"src": "31659:15:13"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31690:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31693:4:13",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "31683:6:13"
},
"nodeType": "YulFunctionCall",
"src": "31683:15:13"
},
"nodeType": "YulExpressionStatement",
"src": "31683:15:13"
}
]
},
"name": "panic_error_0x12",
"nodeType": "YulFunctionDefinition",
"src": "31524:180:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "31738:152:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31755:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31758:77:13",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "31748:6:13"
},
"nodeType": "YulFunctionCall",
"src": "31748:88:13"
},
"nodeType": "YulExpressionStatement",
"src": "31748:88:13"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31852:1:13",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31855:4:13",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "31845:6:13"
},
"nodeType": "YulFunctionCall",
"src": "31845:15:13"
},
"nodeType": "YulExpressionStatement",
"src": "31845:15:13"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31876:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31879:4:13",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "31869:6:13"
},
"nodeType": "YulFunctionCall",
"src": "31869:15:13"
},
"nodeType": "YulExpressionStatement",
"src": "31869:15:13"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "31710:180:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "31924:152:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31941:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "31944:77:13",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "31934:6:13"
},
"nodeType": "YulFunctionCall",
"src": "31934:88:13"
},
"nodeType": "YulExpressionStatement",
"src": "31934:88:13"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32038:1:13",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32041:4:13",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "32031:6:13"
},
"nodeType": "YulFunctionCall",
"src": "32031:15:13"
},
"nodeType": "YulExpressionStatement",
"src": "32031:15:13"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32062:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32065:4:13",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "32055:6:13"
},
"nodeType": "YulFunctionCall",
"src": "32055:15:13"
},
"nodeType": "YulExpressionStatement",
"src": "32055:15:13"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "31896:180:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "32171:28:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32188:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32191:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "32181:6:13"
},
"nodeType": "YulFunctionCall",
"src": "32181:12:13"
},
"nodeType": "YulExpressionStatement",
"src": "32181:12:13"
}
]
},
"name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490",
"nodeType": "YulFunctionDefinition",
"src": "32082:117:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "32294:28:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32311:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32314:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "32304:6:13"
},
"nodeType": "YulFunctionCall",
"src": "32304:12:13"
},
"nodeType": "YulExpressionStatement",
"src": "32304:12:13"
}
]
},
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulFunctionDefinition",
"src": "32205:117:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "32417:28:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32434:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32437:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "32427:6:13"
},
"nodeType": "YulFunctionCall",
"src": "32427:12:13"
},
"nodeType": "YulExpressionStatement",
"src": "32427:12:13"
}
]
},
"name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef",
"nodeType": "YulFunctionDefinition",
"src": "32328:117:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "32540:28:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32557:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32560:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "32550:6:13"
},
"nodeType": "YulFunctionCall",
"src": "32550:12:13"
},
"nodeType": "YulExpressionStatement",
"src": "32550:12:13"
}
]
},
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nodeType": "YulFunctionDefinition",
"src": "32451:117:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "32663:28:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32680:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32683:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "32673:6:13"
},
"nodeType": "YulFunctionCall",
"src": "32673:12:13"
},
"nodeType": "YulExpressionStatement",
"src": "32673:12:13"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "32574:117:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "32786:28:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32803:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32806:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "32796:6:13"
},
"nodeType": "YulFunctionCall",
"src": "32796:12:13"
},
"nodeType": "YulExpressionStatement",
"src": "32796:12:13"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "32697:117:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "32868:54:13",
"statements": [
{
"nodeType": "YulAssignment",
"src": "32878:38:13",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "32896:5:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32903:2:13",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "32892:3:13"
},
"nodeType": "YulFunctionCall",
"src": "32892:14:13"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "32912:2:13",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "32908:3:13"
},
"nodeType": "YulFunctionCall",
"src": "32908:7:13"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "32888:3:13"
},
"nodeType": "YulFunctionCall",
"src": "32888:28:13"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "32878:6:13"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "32851:5:13",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "32861:6:13",
"type": ""
}
],
"src": "32820:102:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "33034:67:13",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "33056:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "33064:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "33052:3:13"
},
"nodeType": "YulFunctionCall",
"src": "33052:14:13"
},
{
"hexValue": "496e76616c696420696e73757265642061646472657373",
"kind": "string",
"nodeType": "YulLiteral",
"src": "33068:25:13",
"type": "",
"value": "Invalid insured address"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "33045:6:13"
},
"nodeType": "YulFunctionCall",
"src": "33045:49:13"
},
"nodeType": "YulExpressionStatement",
"src": "33045:49:13"
}
]
},
"name": "store_literal_in_memory_31a27b2540ab06c48c548f1322928111bf775677522ce27cb1141fd9d696da78",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "33026:6:13",
"type": ""
}
],
"src": "32928:173:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "33213:65:13",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "33235:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "33243:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "33231:3:13"
},
"nodeType": "YulFunctionCall",
"src": "33231:14:13"
},
{
"hexValue": "556e617574686f72697a65642063616c6c6261636b",
"kind": "string",
"nodeType": "YulLiteral",
"src": "33247:23:13",
"type": "",
"value": "Unauthorized callback"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "33224:6:13"
},
"nodeType": "YulFunctionCall",
"src": "33224:47:13"
},
"nodeType": "YulExpressionStatement",
"src": "33224:47:13"
}
]
},
"name": "store_literal_in_memory_397aaaccf4e12d92be59946dfcacdf68dc2c5b82b4a37f6e4ef2cd79e09c3db4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "33205:6:13",
"type": ""
}
],
"src": "33107:171:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "33390:70:13",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "33412:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "33420:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "33408:3:13"
},
"nodeType": "YulFunctionCall",
"src": "33408:14:13"
},
{
"hexValue": "4576656e74206465736372697074696f6e20746f6f206c6f6e67",
"kind": "string",
"nodeType": "YulLiteral",
"src": "33424:28:13",
"type": "",
"value": "Event description too long"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "33401:6:13"
},
"nodeType": "YulFunctionCall",
"src": "33401:52:13"
},
"nodeType": "YulExpressionStatement",
"src": "33401:52:13"
}
]
},
"name": "store_literal_in_memory_50ae26a9d347302aae8564609c1d5427cb95105a08621ec1fae953f198eab5c4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "33382:6:13",
"type": ""
}
],
"src": "33284:176:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "33572:119:13",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "33594:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "33602:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "33590:3:13"
},
"nodeType": "YulFunctionCall",
"src": "33590:14:13"
},
{
"hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f",
"kind": "string",
"nodeType": "YulLiteral",
"src": "33606:34:13",
"type": "",
"value": "Address: insufficient balance fo"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "33583:6:13"
},
"nodeType": "YulFunctionCall",
"src": "33583:58:13"
},
"nodeType": "YulExpressionStatement",
"src": "33583:58:13"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "33662:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "33670:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "33658:3:13"
},
"nodeType": "YulFunctionCall",
"src": "33658:15:13"
},
{
"hexValue": "722063616c6c",
"kind": "string",
"nodeType": "YulLiteral",
"src": "33675:8:13",
"type": "",
"value": "r call"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "33651:6:13"
},
"nodeType": "YulFunctionCall",
"src": "33651:33:13"
},
"nodeType": "YulExpressionStatement",
"src": "33651:33:13"
}
]
},
"name": "store_literal_in_memory_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "33564:6:13",
"type": ""
}
],
"src": "33466:225:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "33803:68:13",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "33825:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "33833:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "33821:3:13"
},
"nodeType": "YulFunctionCall",
"src": "33821:14:13"
},
{
"hexValue": "416d6f756e742073686f756c642062652061626f76652030",
"kind": "string",
"nodeType": "YulLiteral",
"src": "33837:26:13",
"type": "",
"value": "Amount should be above 0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "33814:6:13"
},
"nodeType": "YulFunctionCall",
"src": "33814:50:13"
},
"nodeType": "YulExpressionStatement",
"src": "33814:50:13"
}
]
},
"name": "store_literal_in_memory_5e579a0cb871fe308cb1e293544f75d10c9dbe3def875f5a1f99f0aa2786aa3f",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "33795:6:13",
"type": ""
}
],
"src": "33697:174:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "33983:67:13",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "34005:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "34013:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "34001:3:13"
},
"nodeType": "YulFunctionCall",
"src": "34001:14:13"
},
{
"hexValue": "436c61696d20616c726561647920696e69746961746564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "34017:25:13",
"type": "",
"value": "Claim already initiated"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "33994:6:13"
},
"nodeType": "YulFunctionCall",
"src": "33994:49:13"
},
"nodeType": "YulExpressionStatement",
"src": "33994:49:13"
}
]
},
"name": "store_literal_in_memory_5fed739a4c4ad18f14b01264a20ed404d60f63cdf6342f522a3cc353b6a41860",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "33975:6:13",
"type": ""
}
],
"src": "33877:173:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "34162:73:13",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "34184:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "34192:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "34180:3:13"
},
"nodeType": "YulFunctionCall",
"src": "34180:14:13"
},
{
"hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
"kind": "string",
"nodeType": "YulLiteral",
"src": "34196:31:13",
"type": "",
"value": "Address: call to non-contract"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "34173:6:13"
},
"nodeType": "YulFunctionCall",
"src": "34173:55:13"
},
"nodeType": "YulExpressionStatement",
"src": "34173:55:13"
}
]
},
"name": "store_literal_in_memory_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "34154:6:13",
"type": ""
}
],
"src": "34056:179:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "34347:65:13",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "34369:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "34377:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "34365:3:13"
},
"nodeType": "YulFunctionCall",
"src": "34365:14:13"
},
{
"hexValue": "506f6c69637920616c726561647920697373756564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "34381:23:13",
"type": "",
"value": "Policy already issued"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "34358:6:13"
},
"nodeType": "YulFunctionCall",
"src": "34358:47:13"
},
"nodeType": "YulExpressionStatement",
"src": "34358:47:13"
}
]
},
"name": "store_literal_in_memory_d4b8fa0e2cd41e5501dc9c5b6b1a5aefcb71cb9c0fbdce8f12de17fb679490d1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "34339:6:13",
"type": ""
}
],
"src": "34241:171:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "34524:64:13",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "34546:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "34554:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "34542:3:13"
},
"nodeType": "YulFunctionCall",
"src": "34542:14:13"
},
{
"hexValue": "496e737572616e6365206e6f7420697373756564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "34558:22:13",
"type": "",
"value": "Insurance not issued"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "34535:6:13"
},
"nodeType": "YulFunctionCall",
"src": "34535:46:13"
},
"nodeType": "YulExpressionStatement",
"src": "34535:46:13"
}
]
},
"name": "store_literal_in_memory_de188bf9c213a5d1bbbfbc484f92c9ad3ffdc25d107da4fbdec7b8bd7197460e",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "34516:6:13",
"type": ""
}
],
"src": "34418:170:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "34700:123:13",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "34722:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "34730:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "34718:3:13"
},
"nodeType": "YulFunctionCall",
"src": "34718:14:13"
},
{
"hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "34734:34:13",
"type": "",
"value": "SafeERC20: ERC20 operation did n"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "34711:6:13"
},
"nodeType": "YulFunctionCall",
"src": "34711:58:13"
},
"nodeType": "YulExpressionStatement",
"src": "34711:58:13"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "34790:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "34798:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "34786:3:13"
},
"nodeType": "YulFunctionCall",
"src": "34786:15:13"
},
{
"hexValue": "6f742073756363656564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "34803:12:13",
"type": "",
"value": "ot succeed"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "34779:6:13"
},
"nodeType": "YulFunctionCall",
"src": "34779:37:13"
},
"nodeType": "YulExpressionStatement",
"src": "34779:37:13"
}
]
},
"name": "store_literal_in_memory_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "34692:6:13",
"type": ""
}
],
"src": "34594:229:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "34935:135:13",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "34957:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "34965:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "34953:3:13"
},
"nodeType": "YulFunctionCall",
"src": "34953:14:13"
},
{
"hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f",
"kind": "string",
"nodeType": "YulLiteral",
"src": "34969:34:13",
"type": "",
"value": "SafeERC20: approve from non-zero"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "34946:6:13"
},
"nodeType": "YulFunctionCall",
"src": "34946:58:13"
},
"nodeType": "YulExpressionStatement",
"src": "34946:58:13"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "35025:6:13"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "35033:2:13",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "35021:3:13"
},
"nodeType": "YulFunctionCall",
"src": "35021:15:13"
},
{
"hexValue": "20746f206e6f6e2d7a65726f20616c6c6f77616e6365",
"kind": "string",
"nodeType": "YulLiteral",
"src": "35038:24:13",
"type": "",
"value": " to non-zero allowance"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "35014:6:13"
},
"nodeType": "YulFunctionCall",
"src": "35014:49:13"
},
"nodeType": "YulExpressionStatement",
"src": "35014:49:13"
}
]
},
"name": "store_literal_in_memory_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "34927:6:13",
"type": ""
}
],
"src": "34829:241:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "35119:79:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "35176:16:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "35185:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "35188:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "35178:6:13"
},
"nodeType": "YulFunctionCall",
"src": "35178:12:13"
},
"nodeType": "YulExpressionStatement",
"src": "35178:12:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "35142:5:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "35167:5:13"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "35149:17:13"
},
"nodeType": "YulFunctionCall",
"src": "35149:24:13"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "35139:2:13"
},
"nodeType": "YulFunctionCall",
"src": "35139:35:13"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "35132:6:13"
},
"nodeType": "YulFunctionCall",
"src": "35132:43:13"
},
"nodeType": "YulIf",
"src": "35129:63:13"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "35112:5:13",
"type": ""
}
],
"src": "35076:122:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "35244:76:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "35298:16:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "35307:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "35310:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "35300:6:13"
},
"nodeType": "YulFunctionCall",
"src": "35300:12:13"
},
"nodeType": "YulExpressionStatement",
"src": "35300:12:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "35267:5:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "35289:5:13"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "35274:14:13"
},
"nodeType": "YulFunctionCall",
"src": "35274:21:13"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "35264:2:13"
},
"nodeType": "YulFunctionCall",
"src": "35264:32:13"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "35257:6:13"
},
"nodeType": "YulFunctionCall",
"src": "35257:40:13"
},
"nodeType": "YulIf",
"src": "35254:60:13"
}
]
},
"name": "validator_revert_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "35237:5:13",
"type": ""
}
],
"src": "35204:116:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "35369:79:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "35426:16:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "35435:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "35438:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "35428:6:13"
},
"nodeType": "YulFunctionCall",
"src": "35428:12:13"
},
"nodeType": "YulExpressionStatement",
"src": "35428:12:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "35392:5:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "35417:5:13"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "35399:17:13"
},
"nodeType": "YulFunctionCall",
"src": "35399:24:13"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "35389:2:13"
},
"nodeType": "YulFunctionCall",
"src": "35389:35:13"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "35382:6:13"
},
"nodeType": "YulFunctionCall",
"src": "35382:43:13"
},
"nodeType": "YulIf",
"src": "35379:63:13"
}
]
},
"name": "validator_revert_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "35362:5:13",
"type": ""
}
],
"src": "35326:122:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "35496:78:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "35552:16:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "35561:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "35564:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "35554:6:13"
},
"nodeType": "YulFunctionCall",
"src": "35554:12:13"
},
"nodeType": "YulExpressionStatement",
"src": "35554:12:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "35519:5:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "35543:5:13"
}
],
"functionName": {
"name": "cleanup_t_int256",
"nodeType": "YulIdentifier",
"src": "35526:16:13"
},
"nodeType": "YulFunctionCall",
"src": "35526:23:13"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "35516:2:13"
},
"nodeType": "YulFunctionCall",
"src": "35516:34:13"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "35509:6:13"
},
"nodeType": "YulFunctionCall",
"src": "35509:42:13"
},
"nodeType": "YulIf",
"src": "35506:62:13"
}
]
},
"name": "validator_revert_t_int256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "35489:5:13",
"type": ""
}
],
"src": "35454:120:13"
},
{
"body": {
"nodeType": "YulBlock",
"src": "35623:79:13",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "35680:16:13",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "35689:1:13",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "35692:1:13",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "35682:6:13"
},
"nodeType": "YulFunctionCall",
"src": "35682:12:13"
},
"nodeType": "YulExpressionStatement",
"src": "35682:12:13"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "35646:5:13"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "35671:5:13"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "35653:17:13"
},
"nodeType": "YulFunctionCall",
"src": "35653:24:13"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "35643:2:13"
},
"nodeType": "YulFunctionCall",
"src": "35643:35:13"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "35636:6:13"
},
"nodeType": "YulFunctionCall",
"src": "35636:43:13"
},
"nodeType": "YulIf",
"src": "35633:63:13"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "35616:5:13",
"type": ""
}
],
"src": "35580:122:13"
}
]
},
"contents": "{\n\n function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_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_calldata_to_memory(src, dst, length)\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_t_int256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int256(value)\n }\n\n // string\n function abi_decode_t_string_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_bytes32t_uint256t_bytes_memory_ptrt_int256(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_bytes_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_int256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_string_calldata_ptrt_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0, value1 := abi_decode_t_string_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_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_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_t_contract$_FinderInterface_$1216_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_FinderInterface_$1216_to_t_address(value))\n }\n\n function abi_encode_t_contract$_IERC20_$190_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IERC20_$190_to_t_address(value))\n }\n\n function abi_encode_t_contract$_OptimisticOracleV2Interface_$1582_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_OptimisticOracleV2Interface_$1582_to_t_address(value))\n }\n\n function abi_encode_t_int256_to_t_int256_fromStack(value, pos) {\n mstore(pos, cleanup_t_int256(value))\n }\n\n function abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value, pos) {\n mstore(pos, convert_t_rational_0_by_1_to_t_uint256(value))\n }\n\n // string -> string\n function abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack(start, length, pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n\n copy_calldata_to_memory(start, pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n // string -> string\n function abi_encode_t_string_storage_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> ret {\n let slotValue := sload(value)\n let length := extract_byte_array_length(slotValue)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n switch and(slotValue, 1)\n case 0 {\n // short byte array\n mstore(pos, and(slotValue, not(0xff)))\n ret := add(pos, length)\n }\n case 1 {\n // long byte array\n let dataPos := array_dataslot_t_string_storage(value)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) } {\n mstore(add(pos, i), sload(dataPos))\n dataPos := add(dataPos, 1)\n }\n ret := add(pos, length)\n }\n }\n\n function abi_encode_t_stringliteral_31a27b2540ab06c48c548f1322928111bf775677522ce27cb1141fd9d696da78_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 23)\n store_literal_in_memory_31a27b2540ab06c48c548f1322928111bf775677522ce27cb1141fd9d696da78(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_397aaaccf4e12d92be59946dfcacdf68dc2c5b82b4a37f6e4ef2cd79e09c3db4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 21)\n store_literal_in_memory_397aaaccf4e12d92be59946dfcacdf68dc2c5b82b4a37f6e4ef2cd79e09c3db4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_50ae26a9d347302aae8564609c1d5427cb95105a08621ec1fae953f198eab5c4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 26)\n store_literal_in_memory_50ae26a9d347302aae8564609c1d5427cb95105a08621ec1fae953f198eab5c4(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_5e579a0cb871fe308cb1e293544f75d10c9dbe3def875f5a1f99f0aa2786aa3f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_5e579a0cb871fe308cb1e293544f75d10c9dbe3def875f5a1f99f0aa2786aa3f(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_5fed739a4c4ad18f14b01264a20ed404d60f63cdf6342f522a3cc353b6a41860_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 23)\n store_literal_in_memory_5fed739a4c4ad18f14b01264a20ed404d60f63cdf6342f522a3cc353b6a41860(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 29)\n store_literal_in_memory_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_d4b8fa0e2cd41e5501dc9c5b6b1a5aefcb71cb9c0fbdce8f12de17fb679490d1_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 21)\n store_literal_in_memory_d4b8fa0e2cd41e5501dc9c5b6b1a5aefcb71cb9c0fbdce8f12de17fb679490d1(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_de188bf9c213a5d1bbbfbc484f92c9ad3ffdc25d107da4fbdec7b8bd7197460e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 20)\n store_literal_in_memory_de188bf9c213a5d1bbbfbc484f92c9ad3ffdc25d107da4fbdec7b8bd7197460e(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 42)\n store_literal_in_memory_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 54)\n store_literal_in_memory_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_storage_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value2, value1, value0) -> end {\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_string_storage_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value2, pos)\n\n end := pos\n }\n\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_bytes32_t_uint256_t_bytes_memory_ptr_t_int256__to_t_address_t_address_t_bytes32_t_uint256_t_bytes_memory_ptr_t_int256__fromStack_reversed(headStart , value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 192)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n mstore(add(headStart, 128), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value4, tail)\n\n abi_encode_t_int256_to_t_int256_fromStack(value5, add(headStart, 160))\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_bool_t_string_memory_ptr_t_address_t_uint256__to_t_bool_t_string_memory_ptr_t_address_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_bytes32_t_uint256_t_bytes_memory_ptr_t_bool_t_bool_t_bool__to_t_bytes32_t_uint256_t_bytes_memory_ptr_t_bool_t_bool_t_bool__fromStack_reversed(headStart , value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 192)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value2, tail)\n\n abi_encode_t_bool_to_t_bool_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_bool_to_t_bool_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_bool_to_t_bool_fromStack(value5, add(headStart, 160))\n\n }\n\n function abi_encode_tuple_t_bytes32_t_uint256_t_bytes_memory_ptr_t_contract$_IERC20_$190_t_rational_0_by_1__to_t_bytes32_t_uint256_t_bytes_memory_ptr_t_address_t_uint256__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 160)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value2, tail)\n\n abi_encode_t_contract$_IERC20_$190_to_t_address_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value4, add(headStart, 128))\n\n }\n\n function abi_encode_tuple_t_bytes32_t_uint256_t_bytes_memory_ptr_t_uint256__to_t_bytes32_t_uint256_t_bytes_memory_ptr_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value2, tail)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n }\n\n function abi_encode_tuple_t_contract$_FinderInterface_$1216__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_FinderInterface_$1216_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_contract$_IERC20_$190__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_IERC20_$190_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_contract$_OptimisticOracleV2Interface_$1582__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_contract$_OptimisticOracleV2Interface_$1582_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_string_calldata_ptr_t_uint256__to_t_string_memory_ptr_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 64)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_calldata_ptr_to_t_string_memory_ptr_fromStack(value0, value1, tail)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_31a27b2540ab06c48c548f1322928111bf775677522ce27cb1141fd9d696da78__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_31a27b2540ab06c48c548f1322928111bf775677522ce27cb1141fd9d696da78_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_397aaaccf4e12d92be59946dfcacdf68dc2c5b82b4a37f6e4ef2cd79e09c3db4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_397aaaccf4e12d92be59946dfcacdf68dc2c5b82b4a37f6e4ef2cd79e09c3db4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_50ae26a9d347302aae8564609c1d5427cb95105a08621ec1fae953f198eab5c4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_50ae26a9d347302aae8564609c1d5427cb95105a08621ec1fae953f198eab5c4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_5e579a0cb871fe308cb1e293544f75d10c9dbe3def875f5a1f99f0aa2786aa3f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_5e579a0cb871fe308cb1e293544f75d10c9dbe3def875f5a1f99f0aa2786aa3f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_5fed739a4c4ad18f14b01264a20ed404d60f63cdf6342f522a3cc353b6a41860__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_5fed739a4c4ad18f14b01264a20ed404d60f63cdf6342f522a3cc353b6a41860_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_d4b8fa0e2cd41e5501dc9c5b6b1a5aefcb71cb9c0fbdce8f12de17fb679490d1__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d4b8fa0e2cd41e5501dc9c5b6b1a5aefcb71cb9c0fbdce8f12de17fb679490d1_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_de188bf9c213a5d1bbbfbc484f92c9ad3ffdc25d107da4fbdec7b8bd7197460e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_de188bf9c213a5d1bbbfbc484f92c9ad3ffdc25d107da4fbdec7b8bd7197460e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value1, tail)\n\n }\n\n function abi_encode_tuple_t_uint256_t_string_memory_ptr_t_address_t_uint256__to_t_uint256_t_string_memory_ptr_t_address_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\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_bytes_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 array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x != 0 and y > (maxValue / x)\n if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n\n product := mul(x, y)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_int256(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function convert_t_contract$_FinderInterface_$1216_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function convert_t_contract$_IERC20_$190_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function convert_t_contract$_OptimisticOracleV2Interface_$1582_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function convert_t_rational_0_by_1_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(value)\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(value)\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\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_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\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_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\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 store_literal_in_memory_31a27b2540ab06c48c548f1322928111bf775677522ce27cb1141fd9d696da78(memPtr) {\n\n mstore(add(memPtr, 0), \"Invalid insured address\")\n\n }\n\n function store_literal_in_memory_397aaaccf4e12d92be59946dfcacdf68dc2c5b82b4a37f6e4ef2cd79e09c3db4(memPtr) {\n\n mstore(add(memPtr, 0), \"Unauthorized callback\")\n\n }\n\n function store_literal_in_memory_50ae26a9d347302aae8564609c1d5427cb95105a08621ec1fae953f198eab5c4(memPtr) {\n\n mstore(add(memPtr, 0), \"Event description too long\")\n\n }\n\n function store_literal_in_memory_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c(memPtr) {\n\n mstore(add(memPtr, 0), \"Address: insufficient balance fo\")\n\n mstore(add(memPtr, 32), \"r call\")\n\n }\n\n function store_literal_in_memory_5e579a0cb871fe308cb1e293544f75d10c9dbe3def875f5a1f99f0aa2786aa3f(memPtr) {\n\n mstore(add(memPtr, 0), \"Amount should be above 0\")\n\n }\n\n function store_literal_in_memory_5fed739a4c4ad18f14b01264a20ed404d60f63cdf6342f522a3cc353b6a41860(memPtr) {\n\n mstore(add(memPtr, 0), \"Claim already initiated\")\n\n }\n\n function store_literal_in_memory_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad(memPtr) {\n\n mstore(add(memPtr, 0), \"Address: call to non-contract\")\n\n }\n\n function store_literal_in_memory_d4b8fa0e2cd41e5501dc9c5b6b1a5aefcb71cb9c0fbdce8f12de17fb679490d1(memPtr) {\n\n mstore(add(memPtr, 0), \"Policy already issued\")\n\n }\n\n function store_literal_in_memory_de188bf9c213a5d1bbbfbc484f92c9ad3ffdc25d107da4fbdec7b8bd7197460e(memPtr) {\n\n mstore(add(memPtr, 0), \"Insurance not issued\")\n\n }\n\n function store_literal_in_memory_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd(memPtr) {\n\n mstore(add(memPtr, 0), \"SafeERC20: ERC20 operation did n\")\n\n mstore(add(memPtr, 32), \"ot succeed\")\n\n }\n\n function store_literal_in_memory_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25(memPtr) {\n\n mstore(add(memPtr, 0), \"SafeERC20: approve from non-zero\")\n\n mstore(add(memPtr, 32), \" to non-zero allowance\")\n\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_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_int256(value) {\n if iszero(eq(value, cleanup_t_int256(value))) { revert(0, 0) }\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 13,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {
"1633": [
{
"length": 32,
"start": 4378
}
],
"1636": [
{
"length": 32,
"start": 637
},
{
"length": 32,
"start": 2523
},
{
"length": 32,
"start": 3003
},
{
"length": 32,
"start": 3296
},
{
"length": 32,
"start": 3507
},
{
"length": 32,
"start": 3687
},
{
"length": 32,
"start": 3950
},
{
"length": 32,
"start": 4054
}
],
"1639": [
{
"length": 32,
"start": 1238
},
{
"length": 32,
"start": 2084
},
{
"length": 32,
"start": 3098
},
{
"length": 32,
"start": 3876
},
{
"length": 32,
"start": 3984
},
{
"length": 32,
"start": 4438
}
]
},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100b45760003560e01c80638921a614116100715780638921a614146101925780638b35e14e146101b057806397523661146101cc578063b9a3c84c146101ea578063c0b6b37e14610208578063e5a6b10f14610238576100b4565b806304cc1fd5146100b9578063067c4fd6146100d557806310a3a54b146101055780634fe4ecbf14610123578063563fcbe31461014157806357215d0614610174575b600080fd5b6100d360048036038101906100ce919061194f565b610256565b005b6100ef60048036038101906100ea91906119d2565b6105b3565b6040516100fc9190611f80565b60405180910390f35b61010d6108dc565b60405161011a91906122ae565b60405180910390f35b61012b6108e7565b60405161013891906122ae565b60405180910390f35b61015b60048036038101906101569190611922565b6108ee565b60405161016b9493929190611f34565b60405180910390f35b61017c6109d3565b60405161018991906122ae565b60405180910390f35b61019a6109d9565b6040516101a791906120df565b60405180910390f35b6101ca60048036038101906101c59190611922565b6109fd565b005b6101d46110f4565b6040516101e19190611f80565b60405180910390f35b6101f2611118565b6040516101ff91906120a9565b60405180910390f35b610222600480360381019061021d9190611922565b61113c565b60405161022f9190611f80565b60405180910390f35b610240611154565b60405161024d91906120c4565b60405180910390f35b60006102628484611178565b90503373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146102f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e99061216e565b60405180910390fd5b60006001600083815260200190815260200160002054905060008060008381526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff1615151515815260200160018201805461035490612593565b80601f016020809104026020016040519081016040528092919081815260200182805461038090612593565b80156103cd5780601f106103a2576101008083540402835291602001916103cd565b820191906000526020600020905b8154815290600101906020018083116103b057829003601f168201915b505050505081526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152505090506001600084815260200190815260200160002060009055670de0b6b3a764000084141561054d57600080838152602001908152602001600020600080820160006101000a81549060ff021916905560018201600061049691906116ce565b6002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160009055505061051a816040015182606001517f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166111ab9092919063ffffffff16565b81837f7a556a7dd17e7c65d9162b71bf1434aab934a041cdde071ee2653901c7a5c38260405160405180910390a36105aa565b600080600084815260200190815260200160002060000160006101000a81548160ff02191690831515021790555081837faebcfd3c9d59eec021c4ecaf988ae8afc864298b4db60a4a545cef73553c309f60405160405180910390a35b50505050505050565b600061012c8585905011156105fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f49061218e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561066d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106649061214e565b60405180910390fd5b600082116106b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a7906121ce565b60405180910390fd5b6107004386868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508585611231565b9050600073ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079d9061222e565b60405180910390fd5b6000806000838152602001908152602001600020905085858260010191906107cf92919061170e565b50838160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508281600301819055506108693330857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661126a909392919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16837fc2b482042db21b04bedfcbe9aca28571d55735d4a510157034ac5fbaa0bac8568989886040516108cb939291906120fa565b60405180910390a450949350505050565b66038d7ea4c6800081565b6201518081565b60006020528060005260406000206000915090508060000160009054906101000a900460ff169080600101805461092490612593565b80601f016020809104026020016040519081016040528092919081815260200182805461095090612593565b801561099d5780601f106109725761010080835404028352916020019161099d565b820191906000526020600020905b81548152906001019060200180831161098057829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905084565b61012c81565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9e9061224e565b60405180910390fd5b8060000160009054906101000a900460ff1615610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af0906121ee565b60405180910390fd5b60018160000160006101000a81548160ff0219169083151502179055506000429050600060405180608001604052806045815260200161298a60459139836001016040518060400160405280600281526020017f3f22000000000000000000000000000000000000000000000000000000000000815250604051602001610b8293929190611e12565b60405160208183030381529060405290506000610b9f8383611178565b90508460016000838152602001908152602001600020819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311df92f17f5945535f4f525f4e4f5f5155455259000000000000000000000000000000000085857f000000000000000000000000000000000000000000000000000000000000000060006040518663ffffffff1660e01b8152600401610c5b959493929190612003565b602060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cad9190611a46565b506000670de0b6b3a764000066038d7ea4c680008660030154610cd0919061242f565b610cda91906123fe565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5a755a7f5945535f4f525f4e4f5f515545525900000000000000000000000000000000008787866040518563ffffffff1660e01b8152600401610d5d949392919061205d565b602060405180830381600087803b158015610d7757600080fd5b505af1158015610d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610daf9190611a46565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663473c45fe7f5945535f4f525f4e4f5f515545525900000000000000000000000000000000008787620151806040518563ffffffff1660e01b8152600401610e33949392919061205d565b600060405180830381600087803b158015610e4d57600080fd5b505af1158015610e61573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f327b0757f5945535f4f525f4e4f5f51554552590000000000000000000000000000000000878760008060016040518763ffffffff1660e01b8152600401610eea96959493929190611f9b565b600060405180830381600087803b158015610f0457600080fd5b505af1158015610f18573d6000803e3d6000fd5b50505050610f693330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661126a909392919063ffffffff16565b610fd47f0000000000000000000000000000000000000000000000000000000000000000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166112f39092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637c82288f33307f5945535f4f525f4e4f5f515545525900000000000000000000000000000000008989670de0b6b3a76400006040518763ffffffff1660e01b815260040161105f96959493929190611e6c565b602060405180830381600087803b15801561107957600080fd5b505af115801561108d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b19190611a46565b5086837f3e9086131cd56a11cb2fc7a195ff02167e166171a0357a11f6ee490775b51119876040516110e391906122ae565b60405180910390a350505050505050565b7f5945535f4f525f4e4f5f5155455259000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60016020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000828260405160200161118d9291906122c9565b60405160208183030381529060405280519060200120905092915050565b61122c8363a9059cbb60e01b84846040516024016111ca929190611f0b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611451565b505050565b60008484848460405160200161124a94939291906122f9565b604051602081830303815290604052805190602001209050949350505050565b6112ed846323b872dd60e01b85858560405160240161128b93929190611ed4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611451565b50505050565b600081148061138c575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b815260040161133a929190611e43565b60206040518083038186803b15801561135257600080fd5b505afa158015611366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138a9190611a46565b145b6113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c29061228e565b60405180910390fd5b61144c8363095ea7b360e01b84846040516024016113ea929190611f0b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611451565b505050565b60006114b3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166115189092919063ffffffff16565b905060008151111561151357808060200190518101906114d391906118f5565b611512576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115099061226e565b60405180910390fd5b5b505050565b60606115278484600085611530565b90509392505050565b606082471015611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c906121ae565b60405180910390fd5b61157e85611644565b6115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b49061220e565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516115e69190611dfb565b60006040518083038185875af1925050503d8060008114611623576040519150601f19603f3d011682016040523d82523d6000602084013e611628565b606091505b5091509150611638828286611667565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60608315611677578290506116c7565b60008351111561168a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116be919061212c565b60405180910390fd5b9392505050565b5080546116da90612593565b6000825580601f106116ec575061170b565b601f01602090049060005260206000209081019061170a9190611794565b5b50565b82805461171a90612593565b90600052602060002090601f01602090048101928261173c5760008555611783565b82601f1061175557803560ff1916838001178555611783565b82800160010185558215611783579182015b82811115611782578235825591602001919060010190611767565b5b5090506117909190611794565b5090565b5b808211156117ad576000816000905550600101611795565b5090565b60006117c46117bf8461236a565b612345565b9050828152602081018484840111156117e0576117df6126c1565b5b6117eb848285612551565b509392505050565b60008135905061180281612916565b92915050565b6000815190506118178161292d565b92915050565b60008135905061182c81612944565b92915050565b600082601f830112611847576118466126b7565b5b81356118578482602086016117b1565b91505092915050565b60008135905061186f8161295b565b92915050565b60008083601f84011261188b5761188a6126b7565b5b8235905067ffffffffffffffff8111156118a8576118a76126b2565b5b6020830191508360018202830111156118c4576118c36126bc565b5b9250929050565b6000813590506118da81612972565b92915050565b6000815190506118ef81612972565b92915050565b60006020828403121561190b5761190a6126cb565b5b600061191984828501611808565b91505092915050565b600060208284031215611938576119376126cb565b5b60006119468482850161181d565b91505092915050565b60008060008060808587031215611969576119686126cb565b5b60006119778782880161181d565b9450506020611988878288016118cb565b935050604085013567ffffffffffffffff8111156119a9576119a86126c6565b5b6119b587828801611832565b92505060606119c687828801611860565b91505092959194509250565b600080600080606085870312156119ec576119eb6126cb565b5b600085013567ffffffffffffffff811115611a0a57611a096126c6565b5b611a1687828801611875565b94509450506020611a29878288016117f3565b9250506040611a3a878288016118cb565b91505092959194509250565b600060208284031215611a5c57611a5b6126cb565b5b6000611a6a848285016118e0565b91505092915050565b611a7c81612489565b82525050565b611a8b8161249b565b82525050565b611a9a816124a7565b82525050565b6000611aab826123b0565b611ab581856123c6565b9350611ac5818560208601612560565b611ace816126d0565b840191505092915050565b6000611ae4826123b0565b611aee81856123d7565b9350611afe818560208601612560565b80840191505092915050565b611b13816124e5565b82525050565b611b22816124f7565b82525050565b611b3181612509565b82525050565b611b40816124b1565b82525050565b611b4f8161251b565b82525050565b6000611b6183856123e2565b9350611b6e838584612551565b611b77836126d0565b840190509392505050565b6000611b8d826123bb565b611b9781856123e2565b9350611ba7818560208601612560565b611bb0816126d0565b840191505092915050565b6000611bc6826123bb565b611bd081856123f3565b9350611be0818560208601612560565b80840191505092915050565b60008154611bf981612593565b611c0381866123f3565b94506001821660008114611c1e5760018114611c2f57611c62565b60ff19831686528186019350611c62565b611c388561239b565b60005b83811015611c5a57815481890152600182019150602081019050611c3b565b838801955050505b50505092915050565b6000611c786017836123e2565b9150611c83826126e1565b602082019050919050565b6000611c9b6015836123e2565b9150611ca68261270a565b602082019050919050565b6000611cbe601a836123e2565b9150611cc982612733565b602082019050919050565b6000611ce16026836123e2565b9150611cec8261275c565b604082019050919050565b6000611d046018836123e2565b9150611d0f826127ab565b602082019050919050565b6000611d276017836123e2565b9150611d32826127d4565b602082019050919050565b6000611d4a601d836123e2565b9150611d55826127fd565b602082019050919050565b6000611d6d6015836123e2565b9150611d7882612826565b602082019050919050565b6000611d906014836123e2565b9150611d9b8261284f565b602082019050919050565b6000611db3602a836123e2565b9150611dbe82612878565b604082019050919050565b6000611dd66036836123e2565b9150611de1826128c7565b604082019050919050565b611df5816124db565b82525050565b6000611e078284611ad9565b915081905092915050565b6000611e1e8286611bbb565b9150611e2a8285611bec565b9150611e368284611bbb565b9150819050949350505050565b6000604082019050611e586000830185611a73565b611e656020830184611a73565b9392505050565b600060c082019050611e816000830189611a73565b611e8e6020830188611a73565b611e9b6040830187611a91565b611ea86060830186611dec565b8181036080830152611eba8185611aa0565b9050611ec960a0830184611b37565b979650505050505050565b6000606082019050611ee96000830186611a73565b611ef66020830185611a73565b611f036040830184611dec565b949350505050565b6000604082019050611f206000830185611a73565b611f2d6020830184611dec565b9392505050565b6000608082019050611f496000830187611a82565b8181036020830152611f5b8186611b82565b9050611f6a6040830185611a73565b611f776060830184611dec565b95945050505050565b6000602082019050611f956000830184611a91565b92915050565b600060c082019050611fb06000830189611a91565b611fbd6020830188611dec565b8181036040830152611fcf8187611aa0565b9050611fde6060830186611a82565b611feb6080830185611a82565b611ff860a0830184611a82565b979650505050505050565b600060a0820190506120186000830188611a91565b6120256020830187611dec565b81810360408301526120378186611aa0565b90506120466060830185611b19565b6120536080830184611b46565b9695505050505050565b60006080820190506120726000830187611a91565b61207f6020830186611dec565b81810360408301526120918185611aa0565b90506120a06060830184611dec565b95945050505050565b60006020820190506120be6000830184611b0a565b92915050565b60006020820190506120d96000830184611b19565b92915050565b60006020820190506120f46000830184611b28565b92915050565b60006040820190508181036000830152612115818587611b55565b90506121246020830184611dec565b949350505050565b600060208201905081810360008301526121468184611b82565b905092915050565b6000602082019050818103600083015261216781611c6b565b9050919050565b6000602082019050818103600083015261218781611c8e565b9050919050565b600060208201905081810360008301526121a781611cb1565b9050919050565b600060208201905081810360008301526121c781611cd4565b9050919050565b600060208201905081810360008301526121e781611cf7565b9050919050565b6000602082019050818103600083015261220781611d1a565b9050919050565b6000602082019050818103600083015261222781611d3d565b9050919050565b6000602082019050818103600083015261224781611d60565b9050919050565b6000602082019050818103600083015261226781611d83565b9050919050565b6000602082019050818103600083015261228781611da6565b9050919050565b600060208201905081810360008301526122a781611dc9565b9050919050565b60006020820190506122c36000830184611dec565b92915050565b60006040820190506122de6000830185611dec565b81810360208301526122f08184611aa0565b90509392505050565b600060808201905061230e6000830187611dec565b81810360208301526123208186611b82565b905061232f6040830185611a73565b61233c6060830184611dec565b95945050505050565b600061234f612360565b905061235b82826125c5565b919050565b6000604051905090565b600067ffffffffffffffff82111561238557612384612683565b5b61238e826126d0565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000612409826124db565b9150612414836124db565b92508261242457612423612625565b5b828204905092915050565b600061243a826124db565b9150612445836124db565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561247e5761247d6125f6565b5b828202905092915050565b6000612494826124bb565b9050919050565b60008115159050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006124f08261252d565b9050919050565b60006125028261252d565b9050919050565b60006125148261252d565b9050919050565b6000612526826124db565b9050919050565b60006125388261253f565b9050919050565b600061254a826124bb565b9050919050565b82818337600083830152505050565b60005b8381101561257e578082015181840152602081019050612563565b8381111561258d576000848401525b50505050565b600060028204905060018216806125ab57607f821691505b602082108114156125bf576125be612654565b5b50919050565b6125ce826126d0565b810181811067ffffffffffffffff821117156125ed576125ec612683565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f496e76616c696420696e73757265642061646472657373000000000000000000600082015250565b7f556e617574686f72697a65642063616c6c6261636b0000000000000000000000600082015250565b7f4576656e74206465736372697074696f6e20746f6f206c6f6e67000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e742073686f756c642062652061626f766520300000000000000000600082015250565b7f436c61696d20616c726561647920696e69746961746564000000000000000000600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f506f6c69637920616c7265616479206973737565640000000000000000000000600082015250565b7f496e737572616e6365206e6f7420697373756564000000000000000000000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b61291f81612489565b811461292a57600080fd5b50565b6129368161249b565b811461294157600080fd5b50565b61294d816124a7565b811461295857600080fd5b50565b612964816124b1565b811461296f57600080fd5b50565b61297b816124db565b811461298657600080fd5b5056fe713a224861642074686520666f6c6c6f77696e6720696e7375726564206576656e74206f63637572726564206173206f6620726571756573742074696d657374616d703a20a2646970667358221220bf30773aea34fc61ec5b6f3e63e9a72614bef8072e00effbfd9282f00ecf415564736f6c63430008070033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8921A614 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8921A614 EQ PUSH2 0x192 JUMPI DUP1 PUSH4 0x8B35E14E EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x97523661 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0xB9A3C84C EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0xC0B6B37E EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0xE5A6B10F EQ PUSH2 0x238 JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x4CC1FD5 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x67C4FD6 EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0x10A3A54B EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x4FE4ECBF EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x563FCBE3 EQ PUSH2 0x141 JUMPI DUP1 PUSH4 0x57215D06 EQ PUSH2 0x174 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xCE SWAP2 SWAP1 PUSH2 0x194F JUMP JUMPDEST PUSH2 0x256 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xEF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xEA SWAP2 SWAP1 PUSH2 0x19D2 JUMP JUMPDEST PUSH2 0x5B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFC SWAP2 SWAP1 PUSH2 0x1F80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x8DC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11A SWAP2 SWAP1 PUSH2 0x22AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x138 SWAP2 SWAP1 PUSH2 0x22AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x156 SWAP2 SWAP1 PUSH2 0x1922 JUMP JUMPDEST PUSH2 0x8EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16B SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1F34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17C PUSH2 0x9D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x189 SWAP2 SWAP1 PUSH2 0x22AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x20DF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1CA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1C5 SWAP2 SWAP1 PUSH2 0x1922 JUMP JUMPDEST PUSH2 0x9FD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D4 PUSH2 0x10F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E1 SWAP2 SWAP1 PUSH2 0x1F80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH2 0x1118 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FF SWAP2 SWAP1 PUSH2 0x20A9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x222 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x21D SWAP2 SWAP1 PUSH2 0x1922 JUMP JUMPDEST PUSH2 0x113C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22F SWAP2 SWAP1 PUSH2 0x1F80 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x240 PUSH2 0x1154 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24D SWAP2 SWAP1 PUSH2 0x20C4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x262 DUP5 DUP5 PUSH2 0x1178 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2E9 SWAP1 PUSH2 0x216E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH2 0x354 SWAP1 PUSH2 0x2593 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 0x380 SWAP1 PUSH2 0x2593 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3CD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3A2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3CD 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 0x3B0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP PUSH1 0x1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH8 0xDE0B6B3A7640000 DUP5 EQ ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH1 0xFF MUL NOT AND SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 PUSH2 0x496 SWAP2 SWAP1 PUSH2 0x16CE JUMP JUMPDEST PUSH1 0x2 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE POP POP PUSH2 0x51A DUP2 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x11AB SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP2 DUP4 PUSH32 0x7A556A7DD17E7C65D9162B71BF1434AAB934A041CDDE071EE2653901C7A5C382 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x5AA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 DUP4 PUSH32 0xAEBCFD3C9D59EEC021C4ECAF988AE8AFC864298B4DB60A4A545CEF73553C309F PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12C DUP6 DUP6 SWAP1 POP GT ISZERO PUSH2 0x5FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5F4 SWAP1 PUSH2 0x218E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x66D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x664 SWAP1 PUSH2 0x214E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x6B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6A7 SWAP1 PUSH2 0x21CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x700 NUMBER DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP DUP6 DUP6 PUSH2 0x1231 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x79D SWAP1 PUSH2 0x222E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP6 DUP6 DUP3 PUSH1 0x1 ADD SWAP2 SWAP1 PUSH2 0x7CF SWAP3 SWAP2 SWAP1 PUSH2 0x170E JUMP JUMPDEST POP DUP4 DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP3 DUP2 PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x869 CALLER ADDRESS DUP6 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x126A SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0xC2B482042DB21B04BEDFCBE9ACA28571D55735D4A510157034AC5FBAA0BAC856 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD PUSH2 0x8CB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x20FA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH7 0x38D7EA4C68000 DUP2 JUMP JUMPDEST PUSH3 0x15180 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH2 0x924 SWAP1 PUSH2 0x2593 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 0x950 SWAP1 PUSH2 0x2593 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x99D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x972 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x99D 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 0x980 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 DUP1 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x3 ADD SLOAD SWAP1 POP DUP5 JUMP JUMPDEST PUSH2 0x12C DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAA7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA9E SWAP1 PUSH2 0x224E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xAF9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAF0 SWAP1 PUSH2 0x21EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 TIMESTAMP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x298A PUSH1 0x45 SWAP2 CODECOPY DUP4 PUSH1 0x1 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3F22000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB82 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E12 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH1 0x0 PUSH2 0xB9F DUP4 DUP4 PUSH2 0x1178 JUMP JUMPDEST SWAP1 POP DUP5 PUSH1 0x1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x11DF92F1 PUSH32 0x5945535F4F525F4E4F5F51554552590000000000000000000000000000000000 DUP6 DUP6 PUSH32 0x0 PUSH1 0x0 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC5B SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2003 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC89 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCAD SWAP2 SWAP1 PUSH2 0x1A46 JUMP JUMPDEST POP PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH7 0x38D7EA4C68000 DUP7 PUSH1 0x3 ADD SLOAD PUSH2 0xCD0 SWAP2 SWAP1 PUSH2 0x242F JUMP JUMPDEST PUSH2 0xCDA SWAP2 SWAP1 PUSH2 0x23FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAD5A755A PUSH32 0x5945535F4F525F4E4F5F51554552590000000000000000000000000000000000 DUP8 DUP8 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD5D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x205D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDAF SWAP2 SWAP1 PUSH2 0x1A46 JUMP JUMPDEST SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x473C45FE PUSH32 0x5945535F4F525F4E4F5F51554552590000000000000000000000000000000000 DUP8 DUP8 PUSH3 0x15180 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE33 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x205D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE61 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF327B075 PUSH32 0x5945535F4F525F4E4F5F51554552590000000000000000000000000000000000 DUP8 DUP8 PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xEEA SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1F9B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF18 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xF69 CALLER ADDRESS DUP4 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x126A SWAP1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0xFD4 PUSH32 0x0 DUP3 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x12F3 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7C82288F CALLER ADDRESS PUSH32 0x5945535F4F525F4E4F5F51554552590000000000000000000000000000000000 DUP10 DUP10 PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x105F SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1E6C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1079 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x108D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10B1 SWAP2 SWAP1 PUSH2 0x1A46 JUMP JUMPDEST POP DUP7 DUP4 PUSH32 0x3E9086131CD56A11CB2FC7A195FF02167E166171A0357A11F6EE490775B51119 DUP8 PUSH1 0x40 MLOAD PUSH2 0x10E3 SWAP2 SWAP1 PUSH2 0x22AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x5945535F4F525F4E4F5F51554552590000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x118D SWAP3 SWAP2 SWAP1 PUSH2 0x22C9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x122C DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x11CA SWAP3 SWAP2 SWAP1 PUSH2 0x1F0B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x1451 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x124A SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x22F9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x12ED DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x128B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1ED4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x1451 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EQ DUP1 PUSH2 0x138C JUMPI POP PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDD62ED3E ADDRESS DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x133A SWAP3 SWAP2 SWAP1 PUSH2 0x1E43 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1352 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1366 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x138A SWAP2 SWAP1 PUSH2 0x1A46 JUMP JUMPDEST EQ JUMPDEST PUSH2 0x13CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13C2 SWAP1 PUSH2 0x228E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x144C DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x13EA SWAP3 SWAP2 SWAP1 PUSH2 0x1F0B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x1451 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14B3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1518 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT ISZERO PUSH2 0x1513 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x14D3 SWAP2 SWAP1 PUSH2 0x18F5 JUMP JUMPDEST PUSH2 0x1512 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1509 SWAP1 PUSH2 0x226E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1527 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x1530 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x1575 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x156C SWAP1 PUSH2 0x21AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x157E DUP6 PUSH2 0x1644 JUMP JUMPDEST PUSH2 0x15BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15B4 SWAP1 PUSH2 0x220E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x15E6 SWAP2 SWAP1 PUSH2 0x1DFB 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 0x1623 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 0x1628 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1638 DUP3 DUP3 DUP7 PUSH2 0x1667 JUMP JUMPDEST SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1677 JUMPI DUP3 SWAP1 POP PUSH2 0x16C7 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD GT ISZERO PUSH2 0x168A JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16BE SWAP2 SWAP1 PUSH2 0x212C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x16DA SWAP1 PUSH2 0x2593 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x16EC JUMPI POP PUSH2 0x170B JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x170A SWAP2 SWAP1 PUSH2 0x1794 JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x171A SWAP1 PUSH2 0x2593 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x173C JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x1783 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x1755 JUMPI DUP1 CALLDATALOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1783 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1783 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1782 JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1767 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x1790 SWAP2 SWAP1 PUSH2 0x1794 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x17AD JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x1795 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17C4 PUSH2 0x17BF DUP5 PUSH2 0x236A JUMP JUMPDEST PUSH2 0x2345 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x17E0 JUMPI PUSH2 0x17DF PUSH2 0x26C1 JUMP JUMPDEST JUMPDEST PUSH2 0x17EB DUP5 DUP3 DUP6 PUSH2 0x2551 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1802 DUP2 PUSH2 0x2916 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1817 DUP2 PUSH2 0x292D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x182C DUP2 PUSH2 0x2944 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1847 JUMPI PUSH2 0x1846 PUSH2 0x26B7 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1857 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x17B1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x186F DUP2 PUSH2 0x295B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x188B JUMPI PUSH2 0x188A PUSH2 0x26B7 JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18A8 JUMPI PUSH2 0x18A7 PUSH2 0x26B2 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x18C4 JUMPI PUSH2 0x18C3 PUSH2 0x26BC JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x18DA DUP2 PUSH2 0x2972 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x18EF DUP2 PUSH2 0x2972 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x190B JUMPI PUSH2 0x190A PUSH2 0x26CB JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1919 DUP5 DUP3 DUP6 ADD PUSH2 0x1808 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1938 JUMPI PUSH2 0x1937 PUSH2 0x26CB JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1946 DUP5 DUP3 DUP6 ADD PUSH2 0x181D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1969 JUMPI PUSH2 0x1968 PUSH2 0x26CB JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1977 DUP8 DUP3 DUP9 ADD PUSH2 0x181D JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x1988 DUP8 DUP3 DUP9 ADD PUSH2 0x18CB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x19A9 JUMPI PUSH2 0x19A8 PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST PUSH2 0x19B5 DUP8 DUP3 DUP9 ADD PUSH2 0x1832 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x19C6 DUP8 DUP3 DUP9 ADD PUSH2 0x1860 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x19EC JUMPI PUSH2 0x19EB PUSH2 0x26CB JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A0A JUMPI PUSH2 0x1A09 PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST PUSH2 0x1A16 DUP8 DUP3 DUP9 ADD PUSH2 0x1875 JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0x20 PUSH2 0x1A29 DUP8 DUP3 DUP9 ADD PUSH2 0x17F3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x1A3A DUP8 DUP3 DUP9 ADD PUSH2 0x18CB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A5C JUMPI PUSH2 0x1A5B PUSH2 0x26CB JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1A6A DUP5 DUP3 DUP6 ADD PUSH2 0x18E0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1A7C DUP2 PUSH2 0x2489 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A8B DUP2 PUSH2 0x249B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1A9A DUP2 PUSH2 0x24A7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AAB DUP3 PUSH2 0x23B0 JUMP JUMPDEST PUSH2 0x1AB5 DUP2 DUP6 PUSH2 0x23C6 JUMP JUMPDEST SWAP4 POP PUSH2 0x1AC5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2560 JUMP JUMPDEST PUSH2 0x1ACE DUP2 PUSH2 0x26D0 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AE4 DUP3 PUSH2 0x23B0 JUMP JUMPDEST PUSH2 0x1AEE DUP2 DUP6 PUSH2 0x23D7 JUMP JUMPDEST SWAP4 POP PUSH2 0x1AFE DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2560 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1B13 DUP2 PUSH2 0x24E5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1B22 DUP2 PUSH2 0x24F7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1B31 DUP2 PUSH2 0x2509 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1B40 DUP2 PUSH2 0x24B1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1B4F DUP2 PUSH2 0x251B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B61 DUP4 DUP6 PUSH2 0x23E2 JUMP JUMPDEST SWAP4 POP PUSH2 0x1B6E DUP4 DUP6 DUP5 PUSH2 0x2551 JUMP JUMPDEST PUSH2 0x1B77 DUP4 PUSH2 0x26D0 JUMP JUMPDEST DUP5 ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B8D DUP3 PUSH2 0x23BB JUMP JUMPDEST PUSH2 0x1B97 DUP2 DUP6 PUSH2 0x23E2 JUMP JUMPDEST SWAP4 POP PUSH2 0x1BA7 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2560 JUMP JUMPDEST PUSH2 0x1BB0 DUP2 PUSH2 0x26D0 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BC6 DUP3 PUSH2 0x23BB JUMP JUMPDEST PUSH2 0x1BD0 DUP2 DUP6 PUSH2 0x23F3 JUMP JUMPDEST SWAP4 POP PUSH2 0x1BE0 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2560 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SLOAD PUSH2 0x1BF9 DUP2 PUSH2 0x2593 JUMP JUMPDEST PUSH2 0x1C03 DUP2 DUP7 PUSH2 0x23F3 JUMP JUMPDEST SWAP5 POP PUSH1 0x1 DUP3 AND PUSH1 0x0 DUP2 EQ PUSH2 0x1C1E JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x1C2F JUMPI PUSH2 0x1C62 JUMP JUMPDEST PUSH1 0xFF NOT DUP4 AND DUP7 MSTORE DUP2 DUP7 ADD SWAP4 POP PUSH2 0x1C62 JUMP JUMPDEST PUSH2 0x1C38 DUP6 PUSH2 0x239B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C5A JUMPI DUP2 SLOAD DUP2 DUP10 ADD MSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1C3B JUMP JUMPDEST DUP4 DUP9 ADD SWAP6 POP POP POP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C78 PUSH1 0x17 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C83 DUP3 PUSH2 0x26E1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C9B PUSH1 0x15 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1CA6 DUP3 PUSH2 0x270A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CBE PUSH1 0x1A DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1CC9 DUP3 PUSH2 0x2733 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CE1 PUSH1 0x26 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1CEC DUP3 PUSH2 0x275C JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D04 PUSH1 0x18 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D0F DUP3 PUSH2 0x27AB JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D27 PUSH1 0x17 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D32 DUP3 PUSH2 0x27D4 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D4A PUSH1 0x1D DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D55 DUP3 PUSH2 0x27FD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D6D PUSH1 0x15 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D78 DUP3 PUSH2 0x2826 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D90 PUSH1 0x14 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D9B DUP3 PUSH2 0x284F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DB3 PUSH1 0x2A DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1DBE DUP3 PUSH2 0x2878 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD6 PUSH1 0x36 DUP4 PUSH2 0x23E2 JUMP JUMPDEST SWAP2 POP PUSH2 0x1DE1 DUP3 PUSH2 0x28C7 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1DF5 DUP2 PUSH2 0x24DB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E07 DUP3 DUP5 PUSH2 0x1AD9 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E1E DUP3 DUP7 PUSH2 0x1BBB JUMP JUMPDEST SWAP2 POP PUSH2 0x1E2A DUP3 DUP6 PUSH2 0x1BEC JUMP JUMPDEST SWAP2 POP PUSH2 0x1E36 DUP3 DUP5 PUSH2 0x1BBB JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1E58 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1E65 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1A73 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x1E81 PUSH1 0x0 DUP4 ADD DUP10 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1E8E PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1E9B PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0x1EA8 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1DEC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x1EBA DUP2 DUP6 PUSH2 0x1AA0 JUMP JUMPDEST SWAP1 POP PUSH2 0x1EC9 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1B37 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x1EE9 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1EF6 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1F03 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1DEC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1F20 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1F2D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1DEC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x1F49 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1A82 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1F5B DUP2 DUP7 PUSH2 0x1B82 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F6A PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x1F77 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1DEC JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1F95 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1A91 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x1FB0 PUSH1 0x0 DUP4 ADD DUP10 PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0x1FBD PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x1DEC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1FCF DUP2 DUP8 PUSH2 0x1AA0 JUMP JUMPDEST SWAP1 POP PUSH2 0x1FDE PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x1FEB PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x1FF8 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x1A82 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x2018 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0x2025 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x1DEC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x2037 DUP2 DUP7 PUSH2 0x1AA0 JUMP JUMPDEST SWAP1 POP PUSH2 0x2046 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x1B19 JUMP JUMPDEST PUSH2 0x2053 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1B46 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2072 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1A91 JUMP JUMPDEST PUSH2 0x207F PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1DEC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x2091 DUP2 DUP6 PUSH2 0x1AA0 JUMP JUMPDEST SWAP1 POP PUSH2 0x20A0 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1DEC JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x20BE PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1B0A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x20D9 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1B19 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x20F4 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1B28 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2115 DUP2 DUP6 DUP8 PUSH2 0x1B55 JUMP JUMPDEST SWAP1 POP PUSH2 0x2124 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1DEC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2146 DUP2 DUP5 PUSH2 0x1B82 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 0x2167 DUP2 PUSH2 0x1C6B 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 0x2187 DUP2 PUSH2 0x1C8E 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 0x21A7 DUP2 PUSH2 0x1CB1 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 0x21C7 DUP2 PUSH2 0x1CD4 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 0x21E7 DUP2 PUSH2 0x1CF7 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 0x2207 DUP2 PUSH2 0x1D1A 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 0x2227 DUP2 PUSH2 0x1D3D 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 0x2247 DUP2 PUSH2 0x1D60 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 0x2267 DUP2 PUSH2 0x1D83 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 0x2287 DUP2 PUSH2 0x1DA6 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 0x22A7 DUP2 PUSH2 0x1DC9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x22C3 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1DEC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x22DE PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1DEC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x22F0 DUP2 DUP5 PUSH2 0x1AA0 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x230E PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1DEC JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x2320 DUP2 DUP7 PUSH2 0x1B82 JUMP JUMPDEST SWAP1 POP PUSH2 0x232F PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1A73 JUMP JUMPDEST PUSH2 0x233C PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1DEC JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x234F PUSH2 0x2360 JUMP JUMPDEST SWAP1 POP PUSH2 0x235B DUP3 DUP3 PUSH2 0x25C5 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 0x2385 JUMPI PUSH2 0x2384 PUSH2 0x2683 JUMP JUMPDEST JUMPDEST PUSH2 0x238E DUP3 PUSH2 0x26D0 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 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 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 0x2409 DUP3 PUSH2 0x24DB JUMP JUMPDEST SWAP2 POP PUSH2 0x2414 DUP4 PUSH2 0x24DB JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x2424 JUMPI PUSH2 0x2423 PUSH2 0x2625 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x243A DUP3 PUSH2 0x24DB JUMP JUMPDEST SWAP2 POP PUSH2 0x2445 DUP4 PUSH2 0x24DB JUMP JUMPDEST SWAP3 POP DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x247E JUMPI PUSH2 0x247D PUSH2 0x25F6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 MUL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2494 DUP3 PUSH2 0x24BB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 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 PUSH2 0x24F0 DUP3 PUSH2 0x252D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2502 DUP3 PUSH2 0x252D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2514 DUP3 PUSH2 0x252D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2526 DUP3 PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2538 DUP3 PUSH2 0x253F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x254A DUP3 PUSH2 0x24BB JUMP JUMPDEST 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 0x257E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2563 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x258D 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 0x25AB JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x25BF JUMPI PUSH2 0x25BE PUSH2 0x2654 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x25CE DUP3 PUSH2 0x26D0 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x25ED JUMPI PUSH2 0x25EC PUSH2 0x2683 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP 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 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 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C696420696E73757265642061646472657373000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x556E617574686F72697A65642063616C6C6261636B0000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x4576656E74206465736372697074696F6E20746F6F206C6F6E67000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x416D6F756E742073686F756C642062652061626F766520300000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x436C61696D20616C726561647920696E69746961746564000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x506F6C69637920616C7265616479206973737565640000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x496E737572616E6365206E6F7420697373756564000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x20746F206E6F6E2D7A65726F20616C6C6F77616E636500000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH2 0x291F DUP2 PUSH2 0x2489 JUMP JUMPDEST DUP2 EQ PUSH2 0x292A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2936 DUP2 PUSH2 0x249B JUMP JUMPDEST DUP2 EQ PUSH2 0x2941 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x294D DUP2 PUSH2 0x24A7 JUMP JUMPDEST DUP2 EQ PUSH2 0x2958 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2964 DUP2 PUSH2 0x24B1 JUMP JUMPDEST DUP2 EQ PUSH2 0x296F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x297B DUP2 PUSH2 0x24DB JUMP JUMPDEST DUP2 EQ PUSH2 0x2986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH18 0x3A224861642074686520666F6C6C6F77696E PUSH8 0x20696E7375726564 KECCAK256 PUSH6 0x76656E74206F PUSH4 0x63757272 PUSH6 0x64206173206F PUSH7 0x20726571756573 PUSH21 0x2074696D657374616D703A20A26469706673582212 KECCAK256 0xBF ADDRESS PUSH24 0x3AEA34FC61EC5B6F3E63E9A72614BEF8072E00EFFBFD9282 CREATE 0xE 0xCF COINBASE SSTORE PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
"sourceMap": "1169:9401:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8803:1145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5068:1003;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2105:55;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2227:64;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1844:60;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;3076:56;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2868:47;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6522:1571;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2421:59;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2793:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2048:50;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2979:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8803:1145;9039:15;9057:37;9069:9;9080:13;9057:11;:37::i;:::-;9039:55;;9127:10;9112:25;;9120:2;9112:25;;;9104:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;9241:16;9260:15;:24;9276:7;9260:24;;;;;;;;;;;;9241:43;;9294:36;9333:17;:27;9351:8;9333:27;;;;;;;;;;;9294:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9377:15;:24;9393:7;9377:24;;;;;;;;;;;9370:31;;;9516:4;9507:5;:13;9503:439;;;9543:17;:27;9561:8;9543:27;;;;;;;;;;;;9536:34;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;9584:80;9606:13;:28;;;9636:13;:27;;;9584:8;:21;;;;:80;;;;;:::i;:::-;9707:8;9698:7;9684:32;;;;;;;;;;9503:439;;;9874:5;9829:17;:27;9847:8;9829:27;;;;;;;;;;;:42;;;:50;;;;;;;;;;;;;;;;;;9922:8;9913:7;9899:32;;;;;;;;;;9503:439;9029:919;;;8803:1145;;;;:::o;5068:1003::-;5217:16;3129:3;5259:12;;5253:26;;:56;;5245:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;5384:1;5358:28;;:14;:28;;;;5350:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5448:1;5432:13;:17;5424:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;5499:71;5512:12;5526;;5499:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5540:14;5556:13;5499:12;:71::i;:::-;5488:82;;5642:1;5588:56;;:17;:27;5606:8;5588:27;;;;;;;;;;;:42;;;;;;;;;;;;:56;;;5580:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;5681:33;5717:17;:27;5735:8;5717:27;;;;;;;;;;;5681:63;;5779:12;;5754:9;:22;;:37;;;;;;;:::i;:::-;;5828:14;5801:9;:24;;;:41;;;;;;;;;;;;;;;;;;5878:13;5852:9;:23;;:39;;;;5902:67;5928:10;5948:4;5955:13;5902:8;:25;;;;:67;;;;;;:::i;:::-;6034:14;5985:79;;6008:10;5985:79;;5998:8;5985:79;6020:12;;6050:13;5985:79;;;;;;;;:::i;:::-;;;;;;;;5235:836;5068:1003;;;;;;:::o;2105:55::-;2152:8;2105:55;:::o;2227:64::-;2282:9;2227:64;:::o;1844:60::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3076:56::-;3129:3;3076:56;:::o;2868:47::-;;;:::o;6522:1571::-;6580:37;6620:17;:27;6638:8;6620:27;;;;;;;;;;;6580:67;;6705:1;6665:42;;:13;:28;;;;;;;;;;;;:42;;;;6657:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;6751:13;:28;;;;;;;;;;;;6750:29;6742:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;6849:4;6818:13;:28;;;:35;;;;;;;;;;;;;;;;;;6863:17;6883:15;6863:35;;6908:26;6954:17;;;;;;;;;;;;;;;;;6973:13;:26;;7001:17;;;;;;;;;;;;;;;;;6937:82;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6908:111;;7029:15;7047:37;7059:9;7070:13;7047:11;:37::i;:::-;7029:55;;7121:8;7094:15;:24;7110:7;7094:24;;;;;;;;;;;:35;;;;7196:2;:15;;;7212;7229:9;7240:13;7255:8;7265:1;7196:71;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7325:20;7403:4;2152:8;7349:13;:27;;;:50;;;;:::i;:::-;7348:59;;;;:::i;:::-;7325:82;;7417:17;7437:2;:10;;;7448:15;7465:9;7476:13;7491:12;7437:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7417:87;;7514:2;:20;;;7535:15;7552:9;7563:13;2282:9;7514:93;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7617:2;:15;;;7633;7650:9;7661:13;7676:5;7683;7690:4;7617:78;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7797:63;7823:10;7843:4;7850:9;7797:8;:25;;;;:63;;;;;;:::i;:::-;7870:44;7899:2;7904:9;7870:8;:20;;;;:44;;;;;:::i;:::-;7924:2;:18;;;7943:10;7963:4;7970:15;7987:9;7998:13;8020:4;7924:102;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8077:8;8068:7;8042:44;8057:9;8042:44;;;;;;:::i;:::-;;;;;;;;6570:1523;;;;;;6522:1571;:::o;2421:59::-;;;:::o;2793:39::-;;;:::o;2048:50::-;;;;;;;;;;;;;;;;;:::o;2979:32::-;;;:::o;10397:171::-;10488:7;10535:9;10546:13;10524:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10514:47;;;;;;10507:54;;10397:171;;;;:::o;763:205:3:-;875:86;895:5;925:23;;;950:2;954:5;902:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;875:19;:86::i;:::-;763:205;;;:::o;10100:291:12:-;10279:7;10326:11;10339:12;10353:14;10369:13;10315:68;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10305:79;;;;;;10298:86;;10100:291;;;;;;:::o;974:241:3:-;1112:96;1132:5;1162:27;;;1191:4;1197:2;1201:5;1139:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1112:19;:96::i;:::-;974:241;;;;:::o;1475:603::-;1839:1;1830:5;:10;1829:62;;;;1889:1;1846:5;:15;;;1870:4;1877:7;1846:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;1829:62;1808:163;;;;;;;;;;;;:::i;:::-;;;;;;;;;1981:90;2001:5;2031:22;;;2055:7;2064:5;2008:62;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1981:19;:90::i;:::-;1475:603;;;:::o;3747:706::-;4166:23;4192:69;4220:4;4192:69;;;;;;;;;;;;;;;;;4200:5;4192:27;;;;:69;;;;;:::i;:::-;4166:95;;4295:1;4275:10;:17;:21;4271:176;;;4370:10;4359:30;;;;;;;;;;;;:::i;:::-;4351:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4271:176;3817:636;3747:706;;:::o;3861:223:4:-;3994:12;4025:52;4047:6;4055:4;4061:1;4064:12;4025:21;:52::i;:::-;4018:59;;3861:223;;;;;:::o;4948:499::-;5113:12;5170:5;5145:21;:30;;5137:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;5236:18;5247:6;5236:10;:18::i;:::-;5228:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5300:12;5314:23;5341:6;:11;;5360:5;5367:4;5341:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5299:73;;;;5389:51;5406:7;5415:10;5427:12;5389:16;:51::i;:::-;5382:58;;;;4948:499;;;;;;:::o;1175:320::-;1235:4;1487:1;1465:7;:19;;;:23;1458:30;;1175:320;;;:::o;7561:742::-;7707:12;7735:7;7731:566;;;7765:10;7758:17;;;;7731:566;7896:1;7876:10;:17;:21;7872:415;;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;;;;;;;;;;:::i;:::-;;;;;;;;7561:742;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:13:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:139::-;469:5;507:6;494:20;485:29;;523:33;550:5;523:33;:::i;:::-;423:139;;;;:::o;568:137::-;622:5;653:6;647:13;638:22;;669:30;693:5;669:30;:::i;:::-;568:137;;;;:::o;711:139::-;757:5;795:6;782:20;773:29;;811:33;838:5;811:33;:::i;:::-;711:139;;;;:::o;869:338::-;924:5;973:3;966:4;958:6;954:17;950:27;940:122;;981:79;;:::i;:::-;940:122;1098:6;1085:20;1123:78;1197:3;1189:6;1182:4;1174:6;1170:17;1123:78;:::i;:::-;1114:87;;930:277;869:338;;;;:::o;1213:137::-;1258:5;1296:6;1283:20;1274:29;;1312:32;1338:5;1312:32;:::i;:::-;1213:137;;;;:::o;1370:553::-;1428:8;1438:6;1488:3;1481:4;1473:6;1469:17;1465:27;1455:122;;1496:79;;:::i;:::-;1455:122;1609:6;1596:20;1586:30;;1639:18;1631:6;1628:30;1625:117;;;1661:79;;:::i;:::-;1625:117;1775:4;1767:6;1763:17;1751:29;;1829:3;1821:4;1813:6;1809:17;1799:8;1795:32;1792:41;1789:128;;;1836:79;;:::i;:::-;1789:128;1370:553;;;;;:::o;1929:139::-;1975:5;2013:6;2000:20;1991:29;;2029:33;2056:5;2029:33;:::i;:::-;1929:139;;;;:::o;2074:143::-;2131:5;2162:6;2156:13;2147:22;;2178:33;2205:5;2178:33;:::i;:::-;2074:143;;;;:::o;2223:345::-;2290:6;2339:2;2327:9;2318:7;2314:23;2310:32;2307:119;;;2345:79;;:::i;:::-;2307:119;2465:1;2490:61;2543:7;2534:6;2523:9;2519:22;2490:61;:::i;:::-;2480:71;;2436:125;2223:345;;;;:::o;2574:329::-;2633:6;2682:2;2670:9;2661:7;2657:23;2653:32;2650:119;;;2688:79;;:::i;:::-;2650:119;2808:1;2833:53;2878:7;2869:6;2858:9;2854:22;2833:53;:::i;:::-;2823:63;;2779:117;2574:329;;;;:::o;2909:941::-;3003:6;3011;3019;3027;3076:3;3064:9;3055:7;3051:23;3047:33;3044:120;;;3083:79;;:::i;:::-;3044:120;3203:1;3228:53;3273:7;3264:6;3253:9;3249:22;3228:53;:::i;:::-;3218:63;;3174:117;3330:2;3356:53;3401:7;3392:6;3381:9;3377:22;3356:53;:::i;:::-;3346:63;;3301:118;3486:2;3475:9;3471:18;3458:32;3517:18;3509:6;3506:30;3503:117;;;3539:79;;:::i;:::-;3503:117;3644:62;3698:7;3689:6;3678:9;3674:22;3644:62;:::i;:::-;3634:72;;3429:287;3755:2;3781:52;3825:7;3816:6;3805:9;3801:22;3781:52;:::i;:::-;3771:62;;3726:117;2909:941;;;;;;;:::o;3856:819::-;3945:6;3953;3961;3969;4018:2;4006:9;3997:7;3993:23;3989:32;3986:119;;;4024:79;;:::i;:::-;3986:119;4172:1;4161:9;4157:17;4144:31;4202:18;4194:6;4191:30;4188:117;;;4224:79;;:::i;:::-;4188:117;4337:65;4394:7;4385:6;4374:9;4370:22;4337:65;:::i;:::-;4319:83;;;;4115:297;4451:2;4477:53;4522:7;4513:6;4502:9;4498:22;4477:53;:::i;:::-;4467:63;;4422:118;4579:2;4605:53;4650:7;4641:6;4630:9;4626:22;4605:53;:::i;:::-;4595:63;;4550:118;3856:819;;;;;;;:::o;4681:351::-;4751:6;4800:2;4788:9;4779:7;4775:23;4771:32;4768:119;;;4806:79;;:::i;:::-;4768:119;4926:1;4951:64;5007:7;4998:6;4987:9;4983:22;4951:64;:::i;:::-;4941:74;;4897:128;4681:351;;;;:::o;5038:118::-;5125:24;5143:5;5125:24;:::i;:::-;5120:3;5113:37;5038:118;;:::o;5162:109::-;5243:21;5258:5;5243:21;:::i;:::-;5238:3;5231:34;5162:109;;:::o;5277:118::-;5364:24;5382:5;5364:24;:::i;:::-;5359:3;5352:37;5277:118;;:::o;5401:360::-;5487:3;5515:38;5547:5;5515:38;:::i;:::-;5569:70;5632:6;5627:3;5569:70;:::i;:::-;5562:77;;5648:52;5693:6;5688:3;5681:4;5674:5;5670:16;5648:52;:::i;:::-;5725:29;5747:6;5725:29;:::i;:::-;5720:3;5716:39;5709:46;;5491:270;5401:360;;;;:::o;5767:373::-;5871:3;5899:38;5931:5;5899:38;:::i;:::-;5953:88;6034:6;6029:3;5953:88;:::i;:::-;5946:95;;6050:52;6095:6;6090:3;6083:4;6076:5;6072:16;6050:52;:::i;:::-;6127:6;6122:3;6118:16;6111:23;;5875:265;5767:373;;;;:::o;6146:179::-;6257:61;6312:5;6257:61;:::i;:::-;6252:3;6245:74;6146:179;;:::o;6331:159::-;6432:51;6477:5;6432:51;:::i;:::-;6427:3;6420:64;6331:159;;:::o;6496:203::-;6619:73;6686:5;6619:73;:::i;:::-;6614:3;6607:86;6496:203;;:::o;6705:115::-;6790:23;6807:5;6790:23;:::i;:::-;6785:3;6778:36;6705:115;;:::o;6826:147::-;6921:45;6960:5;6921:45;:::i;:::-;6916:3;6909:58;6826:147;;:::o;7003:304::-;7101:3;7122:71;7186:6;7181:3;7122:71;:::i;:::-;7115:78;;7203:43;7239:6;7234:3;7227:5;7203:43;:::i;:::-;7271:29;7293:6;7271:29;:::i;:::-;7266:3;7262:39;7255:46;;7003:304;;;;;:::o;7313:364::-;7401:3;7429:39;7462:5;7429:39;:::i;:::-;7484:71;7548:6;7543:3;7484:71;:::i;:::-;7477:78;;7564:52;7609:6;7604:3;7597:4;7590:5;7586:16;7564:52;:::i;:::-;7641:29;7663:6;7641:29;:::i;:::-;7636:3;7632:39;7625:46;;7405:272;7313:364;;;;:::o;7683:377::-;7789:3;7817:39;7850:5;7817:39;:::i;:::-;7872:89;7954:6;7949:3;7872:89;:::i;:::-;7865:96;;7970:52;8015:6;8010:3;8003:4;7996:5;7992:16;7970:52;:::i;:::-;8047:6;8042:3;8038:16;8031:23;;7793:267;7683:377;;;;:::o;8090:845::-;8193:3;8230:5;8224:12;8259:36;8285:9;8259:36;:::i;:::-;8311:89;8393:6;8388:3;8311:89;:::i;:::-;8304:96;;8431:1;8420:9;8416:17;8447:1;8442:137;;;;8593:1;8588:341;;;;8409:520;;8442:137;8526:4;8522:9;8511;8507:25;8502:3;8495:38;8562:6;8557:3;8553:16;8546:23;;8442:137;;8588:341;8655:38;8687:5;8655:38;:::i;:::-;8715:1;8729:154;8743:6;8740:1;8737:13;8729:154;;;8817:7;8811:14;8807:1;8802:3;8798:11;8791:35;8867:1;8858:7;8854:15;8843:26;;8765:4;8762:1;8758:12;8753:17;;8729:154;;;8912:6;8907:3;8903:16;8896:23;;8595:334;;8409:520;;8197:738;;8090:845;;;;:::o;8941:366::-;9083:3;9104:67;9168:2;9163:3;9104:67;:::i;:::-;9097:74;;9180:93;9269:3;9180:93;:::i;:::-;9298:2;9293:3;9289:12;9282:19;;8941:366;;;:::o;9313:::-;9455:3;9476:67;9540:2;9535:3;9476:67;:::i;:::-;9469:74;;9552:93;9641:3;9552:93;:::i;:::-;9670:2;9665:3;9661:12;9654:19;;9313:366;;;:::o;9685:::-;9827:3;9848:67;9912:2;9907:3;9848:67;:::i;:::-;9841:74;;9924:93;10013:3;9924:93;:::i;:::-;10042:2;10037:3;10033:12;10026:19;;9685:366;;;:::o;10057:::-;10199:3;10220:67;10284:2;10279:3;10220:67;:::i;:::-;10213:74;;10296:93;10385:3;10296:93;:::i;:::-;10414:2;10409:3;10405:12;10398:19;;10057:366;;;:::o;10429:::-;10571:3;10592:67;10656:2;10651:3;10592:67;:::i;:::-;10585:74;;10668:93;10757:3;10668:93;:::i;:::-;10786:2;10781:3;10777:12;10770:19;;10429:366;;;:::o;10801:::-;10943:3;10964:67;11028:2;11023:3;10964:67;:::i;:::-;10957:74;;11040:93;11129:3;11040:93;:::i;:::-;11158:2;11153:3;11149:12;11142:19;;10801:366;;;:::o;11173:::-;11315:3;11336:67;11400:2;11395:3;11336:67;:::i;:::-;11329:74;;11412:93;11501:3;11412:93;:::i;:::-;11530:2;11525:3;11521:12;11514:19;;11173:366;;;:::o;11545:::-;11687:3;11708:67;11772:2;11767:3;11708:67;:::i;:::-;11701:74;;11784:93;11873:3;11784:93;:::i;:::-;11902:2;11897:3;11893:12;11886:19;;11545:366;;;:::o;11917:::-;12059:3;12080:67;12144:2;12139:3;12080:67;:::i;:::-;12073:74;;12156:93;12245:3;12156:93;:::i;:::-;12274:2;12269:3;12265:12;12258:19;;11917:366;;;:::o;12289:::-;12431:3;12452:67;12516:2;12511:3;12452:67;:::i;:::-;12445:74;;12528:93;12617:3;12528:93;:::i;:::-;12646:2;12641:3;12637:12;12630:19;;12289:366;;;:::o;12661:::-;12803:3;12824:67;12888:2;12883:3;12824:67;:::i;:::-;12817:74;;12900:93;12989:3;12900:93;:::i;:::-;13018:2;13013:3;13009:12;13002:19;;12661:366;;;:::o;13033:118::-;13120:24;13138:5;13120:24;:::i;:::-;13115:3;13108:37;13033:118;;:::o;13157:271::-;13287:3;13309:93;13398:3;13389:6;13309:93;:::i;:::-;13302:100;;13419:3;13412:10;;13157:271;;;;:::o;13434:589::-;13659:3;13681:95;13772:3;13763:6;13681:95;:::i;:::-;13674:102;;13793:92;13881:3;13872:6;13793:92;:::i;:::-;13786:99;;13902:95;13993:3;13984:6;13902:95;:::i;:::-;13895:102;;14014:3;14007:10;;13434:589;;;;;;:::o;14029:332::-;14150:4;14188:2;14177:9;14173:18;14165:26;;14201:71;14269:1;14258:9;14254:17;14245:6;14201:71;:::i;:::-;14282:72;14350:2;14339:9;14335:18;14326:6;14282:72;:::i;:::-;14029:332;;;;;:::o;14367:858::-;14616:4;14654:3;14643:9;14639:19;14631:27;;14668:71;14736:1;14725:9;14721:17;14712:6;14668:71;:::i;:::-;14749:72;14817:2;14806:9;14802:18;14793:6;14749:72;:::i;:::-;14831;14899:2;14888:9;14884:18;14875:6;14831:72;:::i;:::-;14913;14981:2;14970:9;14966:18;14957:6;14913:72;:::i;:::-;15033:9;15027:4;15023:20;15017:3;15006:9;15002:19;14995:49;15061:76;15132:4;15123:6;15061:76;:::i;:::-;15053:84;;15147:71;15213:3;15202:9;15198:19;15189:6;15147:71;:::i;:::-;14367:858;;;;;;;;;:::o;15231:442::-;15380:4;15418:2;15407:9;15403:18;15395:26;;15431:71;15499:1;15488:9;15484:17;15475:6;15431:71;:::i;:::-;15512:72;15580:2;15569:9;15565:18;15556:6;15512:72;:::i;:::-;15594;15662:2;15651:9;15647:18;15638:6;15594:72;:::i;:::-;15231:442;;;;;;:::o;15679:332::-;15800:4;15838:2;15827:9;15823:18;15815:26;;15851:71;15919:1;15908:9;15904:17;15895:6;15851:71;:::i;:::-;15932:72;16000:2;15989:9;15985:18;15976:6;15932:72;:::i;:::-;15679:332;;;;;:::o;16017:632::-;16208:4;16246:3;16235:9;16231:19;16223:27;;16260:65;16322:1;16311:9;16307:17;16298:6;16260:65;:::i;:::-;16372:9;16366:4;16362:20;16357:2;16346:9;16342:18;16335:48;16400:78;16473:4;16464:6;16400:78;:::i;:::-;16392:86;;16488:72;16556:2;16545:9;16541:18;16532:6;16488:72;:::i;:::-;16570;16638:2;16627:9;16623:18;16614:6;16570:72;:::i;:::-;16017:632;;;;;;;:::o;16655:222::-;16748:4;16786:2;16775:9;16771:18;16763:26;;16799:71;16867:1;16856:9;16852:17;16843:6;16799:71;:::i;:::-;16655:222;;;;:::o;16883:826::-;17116:4;17154:3;17143:9;17139:19;17131:27;;17168:71;17236:1;17225:9;17221:17;17212:6;17168:71;:::i;:::-;17249:72;17317:2;17306:9;17302:18;17293:6;17249:72;:::i;:::-;17368:9;17362:4;17358:20;17353:2;17342:9;17338:18;17331:48;17396:76;17467:4;17458:6;17396:76;:::i;:::-;17388:84;;17482:66;17544:2;17533:9;17529:18;17520:6;17482:66;:::i;:::-;17558:67;17620:3;17609:9;17605:19;17596:6;17558:67;:::i;:::-;17635;17697:3;17686:9;17682:19;17673:6;17635:67;:::i;:::-;16883:826;;;;;;;;;:::o;17715:795::-;17960:4;17998:3;17987:9;17983:19;17975:27;;18012:71;18080:1;18069:9;18065:17;18056:6;18012:71;:::i;:::-;18093:72;18161:2;18150:9;18146:18;18137:6;18093:72;:::i;:::-;18212:9;18206:4;18202:20;18197:2;18186:9;18182:18;18175:48;18240:76;18311:4;18302:6;18240:76;:::i;:::-;18232:84;;18326:86;18408:2;18397:9;18393:18;18384:6;18326:86;:::i;:::-;18422:81;18498:3;18487:9;18483:19;18474:6;18422:81;:::i;:::-;17715:795;;;;;;;;:::o;18516:640::-;18711:4;18749:3;18738:9;18734:19;18726:27;;18763:71;18831:1;18820:9;18816:17;18807:6;18763:71;:::i;:::-;18844:72;18912:2;18901:9;18897:18;18888:6;18844:72;:::i;:::-;18963:9;18957:4;18953:20;18948:2;18937:9;18933:18;18926:48;18991:76;19062:4;19053:6;18991:76;:::i;:::-;18983:84;;19077:72;19145:2;19134:9;19130:18;19121:6;19077:72;:::i;:::-;18516:640;;;;;;;:::o;19162:270::-;19279:4;19317:2;19306:9;19302:18;19294:26;;19330:95;19422:1;19411:9;19407:17;19398:6;19330:95;:::i;:::-;19162:270;;;;:::o;19438:250::-;19545:4;19583:2;19572:9;19568:18;19560:26;;19596:85;19678:1;19667:9;19663:17;19654:6;19596:85;:::i;:::-;19438:250;;;;:::o;19694:294::-;19823:4;19861:2;19850:9;19846:18;19838:26;;19874:107;19978:1;19967:9;19963:17;19954:6;19874:107;:::i;:::-;19694:294;;;;:::o;19994:443::-;20145:4;20183:2;20172:9;20168:18;20160:26;;20232:9;20226:4;20222:20;20218:1;20207:9;20203:17;20196:47;20260:88;20343:4;20334:6;20326;20260:88;:::i;:::-;20252:96;;20358:72;20426:2;20415:9;20411:18;20402:6;20358:72;:::i;:::-;19994:443;;;;;;:::o;20443:313::-;20556:4;20594:2;20583:9;20579:18;20571:26;;20643:9;20637:4;20633:20;20629:1;20618:9;20614:17;20607:47;20671:78;20744:4;20735:6;20671:78;:::i;:::-;20663:86;;20443:313;;;;:::o;20762:419::-;20928:4;20966:2;20955:9;20951:18;20943:26;;21015:9;21009:4;21005:20;21001:1;20990:9;20986:17;20979:47;21043:131;21169:4;21043:131;:::i;:::-;21035:139;;20762:419;;;:::o;21187:::-;21353:4;21391:2;21380:9;21376:18;21368:26;;21440:9;21434:4;21430:20;21426:1;21415:9;21411:17;21404:47;21468:131;21594:4;21468:131;:::i;:::-;21460:139;;21187:419;;;:::o;21612:::-;21778:4;21816:2;21805:9;21801:18;21793:26;;21865:9;21859:4;21855:20;21851:1;21840:9;21836:17;21829:47;21893:131;22019:4;21893:131;:::i;:::-;21885:139;;21612:419;;;:::o;22037:::-;22203:4;22241:2;22230:9;22226:18;22218:26;;22290:9;22284:4;22280:20;22276:1;22265:9;22261:17;22254:47;22318:131;22444:4;22318:131;:::i;:::-;22310:139;;22037:419;;;:::o;22462:::-;22628:4;22666:2;22655:9;22651:18;22643:26;;22715:9;22709:4;22705:20;22701:1;22690:9;22686:17;22679:47;22743:131;22869:4;22743:131;:::i;:::-;22735:139;;22462:419;;;:::o;22887:::-;23053:4;23091:2;23080:9;23076:18;23068:26;;23140:9;23134:4;23130:20;23126:1;23115:9;23111:17;23104:47;23168:131;23294:4;23168:131;:::i;:::-;23160:139;;22887:419;;;:::o;23312:::-;23478:4;23516:2;23505:9;23501:18;23493:26;;23565:9;23559:4;23555:20;23551:1;23540:9;23536:17;23529:47;23593:131;23719:4;23593:131;:::i;:::-;23585:139;;23312:419;;;:::o;23737:::-;23903:4;23941:2;23930:9;23926:18;23918:26;;23990:9;23984:4;23980:20;23976:1;23965:9;23961:17;23954:47;24018:131;24144:4;24018:131;:::i;:::-;24010:139;;23737:419;;;:::o;24162:::-;24328:4;24366:2;24355:9;24351:18;24343:26;;24415:9;24409:4;24405:20;24401:1;24390:9;24386:17;24379:47;24443:131;24569:4;24443:131;:::i;:::-;24435:139;;24162:419;;;:::o;24587:::-;24753:4;24791:2;24780:9;24776:18;24768:26;;24840:9;24834:4;24830:20;24826:1;24815:9;24811:17;24804:47;24868:131;24994:4;24868:131;:::i;:::-;24860:139;;24587:419;;;:::o;25012:::-;25178:4;25216:2;25205:9;25201:18;25193:26;;25265:9;25259:4;25255:20;25251:1;25240:9;25236:17;25229:47;25293:131;25419:4;25293:131;:::i;:::-;25285:139;;25012:419;;;:::o;25437:222::-;25530:4;25568:2;25557:9;25553:18;25545:26;;25581:71;25649:1;25638:9;25634:17;25625:6;25581:71;:::i;:::-;25437:222;;;;:::o;25665:419::-;25804:4;25842:2;25831:9;25827:18;25819:26;;25855:71;25923:1;25912:9;25908:17;25899:6;25855:71;:::i;:::-;25973:9;25967:4;25963:20;25958:2;25947:9;25943:18;25936:48;26001:76;26072:4;26063:6;26001:76;:::i;:::-;25993:84;;25665:419;;;;;:::o;26090:644::-;26287:4;26325:3;26314:9;26310:19;26302:27;;26339:71;26407:1;26396:9;26392:17;26383:6;26339:71;:::i;:::-;26457:9;26451:4;26447:20;26442:2;26431:9;26427:18;26420:48;26485:78;26558:4;26549:6;26485:78;:::i;:::-;26477:86;;26573:72;26641:2;26630:9;26626:18;26617:6;26573:72;:::i;:::-;26655;26723:2;26712:9;26708:18;26699:6;26655:72;:::i;:::-;26090:644;;;;;;;:::o;26740:129::-;26774:6;26801:20;;:::i;:::-;26791:30;;26830:33;26858:4;26850:6;26830:33;:::i;:::-;26740:129;;;:::o;26875:75::-;26908:6;26941:2;26935:9;26925:19;;26875:75;:::o;26956:307::-;27017:4;27107:18;27099:6;27096:30;27093:56;;;27129:18;;:::i;:::-;27093:56;27167:29;27189:6;27167:29;:::i;:::-;27159:37;;27251:4;27245;27241:15;27233:23;;26956:307;;;:::o;27269:141::-;27318:4;27341:3;27333:11;;27364:3;27361:1;27354:14;27398:4;27395:1;27385:18;27377:26;;27269:141;;;:::o;27416:98::-;27467:6;27501:5;27495:12;27485:22;;27416:98;;;:::o;27520:99::-;27572:6;27606:5;27600:12;27590:22;;27520:99;;;:::o;27625:168::-;27708:11;27742:6;27737:3;27730:19;27782:4;27777:3;27773:14;27758:29;;27625:168;;;;:::o;27799:147::-;27900:11;27937:3;27922:18;;27799:147;;;;:::o;27952:169::-;28036:11;28070:6;28065:3;28058:19;28110:4;28105:3;28101:14;28086:29;;27952:169;;;;:::o;28127:148::-;28229:11;28266:3;28251:18;;28127:148;;;;:::o;28281:185::-;28321:1;28338:20;28356:1;28338:20;:::i;:::-;28333:25;;28372:20;28390:1;28372:20;:::i;:::-;28367:25;;28411:1;28401:35;;28416:18;;:::i;:::-;28401:35;28458:1;28455;28451:9;28446:14;;28281:185;;;;:::o;28472:348::-;28512:7;28535:20;28553:1;28535:20;:::i;:::-;28530:25;;28569:20;28587:1;28569:20;:::i;:::-;28564:25;;28757:1;28689:66;28685:74;28682:1;28679:81;28674:1;28667:9;28660:17;28656:105;28653:131;;;28764:18;;:::i;:::-;28653:131;28812:1;28809;28805:9;28794:20;;28472:348;;;;:::o;28826:96::-;28863:7;28892:24;28910:5;28892:24;:::i;:::-;28881:35;;28826:96;;;:::o;28928:90::-;28962:7;29005:5;28998:13;28991:21;28980:32;;28928:90;;;:::o;29024:77::-;29061:7;29090:5;29079:16;;29024:77;;;:::o;29107:76::-;29143:7;29172:5;29161:16;;29107:76;;;:::o;29189:126::-;29226:7;29266:42;29259:5;29255:54;29244:65;;29189:126;;;:::o;29321:77::-;29358:7;29387:5;29376:16;;29321:77;;;:::o;29404:150::-;29478:9;29511:37;29542:5;29511:37;:::i;:::-;29498:50;;29404:150;;;:::o;29560:140::-;29624:9;29657:37;29688:5;29657:37;:::i;:::-;29644:50;;29560:140;;;:::o;29706:162::-;29792:9;29825:37;29856:5;29825:37;:::i;:::-;29812:50;;29706:162;;;:::o;29874:121::-;29932:9;29965:24;29983:5;29965:24;:::i;:::-;29952:37;;29874:121;;;:::o;30001:126::-;30051:9;30084:37;30115:5;30084:37;:::i;:::-;30071:50;;30001:126;;;:::o;30133:113::-;30183:9;30216:24;30234:5;30216:24;:::i;:::-;30203:37;;30133:113;;;:::o;30252:154::-;30336:6;30331:3;30326;30313:30;30398:1;30389:6;30384:3;30380:16;30373:27;30252:154;;;:::o;30412:307::-;30480:1;30490:113;30504:6;30501:1;30498:13;30490:113;;;30589:1;30584:3;30580:11;30574:18;30570:1;30565:3;30561:11;30554:39;30526:2;30523:1;30519:10;30514:15;;30490:113;;;30621:6;30618:1;30615:13;30612:101;;;30701:1;30692:6;30687:3;30683:16;30676:27;30612:101;30461:258;30412:307;;;:::o;30725:320::-;30769:6;30806:1;30800:4;30796:12;30786:22;;30853:1;30847:4;30843:12;30874:18;30864:81;;30930:4;30922:6;30918:17;30908:27;;30864:81;30992:2;30984:6;30981:14;30961:18;30958:38;30955:84;;;31011:18;;:::i;:::-;30955:84;30776:269;30725:320;;;:::o;31051:281::-;31134:27;31156:4;31134:27;:::i;:::-;31126:6;31122:40;31264:6;31252:10;31249:22;31228:18;31216:10;31213:34;31210:62;31207:88;;;31275:18;;:::i;:::-;31207:88;31315:10;31311:2;31304:22;31094:238;31051:281;;:::o;31338:180::-;31386:77;31383:1;31376:88;31483:4;31480:1;31473:15;31507:4;31504:1;31497:15;31524:180;31572:77;31569:1;31562:88;31669:4;31666:1;31659:15;31693:4;31690:1;31683:15;31710:180;31758:77;31755:1;31748:88;31855:4;31852:1;31845:15;31879:4;31876:1;31869:15;31896:180;31944:77;31941:1;31934:88;32041:4;32038:1;32031:15;32065:4;32062:1;32055:15;32082:117;32191:1;32188;32181:12;32205:117;32314:1;32311;32304:12;32328:117;32437:1;32434;32427:12;32451:117;32560:1;32557;32550:12;32574:117;32683:1;32680;32673:12;32697:117;32806:1;32803;32796:12;32820:102;32861:6;32912:2;32908:7;32903:2;32896:5;32892:14;32888:28;32878:38;;32820:102;;;:::o;32928:173::-;33068:25;33064:1;33056:6;33052:14;33045:49;32928:173;:::o;33107:171::-;33247:23;33243:1;33235:6;33231:14;33224:47;33107:171;:::o;33284:176::-;33424:28;33420:1;33412:6;33408:14;33401:52;33284:176;:::o;33466:225::-;33606:34;33602:1;33594:6;33590:14;33583:58;33675:8;33670:2;33662:6;33658:15;33651:33;33466:225;:::o;33697:174::-;33837:26;33833:1;33825:6;33821:14;33814:50;33697:174;:::o;33877:173::-;34017:25;34013:1;34005:6;34001:14;33994:49;33877:173;:::o;34056:179::-;34196:31;34192:1;34184:6;34180:14;34173:55;34056:179;:::o;34241:171::-;34381:23;34377:1;34369:6;34365:14;34358:47;34241:171;:::o;34418:170::-;34558:22;34554:1;34546:6;34542:14;34535:46;34418:170;:::o;34594:229::-;34734:34;34730:1;34722:6;34718:14;34711:58;34803:12;34798:2;34790:6;34786:15;34779:37;34594:229;:::o;34829:241::-;34969:34;34965:1;34957:6;34953:14;34946:58;35038:24;35033:2;35025:6;35021:15;35014:49;34829:241;:::o;35076:122::-;35149:24;35167:5;35149:24;:::i;:::-;35142:5;35139:35;35129:63;;35188:1;35185;35178:12;35129:63;35076:122;:::o;35204:116::-;35274:21;35289:5;35274:21;:::i;:::-;35267:5;35264:32;35254:60;;35310:1;35307;35300:12;35254:60;35204:116;:::o;35326:122::-;35399:24;35417:5;35399:24;:::i;:::-;35392:5;35389:35;35379:63;;35438:1;35435;35428:12;35379:63;35326:122;:::o;35454:120::-;35526:23;35543:5;35526:23;:::i;:::-;35519:5;35516:34;35506:62;;35564:1;35561;35554:12;35506:62;35454:120;:::o;35580:122::-;35653:24;35671:5;35653:24;:::i;:::-;35646:5;35643:35;35633:63;;35692:1;35689;35682:12;35633:63;35580:122;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "2151200",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"MAX_EVENT_DESCRIPTION_SIZE()": "440",
"currency()": "infinite",
"finder()": "infinite",
"insuranceClaims(bytes32)": "infinite",
"insurancePolicies(bytes32)": "infinite",
"issueInsurance(string,address,uint256)": "infinite",
"oo()": "infinite",
"optimisticOracleLivenessTime()": "396",
"oracleBondPercentage()": "374",
"priceIdentifier()": "373",
"priceSettled(bytes32,uint256,bytes,int256)": "infinite",
"submitClaim(bytes32)": "infinite"
},
"internal": {
"_getClaimId(uint256,bytes memory)": "infinite",
"_getPolicyId(uint256,string memory,address,uint256)": "infinite"
}
},
"methodIdentifiers": {
"MAX_EVENT_DESCRIPTION_SIZE()": "57215d06",
"currency()": "e5a6b10f",
"finder()": "b9a3c84c",
"insuranceClaims(bytes32)": "c0b6b37e",
"insurancePolicies(bytes32)": "563fcbe3",
"issueInsurance(string,address,uint256)": "067c4fd6",
"oo()": "8921a614",
"optimisticOracleLivenessTime()": "4fe4ecbf",
"oracleBondPercentage()": "10a3a54b",
"priceIdentifier()": "97523661",
"priceSettled(bytes32,uint256,bytes,int256)": "04cc1fd5",
"submitClaim(bytes32)": "8b35e14e"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_finderAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_currency",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "claimId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "policyId",
"type": "bytes32"
}
],
"name": "ClaimAccepted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "claimId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "policyId",
"type": "bytes32"
}
],
"name": "ClaimRejected",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "claimTimestamp",
"type": "uint256"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "claimId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "policyId",
"type": "bytes32"
}
],
"name": "ClaimSubmitted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "policyId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "insurer",
"type": "address"
},
{
"indexed": false,
"internalType": "string",
"name": "insuredEvent",
"type": "string"
},
{
"indexed": true,
"internalType": "address",
"name": "insuredAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "insuredAmount",
"type": "uint256"
}
],
"name": "PolicyIssued",
"type": "event"
},
{
"inputs": [],
"name": "MAX_EVENT_DESCRIPTION_SIZE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "currency",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "finder",
"outputs": [
{
"internalType": "contract FinderInterface",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "insuranceClaims",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "insurancePolicies",
"outputs": [
{
"internalType": "bool",
"name": "claimInitiated",
"type": "bool"
},
{
"internalType": "string",
"name": "insuredEvent",
"type": "string"
},
{
"internalType": "address",
"name": "insuredAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "insuredAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "insuredEvent",
"type": "string"
},
{
"internalType": "address",
"name": "insuredAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "insuredAmount",
"type": "uint256"
}
],
"name": "issueInsurance",
"outputs": [
{
"internalType": "bytes32",
"name": "policyId",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "oo",
"outputs": [
{
"internalType": "contract OptimisticOracleV2Interface",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "optimisticOracleLivenessTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "oracleBondPercentage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "priceIdentifier",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "ancillaryData",
"type": "bytes"
},
{
"internalType": "int256",
"name": "price",
"type": "int256"
}
],
"name": "priceSettled",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "policyId",
"type": "bytes32"
}
],
"name": "submitClaim",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.7+commit.e28d00a7"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_finderAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_currency",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "claimId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "policyId",
"type": "bytes32"
}
],
"name": "ClaimAccepted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "claimId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "policyId",
"type": "bytes32"
}
],
"name": "ClaimRejected",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "claimTimestamp",
"type": "uint256"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "claimId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "policyId",
"type": "bytes32"
}
],
"name": "ClaimSubmitted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "policyId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "insurer",
"type": "address"
},
{
"indexed": false,
"internalType": "string",
"name": "insuredEvent",
"type": "string"
},
{
"indexed": true,
"internalType": "address",
"name": "insuredAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "insuredAmount",
"type": "uint256"
}
],
"name": "PolicyIssued",
"type": "event"
},
{
"inputs": [],
"name": "MAX_EVENT_DESCRIPTION_SIZE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "currency",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "finder",
"outputs": [
{
"internalType": "contract FinderInterface",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "insuranceClaims",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "insurancePolicies",
"outputs": [
{
"internalType": "bool",
"name": "claimInitiated",
"type": "bool"
},
{
"internalType": "string",
"name": "insuredEvent",
"type": "string"
},
{
"internalType": "address",
"name": "insuredAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "insuredAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "insuredEvent",
"type": "string"
},
{
"internalType": "address",
"name": "insuredAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "insuredAmount",
"type": "uint256"
}
],
"name": "issueInsurance",
"outputs": [
{
"internalType": "bytes32",
"name": "policyId",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "oo",
"outputs": [
{
"internalType": "contract OptimisticOracleV2Interface",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "optimisticOracleLivenessTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "oracleBondPercentage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "priceIdentifier",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "ancillaryData",
"type": "bytes"
},
{
"internalType": "int256",
"name": "price",
"type": "int256"
}
],
"name": "priceSettled",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "policyId",
"type": "bytes32"
}
],
"name": "submitClaim",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"constructor": {
"params": {
"_currency": "denomination token for insurance coverage and bonding.",
"_finderAddress": "DVM finder to find other UMA ecosystem contracts."
}
},
"issueInsurance(string,address,uint256)": {
"details": "This contract must be approved to spend at least insuredAmount of currency token.",
"params": {
"insuredAddress": "Beneficiary address eligible for insurance compensation.",
"insuredAmount": "Amount of insurance coverage.",
"insuredEvent": "short description of insured event. Potential verifiers should be able to evaluate whether this event had occurred as of claim time with binary yes/no answer."
},
"returns": {
"policyId": "Unique identifier of issued insurance policy."
}
},
"priceSettled(bytes32,uint256,bytes,int256)": {
"params": {
"ancillaryData": "Ancillary data of the price being requested.",
"price": "Price that was resolved by the escalation process.",
"timestamp": "Timestamp of the price being requested."
}
},
"submitClaim(bytes32)": {
"details": "This contract must be approved to spend at least (insuredAmount * oracleBondPercentage + finalFee) of currency token. This call requests and proposes that insuredEvent had ocured through Optimistic Oracle.",
"params": {
"policyId": "Identifier of claimed insurance policy."
}
}
},
"title": "Insurance Arbitrator Contract",
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"constructor": {
"notice": "Construct the InsuranceArbitrator"
},
"issueInsurance(string,address,uint256)": {
"notice": "Deposits insuredAmount from the insurer and issues insurance policy to the insured beneficiary."
},
"priceSettled(bytes32,uint256,bytes,int256)": {
"notice": "Callback function called by the Optimistic Oracle when the claim is settled. If the claim is confirmed this pays out insurance coverage to the insured beneficiary and deletes the insurance policy. If the claim is rejected policy claim state is reset so that it is ready for the subsequent claim attempts."
},
"submitClaim(bytes32)": {
"notice": "Anyone can submit insurance claim posting oracle bonding. Only one simultaneous claim per insurance policy is allowed."
}
},
"notice": "This example implementation allows insurer to issue insurance policy by depositing insured amount, designating the insured beneficiary and describing insured event. At any time anyone can submit claim that the insured event has occurred by posting oracle bonding. Insurance Arbitrator resolves the claim through Optimistic Oracle by passing templated question with insured event description in ancillary data. If the claim is confirmed this contract automatically pays out insurance coverage to the insured beneficiary. If the claim is rejected policy continues to be active ready for the subsequent claim attempts.",
"version": 1
}
},
"settings": {
"compilationTarget": {
"github/UMAprotocol/dev-quickstart/contracts/InsuranceArbitrator.sol": "InsuranceArbitrator"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"@openzeppelin/contracts/access/Ownable.sol": {
"keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673",
"license": "MIT",
"urls": [
"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2",
"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"
]
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"keccak256": "0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b",
"license": "MIT",
"urls": [
"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34",
"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"
]
},
"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol": {
"keccak256": "0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329",
"license": "MIT",
"urls": [
"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95",
"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7"
]
},
"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
"keccak256": "0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29",
"license": "MIT",
"urls": [
"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6",
"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf"
]
},
"@openzeppelin/contracts/utils/Address.sol": {
"keccak256": "0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10",
"license": "MIT",
"urls": [
"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487",
"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"
]
},
"@openzeppelin/contracts/utils/Context.sol": {
"keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7",
"license": "MIT",
"urls": [
"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92",
"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"
]
},
"@uma/core/contracts/common/implementation/AddressWhitelist.sol": {
"keccak256": "0xc1f20b925f9d37230aaf7bbee536f9a9b08e4772864f0a243ff1b69b54710fee",
"license": "AGPL-3.0-only",
"urls": [
"bzz-raw://55bc6782bd269463214dbafa8702b2ff33910fd4a51ab24d775aabb15e278bcc",
"dweb:/ipfs/QmV41DnGByGBtg8gk7MG6Nr3xYo5R5varZ8cewywdKNATQ"
]
},
"@uma/core/contracts/common/implementation/Lockable.sol": {
"keccak256": "0x41d78fcce54598ad5f26bc0b778c0f4fedbd836401625e49e736979f69a87ef0",
"license": "AGPL-3.0-only",
"urls": [
"bzz-raw://4ce111bb50441ef5125e7d42284f6debbc17fd589515d7b8cede7e9d1d5f0ede",
"dweb:/ipfs/QmaXiXACWVEDDHoCHNXdVBoNpf8QNHkUZ1kf5MfbxfL6jj"
]
},
"@uma/core/contracts/common/interfaces/AddressWhitelistInterface.sol": {
"keccak256": "0x22fb8588dff1d5cff76a28111d6c9b190765d99facd93c8ff3b54771f245c0d8",
"license": "AGPL-3.0-only",
"urls": [
"bzz-raw://5ecd993f00de290a3c7bf21da23a9439cf2ccb22028316df92b79780ac8aa533",
"dweb:/ipfs/QmTZ7x7U4EEzTacqapzSdFs2np5WNsqm4XeUBqzQxxDJei"
]
},
"@uma/core/contracts/oracle/implementation/Constants.sol": {
"keccak256": "0xda68bfe488310f86be9423666bbb1025a7dfa8494df73914da91abb8ff6cb774",
"license": "AGPL-3.0-only",
"urls": [
"bzz-raw://7dbf823c0a519d9db56b26abaaf75cbff73c2094583cdf50f7025c0ed23f8072",
"dweb:/ipfs/Qmey1e83re5NPbyijqbLUJJm5z5fdtcqpzVaxu75988XD1"
]
},
"@uma/core/contracts/oracle/interfaces/FinderInterface.sol": {
"keccak256": "0x9166fbfe08e954eb86d33c114fcde7ce4fd0dda5d9d28b31210582bfc769fa86",
"license": "AGPL-3.0-only",
"urls": [
"bzz-raw://e611e12bcaaebfdf65b67c566ff1d34708e757f01a445bd87c55862e89383b81",
"dweb:/ipfs/QmYNSq5oopTShdS6j4VWKqoLxmQSRKmWebCxw6K4LfmKrf"
]
},
"@uma/core/contracts/oracle/interfaces/OptimisticOracleV2Interface.sol": {
"keccak256": "0xbfd9778b3e7c86e149cc140eda5e7210ef4a604cde576abaaa46c1289c5e334f",
"license": "AGPL-3.0-only",
"urls": [
"bzz-raw://0f52a8f51cce3444937d477426077785bb68b22de41f39a6e4d58a6dc1c7ede5",
"dweb:/ipfs/QmdNMPxBjhvcEoKNKdzLB8pA2uhqrZWHo8vcrhWeC9r6ro"
]
},
"github/UMAprotocol/dev-quickstart/contracts/InsuranceArbitrator.sol": {
"keccak256": "0xf9eec857ecd2f2afa8ba2be9003da7f9a784eeb4657fbc40f4a76b3827772774",
"license": "AGPL-3.0-only",
"urls": [
"bzz-raw://4c9f698e81f78bd3ce7faeeeafe227848b39264bca0c8a1ea0322d35ccae0c90",
"dweb:/ipfs/QmeHy72enT9sVJ5F3qasKEUJnUwpbrspTd8ha6M7gQ2LwG"
]
}
},
"version": 1
}
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "@uma/core/contracts/common/implementation/AddressWhitelist.sol";
import "@uma/core/contracts/oracle/implementation/Constants.sol";
import "@uma/core/contracts/oracle/interfaces/FinderInterface.sol";
import "@uma/core/contracts/oracle/interfaces/OptimisticOracleV2Interface.sol";
/**
* @title Insurance Arbitrator Contract
* @notice This example implementation allows insurer to issue insurance policy by depositing insured amount,
* designating the insured beneficiary and describing insured event. At any time anyone can submit claim that the insured
* event has occurred by posting oracle bonding. Insurance Arbitrator resolves the claim through Optimistic Oracle by
* passing templated question with insured event description in ancillary data. If the claim is confirmed this contract
* automatically pays out insurance coverage to the insured beneficiary. If the claim is rejected policy continues to be
* active ready for the subsequent claim attempts.
*/
contract InsuranceArbitrator {
using SafeERC20 for IERC20;
/******************************************
* STATE VARIABLES AND DATA STRUCTURES *
******************************************/
// Stores state and parameters of insurance policy.
struct InsurancePolicy {
bool claimInitiated; // Claim state preventing simultaneous claim attempts.
string insuredEvent; // Short description of insured event.
address insuredAddress; // Beneficiary address eligible for insurance compensation.
uint256 insuredAmount; // Amount of insurance coverage.
}
// References all active insurance policies by policyId.
mapping(bytes32 => InsurancePolicy) public insurancePolicies;
// Maps hash of initiated claims to their policyId.
// This is used in callback function to potentially pay out the beneficiary.
mapping(bytes32 => bytes32) public insuranceClaims;
uint256 public constant oracleBondPercentage = 0.001e18; // Proposal bond set to 0.1% of claimed insurance coverage.
uint256 public constant optimisticOracleLivenessTime = 3600 * 24; // Optimistic oracle liveness set to 24h.
// Price identifier to use when requesting claims through Optimistic Oracle.
bytes32 public constant priceIdentifier = "YES_OR_NO_QUERY";
// Template for constructing ancillary data. The claim would insert insuredEvent in between when requesting
// through Optimistic Oracle.
string constant ancillaryDataHead = 'q:"Had the following insured event occurred as of request timestamp: ';
string constant ancillaryDataTail = '?"';
FinderInterface public immutable finder; // Finder for UMA contracts.
OptimisticOracleV2Interface public immutable oo; // Optimistic Oracle instance where claims are resolved.
IERC20 public immutable currency; // Denomination token for insurance coverage and bonding.
uint256 public constant MAX_EVENT_DESCRIPTION_SIZE = 300; // Insured event description should be concise.
/****************************************
* EVENTS *
****************************************/
event PolicyIssued(
bytes32 indexed policyId,
address indexed insurer,
string insuredEvent,
address indexed insuredAddress,
uint256 insuredAmount
);
event ClaimSubmitted(uint256 claimTimestamp, bytes32 indexed claimId, bytes32 indexed policyId);
event ClaimAccepted(bytes32 indexed claimId, bytes32 indexed policyId);
event ClaimRejected(bytes32 indexed claimId, bytes32 indexed policyId);
/**
* @notice Construct the InsuranceArbitrator
* @param _finderAddress DVM finder to find other UMA ecosystem contracts.
* @param _currency denomination token for insurance coverage and bonding.
*/
constructor(address _finderAddress, address _currency) {
finder = FinderInterface(_finderAddress);
currency = IERC20(_currency);
oo = OptimisticOracleV2Interface(FinderInterface(_finderAddress).getImplementationAddress(OracleInterfaces.OptimisticOracleV2));
}
/******************************************
* INSURANCE FUNCTIONS *
******************************************/
/**
* @notice Deposits insuredAmount from the insurer and issues insurance policy to the insured beneficiary.
* @dev This contract must be approved to spend at least insuredAmount of currency token.
* @param insuredEvent short description of insured event. Potential verifiers should be able to evaluate whether
* this event had occurred as of claim time with binary yes/no answer.
* @param insuredAddress Beneficiary address eligible for insurance compensation.
* @param insuredAmount Amount of insurance coverage.
* @return policyId Unique identifier of issued insurance policy.
*/
function issueInsurance(
string calldata insuredEvent,
address insuredAddress,
uint256 insuredAmount
) external returns (bytes32 policyId) {
require(bytes(insuredEvent).length <= MAX_EVENT_DESCRIPTION_SIZE, "Event description too long");
require(insuredAddress != address(0), "Invalid insured address");
require(insuredAmount > 0, "Amount should be above 0");
policyId = _getPolicyId(block.number, insuredEvent, insuredAddress, insuredAmount);
require(insurancePolicies[policyId].insuredAddress == address(0), "Policy already issued");
InsurancePolicy storage newPolicy = insurancePolicies[policyId];
newPolicy.insuredEvent = insuredEvent;
newPolicy.insuredAddress = insuredAddress;
newPolicy.insuredAmount = insuredAmount;
currency.safeTransferFrom(msg.sender, address(this), insuredAmount);
emit PolicyIssued(policyId, msg.sender, insuredEvent, insuredAddress, insuredAmount);
}
/**
* @notice Anyone can submit insurance claim posting oracle bonding. Only one simultaneous claim per insurance
* policy is allowed.
* @dev This contract must be approved to spend at least (insuredAmount * oracleBondPercentage + finalFee) of
* currency token. This call requests and proposes that insuredEvent had ocured through Optimistic Oracle.
* @param policyId Identifier of claimed insurance policy.
*/
function submitClaim(bytes32 policyId) external {
InsurancePolicy storage claimedPolicy = insurancePolicies[policyId];
require(claimedPolicy.insuredAddress != address(0), "Insurance not issued");
require(!claimedPolicy.claimInitiated, "Claim already initiated");
claimedPolicy.claimInitiated = true;
uint256 timestamp = block.timestamp;
bytes memory ancillaryData = abi.encodePacked(ancillaryDataHead, claimedPolicy.insuredEvent, ancillaryDataTail);
bytes32 claimId = _getClaimId(timestamp, ancillaryData);
insuranceClaims[claimId] = policyId;
// Initiate price request at Optimistic Oracle.
oo.requestPrice(priceIdentifier, timestamp, ancillaryData, currency, 0);
// Configure price request parameters.
uint256 proposerBond = (claimedPolicy.insuredAmount * oracleBondPercentage) / 1e18;
uint256 totalBond = oo.setBond(priceIdentifier, timestamp, ancillaryData, proposerBond);
oo.setCustomLiveness(priceIdentifier, timestamp, ancillaryData, optimisticOracleLivenessTime);
oo.setCallbacks(priceIdentifier, timestamp, ancillaryData, false, false, true);
// Propose canonical value representing "True"; i.e. the insurance claim is valid.
currency.safeTransferFrom(msg.sender, address(this), totalBond);
currency.safeApprove(address(oo), totalBond);
oo.proposePriceFor(msg.sender, address(this), priceIdentifier, timestamp, ancillaryData, int256(1e18));
emit ClaimSubmitted(timestamp, claimId, policyId);
}
/******************************************
* CALLBACK FUNCTIONS *
******************************************/
/**
* @notice Callback function called by the Optimistic Oracle when the claim is settled. If the claim is confirmed
* this pays out insurance coverage to the insured beneficiary and deletes the insurance policy. If the claim is
* rejected policy claim state is reset so that it is ready for the subsequent claim attempts.
* @param timestamp Timestamp of the price being requested.
* @param ancillaryData Ancillary data of the price being requested.
* @param price Price that was resolved by the escalation process.
*/
function priceSettled(
bytes32, // identifier passed by Optimistic Oracle, but not used here as it is always the same.
uint256 timestamp,
bytes memory ancillaryData,
int256 price
) external {
bytes32 claimId = _getClaimId(timestamp, ancillaryData);
require(address(oo) == msg.sender, "Unauthorized callback");
// Claim can be settled only once, thus should be deleted.
bytes32 policyId = insuranceClaims[claimId];
InsurancePolicy memory claimedPolicy = insurancePolicies[policyId];
delete insuranceClaims[claimId];
// Deletes insurance policy and transfers claim amount if the claim was confirmed.
if (price == 1e18) {
delete insurancePolicies[policyId];
currency.safeTransfer(claimedPolicy.insuredAddress, claimedPolicy.insuredAmount);
emit ClaimAccepted(claimId, policyId);
// Otherwise just reset the flag so that repeated claims can be made.
} else {
insurancePolicies[policyId].claimInitiated = false;
emit ClaimRejected(claimId, policyId);
}
}
/******************************************
* INTERNAL FUNCTIONS *
******************************************/
function _getPolicyId(
uint256 blockNumber,
string memory insuredEvent,
address insuredAddress,
uint256 insuredAmount
) internal pure returns (bytes32) {
return keccak256(abi.encode(blockNumber, insuredEvent, insuredAddress, insuredAmount));
}
function _getClaimId(uint256 timestamp, bytes memory ancillaryData) internal pure returns (bytes32) {
return keccak256(abi.encode(timestamp, ancillaryData));
}
}
This file has been truncated, but you can view the full file.
{
"id": "9b9ead3bd4ae560e85f9bc15490046ba",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.7",
"solcLongVersion": "0.8.7+commit.e28d00a7",
"input": {
"language": "Solidity",
"sources": {
"github/UMAprotocol/dev-quickstart/contracts/InsuranceArbitrator.sol": {
"content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\n\nimport \"@uma/core/contracts/common/implementation/AddressWhitelist.sol\";\nimport \"@uma/core/contracts/oracle/implementation/Constants.sol\";\nimport \"@uma/core/contracts/oracle/interfaces/FinderInterface.sol\";\nimport \"@uma/core/contracts/oracle/interfaces/OptimisticOracleV2Interface.sol\";\n\n/**\n * @title Insurance Arbitrator Contract\n * @notice This example implementation allows insurer to issue insurance policy by depositing insured amount,\n * designating the insured beneficiary and describing insured event. At any time anyone can submit claim that the insured\n * event has occurred by posting oracle bonding. Insurance Arbitrator resolves the claim through Optimistic Oracle by\n * passing templated question with insured event description in ancillary data. If the claim is confirmed this contract\n * automatically pays out insurance coverage to the insured beneficiary. If the claim is rejected policy continues to be\n * active ready for the subsequent claim attempts.\n */\ncontract InsuranceArbitrator {\n using SafeERC20 for IERC20;\n\n /******************************************\n * STATE VARIABLES AND DATA STRUCTURES *\n ******************************************/\n\n // Stores state and parameters of insurance policy.\n struct InsurancePolicy {\n bool claimInitiated; // Claim state preventing simultaneous claim attempts.\n string insuredEvent; // Short description of insured event.\n address insuredAddress; // Beneficiary address eligible for insurance compensation.\n uint256 insuredAmount; // Amount of insurance coverage.\n }\n\n // References all active insurance policies by policyId.\n mapping(bytes32 => InsurancePolicy) public insurancePolicies;\n\n // Maps hash of initiated claims to their policyId.\n // This is used in callback function to potentially pay out the beneficiary.\n mapping(bytes32 => bytes32) public insuranceClaims;\n\n uint256 public constant oracleBondPercentage = 0.001e18; // Proposal bond set to 0.1% of claimed insurance coverage.\n\n uint256 public constant optimisticOracleLivenessTime = 3600 * 24; // Optimistic oracle liveness set to 24h.\n\n // Price identifier to use when requesting claims through Optimistic Oracle.\n bytes32 public constant priceIdentifier = \"YES_OR_NO_QUERY\";\n\n // Template for constructing ancillary data. The claim would insert insuredEvent in between when requesting\n // through Optimistic Oracle.\n string constant ancillaryDataHead = 'q:\"Had the following insured event occurred as of request timestamp: ';\n string constant ancillaryDataTail = '?\"';\n\n FinderInterface public immutable finder; // Finder for UMA contracts.\n\n OptimisticOracleV2Interface public immutable oo; // Optimistic Oracle instance where claims are resolved.\n\n IERC20 public immutable currency; // Denomination token for insurance coverage and bonding.\n\n uint256 public constant MAX_EVENT_DESCRIPTION_SIZE = 300; // Insured event description should be concise.\n\n /****************************************\n * EVENTS *\n ****************************************/\n\n event PolicyIssued(\n bytes32 indexed policyId,\n address indexed insurer,\n string insuredEvent,\n address indexed insuredAddress,\n uint256 insuredAmount\n );\n event ClaimSubmitted(uint256 claimTimestamp, bytes32 indexed claimId, bytes32 indexed policyId);\n event ClaimAccepted(bytes32 indexed claimId, bytes32 indexed policyId);\n event ClaimRejected(bytes32 indexed claimId, bytes32 indexed policyId);\n\n /**\n * @notice Construct the InsuranceArbitrator\n * @param _finderAddress DVM finder to find other UMA ecosystem contracts.\n * @param _currency denomination token for insurance coverage and bonding.\n */\n constructor(address _finderAddress, address _currency) {\n finder = FinderInterface(_finderAddress);\n currency = IERC20(_currency);\n oo = OptimisticOracleV2Interface(FinderInterface(_finderAddress).getImplementationAddress(OracleInterfaces.OptimisticOracleV2));\n }\n\n /******************************************\n * INSURANCE FUNCTIONS *\n ******************************************/\n\n /**\n * @notice Deposits insuredAmount from the insurer and issues insurance policy to the insured beneficiary.\n * @dev This contract must be approved to spend at least insuredAmount of currency token.\n * @param insuredEvent short description of insured event. Potential verifiers should be able to evaluate whether\n * this event had occurred as of claim time with binary yes/no answer.\n * @param insuredAddress Beneficiary address eligible for insurance compensation.\n * @param insuredAmount Amount of insurance coverage.\n * @return policyId Unique identifier of issued insurance policy.\n */\n function issueInsurance(\n string calldata insuredEvent,\n address insuredAddress,\n uint256 insuredAmount\n ) external returns (bytes32 policyId) {\n require(bytes(insuredEvent).length <= MAX_EVENT_DESCRIPTION_SIZE, \"Event description too long\");\n require(insuredAddress != address(0), \"Invalid insured address\");\n require(insuredAmount > 0, \"Amount should be above 0\");\n policyId = _getPolicyId(block.number, insuredEvent, insuredAddress, insuredAmount);\n require(insurancePolicies[policyId].insuredAddress == address(0), \"Policy already issued\");\n\n InsurancePolicy storage newPolicy = insurancePolicies[policyId];\n newPolicy.insuredEvent = insuredEvent;\n newPolicy.insuredAddress = insuredAddress;\n newPolicy.insuredAmount = insuredAmount;\n\n currency.safeTransferFrom(msg.sender, address(this), insuredAmount);\n\n emit PolicyIssued(policyId, msg.sender, insuredEvent, insuredAddress, insuredAmount);\n }\n\n /**\n * @notice Anyone can submit insurance claim posting oracle bonding. Only one simultaneous claim per insurance\n * policy is allowed.\n * @dev This contract must be approved to spend at least (insuredAmount * oracleBondPercentage + finalFee) of\n * currency token. This call requests and proposes that insuredEvent had ocured through Optimistic Oracle.\n * @param policyId Identifier of claimed insurance policy.\n */\n function submitClaim(bytes32 policyId) external {\n InsurancePolicy storage claimedPolicy = insurancePolicies[policyId];\n require(claimedPolicy.insuredAddress != address(0), \"Insurance not issued\");\n require(!claimedPolicy.claimInitiated, \"Claim already initiated\");\n\n claimedPolicy.claimInitiated = true;\n uint256 timestamp = block.timestamp;\n bytes memory ancillaryData = abi.encodePacked(ancillaryDataHead, claimedPolicy.insuredEvent, ancillaryDataTail);\n bytes32 claimId = _getClaimId(timestamp, ancillaryData);\n insuranceClaims[claimId] = policyId;\n\n // Initiate price request at Optimistic Oracle.\n oo.requestPrice(priceIdentifier, timestamp, ancillaryData, currency, 0);\n\n // Configure price request parameters.\n uint256 proposerBond = (claimedPolicy.insuredAmount * oracleBondPercentage) / 1e18;\n uint256 totalBond = oo.setBond(priceIdentifier, timestamp, ancillaryData, proposerBond);\n oo.setCustomLiveness(priceIdentifier, timestamp, ancillaryData, optimisticOracleLivenessTime);\n oo.setCallbacks(priceIdentifier, timestamp, ancillaryData, false, false, true);\n\n // Propose canonical value representing \"True\"; i.e. the insurance claim is valid.\n currency.safeTransferFrom(msg.sender, address(this), totalBond);\n currency.safeApprove(address(oo), totalBond);\n oo.proposePriceFor(msg.sender, address(this), priceIdentifier, timestamp, ancillaryData, int256(1e18));\n\n emit ClaimSubmitted(timestamp, claimId, policyId);\n }\n\n /******************************************\n * CALLBACK FUNCTIONS *\n ******************************************/\n\n /**\n * @notice Callback function called by the Optimistic Oracle when the claim is settled. If the claim is confirmed\n * this pays out insurance coverage to the insured beneficiary and deletes the insurance policy. If the claim is\n * rejected policy claim state is reset so that it is ready for the subsequent claim attempts.\n * @param timestamp Timestamp of the price being requested.\n * @param ancillaryData Ancillary data of the price being requested.\n * @param price Price that was resolved by the escalation process.\n */\n function priceSettled(\n bytes32, // identifier passed by Optimistic Oracle, but not used here as it is always the same.\n uint256 timestamp,\n bytes memory ancillaryData,\n int256 price\n ) external {\n bytes32 claimId = _getClaimId(timestamp, ancillaryData);\n require(address(oo) == msg.sender, \"Unauthorized callback\");\n\n // Claim can be settled only once, thus should be deleted.\n bytes32 policyId = insuranceClaims[claimId];\n InsurancePolicy memory claimedPolicy = insurancePolicies[policyId];\n delete insuranceClaims[claimId];\n\n // Deletes insurance policy and transfers claim amount if the claim was confirmed.\n if (price == 1e18) {\n delete insurancePolicies[policyId];\n currency.safeTransfer(claimedPolicy.insuredAddress, claimedPolicy.insuredAmount);\n\n emit ClaimAccepted(claimId, policyId);\n // Otherwise just reset the flag so that repeated claims can be made.\n } else {\n insurancePolicies[policyId].claimInitiated = false;\n\n emit ClaimRejected(claimId, policyId);\n }\n }\n\n /******************************************\n * INTERNAL FUNCTIONS *\n ******************************************/\n\n function _getPolicyId(\n uint256 blockNumber,\n string memory insuredEvent,\n address insuredAddress,\n uint256 insuredAmount\n ) internal pure returns (bytes32) {\n return keccak256(abi.encode(blockNumber, insuredEvent, insuredAddress, insuredAmount));\n }\n\n function _getClaimId(uint256 timestamp, bytes memory ancillaryData) internal pure returns (bytes32) {\n return keccak256(abi.encode(timestamp, ancillaryData));\n }\n}\n"
},
"@uma/core/contracts/oracle/interfaces/OptimisticOracleV2Interface.sol": {
"content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"./FinderInterface.sol\";\n\n/**\n * @title Financial contract facing Oracle interface.\n * @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\n */\nabstract contract OptimisticOracleV2Interface {\n event RequestPrice(\n address indexed requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes ancillaryData,\n address currency,\n uint256 reward,\n uint256 finalFee\n );\n event ProposePrice(\n address indexed requester,\n address indexed proposer,\n bytes32 identifier,\n uint256 timestamp,\n bytes ancillaryData,\n int256 proposedPrice,\n uint256 expirationTimestamp,\n address currency\n );\n event DisputePrice(\n address indexed requester,\n address indexed proposer,\n address indexed disputer,\n bytes32 identifier,\n uint256 timestamp,\n bytes ancillaryData,\n int256 proposedPrice\n );\n event Settle(\n address indexed requester,\n address indexed proposer,\n address indexed disputer,\n bytes32 identifier,\n uint256 timestamp,\n bytes ancillaryData,\n int256 price,\n uint256 payout\n );\n // Struct representing the state of a price request.\n enum State {\n Invalid, // Never requested.\n Requested, // Requested, no other actions taken.\n Proposed, // Proposed, but not expired or disputed yet.\n Expired, // Proposed, not disputed, past liveness.\n Disputed, // Disputed, but no DVM price returned yet.\n Resolved, // Disputed and DVM price is available.\n Settled // Final price has been set in the contract (can get here from Expired or Resolved).\n }\n\n struct RequestSettings {\n bool eventBased; // True if the request is set to be event-based.\n bool refundOnDispute; // True if the requester should be refunded their reward on dispute.\n bool callbackOnPriceProposed; // True if callbackOnPriceProposed callback is required.\n bool callbackOnPriceDisputed; // True if callbackOnPriceDisputed callback is required.\n bool callbackOnPriceSettled; // True if callbackOnPriceSettled callback is required.\n uint256 bond; // Bond that the proposer and disputer must pay on top of the final fee.\n uint256 customLiveness; // Custom liveness value set by the requester.\n }\n\n // Struct representing a price request.\n struct Request {\n address proposer; // Address of the proposer.\n address disputer; // Address of the disputer.\n IERC20 currency; // ERC20 token used to pay rewards and fees.\n bool settled; // True if the request is settled.\n RequestSettings requestSettings; // Custom settings associated with a request.\n int256 proposedPrice; // Price that the proposer submitted.\n int256 resolvedPrice; // Price resolved once the request is settled.\n uint256 expirationTime; // Time at which the request auto-settles without a dispute.\n uint256 reward; // Amount of the currency to pay to the proposer on settlement.\n uint256 finalFee; // Final fee to pay to the Store upon request to the DVM.\n }\n\n // This value must be <= the Voting contract's `ancillaryBytesLimit` value otherwise it is possible\n // that a price can be requested to this contract successfully, but cannot be disputed because the DVM refuses\n // to accept a price request made with ancillary data length over a certain size.\n uint256 public constant ancillaryBytesLimit = 8192;\n\n function defaultLiveness() external view virtual returns (uint256);\n\n function finder() external view virtual returns (FinderInterface);\n\n function getCurrentTime() external view virtual returns (uint256);\n\n // Note: this is required so that typechain generates a return value with named fields.\n mapping(bytes32 => Request) public requests;\n\n /**\n * @notice Requests a new price.\n * @param identifier price identifier being requested.\n * @param timestamp timestamp of the price being requested.\n * @param ancillaryData ancillary data representing additional args being passed with the price request.\n * @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n * @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n * which could make sense if the contract requests and proposes the value in the same call or\n * provides its own reward system.\n * @return totalBond default bond (final fee) + final fee that the proposer and disputer will be required to pay.\n * This can be changed with a subsequent call to setBond().\n */\n function requestPrice(\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n IERC20 currency,\n uint256 reward\n ) external virtual returns (uint256 totalBond);\n\n /**\n * @notice Set the proposal bond associated with a price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param bond custom bond amount to set.\n * @return totalBond new bond + final fee that the proposer and disputer will be required to pay. This can be\n * changed again with a subsequent call to setBond().\n */\n function setBond(\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n uint256 bond\n ) external virtual returns (uint256 totalBond);\n\n /**\n * @notice Sets the request to refund the reward if the proposal is disputed. This can help to \"hedge\" the caller\n * in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's\n * bond, so there is still profit to be made even if the reward is refunded.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n */\n function setRefundOnDispute(\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData\n ) external virtual;\n\n /**\n * @notice Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before\n * being auto-resolved.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param customLiveness new custom liveness.\n */\n function setCustomLiveness(\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n uint256 customLiveness\n ) external virtual;\n\n /**\n * @notice Sets the request to be an \"event-based\" request.\n * @dev Calling this method has a few impacts on the request:\n *\n * 1. The timestamp at which the request is evaluated is the time of the proposal, not the timestamp associated\n * with the request.\n *\n * 2. The proposer cannot propose the \"too early\" value (TOO_EARLY_RESPONSE). This is to ensure that a proposer who\n * prematurely proposes a response loses their bond.\n *\n * 3. RefundoOnDispute is automatically set, meaning disputes trigger the reward to be automatically refunded to\n * the requesting contract.\n *\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n */\n function setEventBased(\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData\n ) external virtual;\n\n /**\n * @notice Sets which callbacks should be enabled for the request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param callbackOnPriceProposed whether to enable the callback onPriceProposed.\n * @param callbackOnPriceDisputed whether to enable the callback onPriceDisputed.\n * @param callbackOnPriceSettled whether to enable the callback onPriceSettled.\n */\n function setCallbacks(\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n bool callbackOnPriceProposed,\n bool callbackOnPriceDisputed,\n bool callbackOnPriceSettled\n ) external virtual;\n\n /**\n * @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\n * from this proposal. However, any bonds are pulled from the caller.\n * @param proposer address to set as the proposer.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param proposedPrice price being proposed.\n * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n * the proposer once settled if the proposal is correct.\n */\n function proposePriceFor(\n address proposer,\n address requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n int256 proposedPrice\n ) public virtual returns (uint256 totalBond);\n\n /**\n * @notice Proposes a price value for an existing price request.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @param proposedPrice price being proposed.\n * @return totalBond the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to\n * the proposer once settled if the proposal is correct.\n */\n function proposePrice(\n address requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData,\n int256 proposedPrice\n ) external virtual returns (uint256 totalBond);\n\n /**\n * @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\n * receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\n * @param disputer address to set as the disputer.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n * the disputer once settled if the dispute was value (the proposal was incorrect).\n */\n function disputePriceFor(\n address disputer,\n address requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData\n ) public virtual returns (uint256 totalBond);\n\n /**\n * @notice Disputes a price value for an existing price request with an active proposal.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return totalBond the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to\n * the disputer once settled if the dispute was valid (the proposal was incorrect).\n */\n function disputePrice(\n address requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData\n ) external virtual returns (uint256 totalBond);\n\n /**\n * @notice Retrieves a price that was previously requested by a caller. Reverts if the request is not settled\n * or settleable. Note: this method is not view so that this call may actually settle the price request if it\n * hasn't been settled.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return resolved price.\n */\n function settleAndGetPrice(\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData\n ) external virtual returns (int256);\n\n /**\n * @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return payout the amount that the \"winner\" (proposer or disputer) receives on settlement. This amount includes\n * the returned bonds as well as additional rewards.\n */\n function settle(\n address requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData\n ) external virtual returns (uint256 payout);\n\n /**\n * @notice Gets the current data structure containing all information about a price request.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return the Request data structure.\n */\n function getRequest(\n address requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData\n ) public view virtual returns (Request memory);\n\n /**\n * @notice Returns the state of a price request.\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return the State enum value.\n */\n function getState(\n address requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData\n ) public view virtual returns (State);\n\n /**\n * @notice Checks if a given request has resolved or been settled (i.e the optimistic oracle has a price).\n * @param requester sender of the initial price request.\n * @param identifier price identifier to identify the existing request.\n * @param timestamp timestamp to identify the existing request.\n * @param ancillaryData ancillary data of the price being requested.\n * @return true if price has resolved or settled, false otherwise.\n */\n function hasPrice(\n address requester,\n bytes32 identifier,\n uint256 timestamp,\n bytes memory ancillaryData\n ) public view virtual returns (bool);\n\n function stampAncillaryData(bytes memory ancillaryData, address requester)\n public\n view\n virtual\n returns (bytes memory);\n}\n"
},
"@uma/core/contracts/oracle/interfaces/FinderInterface.sol": {
"content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Provides addresses of the live contracts implementing certain interfaces.\n * @dev Examples are the Oracle or Store interfaces.\n */\ninterface FinderInterface {\n /**\n * @notice Updates the address of the contract that implements `interfaceName`.\n * @param interfaceName bytes32 encoding of the interface name that is either changed or registered.\n * @param implementationAddress address of the deployed contract that implements the interface.\n */\n function changeImplementationAddress(bytes32 interfaceName, address implementationAddress) external;\n\n /**\n * @notice Gets the address of the contract that implements the given `interfaceName`.\n * @param interfaceName queried interface.\n * @return implementationAddress address of the deployed contract that implements the interface.\n */\n function getImplementationAddress(bytes32 interfaceName) external view returns (address);\n}\n"
},
"@uma/core/contracts/oracle/implementation/Constants.sol": {
"content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Stores common interface names used throughout the DVM by registration in the Finder.\n */\nlibrary OracleInterfaces {\n bytes32 public constant Oracle = \"Oracle\";\n bytes32 public constant IdentifierWhitelist = \"IdentifierWhitelist\";\n bytes32 public constant Store = \"Store\";\n bytes32 public constant FinancialContractsAdmin = \"FinancialContractsAdmin\";\n bytes32 public constant Registry = \"Registry\";\n bytes32 public constant CollateralWhitelist = \"CollateralWhitelist\";\n bytes32 public constant OptimisticOracle = \"OptimisticOracle\";\n bytes32 public constant OptimisticOracleV2 = \"OptimisticOracleV2\";\n bytes32 public constant Bridge = \"Bridge\";\n bytes32 public constant GenericHandler = \"GenericHandler\";\n bytes32 public constant SkinnyOptimisticOracle = \"SkinnyOptimisticOracle\";\n bytes32 public constant ChildMessenger = \"ChildMessenger\";\n bytes32 public constant OracleHub = \"OracleHub\";\n bytes32 public constant OracleSpoke = \"OracleSpoke\";\n}\n\n/**\n * @title Commonly re-used values for contracts associated with the OptimisticOracle.\n */\nlibrary OptimisticOracleConstraints {\n // Any price request submitted to the OptimisticOracle must contain ancillary data no larger than this value.\n // This value must be <= the Voting contract's `ancillaryBytesLimit` constant value otherwise it is possible\n // that a price can be requested to the OptimisticOracle successfully, but cannot be resolved by the DVM which\n // refuses to accept a price request made with ancillary data length over a certain size.\n uint256 public constant ancillaryBytesLimit = 8192;\n}\n"
},
"@uma/core/contracts/common/implementation/AddressWhitelist.sol": {
"content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"../interfaces/AddressWhitelistInterface.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"./Lockable.sol\";\n\n/**\n * @title A contract to track a whitelist of addresses.\n */\ncontract AddressWhitelist is AddressWhitelistInterface, Ownable, Lockable {\n enum Status { None, In, Out }\n mapping(address => Status) public whitelist;\n\n address[] public whitelistIndices;\n\n event AddedToWhitelist(address indexed addedAddress);\n event RemovedFromWhitelist(address indexed removedAddress);\n\n /**\n * @notice Adds an address to the whitelist.\n * @param newElement the new address to add.\n */\n function addToWhitelist(address newElement) external override nonReentrant() onlyOwner {\n // Ignore if address is already included\n if (whitelist[newElement] == Status.In) {\n return;\n }\n\n // Only append new addresses to the array, never a duplicate\n if (whitelist[newElement] == Status.None) {\n whitelistIndices.push(newElement);\n }\n\n whitelist[newElement] = Status.In;\n\n emit AddedToWhitelist(newElement);\n }\n\n /**\n * @notice Removes an address from the whitelist.\n * @param elementToRemove the existing address to remove.\n */\n function removeFromWhitelist(address elementToRemove) external override nonReentrant() onlyOwner {\n if (whitelist[elementToRemove] != Status.Out) {\n whitelist[elementToRemove] = Status.Out;\n emit RemovedFromWhitelist(elementToRemove);\n }\n }\n\n /**\n * @notice Checks whether an address is on the whitelist.\n * @param elementToCheck the address to check.\n * @return True if `elementToCheck` is on the whitelist, or False.\n */\n function isOnWhitelist(address elementToCheck) external view override nonReentrantView() returns (bool) {\n return whitelist[elementToCheck] == Status.In;\n }\n\n /**\n * @notice Gets all addresses that are currently included in the whitelist.\n * @dev Note: This method skips over, but still iterates through addresses. It is possible for this call to run out\n * of gas if a large number of addresses have been removed. To reduce the likelihood of this unlikely scenario, we\n * can modify the implementation so that when addresses are removed, the last addresses in the array is moved to\n * the empty index.\n * @return activeWhitelist the list of addresses on the whitelist.\n */\n function getWhitelist() external view override nonReentrantView() returns (address[] memory activeWhitelist) {\n // Determine size of whitelist first\n uint256 activeCount = 0;\n for (uint256 i = 0; i < whitelistIndices.length; i++) {\n if (whitelist[whitelistIndices[i]] == Status.In) {\n activeCount++;\n }\n }\n\n // Populate whitelist\n activeWhitelist = new address[](activeCount);\n activeCount = 0;\n for (uint256 i = 0; i < whitelistIndices.length; i++) {\n address addr = whitelistIndices[i];\n if (whitelist[addr] == Status.In) {\n activeWhitelist[activeCount] = addr;\n activeCount++;\n }\n }\n }\n}\n"
},
"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\nimport \"../extensions/draft-IERC20Permit.sol\";\nimport \"../../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n using Address for address;\n\n function safeTransfer(\n IERC20 token,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n function safeTransferFrom(\n IERC20 token,\n address from,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Deprecated. This function has issues similar to the ones found in\n * {IERC20-approve}, and its usage is discouraged.\n *\n * Whenever possible, use {safeIncreaseAllowance} and\n * {safeDecreaseAllowance} instead.\n */\n function safeApprove(\n IERC20 token,\n address spender,\n uint256 value\n ) internal {\n // safeApprove should only be called when setting an initial allowance,\n // or when resetting it to zero. To increase and decrease it, use\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n require(\n (value == 0) || (token.allowance(address(this), spender) == 0),\n \"SafeERC20: approve from non-zero to non-zero allowance\"\n );\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n }\n\n function safeIncreaseAllowance(\n IERC20 token,\n address spender,\n uint256 value\n ) internal {\n uint256 newAllowance = token.allowance(address(this), spender) + value;\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n\n function safeDecreaseAllowance(\n IERC20 token,\n address spender,\n uint256 value\n ) internal {\n unchecked {\n uint256 oldAllowance = token.allowance(address(this), spender);\n require(oldAllowance >= value, \"SafeERC20: decreased allowance below zero\");\n uint256 newAllowance = oldAllowance - value;\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n }\n\n function safePermit(\n IERC20Permit token,\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal {\n uint256 nonceBefore = token.nonces(owner);\n token.permit(owner, spender, value, deadline, v, r, s);\n uint256 nonceAfter = token.nonces(owner);\n require(nonceAfter == nonceBefore + 1, \"SafeERC20: permit did not succeed\");\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call.\n\n bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n if (returndata.length > 0) {\n // Return data is optional\n require(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n }\n }\n}\n"
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n"
},
"@uma/core/contracts/common/implementation/Lockable.sol": {
"content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\n */\ncontract Lockable {\n bool private _notEntered;\n\n constructor() {\n // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\n // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\n // refund coming into effect.\n _notEntered = true;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\n * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\n * function that does the actual state modification.\n */\n modifier nonReentrant() {\n _preEntranceCheck();\n _preEntranceSet();\n _;\n _postEntranceReset();\n }\n\n /**\n * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\n */\n modifier nonReentrantView() {\n _preEntranceCheck();\n _;\n }\n\n // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\n // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\n // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\n // then call `_postEntranceReset()`.\n // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\n function _preEntranceCheck() internal view {\n // On the first call to nonReentrant, _notEntered will be true\n require(_notEntered, \"ReentrancyGuard: reentrant call\");\n }\n\n function _preEntranceSet() internal {\n // Any calls to nonReentrant after this point will fail\n _notEntered = false;\n }\n\n function _postEntranceReset() internal {\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _notEntered = true;\n }\n\n // These functions are intended to be used by child contracts to temporarily disable and re-enable the guard.\n // Intended use:\n // _startReentrantGuardDisabled();\n // ...\n // _endReentrantGuardDisabled();\n //\n // IMPORTANT: these should NEVER be used in a method that isn't inside a nonReentrant block. Otherwise, it's\n // possible to permanently lock your contract.\n function _startReentrantGuardDisabled() internal {\n _notEntered = true;\n }\n\n function _endReentrantGuardDisabled() internal {\n _notEntered = false;\n }\n}\n"
},
"@openzeppelin/contracts/access/Ownable.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"
},
"@uma/core/contracts/common/interfaces/AddressWhitelistInterface.sol": {
"content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\ninterface AddressWhitelistInterface {\n function addToWhitelist(address newElement) external;\n\n function removeFromWhitelist(address newElement) external;\n\n function isOnWhitelist(address newElement) external view returns (bool);\n\n function getWhitelist() external view returns (address[] memory);\n}\n"
},
"@openzeppelin/contracts/utils/Address.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n"
},
"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20Permit {\n /**\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n * given ``owner``'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"
},
"@openzeppelin/contracts/utils/Context.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
}
}
},
"output": {
"contracts": {
"@openzeppelin/contracts/access/Ownable.sol": {
"Ownable": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "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.",
"kind": "dev",
"methods": {
"constructor": {
"details": "Initializes the contract setting the deployer as the initial owner."
},
"owner()": {
"details": "Returns the address of the current owner."
},
"renounceOwnership()": {
"details": "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."
},
"transferOwnership(address)": {
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"owner()": "8da5cb5b",
"renounceOwnership()": "715018a6",
"transferOwnership(address)": "f2fde38b"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"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.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}",
"storageLayout": {
"storage": [
{
"astId": 7,
"contract": "@openzeppelin/contracts/access/Ownable.sol:Ownable",
"label": "_owner",
"offset": 0,
"slot": "0",
"type": "t_address"
}
],
"types": {
"t_address": {
"encoding": "inplace",
"label": "address",
"numberOfBytes": "20"
}
}
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"IERC20": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Interface of the ERC20 standard as defined in the EIP.",
"events": {
"Approval(address,address,uint256)": {
"details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
},
"Transfer(address,address,uint256)": {
"details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
},
"approve(address,uint256)": {
"details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."
},
"balanceOf(address)": {
"details": "Returns the amount of tokens owned by `account`."
},
"totalSupply()": {
"details": "Returns the amount of tokens in existence."
},
"transfer(address,uint256)": {
"details": "Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
},
"transferFrom(address,address,uint256)": {
"details": "Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol": {
"IERC20Permit": {
"abi": [
{
"inputs": [],
"name": "DOMAIN_SEPARATOR",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "permit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.",
"kind": "dev",
"methods": {
"DOMAIN_SEPARATOR()": {
"details": "Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."
},
"nonces(address)": {
"details": "Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."
},
"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
"details": "Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"DOMAIN_SEPARATOR()": "3644e515",
"nonces(address)": "7ecebe00",
"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
"SafeERC20": {
"abi": [],
"devdoc": {
"details": "Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.",
"kind": "dev",
"methods": {},
"title": "SafeERC20",
"version": 1
},
"evm": {
"assembly": " /* \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":707:4455 library SafeERC20 {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":707:4455 library SafeERC20 {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa264697066735822122085e46c778f38005b12cb04f36fb30f238dde89388c7a39d3334ba3ffff263a0f64736f6c63430008070033\n}\n",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122085e46c778f38005b12cb04f36fb30f238dde89388c7a39d3334ba3ffff263a0f64736f6c63430008070033",
"opcodes": "PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP6 0xE4 PUSH13 0x778F38005B12CB04F36FB30F23 DUP14 0xDE DUP10 CODESIZE DUP13 PUSH27 0x39D3334BA3FFFF263A0F64736F6C63430008070033000000000000 ",
"sourceMap": "707:3748:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122085e46c778f38005b12cb04f36fb30f238dde89388c7a39d3334ba3ffff263a0f64736f6c63430008070033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP6 0xE4 PUSH13 0x778F38005B12CB04F36FB30F23 DUP14 0xDE DUP10 CODESIZE DUP13 PUSH27 0x39D3334BA3FFFF263A0F64736F6C63430008070033000000000000 ",
"sourceMap": "707:3748:3:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "97",
"totalCost": "17297"
},
"internal": {
"_callOptionalReturn(contract IERC20,bytes memory)": "infinite",
"safeApprove(contract IERC20,address,uint256)": "infinite",
"safeDecreaseAllowance(contract IERC20,address,uint256)": "infinite",
"safeIncreaseAllowance(contract IERC20,address,uint256)": "infinite",
"safePermit(contract IERC20Permit,address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
"safeTransfer(contract IERC20,address,uint256)": "infinite",
"safeTransferFrom(contract IERC20,address,address,uint256)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 707,
"end": 4455,
"name": "PUSH #[$]",
"source": 3,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 707,
"end": 4455,
"name": "PUSH [$]",
"source": 3,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 707,
"end": 4455,
"name": "PUSH",
"source": 3,
"value": "B"
},
{
"begin": 707,
"end": 4455,
"name": "DUP3",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "DUP3",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "DUP3",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "CODECOPY",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "DUP1",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "MLOAD",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "PUSH",
"source": 3,
"value": "0"
},
{
"begin": 707,
"end": 4455,
"name": "BYTE",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "PUSH",
"source": 3,
"value": "73"
},
{
"begin": 707,
"end": 4455,
"name": "EQ",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "PUSH [tag]",
"source": 3,
"value": "1"
},
{
"begin": 707,
"end": 4455,
"name": "JUMPI",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "PUSH",
"source": 3,
"value": "4E487B7100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 707,
"end": 4455,
"name": "PUSH",
"source": 3,
"value": "0"
},
{
"begin": 707,
"end": 4455,
"name": "MSTORE",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "PUSH",
"source": 3,
"value": "0"
},
{
"begin": 707,
"end": 4455,
"name": "PUSH",
"source": 3,
"value": "4"
},
{
"begin": 707,
"end": 4455,
"name": "MSTORE",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "PUSH",
"source": 3,
"value": "24"
},
{
"begin": 707,
"end": 4455,
"name": "PUSH",
"source": 3,
"value": "0"
},
{
"begin": 707,
"end": 4455,
"name": "REVERT",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "tag",
"source": 3,
"value": "1"
},
{
"begin": 707,
"end": 4455,
"name": "JUMPDEST",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "ADDRESS",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "PUSH",
"source": 3,
"value": "0"
},
{
"begin": 707,
"end": 4455,
"name": "MSTORE",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "PUSH",
"source": 3,
"value": "73"
},
{
"begin": 707,
"end": 4455,
"name": "DUP2",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "MSTORE8",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "DUP3",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "DUP2",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "RETURN",
"source": 3
}
],
".data": {
"0": {
".auxdata": "a264697066735822122085e46c778f38005b12cb04f36fb30f238dde89388c7a39d3334ba3ffff263a0f64736f6c63430008070033",
".code": [
{
"begin": 707,
"end": 4455,
"name": "PUSHDEPLOYADDRESS",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "ADDRESS",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "EQ",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "PUSH",
"source": 3,
"value": "80"
},
{
"begin": 707,
"end": 4455,
"name": "PUSH",
"source": 3,
"value": "40"
},
{
"begin": 707,
"end": 4455,
"name": "MSTORE",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "PUSH",
"source": 3,
"value": "0"
},
{
"begin": 707,
"end": 4455,
"name": "DUP1",
"source": 3
},
{
"begin": 707,
"end": 4455,
"name": "REVERT",
"source": 3
}
]
}
}
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6\",\"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/utils/Address.sol": {
"Address": {
"abi": [],
"devdoc": {
"details": "Collection of functions related to the address type",
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"@openzeppelin/contracts/utils/Address.sol\":194:8305 library Address {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"@openzeppelin/contracts/utils/Address.sol\":194:8305 library Address {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212205bc043d74995c745c5eb4bc39c4b63bcadd4bb71d1794837c0faf5c955640a4664736f6c63430008070033\n}\n",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205bc043d74995c745c5eb4bc39c4b63bcadd4bb71d1794837c0faf5c955640a4664736f6c63430008070033",
"opcodes": "PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPDEST 0xC0 NUMBER 0xD7 0x49 SWAP6 0xC7 GASLIMIT 0xC5 0xEB 0x4B 0xC3 SWAP13 0x4B PUSH4 0xBCADD4BB PUSH18 0xD1794837C0FAF5C955640A4664736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
"sourceMap": "194:8111:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205bc043d74995c745c5eb4bc39c4b63bcadd4bb71d1794837c0faf5c955640a4664736f6c63430008070033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPDEST 0xC0 NUMBER 0xD7 0x49 SWAP6 0xC7 GASLIMIT 0xC5 0xEB 0x4B 0xC3 SWAP13 0x4B PUSH4 0xBCADD4BB PUSH18 0xD1794837C0FAF5C955640A4664736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
"sourceMap": "194:8111:4:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "97",
"totalCost": "17297"
},
"internal": {
"functionCall(address,bytes memory)": "infinite",
"functionCall(address,bytes memory,string memory)": "infinite",
"functionCallWithValue(address,bytes memory,uint256)": "infinite",
"functionCallWithValue(address,bytes memory,uint256,string memory)": "infinite",
"functionDelegateCall(address,bytes memory)": "infinite",
"functionDelegateCall(address,bytes memory,string memory)": "infinite",
"functionStaticCall(address,bytes memory)": "infinite",
"functionStaticCall(address,bytes memory,string memory)": "infinite",
"isContract(address)": "infinite",
"sendValue(address payable,uint256)": "infinite",
"verifyCallResult(bool,bytes memory,string memory)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 194,
"end": 8305,
"name": "PUSH #[$]",
"source": 4,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 194,
"end": 8305,
"name": "PUSH [$]",
"source": 4,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 4,
"value": "B"
},
{
"begin": 194,
"end": 8305,
"name": "DUP3",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "DUP3",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "DUP3",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "CODECOPY",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "DUP1",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "MLOAD",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 194,
"end": 8305,
"name": "BYTE",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 4,
"value": "73"
},
{
"begin": 194,
"end": 8305,
"name": "EQ",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "PUSH [tag]",
"source": 4,
"value": "1"
},
{
"begin": 194,
"end": 8305,
"name": "JUMPI",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 4,
"value": "4E487B7100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 194,
"end": 8305,
"name": "MSTORE",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 4,
"value": "4"
},
{
"begin": 194,
"end": 8305,
"name": "MSTORE",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 4,
"value": "24"
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 194,
"end": 8305,
"name": "REVERT",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "tag",
"source": 4,
"value": "1"
},
{
"begin": 194,
"end": 8305,
"name": "JUMPDEST",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "ADDRESS",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 194,
"end": 8305,
"name": "MSTORE",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 4,
"value": "73"
},
{
"begin": 194,
"end": 8305,
"name": "DUP2",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "MSTORE8",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "DUP3",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "DUP2",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "RETURN",
"source": 4
}
],
".data": {
"0": {
".auxdata": "a26469706673582212205bc043d74995c745c5eb4bc39c4b63bcadd4bb71d1794837c0faf5c955640a4664736f6c63430008070033",
".code": [
{
"begin": 194,
"end": 8305,
"name": "PUSHDEPLOYADDRESS",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "ADDRESS",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "EQ",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 4,
"value": "80"
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 4,
"value": "40"
},
{
"begin": 194,
"end": 8305,
"name": "MSTORE",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "PUSH",
"source": 4,
"value": "0"
},
{
"begin": 194,
"end": 8305,
"name": "DUP1",
"source": 4
},
{
"begin": 194,
"end": 8305,
"name": "REVERT",
"source": 4
}
]
}
}
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/utils/Context.sol": {
"Context": {
"abi": [],
"devdoc": {
"details": "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.",
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"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.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@uma/core/contracts/common/implementation/AddressWhitelist.sol": {
"AddressWhitelist": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "addedAddress",
"type": "address"
}
],
"name": "AddedToWhitelist",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": fals
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment