Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save zengzengzenghuy/8e96feaeffe5bc14a0c387d9bdcac188 to your computer and use it in GitHub Desktop.
Save zengzengzenghuy/8e96feaeffe5bc14a0c387d9bdcac188 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.22+commit.4fc1097e.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol)
pragma solidity ^0.8.20;
/**
* @dev Standard math utilities missing in the Solidity language.
*/
library Math {
/**
* @dev Muldiv operation overflow.
*/
error MathOverflowedMulDiv();
enum Rounding {
Floor, // Toward negative infinity
Ceil, // Toward positive infinity
Trunc, // Toward zero
Expand // Away from zero
}
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the subtraction of two unsigned integers, with an overflow flag.
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the largest of two numbers.
*/
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a > b ? a : b;
}
/**
* @dev Returns the smallest of two numbers.
*/
function min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
/**
* @dev Returns the average of two numbers. The result is rounded towards
* zero.
*/
function average(uint256 a, uint256 b) internal pure returns (uint256) {
// (a + b) / 2 can overflow.
return (a & b) + (a ^ b) / 2;
}
/**
* @dev Returns the ceiling of the division of two numbers.
*
* This differs from standard division with `/` in that it rounds towards infinity instead
* of rounding towards zero.
*/
function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
if (b == 0) {
// Guarantee the same behavior as in a regular Solidity division.
return a / b;
}
// (a + b - 1) / b can overflow on addition, so we distribute.
return a == 0 ? 0 : (a - 1) / b + 1;
}
/**
* @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or
* denominator == 0.
* @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by
* Uniswap Labs also under MIT license.
*/
function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {
unchecked {
// 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use
// use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256
// variables such that product = prod1 * 2^256 + prod0.
uint256 prod0 = x * y; // Least significant 256 bits of the product
uint256 prod1; // Most significant 256 bits of the product
assembly {
let mm := mulmod(x, y, not(0))
prod1 := sub(sub(mm, prod0), lt(mm, prod0))
}
// Handle non-overflow cases, 256 by 256 division.
if (prod1 == 0) {
// Solidity will revert if denominator == 0, unlike the div opcode on its own.
// The surrounding unchecked block does not change this fact.
// See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.
return prod0 / denominator;
}
// Make sure the result is less than 2^256. Also prevents denominator == 0.
if (denominator <= prod1) {
revert MathOverflowedMulDiv();
}
///////////////////////////////////////////////
// 512 by 256 division.
///////////////////////////////////////////////
// Make division exact by subtracting the remainder from [prod1 prod0].
uint256 remainder;
assembly {
// Compute remainder using mulmod.
remainder := mulmod(x, y, denominator)
// Subtract 256 bit number from 512 bit number.
prod1 := sub(prod1, gt(remainder, prod0))
prod0 := sub(prod0, remainder)
}
// Factor powers of two out of denominator and compute largest power of two divisor of denominator.
// Always >= 1. See https://cs.stackexchange.com/q/138556/92363.
uint256 twos = denominator & (0 - denominator);
assembly {
// Divide denominator by twos.
denominator := div(denominator, twos)
// Divide [prod1 prod0] by twos.
prod0 := div(prod0, twos)
// Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.
twos := add(div(sub(0, twos), twos), 1)
}
// Shift in bits from prod1 into prod0.
prod0 |= prod1 * twos;
// Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such
// that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for
// four bits. That is, denominator * inv = 1 mod 2^4.
uint256 inverse = (3 * denominator) ^ 2;
// Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also
// works in modular arithmetic, doubling the correct bits in each step.
inverse *= 2 - denominator * inverse; // inverse mod 2^8
inverse *= 2 - denominator * inverse; // inverse mod 2^16
inverse *= 2 - denominator * inverse; // inverse mod 2^32
inverse *= 2 - denominator * inverse; // inverse mod 2^64
inverse *= 2 - denominator * inverse; // inverse mod 2^128
inverse *= 2 - denominator * inverse; // inverse mod 2^256
// Because the division is now exact we can divide by multiplying with the modular inverse of denominator.
// This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is
// less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1
// is no longer required.
result = prod0 * inverse;
return result;
}
}
/**
* @notice Calculates x * y / denominator with full precision, following the selected rounding direction.
*/
function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {
uint256 result = mulDiv(x, y, denominator);
if (unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0) {
result += 1;
}
return result;
}
/**
* @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded
* towards zero.
*
* Inspired by Henry S. Warren, Jr.'s "Hacker's Delight" (Chapter 11).
*/
function sqrt(uint256 a) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
// For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.
//
// We know that the "msb" (most significant bit) of our target number `a` is a power of 2 such that we have
// `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.
//
// This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`
// → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`
// → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`
//
// Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.
uint256 result = 1 << (log2(a) >> 1);
// At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,
// since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at
// every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision
// into the expected uint128 result.
unchecked {
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
return min(result, a / result);
}
}
/**
* @notice Calculates sqrt(a), following the selected rounding direction.
*/
function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = sqrt(a);
return result + (unsignedRoundsUp(rounding) && result * result < a ? 1 : 0);
}
}
/**
* @dev Return the log in base 2 of a positive value rounded towards zero.
* Returns 0 if given 0.
*/
function log2(uint256 value) internal pure returns (uint256) {
uint256 result = 0;
unchecked {
if (value >> 128 > 0) {
value >>= 128;
result += 128;
}
if (value >> 64 > 0) {
value >>= 64;
result += 64;
}
if (value >> 32 > 0) {
value >>= 32;
result += 32;
}
if (value >> 16 > 0) {
value >>= 16;
result += 16;
}
if (value >> 8 > 0) {
value >>= 8;
result += 8;
}
if (value >> 4 > 0) {
value >>= 4;
result += 4;
}
if (value >> 2 > 0) {
value >>= 2;
result += 2;
}
if (value >> 1 > 0) {
result += 1;
}
}
return result;
}
/**
* @dev Return the log in base 2, following the selected rounding direction, of a positive value.
* Returns 0 if given 0.
*/
function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = log2(value);
return result + (unsignedRoundsUp(rounding) && 1 << result < value ? 1 : 0);
}
}
/**
* @dev Return the log in base 10 of a positive value rounded towards zero.
* Returns 0 if given 0.
*/
function log10(uint256 value) internal pure returns (uint256) {
uint256 result = 0;
unchecked {
if (value >= 10 ** 64) {
value /= 10 ** 64;
result += 64;
}
if (value >= 10 ** 32) {
value /= 10 ** 32;
result += 32;
}
if (value >= 10 ** 16) {
value /= 10 ** 16;
result += 16;
}
if (value >= 10 ** 8) {
value /= 10 ** 8;
result += 8;
}
if (value >= 10 ** 4) {
value /= 10 ** 4;
result += 4;
}
if (value >= 10 ** 2) {
value /= 10 ** 2;
result += 2;
}
if (value >= 10 ** 1) {
result += 1;
}
}
return result;
}
/**
* @dev Return the log in base 10, following the selected rounding direction, of a positive value.
* Returns 0 if given 0.
*/
function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = log10(value);
return result + (unsignedRoundsUp(rounding) && 10 ** result < value ? 1 : 0);
}
}
/**
* @dev Return the log in base 256 of a positive value rounded towards zero.
* Returns 0 if given 0.
*
* Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.
*/
function log256(uint256 value) internal pure returns (uint256) {
uint256 result = 0;
unchecked {
if (value >> 128 > 0) {
value >>= 128;
result += 16;
}
if (value >> 64 > 0) {
value >>= 64;
result += 8;
}
if (value >> 32 > 0) {
value >>= 32;
result += 4;
}
if (value >> 16 > 0) {
value >>= 16;
result += 2;
}
if (value >> 8 > 0) {
result += 1;
}
}
return result;
}
/**
* @dev Return the log in base 256, following the selected rounding direction, of a positive value.
* Returns 0 if given 0.
*/
function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = log256(value);
return result + (unsignedRoundsUp(rounding) && 1 << (result << 3) < value ? 1 : 0);
}
}
/**
* @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.
*/
function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {
return uint8(rounding) % 2 == 1;
}
}
// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;
library console {
address constant CONSOLE_ADDRESS =
0x000000000000000000636F6e736F6c652e6c6f67;
function _sendLogPayloadImplementation(bytes memory payload) internal view {
address consoleAddress = CONSOLE_ADDRESS;
/// @solidity memory-safe-assembly
assembly {
pop(
staticcall(
gas(),
consoleAddress,
add(payload, 32),
mload(payload),
0,
0
)
)
}
}
function _castToPure(
function(bytes memory) internal view fnIn
) internal pure returns (function(bytes memory) pure fnOut) {
assembly {
fnOut := fnIn
}
}
function _sendLogPayload(bytes memory payload) internal pure {
_castToPure(_sendLogPayloadImplementation)(payload);
}
function log() internal pure {
_sendLogPayload(abi.encodeWithSignature("log()"));
}
function logInt(int256 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(int256)", p0));
}
function logUint(uint256 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256)", p0));
}
function logString(string memory p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function logBool(bool p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function logAddress(address p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function logBytes(bytes memory p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes)", p0));
}
function logBytes1(bytes1 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0));
}
function logBytes2(bytes2 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0));
}
function logBytes3(bytes3 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0));
}
function logBytes4(bytes4 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0));
}
function logBytes5(bytes5 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0));
}
function logBytes6(bytes6 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0));
}
function logBytes7(bytes7 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0));
}
function logBytes8(bytes8 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0));
}
function logBytes9(bytes9 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0));
}
function logBytes10(bytes10 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0));
}
function logBytes11(bytes11 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0));
}
function logBytes12(bytes12 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0));
}
function logBytes13(bytes13 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0));
}
function logBytes14(bytes14 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0));
}
function logBytes15(bytes15 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0));
}
function logBytes16(bytes16 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0));
}
function logBytes17(bytes17 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0));
}
function logBytes18(bytes18 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0));
}
function logBytes19(bytes19 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0));
}
function logBytes20(bytes20 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0));
}
function logBytes21(bytes21 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0));
}
function logBytes22(bytes22 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0));
}
function logBytes23(bytes23 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0));
}
function logBytes24(bytes24 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0));
}
function logBytes25(bytes25 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0));
}
function logBytes26(bytes26 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0));
}
function logBytes27(bytes27 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0));
}
function logBytes28(bytes28 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0));
}
function logBytes29(bytes29 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0));
}
function logBytes30(bytes30 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0));
}
function logBytes31(bytes31 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0));
}
function logBytes32(bytes32 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0));
}
function log(uint256 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256)", p0));
}
function log(string memory p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function log(bool p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function log(address p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function log(uint256 p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256)", p0, p1));
}
function log(uint256 p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string)", p0, p1));
}
function log(uint256 p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool)", p0, p1));
}
function log(uint256 p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address)", p0, p1));
}
function log(string memory p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1));
}
function log(string memory p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1));
}
function log(string memory p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1));
}
function log(string memory p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1));
}
function log(bool p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256)", p0, p1));
}
function log(bool p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1));
}
function log(bool p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1));
}
function log(bool p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1));
}
function log(address p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256)", p0, p1));
}
function log(address p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1));
}
function log(address p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1));
}
function log(address p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1));
}
function log(uint256 p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address)", p0, p1, p2));
}
function log(uint256 p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256)", p0, p1, p2));
}
function log(uint256 p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string)", p0, p1, p2));
}
function log(uint256 p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool)", p0, p1, p2));
}
function log(uint256 p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address)", p0, p1, p2));
}
function log(uint256 p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256)", p0, p1, p2));
}
function log(uint256 p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string)", p0, p1, p2));
}
function log(uint256 p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool)", p0, p1, p2));
}
function log(uint256 p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address)", p0, p1, p2));
}
function log(string memory p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256)", p0, p1, p2));
}
function log(string memory p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2));
}
function log(string memory p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2));
}
function log(string memory p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2));
}
function log(string memory p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256)", p0, p1, p2));
}
function log(string memory p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2));
}
function log(string memory p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2));
}
function log(string memory p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2));
}
function log(string memory p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256)", p0, p1, p2));
}
function log(string memory p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2));
}
function log(string memory p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2));
}
function log(string memory p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2));
}
function log(bool p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256)", p0, p1, p2));
}
function log(bool p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string)", p0, p1, p2));
}
function log(bool p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool)", p0, p1, p2));
}
function log(bool p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address)", p0, p1, p2));
}
function log(bool p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256)", p0, p1, p2));
}
function log(bool p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2));
}
function log(bool p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2));
}
function log(bool p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2));
}
function log(bool p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256)", p0, p1, p2));
}
function log(bool p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2));
}
function log(bool p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2));
}
function log(bool p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2));
}
function log(bool p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256)", p0, p1, p2));
}
function log(bool p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2));
}
function log(bool p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2));
}
function log(bool p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2));
}
function log(address p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256)", p0, p1, p2));
}
function log(address p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string)", p0, p1, p2));
}
function log(address p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool)", p0, p1, p2));
}
function log(address p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address)", p0, p1, p2));
}
function log(address p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256)", p0, p1, p2));
}
function log(address p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2));
}
function log(address p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2));
}
function log(address p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2));
}
function log(address p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256)", p0, p1, p2));
}
function log(address p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2));
}
function log(address p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2));
}
function log(address p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2));
}
function log(address p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256)", p0, p1, p2));
}
function log(address p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2));
}
function log(address p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2));
}
function log(address p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3));
}
}
// SPDX-License-Identifier: Apache-2.0
/*
* @author Hamdi Allam hamdi.allam97@gmail.com
* Please reach out with any questions or concerns
*/
pragma solidity >=0.5.10 <0.9.0;
library RLPReader {
uint8 constant STRING_SHORT_START = 0x80;
uint8 constant STRING_LONG_START = 0xb8;
uint8 constant LIST_SHORT_START = 0xc0;
uint8 constant LIST_LONG_START = 0xf8;
uint8 constant WORD_SIZE = 32;
struct RLPItem {
uint256 len;
uint256 memPtr;
}
struct Iterator {
RLPItem item; // Item that's being iterated over.
uint256 nextPtr; // Position of the next item in the list.
}
/*
* @dev Returns the next element in the iteration. Reverts if it has not next element.
* @param self The iterator.
* @return The next element in the iteration.
*/
function next(Iterator memory self) internal pure returns (RLPItem memory) {
require(hasNext(self));
uint256 ptr = self.nextPtr;
uint256 itemLength = _itemLength(ptr);
self.nextPtr = ptr + itemLength;
return RLPItem(itemLength, ptr);
}
/*
* @dev Returns true if the iteration has more elements.
* @param self The iterator.
* @return true if the iteration has more elements.
*/
function hasNext(Iterator memory self) internal pure returns (bool) {
RLPItem memory item = self.item;
return self.nextPtr < item.memPtr + item.len;
}
/*
* @param item RLP encoded bytes
*/
function toRlpItem(bytes memory item) internal pure returns (RLPItem memory) {
uint256 memPtr;
assembly {
memPtr := add(item, 0x20)
}
return RLPItem(item.length, memPtr);
}
/*
* @dev Create an iterator. Reverts if item is not a list.
* @param self The RLP item.
* @return An 'Iterator' over the item.
*/
function iterator(RLPItem memory self) internal pure returns (Iterator memory) {
require(isList(self));
uint256 ptr = self.memPtr + _payloadOffset(self.memPtr);
return Iterator(self, ptr);
}
/*
* @param the RLP item.
*/
function rlpLen(RLPItem memory item) internal pure returns (uint256) {
return item.len;
}
/*
* @param the RLP item.
* @return (memPtr, len) pair: location of the item's payload in memory.
*/
function payloadLocation(RLPItem memory item) internal pure returns (uint256, uint256) {
uint256 offset = _payloadOffset(item.memPtr);
uint256 memPtr = item.memPtr + offset;
uint256 len = item.len - offset; // data length
return (memPtr, len);
}
/*
* @param the RLP item.
*/
function payloadLen(RLPItem memory item) internal pure returns (uint256) {
(, uint256 len) = payloadLocation(item);
return len;
}
/*
* @param the RLP item containing the encoded list.
*/
function toList(RLPItem memory item) internal pure returns (RLPItem[] memory) {
require(isList(item));
uint256 items = numItems(item);
RLPItem[] memory result = new RLPItem[](items);
uint256 memPtr = item.memPtr + _payloadOffset(item.memPtr);
uint256 dataLen;
for (uint256 i = 0; i < items; i++) {
dataLen = _itemLength(memPtr);
result[i] = RLPItem(dataLen, memPtr);
memPtr = memPtr + dataLen;
}
return result;
}
// @return indicator whether encoded payload is a list. negate this function call for isData.
function isList(RLPItem memory item) internal pure returns (bool) {
if (item.len == 0) return false;
uint8 byte0;
uint256 memPtr = item.memPtr;
assembly {
byte0 := byte(0, mload(memPtr))
}
if (byte0 < LIST_SHORT_START) return false;
return true;
}
/*
* @dev A cheaper version of keccak256(toRlpBytes(item)) that avoids copying memory.
* @return keccak256 hash of RLP encoded bytes.
*/
function rlpBytesKeccak256(RLPItem memory item) internal pure returns (bytes32) {
uint256 ptr = item.memPtr;
uint256 len = item.len;
bytes32 result;
assembly {
result := keccak256(ptr, len)
}
return result;
}
/*
* @dev A cheaper version of keccak256(toBytes(item)) that avoids copying memory.
* @return keccak256 hash of the item payload.
*/
function payloadKeccak256(RLPItem memory item) internal pure returns (bytes32) {
(uint256 memPtr, uint256 len) = payloadLocation(item);
bytes32 result;
assembly {
result := keccak256(memPtr, len)
}
return result;
}
/** RLPItem conversions into data types **/
// @returns raw rlp encoding in bytes
function toRlpBytes(RLPItem memory item) internal pure returns (bytes memory) {
bytes memory result = new bytes(item.len);
if (result.length == 0) return result;
uint256 ptr;
assembly {
ptr := add(0x20, result)
}
copy(item.memPtr, ptr, item.len);
return result;
}
// any non-zero byte except "0x80" is considered true
function toBoolean(RLPItem memory item) internal pure returns (bool) {
require(item.len == 1);
uint256 result;
uint256 memPtr = item.memPtr;
assembly {
result := byte(0, mload(memPtr))
}
// SEE Github Issue #5.
// Summary: Most commonly used RLP libraries (i.e Geth) will encode
// "0" as "0x80" instead of as "0". We handle this edge case explicitly
// here.
if (result == 0 || result == STRING_SHORT_START) {
return false;
} else {
return true;
}
}
function toAddress(RLPItem memory item) internal pure returns (address) {
// 1 byte for the length prefix
require(item.len == 21);
return address(uint160(toUint(item)));
}
function toUint(RLPItem memory item) internal pure returns (uint256) {
require(item.len > 0 && item.len <= 33);
(uint256 memPtr, uint256 len) = payloadLocation(item);
uint256 result;
assembly {
result := mload(memPtr)
// shift to the correct location if neccesary
if lt(len, 32) {
result := div(result, exp(256, sub(32, len)))
}
}
return result;
}
// enforces 32 byte length
function toUintStrict(RLPItem memory item) internal pure returns (uint256) {
// one byte prefix
require(item.len == 33);
uint256 result;
uint256 memPtr = item.memPtr + 1;
assembly {
result := mload(memPtr)
}
return result;
}
function toBytes(RLPItem memory item) internal pure returns (bytes memory) {
require(item.len > 0);
(uint256 memPtr, uint256 len) = payloadLocation(item);
bytes memory result = new bytes(len);
uint256 destPtr;
assembly {
destPtr := add(0x20, result)
}
copy(memPtr, destPtr, len);
return result;
}
/*
* Private Helpers
*/
// @return number of payload items inside an encoded list.
function numItems(RLPItem memory item) private pure returns (uint256) {
if (item.len == 0) return 0;
uint256 count = 0;
uint256 currPtr = item.memPtr + _payloadOffset(item.memPtr);
uint256 endPtr = item.memPtr + item.len;
while (currPtr < endPtr) {
currPtr = currPtr + _itemLength(currPtr); // skip over an item
count++;
}
return count;
}
// @return entire rlp item byte length
function _itemLength(uint256 memPtr) private pure returns (uint256) {
uint256 itemLen;
uint256 byte0;
assembly {
byte0 := byte(0, mload(memPtr))
}
if (byte0 < STRING_SHORT_START) {
itemLen = 1;
} else if (byte0 < STRING_LONG_START) {
itemLen = byte0 - STRING_SHORT_START + 1;
} else if (byte0 < LIST_SHORT_START) {
assembly {
let byteLen := sub(byte0, 0xb7) // # of bytes the actual length is
memPtr := add(memPtr, 1) // skip over the first byte
/* 32 byte word size */
let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to get the len
itemLen := add(dataLen, add(byteLen, 1))
}
} else if (byte0 < LIST_LONG_START) {
itemLen = byte0 - LIST_SHORT_START + 1;
} else {
assembly {
let byteLen := sub(byte0, 0xf7)
memPtr := add(memPtr, 1)
let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to the correct length
itemLen := add(dataLen, add(byteLen, 1))
}
}
return itemLen;
}
// @return number of bytes until the data
function _payloadOffset(uint256 memPtr) private pure returns (uint256) {
uint256 byte0;
assembly {
byte0 := byte(0, mload(memPtr))
}
if (byte0 < STRING_SHORT_START) {
return 0;
} else if (byte0 < STRING_LONG_START || (byte0 >= LIST_SHORT_START && byte0 < LIST_LONG_START)) {
return 1;
} else if (byte0 < LIST_SHORT_START) {
// being explicit
return byte0 - (STRING_LONG_START - 1) + 1;
} else {
return byte0 - (LIST_LONG_START - 1) + 1;
}
}
/*
* @param src Pointer to source
* @param dest Pointer to destination
* @param len Amount of memory to copy from the source
*/
function copy(uint256 src, uint256 dest, uint256 len) private pure {
if (len == 0) return;
// copy as many word sizes as possible
for (; len >= WORD_SIZE; len -= WORD_SIZE) {
assembly {
mstore(dest, mload(src))
}
src += WORD_SIZE;
dest += WORD_SIZE;
}
if (len > 0) {
// left over bytes. Mask is used to remove unwanted bytes from the word
uint256 mask = 256**(WORD_SIZE - len) - 1;
assembly {
let srcpart := and(mload(src), not(mask)) // zero out src
let destpart := and(mload(dest), mask) // retrieve the bytes
mstore(dest, or(destpart, srcpart))
}
}
}
}
{
"overrides": [
{
"files": "*.sol",
"options": {
"printWidth": 80,
"tabWidth": 4,
"useTabs": false,
"singleQuote": false,
"bracketSpacing": false
}
},
{
"files": "*.yml",
"options": {}
},
{
"files": "*.yaml",
"options": {}
},
{
"files": "*.toml",
"options": {}
},
{
"files": "*.json",
"options": {}
},
{
"files": "*.js",
"options": {}
},
{
"files": "*.ts",
"options": {}
}
]
}
REMIX DEFAULT WORKSPACE
Remix default workspace is present when:
i. Remix loads for the very first time
ii. A new workspace is created with 'Default' template
iii. There are no files existing in the File Explorer
This workspace contains 3 directories:
1. 'contracts': Holds three contracts with increasing levels of complexity.
2. 'scripts': Contains four typescript files to deploy a contract. It is explained below.
3. 'tests': Contains one Solidity test file for 'Ballot' contract & one JS test file for 'Storage' contract.
SCRIPTS
The 'scripts' folder has four typescript files which help to deploy the 'Storage' contract using 'web3.js' and 'ethers.js' libraries.
For the deployment of any other contract, just update the contract's name from 'Storage' to the desired contract and provide constructor arguments accordingly
in the file `deploy_with_ethers.ts` or `deploy_with_web3.ts`
In the 'tests' folder there is a script containing Mocha-Chai unit tests for 'Storage' contract.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
Please note, require/import is supported in a limited manner for Remix supported modules.
For now, modules supported by Remix are ethers, web3, swarmgw, chai, multihashes, remix and hardhat only for hardhat.ethers object/plugin.
For unsupported modules, an error like this will be thrown: '<module_name> module require is not supported by Remix IDE' will be shown.
{
"language": "Solidity",
"settings": {
"viaIR": true,
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"": ["ast"],
"*": ["abi", "metadata", "devdoc", "userdoc", "storageLayout", "evm.legacyAssembly", "evm.bytecode", "evm.deployedBytecode", "evm.methodIdentifiers", "evm.gasEstimates", "evm.assembly"]
}
}
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.2 <0.9.0;
/**
* @title Storage
* @dev Store & retrieve value in a variable
* @custom:dev-run-script ./scripts/deploy_with_ethers.ts
*/
contract Storage {
uint256 number;
/**
* @dev Store value in variable
* @param num value to store
*/
function store(uint256 num) public {
number = num;
}
/**
* @dev Return value
* @return value of 'number'
*/
function retrieve() public view returns (uint256){
return number;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
import "hardhat/console.sol";
/**
* @title Owner
* @dev Set & change owner
*/
contract Owner {
address private owner;
// event for EVM logging
event OwnerSet(address indexed oldOwner, address indexed newOwner);
// modifier to check if caller is owner
modifier isOwner() {
// If the first argument of 'require' evaluates to 'false', execution terminates and all
// changes to the state and to Ether balances are reverted.
// This used to consume all gas in old EVM versions, but not anymore.
// It is often a good idea to use 'require' to check if functions are called correctly.
// As a second argument, you can also provide an explanation about what went wrong.
require(msg.sender == owner, "Caller is not owner");
_;
}
/**
* @dev Set contract deployer as owner
*/
constructor() {
console.log("Owner contract deployed by:", msg.sender);
owner = msg.sender; // 'msg.sender' is sender of current call, contract deployer for a constructor
emit OwnerSet(address(0), owner);
}
/**
* @dev Change owner
* @param newOwner address of new owner
*/
function changeOwner(address newOwner) public isOwner {
emit OwnerSet(owner, newOwner);
owner = newOwner;
}
/**
* @dev Return owner address
* @return address of owner
*/
function getOwner() external view returns (address) {
return owner;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Ballot
* @dev Implements voting process along with vote delegation
*/
contract Ballot {
struct Voter {
uint weight; // weight is accumulated by delegation
bool voted; // if true, that person already voted
address delegate; // person delegated to
uint vote; // index of the voted proposal
}
struct Proposal {
// If you can limit the length to a certain number of bytes,
// always use one of bytes1 to bytes32 because they are much cheaper
bytes32 name; // short name (up to 32 bytes)
uint voteCount; // number of accumulated votes
}
address public chairperson;
mapping(address => Voter) public voters;
Proposal[] public proposals;
/**
* @dev Create a new ballot to choose one of 'proposalNames'.
* @param proposalNames names of proposals
*/
constructor(bytes32[] memory proposalNames) {
chairperson = msg.sender;
voters[chairperson].weight = 1;
for (uint i = 0; i < proposalNames.length; i++) {
// 'Proposal({...})' creates a temporary
// Proposal object and 'proposals.push(...)'
// appends it to the end of 'proposals'.
proposals.push(Proposal({
name: proposalNames[i],
voteCount: 0
}));
}
}
/**
* @dev Give 'voter' the right to vote on this ballot. May only be called by 'chairperson'.
* @param voter address of voter
*/
function giveRightToVote(address voter) public {
require(
msg.sender == chairperson,
"Only chairperson can give right to vote."
);
require(
!voters[voter].voted,
"The voter already voted."
);
require(voters[voter].weight == 0);
voters[voter].weight = 1;
}
/**
* @dev Delegate your vote to the voter 'to'.
* @param to address to which vote is delegated
*/
function delegate(address to) public {
Voter storage sender = voters[msg.sender];
require(!sender.voted, "You already voted.");
require(to != msg.sender, "Self-delegation is disallowed.");
while (voters[to].delegate != address(0)) {
to = voters[to].delegate;
// We found a loop in the delegation, not allowed.
require(to != msg.sender, "Found loop in delegation.");
}
sender.voted = true;
sender.delegate = to;
Voter storage delegate_ = voters[to];
if (delegate_.voted) {
// If the delegate already voted,
// directly add to the number of votes
proposals[delegate_.vote].voteCount += sender.weight;
} else {
// If the delegate did not vote yet,
// add to her weight.
delegate_.weight += sender.weight;
}
}
/**
* @dev Give your vote (including votes delegated to you) to proposal 'proposals[proposal].name'.
* @param proposal index of proposal in the proposals array
*/
function vote(uint proposal) public {
Voter storage sender = voters[msg.sender];
require(sender.weight != 0, "Has no right to vote");
require(!sender.voted, "Already voted.");
sender.voted = true;
sender.vote = proposal;
// If 'proposal' is out of the range of the array,
// this will throw automatically and revert all
// changes.
proposals[proposal].voteCount += sender.weight;
}
/**
* @dev Computes the winning proposal taking all previous votes into account.
* @return winningProposal_ index of winning proposal in the proposals array
*/
function winningProposal() public view
returns (uint winningProposal_)
{
uint winningVoteCount = 0;
for (uint p = 0; p < proposals.length; p++) {
if (proposals[p].voteCount > winningVoteCount) {
winningVoteCount = proposals[p].voteCount;
winningProposal_ = p;
}
}
}
/**
* @dev Calls winningProposal() function to get the index of the winner contained in the proposals array and then
* @return winnerName_ the name of the winner
*/
function winnerName() public view
returns (bytes32 winnerName_)
{
winnerName_ = proposals[winningProposal()].name;
}
}
// File: solidity-rlp/contracts/RLPReader.sol
/*
* @author Hamdi Allam hamdi.allam97@gmail.com
* Please reach out with any questions or concerns
*/
pragma solidity >=0.5.10 <0.9.0;
library RLPReader {
uint8 constant STRING_SHORT_START = 0x80;
uint8 constant STRING_LONG_START = 0xb8;
uint8 constant LIST_SHORT_START = 0xc0;
uint8 constant LIST_LONG_START = 0xf8;
uint8 constant WORD_SIZE = 32;
struct RLPItem {
uint256 len;
uint256 memPtr;
}
struct Iterator {
RLPItem item; // Item that's being iterated over.
uint256 nextPtr; // Position of the next item in the list.
}
/*
* @dev Returns the next element in the iteration. Reverts if it has not next element.
* @param self The iterator.
* @return The next element in the iteration.
*/
function next(Iterator memory self) internal pure returns (RLPItem memory) {
require(hasNext(self));
uint256 ptr = self.nextPtr;
uint256 itemLength = _itemLength(ptr);
self.nextPtr = ptr + itemLength;
return RLPItem(itemLength, ptr);
}
/*
* @dev Returns true if the iteration has more elements.
* @param self The iterator.
* @return true if the iteration has more elements.
*/
function hasNext(Iterator memory self) internal pure returns (bool) {
RLPItem memory item = self.item;
return self.nextPtr < item.memPtr + item.len;
}
/*
* @param item RLP encoded bytes
*/
function toRlpItem(bytes memory item) internal pure returns (RLPItem memory) {
uint256 memPtr;
assembly {
memPtr := add(item, 0x20)
}
return RLPItem(item.length, memPtr);
}
/*
* @dev Create an iterator. Reverts if item is not a list.
* @param self The RLP item.
* @return An 'Iterator' over the item.
*/
function iterator(RLPItem memory self) internal pure returns (Iterator memory) {
require(isList(self));
uint256 ptr = self.memPtr + _payloadOffset(self.memPtr);
return Iterator(self, ptr);
}
/*
* @param the RLP item.
*/
function rlpLen(RLPItem memory item) internal pure returns (uint256) {
return item.len;
}
/*
* @param the RLP item.
* @return (memPtr, len) pair: location of the item's payload in memory.
*/
function payloadLocation(RLPItem memory item) internal pure returns (uint256, uint256) {
uint256 offset = _payloadOffset(item.memPtr);
uint256 memPtr = item.memPtr + offset;
uint256 len = item.len - offset; // data length
return (memPtr, len);
}
/*
* @param the RLP item.
*/
function payloadLen(RLPItem memory item) internal pure returns (uint256) {
(, uint256 len) = payloadLocation(item);
return len;
}
/*
* @param the RLP item containing the encoded list.
*/
function toList(RLPItem memory item) internal pure returns (RLPItem[] memory) {
require(isList(item));
uint256 items = numItems(item);
RLPItem[] memory result = new RLPItem[](items);
uint256 memPtr = item.memPtr + _payloadOffset(item.memPtr);
uint256 dataLen;
for (uint256 i = 0; i < items; i++) {
dataLen = _itemLength(memPtr);
result[i] = RLPItem(dataLen, memPtr);
memPtr = memPtr + dataLen;
}
return result;
}
// @return indicator whether encoded payload is a list. negate this function call for isData.
function isList(RLPItem memory item) internal pure returns (bool) {
if (item.len == 0) return false;
uint8 byte0;
uint256 memPtr = item.memPtr;
assembly {
byte0 := byte(0, mload(memPtr))
}
if (byte0 < LIST_SHORT_START) return false;
return true;
}
/*
* @dev A cheaper version of keccak256(toRlpBytes(item)) that avoids copying memory.
* @return keccak256 hash of RLP encoded bytes.
*/
function rlpBytesKeccak256(RLPItem memory item) internal pure returns (bytes32) {
uint256 ptr = item.memPtr;
uint256 len = item.len;
bytes32 result;
assembly {
result := keccak256(ptr, len)
}
return result;
}
/*
* @dev A cheaper version of keccak256(toBytes(item)) that avoids copying memory.
* @return keccak256 hash of the item payload.
*/
function payloadKeccak256(RLPItem memory item) internal pure returns (bytes32) {
(uint256 memPtr, uint256 len) = payloadLocation(item);
bytes32 result;
assembly {
result := keccak256(memPtr, len)
}
return result;
}
/** RLPItem conversions into data types **/
// @returns raw rlp encoding in bytes
function toRlpBytes(RLPItem memory item) internal pure returns (bytes memory) {
bytes memory result = new bytes(item.len);
if (result.length == 0) return result;
uint256 ptr;
assembly {
ptr := add(0x20, result)
}
copy(item.memPtr, ptr, item.len);
return result;
}
// any non-zero byte except "0x80" is considered true
function toBoolean(RLPItem memory item) internal pure returns (bool) {
require(item.len == 1);
uint256 result;
uint256 memPtr = item.memPtr;
assembly {
result := byte(0, mload(memPtr))
}
// SEE Github Issue #5.
// Summary: Most commonly used RLP libraries (i.e Geth) will encode
// "0" as "0x80" instead of as "0". We handle this edge case explicitly
// here.
if (result == 0 || result == STRING_SHORT_START) {
return false;
} else {
return true;
}
}
function toAddress(RLPItem memory item) internal pure returns (address) {
// 1 byte for the length prefix
require(item.len == 21);
return address(uint160(toUint(item)));
}
function toUint(RLPItem memory item) internal pure returns (uint256) {
require(item.len > 0 && item.len <= 33);
(uint256 memPtr, uint256 len) = payloadLocation(item);
uint256 result;
assembly {
result := mload(memPtr)
// shift to the correct location if neccesary
if lt(len, 32) {
result := div(result, exp(256, sub(32, len)))
}
}
return result;
}
// enforces 32 byte length
function toUintStrict(RLPItem memory item) internal pure returns (uint256) {
// one byte prefix
require(item.len == 33);
uint256 result;
uint256 memPtr = item.memPtr + 1;
assembly {
result := mload(memPtr)
}
return result;
}
function toBytes(RLPItem memory item) internal pure returns (bytes memory) {
require(item.len > 0);
(uint256 memPtr, uint256 len) = payloadLocation(item);
bytes memory result = new bytes(len);
uint256 destPtr;
assembly {
destPtr := add(0x20, result)
}
copy(memPtr, destPtr, len);
return result;
}
/*
* Private Helpers
*/
// @return number of payload items inside an encoded list.
function numItems(RLPItem memory item) private pure returns (uint256) {
if (item.len == 0) return 0;
uint256 count = 0;
uint256 currPtr = item.memPtr + _payloadOffset(item.memPtr);
uint256 endPtr = item.memPtr + item.len;
while (currPtr < endPtr) {
currPtr = currPtr + _itemLength(currPtr); // skip over an item
count++;
}
return count;
}
// @return entire rlp item byte length
function _itemLength(uint256 memPtr) private pure returns (uint256) {
uint256 itemLen;
uint256 byte0;
assembly {
byte0 := byte(0, mload(memPtr))
}
if (byte0 < STRING_SHORT_START) {
itemLen = 1;
} else if (byte0 < STRING_LONG_START) {
itemLen = byte0 - STRING_SHORT_START + 1;
} else if (byte0 < LIST_SHORT_START) {
assembly {
let byteLen := sub(byte0, 0xb7) // # of bytes the actual length is
memPtr := add(memPtr, 1) // skip over the first byte
/* 32 byte word size */
let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to get the len
itemLen := add(dataLen, add(byteLen, 1))
}
} else if (byte0 < LIST_LONG_START) {
itemLen = byte0 - LIST_SHORT_START + 1;
} else {
assembly {
let byteLen := sub(byte0, 0xf7)
memPtr := add(memPtr, 1)
let dataLen := div(mload(memPtr), exp(256, sub(32, byteLen))) // right shifting to the correct length
itemLen := add(dataLen, add(byteLen, 1))
}
}
return itemLen;
}
// @return number of bytes until the data
function _payloadOffset(uint256 memPtr) private pure returns (uint256) {
uint256 byte0;
assembly {
byte0 := byte(0, mload(memPtr))
}
if (byte0 < STRING_SHORT_START) {
return 0;
} else if (byte0 < STRING_LONG_START || (byte0 >= LIST_SHORT_START && byte0 < LIST_LONG_START)) {
return 1;
} else if (byte0 < LIST_SHORT_START) {
// being explicit
return byte0 - (STRING_LONG_START - 1) + 1;
} else {
return byte0 - (LIST_LONG_START - 1) + 1;
}
}
/*
* @param src Pointer to source
* @param dest Pointer to destination
* @param len Amount of memory to copy from the source
*/
function copy(uint256 src, uint256 dest, uint256 len) private pure {
if (len == 0) return;
// copy as many word sizes as possible
for (; len >= WORD_SIZE; len -= WORD_SIZE) {
assembly {
mstore(dest, mload(src))
}
src += WORD_SIZE;
dest += WORD_SIZE;
}
if (len > 0) {
// left over bytes. Mask is used to remove unwanted bytes from the word
uint256 mask = 256**(WORD_SIZE - len) - 1;
assembly {
let srcpart := and(mload(src), not(mask)) // zero out src
let destpart := and(mload(dest), mask) // retrieve the bytes
mstore(dest, or(destpart, srcpart))
}
}
}
}
// File: packages/evm/contracts/interfaces/IOracleAdapter.sol
pragma solidity ^0.8.17;
interface IOracleAdapter {
event HashStored(uint256 indexed id, bytes32 indexed hashes);
error InvalidBlockHeaderLength(uint256 length);
error InvalidBlockHeaderRLP();
error ConflictingBlockHeader(uint256 blockNumber, bytes32 reportedBlockHash, bytes32 storedBlockHash);
/// @dev Returns the hash for a given ID, as reported by the oracle.
/// @param domain Identifier for the domain to query.
/// @param id Identifier for the ID to query.
/// @return hash Bytes32 hash reported by the oracle for the given ID on the given domain.
/// @notice MUST return bytes32(0) if the oracle has not yet reported a hash for the given ID.
function getHashFromOracle(uint256 domain, uint256 id) external view returns (bytes32 hash);
}
// File: packages/evm/contracts/adapters/OracleAdapter.sol
pragma solidity ^0.8.17;
abstract contract OracleAdapter is IOracleAdapter {
mapping(uint256 => mapping(uint256 => bytes32)) public hashes;
/// @dev Returns the hash for a given domain and ID, as reported by the oracle.
/// @param domain Identifier for the domain to query.
/// @param id Identifier for the ID to query.
/// @return hash Bytes32 hash reported by the oracle for the given ID on the given domain.
/// @notice MUST return bytes32(0) if the oracle has not yet reported a hash for the given ID.
function getHashFromOracle(uint256 domain, uint256 id) external view returns (bytes32 hash) {
hash = hashes[domain][id];
}
/// @dev Stores a hash for a given domain and ID.
/// @param domain Identifier for the domain.
/// @param id Identifier for the ID of the hash.
/// @param hash Bytes32 hash value to store.
function _storeHash(uint256 domain, uint256 id, bytes32 hash) internal {
bytes32 currentHash = hashes[domain][id];
if (currentHash != hash) {
hashes[domain][id] = hash;
emit HashStored(id, hash);
}
}
}
// File: packages/evm/contracts/adapters/BlockHashOracleAdapter.sol
pragma solidity ^0.8.17;
abstract contract BlockHashOracleAdapter is OracleAdapter {
using RLPReader for RLPReader.RLPItem;
/// @dev Proves and stores valid ancestral block hashes for a given chain ID.
/// @param chainId The ID of the chain to prove block hashes for.
/// @param blockHeaders The RLP encoded block headers to prove the hashes for.
/// @notice Block headers should be ordered by descending block number and should start with a known block header.
function proveAncestralBlockHashes(uint256 chainId, bytes[] memory blockHeaders) external {
for (uint256 i = 0; i < blockHeaders.length; i++) {
RLPReader.RLPItem memory blockHeaderRLP = RLPReader.toRlpItem(blockHeaders[i]);
if (!blockHeaderRLP.isList()) revert InvalidBlockHeaderRLP();
RLPReader.RLPItem[] memory blockHeaderContent = blockHeaderRLP.toList();
// A block header should have between 15 and 17 elements (baseFee and withdrawalsRoot have been added later)
if (blockHeaderContent.length < 15 || blockHeaderContent.length > 17)
revert InvalidBlockHeaderLength(blockHeaderContent.length);
bytes32 blockParent = bytes32(blockHeaderContent[0].toUint());
uint256 blockNumber = uint256(blockHeaderContent[8].toUint());
bytes32 reportedBlockHash = keccak256(blockHeaders[i]);
bytes32 storedBlockHash = hashes[chainId][blockNumber];
if (reportedBlockHash != storedBlockHash)
revert ConflictingBlockHeader(blockNumber, reportedBlockHash, storedBlockHash);
_storeHash(chainId, blockNumber - 1, blockParent);
}
}
}
// File: packages/evm/contracts/adapters/AMB/IAMB.sol
pragma solidity ^0.8.17;
interface IAMB {
function messageSender() external view returns (address);
function messageSourceChainId() external view returns (bytes32);
function requireToPassMessage(address _contract, bytes memory _data, uint256 _gas) external returns (bytes32);
}
// File: packages/evm/contracts/adapters/AMB/AMBAdapter.sol
pragma solidity ^0.8.17;
contract AMBAdapter is OracleAdapter, BlockHashOracleAdapter {
IAMB public amb;
address public reporter;
bytes32 public chainId;
error ArrayLengthMissmatch(address emitter);
error UnauthorizedAMB(address emitter, address sender);
error UnauthorizedChainId(address emitter, bytes32 chainId);
error UnauthorizedHashReporter(address emitter, address reporter);
constructor(IAMB _amb, address _reporter, bytes32 _chainId) {
amb = _amb;
reporter = _reporter;
chainId = _chainId;
}
/// @dev Check that the amb, chainId, and owner are valid.
modifier onlyValid() {
if (msg.sender != address(amb)) revert UnauthorizedAMB(address(this), msg.sender);
if (amb.messageSourceChainId() != chainId) revert UnauthorizedChainId(address(this), chainId);
if (amb.messageSender() != reporter) revert UnauthorizedHashReporter(address(this), reporter);
_;
}
/// @dev Stores the hashes for a given array of idss.
/// @param ids Array of ids number for which to set the hashes.
/// @param _hashes Array of hashes to set for the given ids.
/// @notice Only callable by `amb` with a message passed from `reporter.
/// @notice Will revert if given array lengths do not match.
function storeHashes(uint256[] memory ids, bytes32[] memory _hashes) public onlyValid {
if (ids.length != _hashes.length) revert ArrayLengthMissmatch(address(this));
for (uint256 i = 0; i < ids.length; i++) {
_storeHash(uint256(chainId), ids[i], _hashes[i]);
}
}
}
// File: packages/evm/contracts/utils/HeaderStorage.sol
pragma solidity ^0.8.17;
contract HeaderStorage {
mapping(uint256 => bytes32) public headers;
event HeaderStored(uint256 indexed blockNumber, bytes32 indexed blockHeader);
error HeaderOutOfRange(address emitter, uint256 blockNumber);
/// @dev Stores and returns the header for the given block.
/// @param blockNumber Block number.
/// @return blockHeader Block header stored.
/// @notice Reverts if the given block header was not previously stored and is now out of range.
function storeBlockHeader(uint256 blockNumber) public returns (bytes32 blockHeader) {
blockHeader = headers[blockNumber];
if (blockHeader == 0) {
blockHeader = blockhash(blockNumber);
if (blockHeader == 0) revert HeaderOutOfRange(address(this), blockNumber);
headers[blockNumber] = blockHeader;
emit HeaderStored(blockNumber, blockHeader);
}
}
/// @dev Stores and returns the header for an array of given blocks.
/// @param blockNumbers Array of block numbers.
/// @return Array of block headers.
/// @notice Reverts if the given block header was not previously stored and is now out of range.
function storeBlockHeaders(uint256[] memory blockNumbers) public returns (bytes32[] memory) {
bytes32[] memory blockHeaders = new bytes32[](blockNumbers.length);
for (uint256 i = 0; i < blockNumbers.length; i++) {
blockHeaders[i] = storeBlockHeader(blockNumbers[i]);
}
return blockHeaders;
}
}
// File: packages/evm/contracts/adapters/AMB/AMBHeaderReporter.sol
pragma solidity ^0.8.17;
contract AMBHeaderReporter {
IAMB public immutable amb;
HeaderStorage public immutable headerStorage;
event HeaderReported(address indexed emitter, uint256 indexed blockNumber, bytes32 indexed blockHeader);
constructor(IAMB _amb, HeaderStorage _headerStorage) {
amb = _amb;
headerStorage = _headerStorage;
}
/// @dev Reports the given block headers to the oracleAdapter via the AMB.
/// @param blockNumbers Uint256 array of block number to pass over the AMB.
/// @param ambAdapter Address of the oracle adapter to pass the header to over the AMB.
/// @param receipt Bytes32 receipt for the transaction.
function reportHeaders(
uint256[] memory blockNumbers,
address ambAdapter,
uint256 gas
) public returns (bytes32 receipt) {
bytes32[] memory blockHeaders = headerStorage.storeBlockHeaders(blockNumbers);
bytes memory data = abi.encodeCall(AMBAdapter.storeHashes, (blockNumbers, blockHeaders));
receipt = amb.requireToPassMessage(ambAdapter, data, gas);
for (uint256 i = 0; i < blockNumbers.length; i++) {
emit HeaderReported(address(this), blockNumbers[i], blockHeaders[i]);
}
}
}
{
"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": {
"@_1117": {
"entryPoint": null,
"id": 1117,
"parameterSlots": 3,
"returnSlots": 0
},
"abi_decode_tuple_t_contract$_IAMB_$1060t_addresst_bytes32_fromMemory": {
"entryPoint": 125,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"validator_revert_contract_IAMB": {
"entryPoint": 102,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nativeSrc": "0:629:1",
"nodeType": "YulBlock",
"src": "0:629:1",
"statements": [
{
"nativeSrc": "6:3:1",
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nativeSrc": "65:86:1",
"nodeType": "YulBlock",
"src": "65:86:1",
"statements": [
{
"body": {
"nativeSrc": "129:16:1",
"nodeType": "YulBlock",
"src": "129:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "138:1:1",
"nodeType": "YulLiteral",
"src": "138:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "141:1:1",
"nodeType": "YulLiteral",
"src": "141:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "131:6:1",
"nodeType": "YulIdentifier",
"src": "131:6:1"
},
"nativeSrc": "131:12:1",
"nodeType": "YulFunctionCall",
"src": "131:12:1"
},
"nativeSrc": "131:12:1",
"nodeType": "YulExpressionStatement",
"src": "131:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "88:5:1",
"nodeType": "YulIdentifier",
"src": "88:5:1"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "99:5:1",
"nodeType": "YulIdentifier",
"src": "99:5:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "114:3:1",
"nodeType": "YulLiteral",
"src": "114:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "119:1:1",
"nodeType": "YulLiteral",
"src": "119:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "110:3:1",
"nodeType": "YulIdentifier",
"src": "110:3:1"
},
"nativeSrc": "110:11:1",
"nodeType": "YulFunctionCall",
"src": "110:11:1"
},
{
"kind": "number",
"nativeSrc": "123:1:1",
"nodeType": "YulLiteral",
"src": "123:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "106:3:1",
"nodeType": "YulIdentifier",
"src": "106:3:1"
},
"nativeSrc": "106:19:1",
"nodeType": "YulFunctionCall",
"src": "106:19:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "95:3:1",
"nodeType": "YulIdentifier",
"src": "95:3:1"
},
"nativeSrc": "95:31:1",
"nodeType": "YulFunctionCall",
"src": "95:31:1"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "85:2:1",
"nodeType": "YulIdentifier",
"src": "85:2:1"
},
"nativeSrc": "85:42:1",
"nodeType": "YulFunctionCall",
"src": "85:42:1"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "78:6:1",
"nodeType": "YulIdentifier",
"src": "78:6:1"
},
"nativeSrc": "78:50:1",
"nodeType": "YulFunctionCall",
"src": "78:50:1"
},
"nativeSrc": "75:70:1",
"nodeType": "YulIf",
"src": "75:70:1"
}
]
},
"name": "validator_revert_contract_IAMB",
"nativeSrc": "14:137:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "54:5:1",
"nodeType": "YulTypedName",
"src": "54:5:1",
"type": ""
}
],
"src": "14:137:1"
},
{
"body": {
"nativeSrc": "284:343:1",
"nodeType": "YulBlock",
"src": "284:343:1",
"statements": [
{
"body": {
"nativeSrc": "330:16:1",
"nodeType": "YulBlock",
"src": "330:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "339:1:1",
"nodeType": "YulLiteral",
"src": "339:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "342:1:1",
"nodeType": "YulLiteral",
"src": "342:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "332:6:1",
"nodeType": "YulIdentifier",
"src": "332:6:1"
},
"nativeSrc": "332:12:1",
"nodeType": "YulFunctionCall",
"src": "332:12:1"
},
"nativeSrc": "332:12:1",
"nodeType": "YulExpressionStatement",
"src": "332:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "305:7:1",
"nodeType": "YulIdentifier",
"src": "305:7:1"
},
{
"name": "headStart",
"nativeSrc": "314:9:1",
"nodeType": "YulIdentifier",
"src": "314:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "301:3:1",
"nodeType": "YulIdentifier",
"src": "301:3:1"
},
"nativeSrc": "301:23:1",
"nodeType": "YulFunctionCall",
"src": "301:23:1"
},
{
"kind": "number",
"nativeSrc": "326:2:1",
"nodeType": "YulLiteral",
"src": "326:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "297:3:1",
"nodeType": "YulIdentifier",
"src": "297:3:1"
},
"nativeSrc": "297:32:1",
"nodeType": "YulFunctionCall",
"src": "297:32:1"
},
"nativeSrc": "294:52:1",
"nodeType": "YulIf",
"src": "294:52:1"
},
{
"nativeSrc": "355:29:1",
"nodeType": "YulVariableDeclaration",
"src": "355:29:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "374:9:1",
"nodeType": "YulIdentifier",
"src": "374:9:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "368:5:1",
"nodeType": "YulIdentifier",
"src": "368:5:1"
},
"nativeSrc": "368:16:1",
"nodeType": "YulFunctionCall",
"src": "368:16:1"
},
"variables": [
{
"name": "value",
"nativeSrc": "359:5:1",
"nodeType": "YulTypedName",
"src": "359:5:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nativeSrc": "424:5:1",
"nodeType": "YulIdentifier",
"src": "424:5:1"
}
],
"functionName": {
"name": "validator_revert_contract_IAMB",
"nativeSrc": "393:30:1",
"nodeType": "YulIdentifier",
"src": "393:30:1"
},
"nativeSrc": "393:37:1",
"nodeType": "YulFunctionCall",
"src": "393:37:1"
},
"nativeSrc": "393:37:1",
"nodeType": "YulExpressionStatement",
"src": "393:37:1"
},
{
"nativeSrc": "439:15:1",
"nodeType": "YulAssignment",
"src": "439:15:1",
"value": {
"name": "value",
"nativeSrc": "449:5:1",
"nodeType": "YulIdentifier",
"src": "449:5:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "439:6:1",
"nodeType": "YulIdentifier",
"src": "439:6:1"
}
]
},
{
"nativeSrc": "463:40:1",
"nodeType": "YulVariableDeclaration",
"src": "463:40:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "488:9:1",
"nodeType": "YulIdentifier",
"src": "488:9:1"
},
{
"kind": "number",
"nativeSrc": "499:2:1",
"nodeType": "YulLiteral",
"src": "499:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "484:3:1",
"nodeType": "YulIdentifier",
"src": "484:3:1"
},
"nativeSrc": "484:18:1",
"nodeType": "YulFunctionCall",
"src": "484:18:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "478:5:1",
"nodeType": "YulIdentifier",
"src": "478:5:1"
},
"nativeSrc": "478:25:1",
"nodeType": "YulFunctionCall",
"src": "478:25:1"
},
"variables": [
{
"name": "value_1",
"nativeSrc": "467:7:1",
"nodeType": "YulTypedName",
"src": "467:7:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value_1",
"nativeSrc": "543:7:1",
"nodeType": "YulIdentifier",
"src": "543:7:1"
}
],
"functionName": {
"name": "validator_revert_contract_IAMB",
"nativeSrc": "512:30:1",
"nodeType": "YulIdentifier",
"src": "512:30:1"
},
"nativeSrc": "512:39:1",
"nodeType": "YulFunctionCall",
"src": "512:39:1"
},
"nativeSrc": "512:39:1",
"nodeType": "YulExpressionStatement",
"src": "512:39:1"
},
{
"nativeSrc": "560:17:1",
"nodeType": "YulAssignment",
"src": "560:17:1",
"value": {
"name": "value_1",
"nativeSrc": "570:7:1",
"nodeType": "YulIdentifier",
"src": "570:7:1"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "560:6:1",
"nodeType": "YulIdentifier",
"src": "560:6:1"
}
]
},
{
"nativeSrc": "586:35:1",
"nodeType": "YulAssignment",
"src": "586:35:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "606:9:1",
"nodeType": "YulIdentifier",
"src": "606:9:1"
},
{
"kind": "number",
"nativeSrc": "617:2:1",
"nodeType": "YulLiteral",
"src": "617:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "602:3:1",
"nodeType": "YulIdentifier",
"src": "602:3:1"
},
"nativeSrc": "602:18:1",
"nodeType": "YulFunctionCall",
"src": "602:18:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "596:5:1",
"nodeType": "YulIdentifier",
"src": "596:5:1"
},
"nativeSrc": "596:25:1",
"nodeType": "YulFunctionCall",
"src": "596:25:1"
},
"variableNames": [
{
"name": "value2",
"nativeSrc": "586:6:1",
"nodeType": "YulIdentifier",
"src": "586:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_contract$_IAMB_$1060t_addresst_bytes32_fromMemory",
"nativeSrc": "156:471:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "234:9:1",
"nodeType": "YulTypedName",
"src": "234:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "245:7:1",
"nodeType": "YulTypedName",
"src": "245:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "257:6:1",
"nodeType": "YulTypedName",
"src": "257:6:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "265:6:1",
"nodeType": "YulTypedName",
"src": "265:6:1",
"type": ""
},
{
"name": "value2",
"nativeSrc": "273:6:1",
"nodeType": "YulTypedName",
"src": "273:6:1",
"type": ""
}
],
"src": "156:471:1"
}
]
},
"contents": "{\n { }\n function validator_revert_contract_IAMB(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_contract$_IAMB_$1060t_addresst_bytes32_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_contract_IAMB(value)\n value0 := value\n let value_1 := mload(add(headStart, 32))\n validator_revert_contract_IAMB(value_1)\n value1 := value_1\n value2 := mload(add(headStart, 64))\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405234801561000f575f80fd5b50604051610d33380380610d3383398101604081905261002e9161007d565b600180546001600160a01b039485166001600160a01b03199182161790915560028054939094169216919091179091556003556100bd565b6001600160a01b038116811461007a575f80fd5b50565b5f805f6060848603121561008f575f80fd5b835161009a81610066565b60208501519093506100ab81610066565b80925050604084015190509250925092565b610c69806100ca5f395ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c80638599a969116100585780638599a969146100d65780639a8a05921461010c578063d13372ca14610115578063e81900a61461013c575f80fd5b8063010ec4411461007e5780631062b39a146100ae57806369f55903146100c1575b5f80fd5b600254610091906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600154610091906001600160a01b031681565b6100d46100cf366004610997565b61014f565b005b6100fe6100e4366004610a4a565b5f9182526020828152604080842092845291905290205490565b6040519081526020016100a5565b6100fe60035481565b6100fe610123366004610a4a565b5f60208181529281526040808220909352908152205481565b6100d461014a366004610a6a565b610355565b6001546001600160a01b0316331461018757604051634848191960e01b81523060048201523360248201526044015b60405180910390fd5b60035460015f9054906101000a90046001600160a01b03166001600160a01b0316639e307dff6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101fe9190610b71565b146102295760035460405163a015394d60e01b8152306004820152602481019190915260440161017e565b6002546001546040805163d67bdd2560e01b815290516001600160a01b03938416939092169163d67bdd25916004808201926020929091908290030181865afa158015610278573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029c9190610b88565b6001600160a01b0316146102d857600254604051630169b0ab60e61b81523060048201526001600160a01b03909116602482015260440161017e565b80518251146102fc5760405163e58349fb60e01b815230600482015260240161017e565b5f5b8251811015610350576103486003545f1c84838151811061032157610321610bae565b602002602001015184848151811061033b5761033b610bae565b60200260200101516104e9565b6001016102fe565b505050565b5f5b8151811015610350575f6103aa83838151811061037657610376610bae565b60200260200101516040805180820182525f8082526020918201528151808301909252825182529182019181019190915290565b90506103b581610551565b6103d25760405163e4508b9f60e01b815260040160405180910390fd5b5f6103dc82610588565b9050600f815110806103ef575060118151115b156104125780516040516327f5b84760e21b815260040161017e91815260200190565b5f610435825f8151811061042857610428610bae565b602002602001015161068e565b5f1b90505f6104508360088151811061042857610428610bae565b90505f86868151811061046557610465610bae565b6020908102919091018101518051908201205f8a8152808352604080822086835290935291909120549091508082146104c25760405163c442fd2b60e01b815260048101849052602481018390526044810182905260640161017e565b6104d7896104d1600186610bd6565b866104e9565b50506001909401935061035792505050565b5f8381526020818152604080832085845290915290205481811461054b575f8481526020818152604080832086845290915280822084905551839185917f7c57815e36323391c63e53a2fe2969599eb6dbcf52484a3bd8909aef4a6704d79190a35b50505050565b80515f90810361056257505f919050565b602082015180515f1a9060c082101561057e57505f9392505050565b5060019392505050565b606061059382610551565b61059b575f80fd5b5f6105a5836106d9565b90505f8167ffffffffffffffff8111156105c1576105c16108c3565b60405190808252806020026020018201604052801561060557816020015b604080518082019091525f80825260208201528152602001906001900390816105df5790505b5090505f6106168560200151610759565b85602001516106259190610bef565b90505f805b848110156106835761063b836107d9565b915060405180604001604052808381526020018481525084828151811061066457610664610bae565b60209081029190910101526106798284610bef565b925060010161062a565b509195945050505050565b80515f90158015906106a257508151602110155b6106aa575f80fd5b5f806106b584610881565b8151919350915060208210156106d15760208290036101000a90045b949350505050565b80515f9081036106ea57505f919050565b5f806106f98460200151610759565b84602001516107089190610bef565b90505f845f0151856020015161071e9190610bef565b90505b8082101561075057610732826107d9565b61073c9083610bef565b91508261074881610c02565b935050610721565b50909392505050565b80515f90811a608081101561077057505f92915050565b60b881108061078b575060c0811080159061078b575060f881105b156107995750600192915050565b60c08110156107cd576107ae600160b8610c1a565b6107bb9060ff1682610bd6565b6107c6906001610bef565b9392505050565b6107ae600160f8610c1a565b80515f908190811a60808110156107f3576001915061087a565b60b881101561081957610807608082610bd6565b610812906001610bef565b915061087a565b60c08110156108465760b78103600185019450806020036101000a8551046001820181019350505061087a565b60f881101561085a5761080760c082610bd6565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b5f805f6108918460200151610759565b90505f8185602001516108a49190610bef565b90505f82865f01516108b69190610bd6565b9196919550909350505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610900576109006108c3565b604052919050565b5f67ffffffffffffffff821115610921576109216108c3565b5060051b60200190565b5f82601f83011261093a575f80fd5b8135602061094f61094a83610908565b6108d7565b8083825260208201915060208460051b870101935086841115610970575f80fd5b602086015b8481101561098c5780358352918301918301610975565b509695505050505050565b5f80604083850312156109a8575f80fd5b823567ffffffffffffffff808211156109bf575f80fd5b818501915085601f8301126109d2575f80fd5b813560206109e261094a83610908565b82815260059290921b84018101918181019089841115610a00575f80fd5b948201945b83861015610a1e57853582529482019490820190610a05565b96505086013592505080821115610a33575f80fd5b50610a408582860161092b565b9150509250929050565b5f8060408385031215610a5b575f80fd5b50508035926020909101359150565b5f806040808486031215610a7c575f80fd5b8335925060208085013567ffffffffffffffff80821115610a9b575f80fd5b8187019150601f88601f840112610ab0575f80fd5b8235610abe61094a82610908565b81815260059190911b8401850190858101908b831115610adc575f80fd5b8686015b83811015610b5e57803586811115610af6575f80fd5b8701603f81018e13610b06575f80fd5b8881013587811115610b1a57610b1a6108c3565b610b2b818801601f19168b016108d7565b8181528f8c838501011115610b3e575f80fd5b818c84018c8301375f9181018b0191909152845250918701918701610ae0565b5080985050505050505050509250929050565b5f60208284031215610b81575f80fd5b5051919050565b5f60208284031215610b98575f80fd5b81516001600160a01b03811681146107c6575f80fd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610be957610be9610bc2565b92915050565b80820180821115610be957610be9610bc2565b5f60018201610c1357610c13610bc2565b5060010190565b60ff8281168282160390811115610be957610be9610bc256fea2646970667358221220a8ab8fea15edbb0fe64fa7dedb2949b970cb5c60b56b35b8c2c754afdb78320264736f6c63430008160033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xD33 CODESIZE SUB DUP1 PUSH2 0xD33 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x7D JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP4 SWAP1 SWAP5 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x3 SSTORE PUSH2 0xBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x8F JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x9A DUP2 PUSH2 0x66 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0xAB DUP2 PUSH2 0x66 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0xC69 DUP1 PUSH2 0xCA PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7A JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8599A969 GT PUSH2 0x58 JUMPI DUP1 PUSH4 0x8599A969 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0x9A8A0592 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xD13372CA EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0xE81900A6 EQ PUSH2 0x13C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x10EC441 EQ PUSH2 0x7E JUMPI DUP1 PUSH4 0x1062B39A EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x69F55903 EQ PUSH2 0xC1 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x91 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x91 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xD4 PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFE PUSH2 0xE4 CALLDATASIZE PUSH1 0x4 PUSH2 0xA4A JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP3 DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA5 JUMP JUMPDEST PUSH2 0xFE PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xFE PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0xA4A JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP2 DUP2 MSTORE SWAP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 MSTORE SWAP1 DUP2 MSTORE KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD4 PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x355 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x187 JUMPI PUSH1 0x40 MLOAD PUSH4 0x48481919 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9E307DFF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 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 0x1FE SWAP2 SWAP1 PUSH2 0xB71 JUMP JUMPDEST EQ PUSH2 0x229 JUMPI PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA015394D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 ADD PUSH2 0x17E JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD67BDD25 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD67BDD25 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x278 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 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 0x29C SWAP2 SWAP1 PUSH2 0xB88 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2D8 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x169B0AB PUSH1 0xE6 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x17E JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH4 0xE58349FB PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x17E JUMP JUMPDEST PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x350 JUMPI PUSH2 0x348 PUSH1 0x3 SLOAD PUSH0 SHR DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x321 JUMPI PUSH2 0x321 PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x33B JUMPI PUSH2 0x33B PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x4E9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2FE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x350 JUMPI PUSH0 PUSH2 0x3AA DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x376 JUMPI PUSH2 0x376 PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE DUP3 MLOAD DUP3 MSTORE SWAP2 DUP3 ADD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x3B5 DUP2 PUSH2 0x551 JUMP JUMPDEST PUSH2 0x3D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE4508B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3DC DUP3 PUSH2 0x588 JUMP JUMPDEST SWAP1 POP PUSH1 0xF DUP2 MLOAD LT DUP1 PUSH2 0x3EF JUMPI POP PUSH1 0x11 DUP2 MLOAD GT JUMPDEST ISZERO PUSH2 0x412 JUMPI DUP1 MLOAD PUSH1 0x40 MLOAD PUSH4 0x27F5B847 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x435 DUP3 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x428 JUMPI PUSH2 0x428 PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x68E JUMP JUMPDEST PUSH0 SHL SWAP1 POP PUSH0 PUSH2 0x450 DUP4 PUSH1 0x8 DUP2 MLOAD DUP2 LT PUSH2 0x428 JUMPI PUSH2 0x428 PUSH2 0xBAE JUMP JUMPDEST SWAP1 POP PUSH0 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x465 JUMPI PUSH2 0x465 PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP1 MLOAD SWAP1 DUP3 ADD KECCAK256 PUSH0 DUP11 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP7 DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP1 DUP3 EQ PUSH2 0x4C2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC442FD2B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x17E JUMP JUMPDEST PUSH2 0x4D7 DUP10 PUSH2 0x4D1 PUSH1 0x1 DUP7 PUSH2 0xBD6 JUMP JUMPDEST DUP7 PUSH2 0x4E9 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 POP PUSH2 0x357 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 DUP2 EQ PUSH2 0x54B JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE MLOAD DUP4 SWAP2 DUP6 SWAP2 PUSH32 0x7C57815E36323391C63E53A2FE2969599EB6DBCF52484A3BD8909AEF4A6704D7 SWAP2 SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH0 SWAP1 DUP2 SUB PUSH2 0x562 JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD DUP1 MLOAD PUSH0 BYTE SWAP1 PUSH1 0xC0 DUP3 LT ISZERO PUSH2 0x57E JUMPI POP PUSH0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x593 DUP3 PUSH2 0x551 JUMP JUMPDEST PUSH2 0x59B JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH2 0x5A5 DUP4 PUSH2 0x6D9 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C1 JUMPI PUSH2 0x5C1 PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x605 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x5DF JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH0 PUSH2 0x616 DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x759 JUMP JUMPDEST DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x625 SWAP2 SWAP1 PUSH2 0xBEF JUMP JUMPDEST SWAP1 POP PUSH0 DUP1 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x683 JUMPI PUSH2 0x63B DUP4 PUSH2 0x7D9 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x664 JUMPI PUSH2 0x664 PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x679 DUP3 DUP5 PUSH2 0xBEF JUMP JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0x62A JUMP JUMPDEST POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH0 SWAP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x6A2 JUMPI POP DUP2 MLOAD PUSH1 0x21 LT ISZERO JUMPDEST PUSH2 0x6AA JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 PUSH2 0x6B5 DUP5 PUSH2 0x881 JUMP JUMPDEST DUP2 MLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x20 DUP3 LT ISZERO PUSH2 0x6D1 JUMPI PUSH1 0x20 DUP3 SWAP1 SUB PUSH2 0x100 EXP SWAP1 DIV JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH0 SWAP1 DUP2 SUB PUSH2 0x6EA JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x6F9 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x759 JUMP JUMPDEST DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x708 SWAP2 SWAP1 PUSH2 0xBEF JUMP JUMPDEST SWAP1 POP PUSH0 DUP5 PUSH0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x71E SWAP2 SWAP1 PUSH2 0xBEF JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x750 JUMPI PUSH2 0x732 DUP3 PUSH2 0x7D9 JUMP JUMPDEST PUSH2 0x73C SWAP1 DUP4 PUSH2 0xBEF JUMP JUMPDEST SWAP2 POP DUP3 PUSH2 0x748 DUP2 PUSH2 0xC02 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x721 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH0 SWAP1 DUP2 BYTE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x770 JUMPI POP PUSH0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xB8 DUP2 LT DUP1 PUSH2 0x78B JUMPI POP PUSH1 0xC0 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x78B JUMPI POP PUSH1 0xF8 DUP2 LT JUMPDEST ISZERO PUSH2 0x799 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x7CD JUMPI PUSH2 0x7AE PUSH1 0x1 PUSH1 0xB8 PUSH2 0xC1A JUMP JUMPDEST PUSH2 0x7BB SWAP1 PUSH1 0xFF AND DUP3 PUSH2 0xBD6 JUMP JUMPDEST PUSH2 0x7C6 SWAP1 PUSH1 0x1 PUSH2 0xBEF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x7AE PUSH1 0x1 PUSH1 0xF8 PUSH2 0xC1A JUMP JUMPDEST DUP1 MLOAD PUSH0 SWAP1 DUP2 SWAP1 DUP2 BYTE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x87A JUMP JUMPDEST PUSH1 0xB8 DUP2 LT ISZERO PUSH2 0x819 JUMPI PUSH2 0x807 PUSH1 0x80 DUP3 PUSH2 0xBD6 JUMP JUMPDEST PUSH2 0x812 SWAP1 PUSH1 0x1 PUSH2 0xBEF JUMP JUMPDEST SWAP2 POP PUSH2 0x87A JUMP JUMPDEST PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x846 JUMPI PUSH1 0xB7 DUP2 SUB PUSH1 0x1 DUP6 ADD SWAP5 POP DUP1 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP6 MLOAD DIV PUSH1 0x1 DUP3 ADD DUP2 ADD SWAP4 POP POP POP PUSH2 0x87A JUMP JUMPDEST PUSH1 0xF8 DUP2 LT ISZERO PUSH2 0x85A JUMPI PUSH2 0x807 PUSH1 0xC0 DUP3 PUSH2 0xBD6 JUMP JUMPDEST PUSH1 0xF7 DUP2 SUB PUSH1 0x1 DUP6 ADD SWAP5 POP DUP1 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP6 MLOAD DIV PUSH1 0x1 DUP3 ADD DUP2 ADD SWAP4 POP POP POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH2 0x891 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x759 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x8A4 SWAP2 SWAP1 PUSH2 0xBEF JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 DUP7 PUSH0 ADD MLOAD PUSH2 0x8B6 SWAP2 SWAP1 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x900 JUMPI PUSH2 0x900 PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x921 JUMPI PUSH2 0x921 PUSH2 0x8C3 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x93A JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x94F PUSH2 0x94A DUP4 PUSH2 0x908 JUMP JUMPDEST PUSH2 0x8D7 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP5 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP7 DUP5 GT ISZERO PUSH2 0x970 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x98C JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x975 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9A8 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x9BF JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9D2 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x9E2 PUSH2 0x94A DUP4 PUSH2 0x908 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP10 DUP5 GT ISZERO PUSH2 0xA00 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP5 DUP3 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0xA1E JUMPI DUP6 CALLDATALOAD DUP3 MSTORE SWAP5 DUP3 ADD SWAP5 SWAP1 DUP3 ADD SWAP1 PUSH2 0xA05 JUMP JUMPDEST SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0xA33 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0xA40 DUP6 DUP3 DUP7 ADD PUSH2 0x92B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA5B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP1 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA7C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP1 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xA9B JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP PUSH1 0x1F DUP9 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xAB0 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xABE PUSH2 0x94A DUP3 PUSH2 0x908 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x5 SWAP2 SWAP1 SWAP2 SHL DUP5 ADD DUP6 ADD SWAP1 DUP6 DUP2 ADD SWAP1 DUP12 DUP4 GT ISZERO PUSH2 0xADC JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP7 DUP7 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB5E JUMPI DUP1 CALLDATALOAD DUP7 DUP2 GT ISZERO PUSH2 0xAF6 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP8 ADD PUSH1 0x3F DUP2 ADD DUP15 SGT PUSH2 0xB06 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP9 DUP2 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0xB1A JUMPI PUSH2 0xB1A PUSH2 0x8C3 JUMP JUMPDEST PUSH2 0xB2B DUP2 DUP9 ADD PUSH1 0x1F NOT AND DUP12 ADD PUSH2 0x8D7 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP16 DUP13 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0xB3E JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 DUP13 DUP5 ADD DUP13 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD DUP12 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MSTORE POP SWAP2 DUP8 ADD SWAP2 DUP8 ADD PUSH2 0xAE0 JUMP JUMPDEST POP DUP1 SWAP9 POP POP POP POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB81 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB98 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7C6 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xBE9 JUMPI PUSH2 0xBE9 PUSH2 0xBC2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xBE9 JUMPI PUSH2 0xBE9 PUSH2 0xBC2 JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0xC13 JUMPI PUSH2 0xC13 PUSH2 0xBC2 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0xBE9 JUMPI PUSH2 0xBE9 PUSH2 0xBC2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xAB DUP16 0xEA ISZERO 0xED 0xBB 0xF 0xE6 0x4F 0xA7 0xDE 0xDB 0x29 0x49 0xB9 PUSH17 0xCB5C60B56B35B8C2C754AFDB7832026473 PUSH16 0x6C634300081600330000000000000000 ",
"sourceMap": "14913:1585:0:-:0;;;15305:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15375:3;:10;;-1:-1:-1;;;;;15375:10:0;;;-1:-1:-1;;;;;;15375:10:0;;;;;;;15395:8;:20;;;;;;;;;;;;;;;15425:7;:18;14913:1585;;14:137:1;-1:-1:-1;;;;;95:31:1;;85:42;;75:70;;141:1;138;131:12;75:70;14:137;:::o;156:471::-;257:6;265;273;326:2;314:9;305:7;301:23;297:32;294:52;;;342:1;339;332:12;294:52;374:9;368:16;393:37;424:5;393:37;:::i;:::-;499:2;484:18;;478:25;449:5;;-1:-1:-1;512:39:1;478:25;512:39;:::i;:::-;570:7;560:17;;;617:2;606:9;602:18;596:25;586:35;;156:471;;;;;:::o;:::-;14913:1585:0;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_itemLength_697": {
"entryPoint": 2009,
"id": 697,
"parameterSlots": 1,
"returnSlots": 1
},
"@_payloadOffset_756": {
"entryPoint": 1881,
"id": 756,
"parameterSlots": 1,
"returnSlots": 1
},
"@_storeHash_904": {
"entryPoint": 1257,
"id": 904,
"parameterSlots": 3,
"returnSlots": 0
},
"@amb_1068": {
"entryPoint": null,
"id": 1068,
"parameterSlots": 0,
"returnSlots": 0
},
"@chainId_1072": {
"entryPoint": null,
"id": 1072,
"parameterSlots": 0,
"returnSlots": 0
},
"@getHashFromOracle_867": {
"entryPoint": null,
"id": 867,
"parameterSlots": 2,
"returnSlots": 1
},
"@hashes_848": {
"entryPoint": null,
"id": 848,
"parameterSlots": 0,
"returnSlots": 0
},
"@isList_322": {
"entryPoint": 1361,
"id": 322,
"parameterSlots": 1,
"returnSlots": 1
},
"@numItems_637": {
"entryPoint": 1753,
"id": 637,
"parameterSlots": 1,
"returnSlots": 1
},
"@payloadLocation_189": {
"entryPoint": 2177,
"id": 189,
"parameterSlots": 1,
"returnSlots": 2
},
"@proveAncestralBlockHashes_1036": {
"entryPoint": 853,
"id": 1036,
"parameterSlots": 2,
"returnSlots": 0
},
"@reporter_1070": {
"entryPoint": null,
"id": 1070,
"parameterSlots": 0,
"returnSlots": 0
},
"@storeHashes_1219": {
"entryPoint": 335,
"id": 1219,
"parameterSlots": 2,
"returnSlots": 0
},
"@toList_289": {
"entryPoint": 1416,
"id": 289,
"parameterSlots": 1,
"returnSlots": 1
},
"@toRlpItem_110": {
"entryPoint": null,
"id": 110,
"parameterSlots": 1,
"returnSlots": 1
},
"@toUint_509": {
"entryPoint": 1678,
"id": 509,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_decode_array_bytes32_dyn": {
"entryPoint": 2347,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address_fromMemory": {
"entryPoint": 2952,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_array$_t_bytes32_$dyn_memory_ptr": {
"entryPoint": 2455,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_bytes32_fromMemory": {
"entryPoint": 2929,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256t_array$_t_bytes_memory_ptr_$dyn_memory_ptr": {
"entryPoint": 2666,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_uint256t_uint256": {
"entryPoint": 2634,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_contract$_IAMB_$1060__to_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256_t_bytes32_t_bytes32__to_t_uint256_t_bytes32_t_bytes32__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 2263,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_allocation_size_array_uint256_dyn": {
"entryPoint": 2312,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 3055,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint256": {
"entryPoint": 3030,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_sub_t_uint8": {
"entryPoint": 3098,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"increment_t_uint256": {
"entryPoint": 3074,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 3010,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 2990,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 2243,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nativeSrc": "0:7305:1",
"nodeType": "YulBlock",
"src": "0:7305:1",
"statements": [
{
"nativeSrc": "6:3:1",
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nativeSrc": "115:102:1",
"nodeType": "YulBlock",
"src": "115:102:1",
"statements": [
{
"nativeSrc": "125:26:1",
"nodeType": "YulAssignment",
"src": "125:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "137:9:1",
"nodeType": "YulIdentifier",
"src": "137:9:1"
},
{
"kind": "number",
"nativeSrc": "148:2:1",
"nodeType": "YulLiteral",
"src": "148:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "133:3:1",
"nodeType": "YulIdentifier",
"src": "133:3:1"
},
"nativeSrc": "133:18:1",
"nodeType": "YulFunctionCall",
"src": "133:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "125:4:1",
"nodeType": "YulIdentifier",
"src": "125:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "167:9:1",
"nodeType": "YulIdentifier",
"src": "167:9:1"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "182:6:1",
"nodeType": "YulIdentifier",
"src": "182:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "198:3:1",
"nodeType": "YulLiteral",
"src": "198:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "203:1:1",
"nodeType": "YulLiteral",
"src": "203:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "194:3:1",
"nodeType": "YulIdentifier",
"src": "194:3:1"
},
"nativeSrc": "194:11:1",
"nodeType": "YulFunctionCall",
"src": "194:11:1"
},
{
"kind": "number",
"nativeSrc": "207:1:1",
"nodeType": "YulLiteral",
"src": "207:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "190:3:1",
"nodeType": "YulIdentifier",
"src": "190:3:1"
},
"nativeSrc": "190:19:1",
"nodeType": "YulFunctionCall",
"src": "190:19:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "178:3:1",
"nodeType": "YulIdentifier",
"src": "178:3:1"
},
"nativeSrc": "178:32:1",
"nodeType": "YulFunctionCall",
"src": "178:32:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "160:6:1",
"nodeType": "YulIdentifier",
"src": "160:6:1"
},
"nativeSrc": "160:51:1",
"nodeType": "YulFunctionCall",
"src": "160:51:1"
},
"nativeSrc": "160:51:1",
"nodeType": "YulExpressionStatement",
"src": "160:51:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nativeSrc": "14:203:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "84:9:1",
"nodeType": "YulTypedName",
"src": "84:9:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "95:6:1",
"nodeType": "YulTypedName",
"src": "95:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "106:4:1",
"nodeType": "YulTypedName",
"src": "106:4:1",
"type": ""
}
],
"src": "14:203:1"
},
{
"body": {
"nativeSrc": "336:102:1",
"nodeType": "YulBlock",
"src": "336:102:1",
"statements": [
{
"nativeSrc": "346:26:1",
"nodeType": "YulAssignment",
"src": "346:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "358:9:1",
"nodeType": "YulIdentifier",
"src": "358:9:1"
},
{
"kind": "number",
"nativeSrc": "369:2:1",
"nodeType": "YulLiteral",
"src": "369:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "354:3:1",
"nodeType": "YulIdentifier",
"src": "354:3:1"
},
"nativeSrc": "354:18:1",
"nodeType": "YulFunctionCall",
"src": "354:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "346:4:1",
"nodeType": "YulIdentifier",
"src": "346:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "388:9:1",
"nodeType": "YulIdentifier",
"src": "388:9:1"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "403:6:1",
"nodeType": "YulIdentifier",
"src": "403:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "419:3:1",
"nodeType": "YulLiteral",
"src": "419:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "424:1:1",
"nodeType": "YulLiteral",
"src": "424:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "415:3:1",
"nodeType": "YulIdentifier",
"src": "415:3:1"
},
"nativeSrc": "415:11:1",
"nodeType": "YulFunctionCall",
"src": "415:11:1"
},
{
"kind": "number",
"nativeSrc": "428:1:1",
"nodeType": "YulLiteral",
"src": "428:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "411:3:1",
"nodeType": "YulIdentifier",
"src": "411:3:1"
},
"nativeSrc": "411:19:1",
"nodeType": "YulFunctionCall",
"src": "411:19:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "399:3:1",
"nodeType": "YulIdentifier",
"src": "399:3:1"
},
"nativeSrc": "399:32:1",
"nodeType": "YulFunctionCall",
"src": "399:32:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "381:6:1",
"nodeType": "YulIdentifier",
"src": "381:6:1"
},
"nativeSrc": "381:51:1",
"nodeType": "YulFunctionCall",
"src": "381:51:1"
},
"nativeSrc": "381:51:1",
"nodeType": "YulExpressionStatement",
"src": "381:51:1"
}
]
},
"name": "abi_encode_tuple_t_contract$_IAMB_$1060__to_t_address__fromStack_reversed",
"nativeSrc": "222:216:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "305:9:1",
"nodeType": "YulTypedName",
"src": "305:9:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "316:6:1",
"nodeType": "YulTypedName",
"src": "316:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "327:4:1",
"nodeType": "YulTypedName",
"src": "327:4:1",
"type": ""
}
],
"src": "222:216:1"
},
{
"body": {
"nativeSrc": "475:95:1",
"nodeType": "YulBlock",
"src": "475:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "492:1:1",
"nodeType": "YulLiteral",
"src": "492:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "499:3:1",
"nodeType": "YulLiteral",
"src": "499:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nativeSrc": "504:10:1",
"nodeType": "YulLiteral",
"src": "504:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "495:3:1",
"nodeType": "YulIdentifier",
"src": "495:3:1"
},
"nativeSrc": "495:20:1",
"nodeType": "YulFunctionCall",
"src": "495:20:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "485:6:1",
"nodeType": "YulIdentifier",
"src": "485:6:1"
},
"nativeSrc": "485:31:1",
"nodeType": "YulFunctionCall",
"src": "485:31:1"
},
"nativeSrc": "485:31:1",
"nodeType": "YulExpressionStatement",
"src": "485:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "532:1:1",
"nodeType": "YulLiteral",
"src": "532:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "535:4:1",
"nodeType": "YulLiteral",
"src": "535:4:1",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "525:6:1",
"nodeType": "YulIdentifier",
"src": "525:6:1"
},
"nativeSrc": "525:15:1",
"nodeType": "YulFunctionCall",
"src": "525:15:1"
},
"nativeSrc": "525:15:1",
"nodeType": "YulExpressionStatement",
"src": "525:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "556:1:1",
"nodeType": "YulLiteral",
"src": "556:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "559:4:1",
"nodeType": "YulLiteral",
"src": "559:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "549:6:1",
"nodeType": "YulIdentifier",
"src": "549:6:1"
},
"nativeSrc": "549:15:1",
"nodeType": "YulFunctionCall",
"src": "549:15:1"
},
"nativeSrc": "549:15:1",
"nodeType": "YulExpressionStatement",
"src": "549:15:1"
}
]
},
"name": "panic_error_0x41",
"nativeSrc": "443:127:1",
"nodeType": "YulFunctionDefinition",
"src": "443:127:1"
},
{
"body": {
"nativeSrc": "620:230:1",
"nodeType": "YulBlock",
"src": "620:230:1",
"statements": [
{
"nativeSrc": "630:19:1",
"nodeType": "YulAssignment",
"src": "630:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "646:2:1",
"nodeType": "YulLiteral",
"src": "646:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "640:5:1",
"nodeType": "YulIdentifier",
"src": "640:5:1"
},
"nativeSrc": "640:9:1",
"nodeType": "YulFunctionCall",
"src": "640:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nativeSrc": "630:6:1",
"nodeType": "YulIdentifier",
"src": "630:6:1"
}
]
},
{
"nativeSrc": "658:58:1",
"nodeType": "YulVariableDeclaration",
"src": "658:58:1",
"value": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "680:6:1",
"nodeType": "YulIdentifier",
"src": "680:6:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "size",
"nativeSrc": "696:4:1",
"nodeType": "YulIdentifier",
"src": "696:4:1"
},
{
"kind": "number",
"nativeSrc": "702:2:1",
"nodeType": "YulLiteral",
"src": "702:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nativeSrc": "692:3:1",
"nodeType": "YulIdentifier",
"src": "692:3:1"
},
"nativeSrc": "692:13:1",
"nodeType": "YulFunctionCall",
"src": "692:13:1"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "711:2:1",
"nodeType": "YulLiteral",
"src": "711:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nativeSrc": "707:3:1",
"nodeType": "YulIdentifier",
"src": "707:3:1"
},
"nativeSrc": "707:7:1",
"nodeType": "YulFunctionCall",
"src": "707:7:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "688:3:1",
"nodeType": "YulIdentifier",
"src": "688:3:1"
},
"nativeSrc": "688:27:1",
"nodeType": "YulFunctionCall",
"src": "688:27:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "676:3:1",
"nodeType": "YulIdentifier",
"src": "676:3:1"
},
"nativeSrc": "676:40:1",
"nodeType": "YulFunctionCall",
"src": "676:40:1"
},
"variables": [
{
"name": "newFreePtr",
"nativeSrc": "662:10:1",
"nodeType": "YulTypedName",
"src": "662:10:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "791:22:1",
"nodeType": "YulBlock",
"src": "791:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "793:16:1",
"nodeType": "YulIdentifier",
"src": "793:16:1"
},
"nativeSrc": "793:18:1",
"nodeType": "YulFunctionCall",
"src": "793:18:1"
},
"nativeSrc": "793:18:1",
"nodeType": "YulExpressionStatement",
"src": "793:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "734:10:1",
"nodeType": "YulIdentifier",
"src": "734:10:1"
},
{
"kind": "number",
"nativeSrc": "746:18:1",
"nodeType": "YulLiteral",
"src": "746:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "731:2:1",
"nodeType": "YulIdentifier",
"src": "731:2:1"
},
"nativeSrc": "731:34:1",
"nodeType": "YulFunctionCall",
"src": "731:34:1"
},
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "770:10:1",
"nodeType": "YulIdentifier",
"src": "770:10:1"
},
{
"name": "memPtr",
"nativeSrc": "782:6:1",
"nodeType": "YulIdentifier",
"src": "782:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "767:2:1",
"nodeType": "YulIdentifier",
"src": "767:2:1"
},
"nativeSrc": "767:22:1",
"nodeType": "YulFunctionCall",
"src": "767:22:1"
}
],
"functionName": {
"name": "or",
"nativeSrc": "728:2:1",
"nodeType": "YulIdentifier",
"src": "728:2:1"
},
"nativeSrc": "728:62:1",
"nodeType": "YulFunctionCall",
"src": "728:62:1"
},
"nativeSrc": "725:88:1",
"nodeType": "YulIf",
"src": "725:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "829:2:1",
"nodeType": "YulLiteral",
"src": "829:2:1",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nativeSrc": "833:10:1",
"nodeType": "YulIdentifier",
"src": "833:10:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "822:6:1",
"nodeType": "YulIdentifier",
"src": "822:6:1"
},
"nativeSrc": "822:22:1",
"nodeType": "YulFunctionCall",
"src": "822:22:1"
},
"nativeSrc": "822:22:1",
"nodeType": "YulExpressionStatement",
"src": "822:22:1"
}
]
},
"name": "allocate_memory",
"nativeSrc": "575:275:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nativeSrc": "600:4:1",
"nodeType": "YulTypedName",
"src": "600:4:1",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nativeSrc": "609:6:1",
"nodeType": "YulTypedName",
"src": "609:6:1",
"type": ""
}
],
"src": "575:275:1"
},
{
"body": {
"nativeSrc": "924:114:1",
"nodeType": "YulBlock",
"src": "924:114:1",
"statements": [
{
"body": {
"nativeSrc": "968:22:1",
"nodeType": "YulBlock",
"src": "968:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "970:16:1",
"nodeType": "YulIdentifier",
"src": "970:16:1"
},
"nativeSrc": "970:18:1",
"nodeType": "YulFunctionCall",
"src": "970:18:1"
},
"nativeSrc": "970:18:1",
"nodeType": "YulExpressionStatement",
"src": "970:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nativeSrc": "940:6:1",
"nodeType": "YulIdentifier",
"src": "940:6:1"
},
{
"kind": "number",
"nativeSrc": "948:18:1",
"nodeType": "YulLiteral",
"src": "948:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "937:2:1",
"nodeType": "YulIdentifier",
"src": "937:2:1"
},
"nativeSrc": "937:30:1",
"nodeType": "YulFunctionCall",
"src": "937:30:1"
},
"nativeSrc": "934:56:1",
"nodeType": "YulIf",
"src": "934:56:1"
},
{
"nativeSrc": "999:33:1",
"nodeType": "YulAssignment",
"src": "999:33:1",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "1015:1:1",
"nodeType": "YulLiteral",
"src": "1015:1:1",
"type": "",
"value": "5"
},
{
"name": "length",
"nativeSrc": "1018:6:1",
"nodeType": "YulIdentifier",
"src": "1018:6:1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "1011:3:1",
"nodeType": "YulIdentifier",
"src": "1011:3:1"
},
"nativeSrc": "1011:14:1",
"nodeType": "YulFunctionCall",
"src": "1011:14:1"
},
{
"kind": "number",
"nativeSrc": "1027:4:1",
"nodeType": "YulLiteral",
"src": "1027:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1007:3:1",
"nodeType": "YulIdentifier",
"src": "1007:3:1"
},
"nativeSrc": "1007:25:1",
"nodeType": "YulFunctionCall",
"src": "1007:25:1"
},
"variableNames": [
{
"name": "size",
"nativeSrc": "999:4:1",
"nodeType": "YulIdentifier",
"src": "999:4:1"
}
]
}
]
},
"name": "array_allocation_size_array_uint256_dyn",
"nativeSrc": "855:183:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nativeSrc": "904:6:1",
"nodeType": "YulTypedName",
"src": "904:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nativeSrc": "915:4:1",
"nodeType": "YulTypedName",
"src": "915:4:1",
"type": ""
}
],
"src": "855:183:1"
},
{
"body": {
"nativeSrc": "1107:604:1",
"nodeType": "YulBlock",
"src": "1107:604:1",
"statements": [
{
"body": {
"nativeSrc": "1156:16:1",
"nodeType": "YulBlock",
"src": "1156:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1165:1:1",
"nodeType": "YulLiteral",
"src": "1165:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1168:1:1",
"nodeType": "YulLiteral",
"src": "1168:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1158:6:1",
"nodeType": "YulIdentifier",
"src": "1158:6:1"
},
"nativeSrc": "1158:12:1",
"nodeType": "YulFunctionCall",
"src": "1158:12:1"
},
"nativeSrc": "1158:12:1",
"nodeType": "YulExpressionStatement",
"src": "1158:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nativeSrc": "1135:6:1",
"nodeType": "YulIdentifier",
"src": "1135:6:1"
},
{
"kind": "number",
"nativeSrc": "1143:4:1",
"nodeType": "YulLiteral",
"src": "1143:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1131:3:1",
"nodeType": "YulIdentifier",
"src": "1131:3:1"
},
"nativeSrc": "1131:17:1",
"nodeType": "YulFunctionCall",
"src": "1131:17:1"
},
{
"name": "end",
"nativeSrc": "1150:3:1",
"nodeType": "YulIdentifier",
"src": "1150:3:1"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "1127:3:1",
"nodeType": "YulIdentifier",
"src": "1127:3:1"
},
"nativeSrc": "1127:27:1",
"nodeType": "YulFunctionCall",
"src": "1127:27:1"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "1120:6:1",
"nodeType": "YulIdentifier",
"src": "1120:6:1"
},
"nativeSrc": "1120:35:1",
"nodeType": "YulFunctionCall",
"src": "1120:35:1"
},
"nativeSrc": "1117:55:1",
"nodeType": "YulIf",
"src": "1117:55:1"
},
{
"nativeSrc": "1181:30:1",
"nodeType": "YulVariableDeclaration",
"src": "1181:30:1",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "1204:6:1",
"nodeType": "YulIdentifier",
"src": "1204:6:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "1191:12:1",
"nodeType": "YulIdentifier",
"src": "1191:12:1"
},
"nativeSrc": "1191:20:1",
"nodeType": "YulFunctionCall",
"src": "1191:20:1"
},
"variables": [
{
"name": "_1",
"nativeSrc": "1185:2:1",
"nodeType": "YulTypedName",
"src": "1185:2:1",
"type": ""
}
]
},
{
"nativeSrc": "1220:14:1",
"nodeType": "YulVariableDeclaration",
"src": "1220:14:1",
"value": {
"kind": "number",
"nativeSrc": "1230:4:1",
"nodeType": "YulLiteral",
"src": "1230:4:1",
"type": "",
"value": "0x20"
},
"variables": [
{
"name": "_2",
"nativeSrc": "1224:2:1",
"nodeType": "YulTypedName",
"src": "1224:2:1",
"type": ""
}
]
},
{
"nativeSrc": "1243:71:1",
"nodeType": "YulVariableDeclaration",
"src": "1243:71:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_1",
"nativeSrc": "1310:2:1",
"nodeType": "YulIdentifier",
"src": "1310:2:1"
}
],
"functionName": {
"name": "array_allocation_size_array_uint256_dyn",
"nativeSrc": "1270:39:1",
"nodeType": "YulIdentifier",
"src": "1270:39:1"
},
"nativeSrc": "1270:43:1",
"nodeType": "YulFunctionCall",
"src": "1270:43:1"
}
],
"functionName": {
"name": "allocate_memory",
"nativeSrc": "1254:15:1",
"nodeType": "YulIdentifier",
"src": "1254:15:1"
},
"nativeSrc": "1254:60:1",
"nodeType": "YulFunctionCall",
"src": "1254:60:1"
},
"variables": [
{
"name": "dst",
"nativeSrc": "1247:3:1",
"nodeType": "YulTypedName",
"src": "1247:3:1",
"type": ""
}
]
},
{
"nativeSrc": "1323:16:1",
"nodeType": "YulVariableDeclaration",
"src": "1323:16:1",
"value": {
"name": "dst",
"nativeSrc": "1336:3:1",
"nodeType": "YulIdentifier",
"src": "1336:3:1"
},
"variables": [
{
"name": "dst_1",
"nativeSrc": "1327:5:1",
"nodeType": "YulTypedName",
"src": "1327:5:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dst",
"nativeSrc": "1355:3:1",
"nodeType": "YulIdentifier",
"src": "1355:3:1"
},
{
"name": "_1",
"nativeSrc": "1360:2:1",
"nodeType": "YulIdentifier",
"src": "1360:2:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1348:6:1",
"nodeType": "YulIdentifier",
"src": "1348:6:1"
},
"nativeSrc": "1348:15:1",
"nodeType": "YulFunctionCall",
"src": "1348:15:1"
},
"nativeSrc": "1348:15:1",
"nodeType": "YulExpressionStatement",
"src": "1348:15:1"
},
{
"nativeSrc": "1372:21:1",
"nodeType": "YulAssignment",
"src": "1372:21:1",
"value": {
"arguments": [
{
"name": "dst",
"nativeSrc": "1383:3:1",
"nodeType": "YulIdentifier",
"src": "1383:3:1"
},
{
"kind": "number",
"nativeSrc": "1388:4:1",
"nodeType": "YulLiteral",
"src": "1388:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1379:3:1",
"nodeType": "YulIdentifier",
"src": "1379:3:1"
},
"nativeSrc": "1379:14:1",
"nodeType": "YulFunctionCall",
"src": "1379:14:1"
},
"variableNames": [
{
"name": "dst",
"nativeSrc": "1372:3:1",
"nodeType": "YulIdentifier",
"src": "1372:3:1"
}
]
},
{
"nativeSrc": "1402:48:1",
"nodeType": "YulVariableDeclaration",
"src": "1402:48:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nativeSrc": "1424:6:1",
"nodeType": "YulIdentifier",
"src": "1424:6:1"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "1436:1:1",
"nodeType": "YulLiteral",
"src": "1436:1:1",
"type": "",
"value": "5"
},
{
"name": "_1",
"nativeSrc": "1439:2:1",
"nodeType": "YulIdentifier",
"src": "1439:2:1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "1432:3:1",
"nodeType": "YulIdentifier",
"src": "1432:3:1"
},
"nativeSrc": "1432:10:1",
"nodeType": "YulFunctionCall",
"src": "1432:10:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1420:3:1",
"nodeType": "YulIdentifier",
"src": "1420:3:1"
},
"nativeSrc": "1420:23:1",
"nodeType": "YulFunctionCall",
"src": "1420:23:1"
},
{
"kind": "number",
"nativeSrc": "1445:4:1",
"nodeType": "YulLiteral",
"src": "1445:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1416:3:1",
"nodeType": "YulIdentifier",
"src": "1416:3:1"
},
"nativeSrc": "1416:34:1",
"nodeType": "YulFunctionCall",
"src": "1416:34:1"
},
"variables": [
{
"name": "srcEnd",
"nativeSrc": "1406:6:1",
"nodeType": "YulTypedName",
"src": "1406:6:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "1478:16:1",
"nodeType": "YulBlock",
"src": "1478:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1487:1:1",
"nodeType": "YulLiteral",
"src": "1487:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1490:1:1",
"nodeType": "YulLiteral",
"src": "1490:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1480:6:1",
"nodeType": "YulIdentifier",
"src": "1480:6:1"
},
"nativeSrc": "1480:12:1",
"nodeType": "YulFunctionCall",
"src": "1480:12:1"
},
"nativeSrc": "1480:12:1",
"nodeType": "YulExpressionStatement",
"src": "1480:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "srcEnd",
"nativeSrc": "1465:6:1",
"nodeType": "YulIdentifier",
"src": "1465:6:1"
},
{
"name": "end",
"nativeSrc": "1473:3:1",
"nodeType": "YulIdentifier",
"src": "1473:3:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "1462:2:1",
"nodeType": "YulIdentifier",
"src": "1462:2:1"
},
"nativeSrc": "1462:15:1",
"nodeType": "YulFunctionCall",
"src": "1462:15:1"
},
"nativeSrc": "1459:35:1",
"nodeType": "YulIf",
"src": "1459:35:1"
},
{
"nativeSrc": "1503:28:1",
"nodeType": "YulVariableDeclaration",
"src": "1503:28:1",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "1518:6:1",
"nodeType": "YulIdentifier",
"src": "1518:6:1"
},
{
"kind": "number",
"nativeSrc": "1526:4:1",
"nodeType": "YulLiteral",
"src": "1526:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1514:3:1",
"nodeType": "YulIdentifier",
"src": "1514:3:1"
},
"nativeSrc": "1514:17:1",
"nodeType": "YulFunctionCall",
"src": "1514:17:1"
},
"variables": [
{
"name": "src",
"nativeSrc": "1507:3:1",
"nodeType": "YulTypedName",
"src": "1507:3:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "1596:86:1",
"nodeType": "YulBlock",
"src": "1596:86:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nativeSrc": "1617:3:1",
"nodeType": "YulIdentifier",
"src": "1617:3:1"
},
{
"arguments": [
{
"name": "src",
"nativeSrc": "1635:3:1",
"nodeType": "YulIdentifier",
"src": "1635:3:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "1622:12:1",
"nodeType": "YulIdentifier",
"src": "1622:12:1"
},
"nativeSrc": "1622:17:1",
"nodeType": "YulFunctionCall",
"src": "1622:17:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1610:6:1",
"nodeType": "YulIdentifier",
"src": "1610:6:1"
},
"nativeSrc": "1610:30:1",
"nodeType": "YulFunctionCall",
"src": "1610:30:1"
},
"nativeSrc": "1610:30:1",
"nodeType": "YulExpressionStatement",
"src": "1610:30:1"
},
{
"nativeSrc": "1653:19:1",
"nodeType": "YulAssignment",
"src": "1653:19:1",
"value": {
"arguments": [
{
"name": "dst",
"nativeSrc": "1664:3:1",
"nodeType": "YulIdentifier",
"src": "1664:3:1"
},
{
"name": "_2",
"nativeSrc": "1669:2:1",
"nodeType": "YulIdentifier",
"src": "1669:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1660:3:1",
"nodeType": "YulIdentifier",
"src": "1660:3:1"
},
"nativeSrc": "1660:12:1",
"nodeType": "YulFunctionCall",
"src": "1660:12:1"
},
"variableNames": [
{
"name": "dst",
"nativeSrc": "1653:3:1",
"nodeType": "YulIdentifier",
"src": "1653:3:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "src",
"nativeSrc": "1551:3:1",
"nodeType": "YulIdentifier",
"src": "1551:3:1"
},
{
"name": "srcEnd",
"nativeSrc": "1556:6:1",
"nodeType": "YulIdentifier",
"src": "1556:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "1548:2:1",
"nodeType": "YulIdentifier",
"src": "1548:2:1"
},
"nativeSrc": "1548:15:1",
"nodeType": "YulFunctionCall",
"src": "1548:15:1"
},
"nativeSrc": "1540:142:1",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "1564:23:1",
"nodeType": "YulBlock",
"src": "1564:23:1",
"statements": [
{
"nativeSrc": "1566:19:1",
"nodeType": "YulAssignment",
"src": "1566:19:1",
"value": {
"arguments": [
{
"name": "src",
"nativeSrc": "1577:3:1",
"nodeType": "YulIdentifier",
"src": "1577:3:1"
},
{
"name": "_2",
"nativeSrc": "1582:2:1",
"nodeType": "YulIdentifier",
"src": "1582:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1573:3:1",
"nodeType": "YulIdentifier",
"src": "1573:3:1"
},
"nativeSrc": "1573:12:1",
"nodeType": "YulFunctionCall",
"src": "1573:12:1"
},
"variableNames": [
{
"name": "src",
"nativeSrc": "1566:3:1",
"nodeType": "YulIdentifier",
"src": "1566:3:1"
}
]
}
]
},
"pre": {
"nativeSrc": "1544:3:1",
"nodeType": "YulBlock",
"src": "1544:3:1",
"statements": []
},
"src": "1540:142:1"
},
{
"nativeSrc": "1691:14:1",
"nodeType": "YulAssignment",
"src": "1691:14:1",
"value": {
"name": "dst_1",
"nativeSrc": "1700:5:1",
"nodeType": "YulIdentifier",
"src": "1700:5:1"
},
"variableNames": [
{
"name": "array",
"nativeSrc": "1691:5:1",
"nodeType": "YulIdentifier",
"src": "1691:5:1"
}
]
}
]
},
"name": "abi_decode_array_bytes32_dyn",
"nativeSrc": "1043:668:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "1081:6:1",
"nodeType": "YulTypedName",
"src": "1081:6:1",
"type": ""
},
{
"name": "end",
"nativeSrc": "1089:3:1",
"nodeType": "YulTypedName",
"src": "1089:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nativeSrc": "1097:5:1",
"nodeType": "YulTypedName",
"src": "1097:5:1",
"type": ""
}
],
"src": "1043:668:1"
},
{
"body": {
"nativeSrc": "1853:1003:1",
"nodeType": "YulBlock",
"src": "1853:1003:1",
"statements": [
{
"body": {
"nativeSrc": "1899:16:1",
"nodeType": "YulBlock",
"src": "1899:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1908:1:1",
"nodeType": "YulLiteral",
"src": "1908:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1911:1:1",
"nodeType": "YulLiteral",
"src": "1911:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1901:6:1",
"nodeType": "YulIdentifier",
"src": "1901:6:1"
},
"nativeSrc": "1901:12:1",
"nodeType": "YulFunctionCall",
"src": "1901:12:1"
},
"nativeSrc": "1901:12:1",
"nodeType": "YulExpressionStatement",
"src": "1901:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "1874:7:1",
"nodeType": "YulIdentifier",
"src": "1874:7:1"
},
{
"name": "headStart",
"nativeSrc": "1883:9:1",
"nodeType": "YulIdentifier",
"src": "1883:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "1870:3:1",
"nodeType": "YulIdentifier",
"src": "1870:3:1"
},
"nativeSrc": "1870:23:1",
"nodeType": "YulFunctionCall",
"src": "1870:23:1"
},
{
"kind": "number",
"nativeSrc": "1895:2:1",
"nodeType": "YulLiteral",
"src": "1895:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "1866:3:1",
"nodeType": "YulIdentifier",
"src": "1866:3:1"
},
"nativeSrc": "1866:32:1",
"nodeType": "YulFunctionCall",
"src": "1866:32:1"
},
"nativeSrc": "1863:52:1",
"nodeType": "YulIf",
"src": "1863:52:1"
},
{
"nativeSrc": "1924:37:1",
"nodeType": "YulVariableDeclaration",
"src": "1924:37:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "1951:9:1",
"nodeType": "YulIdentifier",
"src": "1951:9:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "1938:12:1",
"nodeType": "YulIdentifier",
"src": "1938:12:1"
},
"nativeSrc": "1938:23:1",
"nodeType": "YulFunctionCall",
"src": "1938:23:1"
},
"variables": [
{
"name": "offset",
"nativeSrc": "1928:6:1",
"nodeType": "YulTypedName",
"src": "1928:6:1",
"type": ""
}
]
},
{
"nativeSrc": "1970:28:1",
"nodeType": "YulVariableDeclaration",
"src": "1970:28:1",
"value": {
"kind": "number",
"nativeSrc": "1980:18:1",
"nodeType": "YulLiteral",
"src": "1980:18:1",
"type": "",
"value": "0xffffffffffffffff"
},
"variables": [
{
"name": "_1",
"nativeSrc": "1974:2:1",
"nodeType": "YulTypedName",
"src": "1974:2:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "2025:16:1",
"nodeType": "YulBlock",
"src": "2025:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "2034:1:1",
"nodeType": "YulLiteral",
"src": "2034:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "2037:1:1",
"nodeType": "YulLiteral",
"src": "2037:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "2027:6:1",
"nodeType": "YulIdentifier",
"src": "2027:6:1"
},
"nativeSrc": "2027:12:1",
"nodeType": "YulFunctionCall",
"src": "2027:12:1"
},
"nativeSrc": "2027:12:1",
"nodeType": "YulExpressionStatement",
"src": "2027:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nativeSrc": "2013:6:1",
"nodeType": "YulIdentifier",
"src": "2013:6:1"
},
{
"name": "_1",
"nativeSrc": "2021:2:1",
"nodeType": "YulIdentifier",
"src": "2021:2:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "2010:2:1",
"nodeType": "YulIdentifier",
"src": "2010:2:1"
},
"nativeSrc": "2010:14:1",
"nodeType": "YulFunctionCall",
"src": "2010:14:1"
},
"nativeSrc": "2007:34:1",
"nodeType": "YulIf",
"src": "2007:34:1"
},
{
"nativeSrc": "2050:32:1",
"nodeType": "YulVariableDeclaration",
"src": "2050:32:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "2064:9:1",
"nodeType": "YulIdentifier",
"src": "2064:9:1"
},
{
"name": "offset",
"nativeSrc": "2075:6:1",
"nodeType": "YulIdentifier",
"src": "2075:6:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2060:3:1",
"nodeType": "YulIdentifier",
"src": "2060:3:1"
},
"nativeSrc": "2060:22:1",
"nodeType": "YulFunctionCall",
"src": "2060:22:1"
},
"variables": [
{
"name": "_2",
"nativeSrc": "2054:2:1",
"nodeType": "YulTypedName",
"src": "2054:2:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "2130:16:1",
"nodeType": "YulBlock",
"src": "2130:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "2139:1:1",
"nodeType": "YulLiteral",
"src": "2139:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "2142:1:1",
"nodeType": "YulLiteral",
"src": "2142:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "2132:6:1",
"nodeType": "YulIdentifier",
"src": "2132:6:1"
},
"nativeSrc": "2132:12:1",
"nodeType": "YulFunctionCall",
"src": "2132:12:1"
},
"nativeSrc": "2132:12:1",
"nodeType": "YulExpressionStatement",
"src": "2132:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nativeSrc": "2109:2:1",
"nodeType": "YulIdentifier",
"src": "2109:2:1"
},
{
"kind": "number",
"nativeSrc": "2113:4:1",
"nodeType": "YulLiteral",
"src": "2113:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2105:3:1",
"nodeType": "YulIdentifier",
"src": "2105:3:1"
},
"nativeSrc": "2105:13:1",
"nodeType": "YulFunctionCall",
"src": "2105:13:1"
},
{
"name": "dataEnd",
"nativeSrc": "2120:7:1",
"nodeType": "YulIdentifier",
"src": "2120:7:1"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "2101:3:1",
"nodeType": "YulIdentifier",
"src": "2101:3:1"
},
"nativeSrc": "2101:27:1",
"nodeType": "YulFunctionCall",
"src": "2101:27:1"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "2094:6:1",
"nodeType": "YulIdentifier",
"src": "2094:6:1"
},
"nativeSrc": "2094:35:1",
"nodeType": "YulFunctionCall",
"src": "2094:35:1"
},
"nativeSrc": "2091:55:1",
"nodeType": "YulIf",
"src": "2091:55:1"
},
{
"nativeSrc": "2155:26:1",
"nodeType": "YulVariableDeclaration",
"src": "2155:26:1",
"value": {
"arguments": [
{
"name": "_2",
"nativeSrc": "2178:2:1",
"nodeType": "YulIdentifier",
"src": "2178:2:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "2165:12:1",
"nodeType": "YulIdentifier",
"src": "2165:12:1"
},
"nativeSrc": "2165:16:1",
"nodeType": "YulFunctionCall",
"src": "2165:16:1"
},
"variables": [
{
"name": "_3",
"nativeSrc": "2159:2:1",
"nodeType": "YulTypedName",
"src": "2159:2:1",
"type": ""
}
]
},
{
"nativeSrc": "2190:14:1",
"nodeType": "YulVariableDeclaration",
"src": "2190:14:1",
"value": {
"kind": "number",
"nativeSrc": "2200:4:1",
"nodeType": "YulLiteral",
"src": "2200:4:1",
"type": "",
"value": "0x20"
},
"variables": [
{
"name": "_4",
"nativeSrc": "2194:2:1",
"nodeType": "YulTypedName",
"src": "2194:2:1",
"type": ""
}
]
},
{
"nativeSrc": "2213:71:1",
"nodeType": "YulVariableDeclaration",
"src": "2213:71:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_3",
"nativeSrc": "2280:2:1",
"nodeType": "YulIdentifier",
"src": "2280:2:1"
}
],
"functionName": {
"name": "array_allocation_size_array_uint256_dyn",
"nativeSrc": "2240:39:1",
"nodeType": "YulIdentifier",
"src": "2240:39:1"
},
"nativeSrc": "2240:43:1",
"nodeType": "YulFunctionCall",
"src": "2240:43:1"
}
],
"functionName": {
"name": "allocate_memory",
"nativeSrc": "2224:15:1",
"nodeType": "YulIdentifier",
"src": "2224:15:1"
},
"nativeSrc": "2224:60:1",
"nodeType": "YulFunctionCall",
"src": "2224:60:1"
},
"variables": [
{
"name": "dst",
"nativeSrc": "2217:3:1",
"nodeType": "YulTypedName",
"src": "2217:3:1",
"type": ""
}
]
},
{
"nativeSrc": "2293:16:1",
"nodeType": "YulVariableDeclaration",
"src": "2293:16:1",
"value": {
"name": "dst",
"nativeSrc": "2306:3:1",
"nodeType": "YulIdentifier",
"src": "2306:3:1"
},
"variables": [
{
"name": "dst_1",
"nativeSrc": "2297:5:1",
"nodeType": "YulTypedName",
"src": "2297:5:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dst",
"nativeSrc": "2325:3:1",
"nodeType": "YulIdentifier",
"src": "2325:3:1"
},
{
"name": "_3",
"nativeSrc": "2330:2:1",
"nodeType": "YulIdentifier",
"src": "2330:2:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2318:6:1",
"nodeType": "YulIdentifier",
"src": "2318:6:1"
},
"nativeSrc": "2318:15:1",
"nodeType": "YulFunctionCall",
"src": "2318:15:1"
},
"nativeSrc": "2318:15:1",
"nodeType": "YulExpressionStatement",
"src": "2318:15:1"
},
{
"nativeSrc": "2342:19:1",
"nodeType": "YulAssignment",
"src": "2342:19:1",
"value": {
"arguments": [
{
"name": "dst",
"nativeSrc": "2353:3:1",
"nodeType": "YulIdentifier",
"src": "2353:3:1"
},
{
"name": "_4",
"nativeSrc": "2358:2:1",
"nodeType": "YulIdentifier",
"src": "2358:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2349:3:1",
"nodeType": "YulIdentifier",
"src": "2349:3:1"
},
"nativeSrc": "2349:12:1",
"nodeType": "YulFunctionCall",
"src": "2349:12:1"
},
"variableNames": [
{
"name": "dst",
"nativeSrc": "2342:3:1",
"nodeType": "YulIdentifier",
"src": "2342:3:1"
}
]
},
{
"nativeSrc": "2370:42:1",
"nodeType": "YulVariableDeclaration",
"src": "2370:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_2",
"nativeSrc": "2392:2:1",
"nodeType": "YulIdentifier",
"src": "2392:2:1"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "2400:1:1",
"nodeType": "YulLiteral",
"src": "2400:1:1",
"type": "",
"value": "5"
},
{
"name": "_3",
"nativeSrc": "2403:2:1",
"nodeType": "YulIdentifier",
"src": "2403:2:1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "2396:3:1",
"nodeType": "YulIdentifier",
"src": "2396:3:1"
},
"nativeSrc": "2396:10:1",
"nodeType": "YulFunctionCall",
"src": "2396:10:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2388:3:1",
"nodeType": "YulIdentifier",
"src": "2388:3:1"
},
"nativeSrc": "2388:19:1",
"nodeType": "YulFunctionCall",
"src": "2388:19:1"
},
{
"name": "_4",
"nativeSrc": "2409:2:1",
"nodeType": "YulIdentifier",
"src": "2409:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2384:3:1",
"nodeType": "YulIdentifier",
"src": "2384:3:1"
},
"nativeSrc": "2384:28:1",
"nodeType": "YulFunctionCall",
"src": "2384:28:1"
},
"variables": [
{
"name": "srcEnd",
"nativeSrc": "2374:6:1",
"nodeType": "YulTypedName",
"src": "2374:6:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "2444:16:1",
"nodeType": "YulBlock",
"src": "2444:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "2453:1:1",
"nodeType": "YulLiteral",
"src": "2453:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "2456:1:1",
"nodeType": "YulLiteral",
"src": "2456:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "2446:6:1",
"nodeType": "YulIdentifier",
"src": "2446:6:1"
},
"nativeSrc": "2446:12:1",
"nodeType": "YulFunctionCall",
"src": "2446:12:1"
},
"nativeSrc": "2446:12:1",
"nodeType": "YulExpressionStatement",
"src": "2446:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "srcEnd",
"nativeSrc": "2427:6:1",
"nodeType": "YulIdentifier",
"src": "2427:6:1"
},
{
"name": "dataEnd",
"nativeSrc": "2435:7:1",
"nodeType": "YulIdentifier",
"src": "2435:7:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "2424:2:1",
"nodeType": "YulIdentifier",
"src": "2424:2:1"
},
"nativeSrc": "2424:19:1",
"nodeType": "YulFunctionCall",
"src": "2424:19:1"
},
"nativeSrc": "2421:39:1",
"nodeType": "YulIf",
"src": "2421:39:1"
},
{
"nativeSrc": "2469:22:1",
"nodeType": "YulVariableDeclaration",
"src": "2469:22:1",
"value": {
"arguments": [
{
"name": "_2",
"nativeSrc": "2484:2:1",
"nodeType": "YulIdentifier",
"src": "2484:2:1"
},
{
"name": "_4",
"nativeSrc": "2488:2:1",
"nodeType": "YulIdentifier",
"src": "2488:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2480:3:1",
"nodeType": "YulIdentifier",
"src": "2480:3:1"
},
"nativeSrc": "2480:11:1",
"nodeType": "YulFunctionCall",
"src": "2480:11:1"
},
"variables": [
{
"name": "src",
"nativeSrc": "2473:3:1",
"nodeType": "YulTypedName",
"src": "2473:3:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "2556:86:1",
"nodeType": "YulBlock",
"src": "2556:86:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nativeSrc": "2577:3:1",
"nodeType": "YulIdentifier",
"src": "2577:3:1"
},
{
"arguments": [
{
"name": "src",
"nativeSrc": "2595:3:1",
"nodeType": "YulIdentifier",
"src": "2595:3:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "2582:12:1",
"nodeType": "YulIdentifier",
"src": "2582:12:1"
},
"nativeSrc": "2582:17:1",
"nodeType": "YulFunctionCall",
"src": "2582:17:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2570:6:1",
"nodeType": "YulIdentifier",
"src": "2570:6:1"
},
"nativeSrc": "2570:30:1",
"nodeType": "YulFunctionCall",
"src": "2570:30:1"
},
"nativeSrc": "2570:30:1",
"nodeType": "YulExpressionStatement",
"src": "2570:30:1"
},
{
"nativeSrc": "2613:19:1",
"nodeType": "YulAssignment",
"src": "2613:19:1",
"value": {
"arguments": [
{
"name": "dst",
"nativeSrc": "2624:3:1",
"nodeType": "YulIdentifier",
"src": "2624:3:1"
},
{
"name": "_4",
"nativeSrc": "2629:2:1",
"nodeType": "YulIdentifier",
"src": "2629:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2620:3:1",
"nodeType": "YulIdentifier",
"src": "2620:3:1"
},
"nativeSrc": "2620:12:1",
"nodeType": "YulFunctionCall",
"src": "2620:12:1"
},
"variableNames": [
{
"name": "dst",
"nativeSrc": "2613:3:1",
"nodeType": "YulIdentifier",
"src": "2613:3:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "src",
"nativeSrc": "2511:3:1",
"nodeType": "YulIdentifier",
"src": "2511:3:1"
},
{
"name": "srcEnd",
"nativeSrc": "2516:6:1",
"nodeType": "YulIdentifier",
"src": "2516:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "2508:2:1",
"nodeType": "YulIdentifier",
"src": "2508:2:1"
},
"nativeSrc": "2508:15:1",
"nodeType": "YulFunctionCall",
"src": "2508:15:1"
},
"nativeSrc": "2500:142:1",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "2524:23:1",
"nodeType": "YulBlock",
"src": "2524:23:1",
"statements": [
{
"nativeSrc": "2526:19:1",
"nodeType": "YulAssignment",
"src": "2526:19:1",
"value": {
"arguments": [
{
"name": "src",
"nativeSrc": "2537:3:1",
"nodeType": "YulIdentifier",
"src": "2537:3:1"
},
{
"name": "_4",
"nativeSrc": "2542:2:1",
"nodeType": "YulIdentifier",
"src": "2542:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2533:3:1",
"nodeType": "YulIdentifier",
"src": "2533:3:1"
},
"nativeSrc": "2533:12:1",
"nodeType": "YulFunctionCall",
"src": "2533:12:1"
},
"variableNames": [
{
"name": "src",
"nativeSrc": "2526:3:1",
"nodeType": "YulIdentifier",
"src": "2526:3:1"
}
]
}
]
},
"pre": {
"nativeSrc": "2504:3:1",
"nodeType": "YulBlock",
"src": "2504:3:1",
"statements": []
},
"src": "2500:142:1"
},
{
"nativeSrc": "2651:15:1",
"nodeType": "YulAssignment",
"src": "2651:15:1",
"value": {
"name": "dst_1",
"nativeSrc": "2661:5:1",
"nodeType": "YulIdentifier",
"src": "2661:5:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "2651:6:1",
"nodeType": "YulIdentifier",
"src": "2651:6:1"
}
]
},
{
"nativeSrc": "2675:48:1",
"nodeType": "YulVariableDeclaration",
"src": "2675:48:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "2708:9:1",
"nodeType": "YulIdentifier",
"src": "2708:9:1"
},
{
"name": "_4",
"nativeSrc": "2719:2:1",
"nodeType": "YulIdentifier",
"src": "2719:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2704:3:1",
"nodeType": "YulIdentifier",
"src": "2704:3:1"
},
"nativeSrc": "2704:18:1",
"nodeType": "YulFunctionCall",
"src": "2704:18:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "2691:12:1",
"nodeType": "YulIdentifier",
"src": "2691:12:1"
},
"nativeSrc": "2691:32:1",
"nodeType": "YulFunctionCall",
"src": "2691:32:1"
},
"variables": [
{
"name": "offset_1",
"nativeSrc": "2679:8:1",
"nodeType": "YulTypedName",
"src": "2679:8:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "2752:16:1",
"nodeType": "YulBlock",
"src": "2752:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "2761:1:1",
"nodeType": "YulLiteral",
"src": "2761:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "2764:1:1",
"nodeType": "YulLiteral",
"src": "2764:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "2754:6:1",
"nodeType": "YulIdentifier",
"src": "2754:6:1"
},
"nativeSrc": "2754:12:1",
"nodeType": "YulFunctionCall",
"src": "2754:12:1"
},
"nativeSrc": "2754:12:1",
"nodeType": "YulExpressionStatement",
"src": "2754:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset_1",
"nativeSrc": "2738:8:1",
"nodeType": "YulIdentifier",
"src": "2738:8:1"
},
{
"name": "_1",
"nativeSrc": "2748:2:1",
"nodeType": "YulIdentifier",
"src": "2748:2:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "2735:2:1",
"nodeType": "YulIdentifier",
"src": "2735:2:1"
},
"nativeSrc": "2735:16:1",
"nodeType": "YulFunctionCall",
"src": "2735:16:1"
},
"nativeSrc": "2732:36:1",
"nodeType": "YulIf",
"src": "2732:36:1"
},
{
"nativeSrc": "2777:73:1",
"nodeType": "YulAssignment",
"src": "2777:73:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "2820:9:1",
"nodeType": "YulIdentifier",
"src": "2820:9:1"
},
{
"name": "offset_1",
"nativeSrc": "2831:8:1",
"nodeType": "YulIdentifier",
"src": "2831:8:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2816:3:1",
"nodeType": "YulIdentifier",
"src": "2816:3:1"
},
"nativeSrc": "2816:24:1",
"nodeType": "YulFunctionCall",
"src": "2816:24:1"
},
{
"name": "dataEnd",
"nativeSrc": "2842:7:1",
"nodeType": "YulIdentifier",
"src": "2842:7:1"
}
],
"functionName": {
"name": "abi_decode_array_bytes32_dyn",
"nativeSrc": "2787:28:1",
"nodeType": "YulIdentifier",
"src": "2787:28:1"
},
"nativeSrc": "2787:63:1",
"nodeType": "YulFunctionCall",
"src": "2787:63:1"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "2777:6:1",
"nodeType": "YulIdentifier",
"src": "2777:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_array$_t_bytes32_$dyn_memory_ptr",
"nativeSrc": "1716:1140:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "1811:9:1",
"nodeType": "YulTypedName",
"src": "1811:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "1822:7:1",
"nodeType": "YulTypedName",
"src": "1822:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "1834:6:1",
"nodeType": "YulTypedName",
"src": "1834:6:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "1842:6:1",
"nodeType": "YulTypedName",
"src": "1842:6:1",
"type": ""
}
],
"src": "1716:1140:1"
},
{
"body": {
"nativeSrc": "2948:161:1",
"nodeType": "YulBlock",
"src": "2948:161:1",
"statements": [
{
"body": {
"nativeSrc": "2994:16:1",
"nodeType": "YulBlock",
"src": "2994:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3003:1:1",
"nodeType": "YulLiteral",
"src": "3003:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "3006:1:1",
"nodeType": "YulLiteral",
"src": "3006:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "2996:6:1",
"nodeType": "YulIdentifier",
"src": "2996:6:1"
},
"nativeSrc": "2996:12:1",
"nodeType": "YulFunctionCall",
"src": "2996:12:1"
},
"nativeSrc": "2996:12:1",
"nodeType": "YulExpressionStatement",
"src": "2996:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "2969:7:1",
"nodeType": "YulIdentifier",
"src": "2969:7:1"
},
{
"name": "headStart",
"nativeSrc": "2978:9:1",
"nodeType": "YulIdentifier",
"src": "2978:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "2965:3:1",
"nodeType": "YulIdentifier",
"src": "2965:3:1"
},
"nativeSrc": "2965:23:1",
"nodeType": "YulFunctionCall",
"src": "2965:23:1"
},
{
"kind": "number",
"nativeSrc": "2990:2:1",
"nodeType": "YulLiteral",
"src": "2990:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "2961:3:1",
"nodeType": "YulIdentifier",
"src": "2961:3:1"
},
"nativeSrc": "2961:32:1",
"nodeType": "YulFunctionCall",
"src": "2961:32:1"
},
"nativeSrc": "2958:52:1",
"nodeType": "YulIf",
"src": "2958:52:1"
},
{
"nativeSrc": "3019:33:1",
"nodeType": "YulAssignment",
"src": "3019:33:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "3042:9:1",
"nodeType": "YulIdentifier",
"src": "3042:9:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "3029:12:1",
"nodeType": "YulIdentifier",
"src": "3029:12:1"
},
"nativeSrc": "3029:23:1",
"nodeType": "YulFunctionCall",
"src": "3029:23:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "3019:6:1",
"nodeType": "YulIdentifier",
"src": "3019:6:1"
}
]
},
{
"nativeSrc": "3061:42:1",
"nodeType": "YulAssignment",
"src": "3061:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "3088:9:1",
"nodeType": "YulIdentifier",
"src": "3088:9:1"
},
{
"kind": "number",
"nativeSrc": "3099:2:1",
"nodeType": "YulLiteral",
"src": "3099:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3084:3:1",
"nodeType": "YulIdentifier",
"src": "3084:3:1"
},
"nativeSrc": "3084:18:1",
"nodeType": "YulFunctionCall",
"src": "3084:18:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "3071:12:1",
"nodeType": "YulIdentifier",
"src": "3071:12:1"
},
"nativeSrc": "3071:32:1",
"nodeType": "YulFunctionCall",
"src": "3071:32:1"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "3061:6:1",
"nodeType": "YulIdentifier",
"src": "3061:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_uint256",
"nativeSrc": "2861:248:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "2906:9:1",
"nodeType": "YulTypedName",
"src": "2906:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "2917:7:1",
"nodeType": "YulTypedName",
"src": "2917:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "2929:6:1",
"nodeType": "YulTypedName",
"src": "2929:6:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "2937:6:1",
"nodeType": "YulTypedName",
"src": "2937:6:1",
"type": ""
}
],
"src": "2861:248:1"
},
{
"body": {
"nativeSrc": "3215:76:1",
"nodeType": "YulBlock",
"src": "3215:76:1",
"statements": [
{
"nativeSrc": "3225:26:1",
"nodeType": "YulAssignment",
"src": "3225:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "3237:9:1",
"nodeType": "YulIdentifier",
"src": "3237:9:1"
},
{
"kind": "number",
"nativeSrc": "3248:2:1",
"nodeType": "YulLiteral",
"src": "3248:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3233:3:1",
"nodeType": "YulIdentifier",
"src": "3233:3:1"
},
"nativeSrc": "3233:18:1",
"nodeType": "YulFunctionCall",
"src": "3233:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "3225:4:1",
"nodeType": "YulIdentifier",
"src": "3225:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "3267:9:1",
"nodeType": "YulIdentifier",
"src": "3267:9:1"
},
{
"name": "value0",
"nativeSrc": "3278:6:1",
"nodeType": "YulIdentifier",
"src": "3278:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "3260:6:1",
"nodeType": "YulIdentifier",
"src": "3260:6:1"
},
"nativeSrc": "3260:25:1",
"nodeType": "YulFunctionCall",
"src": "3260:25:1"
},
"nativeSrc": "3260:25:1",
"nodeType": "YulExpressionStatement",
"src": "3260:25:1"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nativeSrc": "3114:177:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "3184:9:1",
"nodeType": "YulTypedName",
"src": "3184:9:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "3195:6:1",
"nodeType": "YulTypedName",
"src": "3195:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "3206:4:1",
"nodeType": "YulTypedName",
"src": "3206:4:1",
"type": ""
}
],
"src": "3114:177:1"
},
{
"body": {
"nativeSrc": "3417:1485:1",
"nodeType": "YulBlock",
"src": "3417:1485:1",
"statements": [
{
"nativeSrc": "3427:12:1",
"nodeType": "YulVariableDeclaration",
"src": "3427:12:1",
"value": {
"kind": "number",
"nativeSrc": "3437:2:1",
"nodeType": "YulLiteral",
"src": "3437:2:1",
"type": "",
"value": "64"
},
"variables": [
{
"name": "_1",
"nativeSrc": "3431:2:1",
"nodeType": "YulTypedName",
"src": "3431:2:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "3484:16:1",
"nodeType": "YulBlock",
"src": "3484:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3493:1:1",
"nodeType": "YulLiteral",
"src": "3493:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "3496:1:1",
"nodeType": "YulLiteral",
"src": "3496:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "3486:6:1",
"nodeType": "YulIdentifier",
"src": "3486:6:1"
},
"nativeSrc": "3486:12:1",
"nodeType": "YulFunctionCall",
"src": "3486:12:1"
},
"nativeSrc": "3486:12:1",
"nodeType": "YulExpressionStatement",
"src": "3486:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "3459:7:1",
"nodeType": "YulIdentifier",
"src": "3459:7:1"
},
{
"name": "headStart",
"nativeSrc": "3468:9:1",
"nodeType": "YulIdentifier",
"src": "3468:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3455:3:1",
"nodeType": "YulIdentifier",
"src": "3455:3:1"
},
"nativeSrc": "3455:23:1",
"nodeType": "YulFunctionCall",
"src": "3455:23:1"
},
{
"kind": "number",
"nativeSrc": "3480:2:1",
"nodeType": "YulLiteral",
"src": "3480:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "3451:3:1",
"nodeType": "YulIdentifier",
"src": "3451:3:1"
},
"nativeSrc": "3451:32:1",
"nodeType": "YulFunctionCall",
"src": "3451:32:1"
},
"nativeSrc": "3448:52:1",
"nodeType": "YulIf",
"src": "3448:52:1"
},
{
"nativeSrc": "3509:33:1",
"nodeType": "YulAssignment",
"src": "3509:33:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "3532:9:1",
"nodeType": "YulIdentifier",
"src": "3532:9:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "3519:12:1",
"nodeType": "YulIdentifier",
"src": "3519:12:1"
},
"nativeSrc": "3519:23:1",
"nodeType": "YulFunctionCall",
"src": "3519:23:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "3509:6:1",
"nodeType": "YulIdentifier",
"src": "3509:6:1"
}
]
},
{
"nativeSrc": "3551:12:1",
"nodeType": "YulVariableDeclaration",
"src": "3551:12:1",
"value": {
"kind": "number",
"nativeSrc": "3561:2:1",
"nodeType": "YulLiteral",
"src": "3561:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_2",
"nativeSrc": "3555:2:1",
"nodeType": "YulTypedName",
"src": "3555:2:1",
"type": ""
}
]
},
{
"nativeSrc": "3572:46:1",
"nodeType": "YulVariableDeclaration",
"src": "3572:46:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "3603:9:1",
"nodeType": "YulIdentifier",
"src": "3603:9:1"
},
{
"name": "_2",
"nativeSrc": "3614:2:1",
"nodeType": "YulIdentifier",
"src": "3614:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3599:3:1",
"nodeType": "YulIdentifier",
"src": "3599:3:1"
},
"nativeSrc": "3599:18:1",
"nodeType": "YulFunctionCall",
"src": "3599:18:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "3586:12:1",
"nodeType": "YulIdentifier",
"src": "3586:12:1"
},
"nativeSrc": "3586:32:1",
"nodeType": "YulFunctionCall",
"src": "3586:32:1"
},
"variables": [
{
"name": "offset",
"nativeSrc": "3576:6:1",
"nodeType": "YulTypedName",
"src": "3576:6:1",
"type": ""
}
]
},
{
"nativeSrc": "3627:28:1",
"nodeType": "YulVariableDeclaration",
"src": "3627:28:1",
"value": {
"kind": "number",
"nativeSrc": "3637:18:1",
"nodeType": "YulLiteral",
"src": "3637:18:1",
"type": "",
"value": "0xffffffffffffffff"
},
"variables": [
{
"name": "_3",
"nativeSrc": "3631:2:1",
"nodeType": "YulTypedName",
"src": "3631:2:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "3682:16:1",
"nodeType": "YulBlock",
"src": "3682:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3691:1:1",
"nodeType": "YulLiteral",
"src": "3691:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "3694:1:1",
"nodeType": "YulLiteral",
"src": "3694:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "3684:6:1",
"nodeType": "YulIdentifier",
"src": "3684:6:1"
},
"nativeSrc": "3684:12:1",
"nodeType": "YulFunctionCall",
"src": "3684:12:1"
},
"nativeSrc": "3684:12:1",
"nodeType": "YulExpressionStatement",
"src": "3684:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nativeSrc": "3670:6:1",
"nodeType": "YulIdentifier",
"src": "3670:6:1"
},
{
"name": "_3",
"nativeSrc": "3678:2:1",
"nodeType": "YulIdentifier",
"src": "3678:2:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "3667:2:1",
"nodeType": "YulIdentifier",
"src": "3667:2:1"
},
"nativeSrc": "3667:14:1",
"nodeType": "YulFunctionCall",
"src": "3667:14:1"
},
"nativeSrc": "3664:34:1",
"nodeType": "YulIf",
"src": "3664:34:1"
},
{
"nativeSrc": "3707:32:1",
"nodeType": "YulVariableDeclaration",
"src": "3707:32:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "3721:9:1",
"nodeType": "YulIdentifier",
"src": "3721:9:1"
},
{
"name": "offset",
"nativeSrc": "3732:6:1",
"nodeType": "YulIdentifier",
"src": "3732:6:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3717:3:1",
"nodeType": "YulIdentifier",
"src": "3717:3:1"
},
"nativeSrc": "3717:22:1",
"nodeType": "YulFunctionCall",
"src": "3717:22:1"
},
"variables": [
{
"name": "_4",
"nativeSrc": "3711:2:1",
"nodeType": "YulTypedName",
"src": "3711:2:1",
"type": ""
}
]
},
{
"nativeSrc": "3748:14:1",
"nodeType": "YulVariableDeclaration",
"src": "3748:14:1",
"value": {
"kind": "number",
"nativeSrc": "3758:4:1",
"nodeType": "YulLiteral",
"src": "3758:4:1",
"type": "",
"value": "0x1f"
},
"variables": [
{
"name": "_5",
"nativeSrc": "3752:2:1",
"nodeType": "YulTypedName",
"src": "3752:2:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "3810:16:1",
"nodeType": "YulBlock",
"src": "3810:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3819:1:1",
"nodeType": "YulLiteral",
"src": "3819:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "3822:1:1",
"nodeType": "YulLiteral",
"src": "3822:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "3812:6:1",
"nodeType": "YulIdentifier",
"src": "3812:6:1"
},
"nativeSrc": "3812:12:1",
"nodeType": "YulFunctionCall",
"src": "3812:12:1"
},
"nativeSrc": "3812:12:1",
"nodeType": "YulExpressionStatement",
"src": "3812:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_4",
"nativeSrc": "3789:2:1",
"nodeType": "YulIdentifier",
"src": "3789:2:1"
},
{
"kind": "number",
"nativeSrc": "3793:4:1",
"nodeType": "YulLiteral",
"src": "3793:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3785:3:1",
"nodeType": "YulIdentifier",
"src": "3785:3:1"
},
"nativeSrc": "3785:13:1",
"nodeType": "YulFunctionCall",
"src": "3785:13:1"
},
{
"name": "dataEnd",
"nativeSrc": "3800:7:1",
"nodeType": "YulIdentifier",
"src": "3800:7:1"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "3781:3:1",
"nodeType": "YulIdentifier",
"src": "3781:3:1"
},
"nativeSrc": "3781:27:1",
"nodeType": "YulFunctionCall",
"src": "3781:27:1"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "3774:6:1",
"nodeType": "YulIdentifier",
"src": "3774:6:1"
},
"nativeSrc": "3774:35:1",
"nodeType": "YulFunctionCall",
"src": "3774:35:1"
},
"nativeSrc": "3771:55:1",
"nodeType": "YulIf",
"src": "3771:55:1"
},
{
"nativeSrc": "3835:26:1",
"nodeType": "YulVariableDeclaration",
"src": "3835:26:1",
"value": {
"arguments": [
{
"name": "_4",
"nativeSrc": "3858:2:1",
"nodeType": "YulIdentifier",
"src": "3858:2:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "3845:12:1",
"nodeType": "YulIdentifier",
"src": "3845:12:1"
},
"nativeSrc": "3845:16:1",
"nodeType": "YulFunctionCall",
"src": "3845:16:1"
},
"variables": [
{
"name": "_6",
"nativeSrc": "3839:2:1",
"nodeType": "YulTypedName",
"src": "3839:2:1",
"type": ""
}
]
},
{
"nativeSrc": "3870:71:1",
"nodeType": "YulVariableDeclaration",
"src": "3870:71:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_6",
"nativeSrc": "3937:2:1",
"nodeType": "YulIdentifier",
"src": "3937:2:1"
}
],
"functionName": {
"name": "array_allocation_size_array_uint256_dyn",
"nativeSrc": "3897:39:1",
"nodeType": "YulIdentifier",
"src": "3897:39:1"
},
"nativeSrc": "3897:43:1",
"nodeType": "YulFunctionCall",
"src": "3897:43:1"
}
],
"functionName": {
"name": "allocate_memory",
"nativeSrc": "3881:15:1",
"nodeType": "YulIdentifier",
"src": "3881:15:1"
},
"nativeSrc": "3881:60:1",
"nodeType": "YulFunctionCall",
"src": "3881:60:1"
},
"variables": [
{
"name": "dst",
"nativeSrc": "3874:3:1",
"nodeType": "YulTypedName",
"src": "3874:3:1",
"type": ""
}
]
},
{
"nativeSrc": "3950:16:1",
"nodeType": "YulVariableDeclaration",
"src": "3950:16:1",
"value": {
"name": "dst",
"nativeSrc": "3963:3:1",
"nodeType": "YulIdentifier",
"src": "3963:3:1"
},
"variables": [
{
"name": "dst_1",
"nativeSrc": "3954:5:1",
"nodeType": "YulTypedName",
"src": "3954:5:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dst",
"nativeSrc": "3982:3:1",
"nodeType": "YulIdentifier",
"src": "3982:3:1"
},
{
"name": "_6",
"nativeSrc": "3987:2:1",
"nodeType": "YulIdentifier",
"src": "3987:2:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "3975:6:1",
"nodeType": "YulIdentifier",
"src": "3975:6:1"
},
"nativeSrc": "3975:15:1",
"nodeType": "YulFunctionCall",
"src": "3975:15:1"
},
"nativeSrc": "3975:15:1",
"nodeType": "YulExpressionStatement",
"src": "3975:15:1"
},
{
"nativeSrc": "3999:19:1",
"nodeType": "YulAssignment",
"src": "3999:19:1",
"value": {
"arguments": [
{
"name": "dst",
"nativeSrc": "4010:3:1",
"nodeType": "YulIdentifier",
"src": "4010:3:1"
},
{
"name": "_2",
"nativeSrc": "4015:2:1",
"nodeType": "YulIdentifier",
"src": "4015:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4006:3:1",
"nodeType": "YulIdentifier",
"src": "4006:3:1"
},
"nativeSrc": "4006:12:1",
"nodeType": "YulFunctionCall",
"src": "4006:12:1"
},
"variableNames": [
{
"name": "dst",
"nativeSrc": "3999:3:1",
"nodeType": "YulIdentifier",
"src": "3999:3:1"
}
]
},
{
"nativeSrc": "4027:42:1",
"nodeType": "YulVariableDeclaration",
"src": "4027:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_4",
"nativeSrc": "4049:2:1",
"nodeType": "YulIdentifier",
"src": "4049:2:1"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "4057:1:1",
"nodeType": "YulLiteral",
"src": "4057:1:1",
"type": "",
"value": "5"
},
{
"name": "_6",
"nativeSrc": "4060:2:1",
"nodeType": "YulIdentifier",
"src": "4060:2:1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "4053:3:1",
"nodeType": "YulIdentifier",
"src": "4053:3:1"
},
"nativeSrc": "4053:10:1",
"nodeType": "YulFunctionCall",
"src": "4053:10:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4045:3:1",
"nodeType": "YulIdentifier",
"src": "4045:3:1"
},
"nativeSrc": "4045:19:1",
"nodeType": "YulFunctionCall",
"src": "4045:19:1"
},
{
"name": "_2",
"nativeSrc": "4066:2:1",
"nodeType": "YulIdentifier",
"src": "4066:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4041:3:1",
"nodeType": "YulIdentifier",
"src": "4041:3:1"
},
"nativeSrc": "4041:28:1",
"nodeType": "YulFunctionCall",
"src": "4041:28:1"
},
"variables": [
{
"name": "srcEnd",
"nativeSrc": "4031:6:1",
"nodeType": "YulTypedName",
"src": "4031:6:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "4101:16:1",
"nodeType": "YulBlock",
"src": "4101:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "4110:1:1",
"nodeType": "YulLiteral",
"src": "4110:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "4113:1:1",
"nodeType": "YulLiteral",
"src": "4113:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "4103:6:1",
"nodeType": "YulIdentifier",
"src": "4103:6:1"
},
"nativeSrc": "4103:12:1",
"nodeType": "YulFunctionCall",
"src": "4103:12:1"
},
"nativeSrc": "4103:12:1",
"nodeType": "YulExpressionStatement",
"src": "4103:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "srcEnd",
"nativeSrc": "4084:6:1",
"nodeType": "YulIdentifier",
"src": "4084:6:1"
},
{
"name": "dataEnd",
"nativeSrc": "4092:7:1",
"nodeType": "YulIdentifier",
"src": "4092:7:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "4081:2:1",
"nodeType": "YulIdentifier",
"src": "4081:2:1"
},
"nativeSrc": "4081:19:1",
"nodeType": "YulFunctionCall",
"src": "4081:19:1"
},
"nativeSrc": "4078:39:1",
"nodeType": "YulIf",
"src": "4078:39:1"
},
{
"nativeSrc": "4126:22:1",
"nodeType": "YulVariableDeclaration",
"src": "4126:22:1",
"value": {
"arguments": [
{
"name": "_4",
"nativeSrc": "4141:2:1",
"nodeType": "YulIdentifier",
"src": "4141:2:1"
},
{
"name": "_2",
"nativeSrc": "4145:2:1",
"nodeType": "YulIdentifier",
"src": "4145:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4137:3:1",
"nodeType": "YulIdentifier",
"src": "4137:3:1"
},
"nativeSrc": "4137:11:1",
"nodeType": "YulFunctionCall",
"src": "4137:11:1"
},
"variables": [
{
"name": "src",
"nativeSrc": "4130:3:1",
"nodeType": "YulTypedName",
"src": "4130:3:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "4213:659:1",
"nodeType": "YulBlock",
"src": "4213:659:1",
"statements": [
{
"nativeSrc": "4227:36:1",
"nodeType": "YulVariableDeclaration",
"src": "4227:36:1",
"value": {
"arguments": [
{
"name": "src",
"nativeSrc": "4259:3:1",
"nodeType": "YulIdentifier",
"src": "4259:3:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "4246:12:1",
"nodeType": "YulIdentifier",
"src": "4246:12:1"
},
"nativeSrc": "4246:17:1",
"nodeType": "YulFunctionCall",
"src": "4246:17:1"
},
"variables": [
{
"name": "innerOffset",
"nativeSrc": "4231:11:1",
"nodeType": "YulTypedName",
"src": "4231:11:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "4299:16:1",
"nodeType": "YulBlock",
"src": "4299:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "4308:1:1",
"nodeType": "YulLiteral",
"src": "4308:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "4311:1:1",
"nodeType": "YulLiteral",
"src": "4311:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "4301:6:1",
"nodeType": "YulIdentifier",
"src": "4301:6:1"
},
"nativeSrc": "4301:12:1",
"nodeType": "YulFunctionCall",
"src": "4301:12:1"
},
"nativeSrc": "4301:12:1",
"nodeType": "YulExpressionStatement",
"src": "4301:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "innerOffset",
"nativeSrc": "4282:11:1",
"nodeType": "YulIdentifier",
"src": "4282:11:1"
},
{
"name": "_3",
"nativeSrc": "4295:2:1",
"nodeType": "YulIdentifier",
"src": "4295:2:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "4279:2:1",
"nodeType": "YulIdentifier",
"src": "4279:2:1"
},
"nativeSrc": "4279:19:1",
"nodeType": "YulFunctionCall",
"src": "4279:19:1"
},
"nativeSrc": "4276:39:1",
"nodeType": "YulIf",
"src": "4276:39:1"
},
{
"nativeSrc": "4328:30:1",
"nodeType": "YulVariableDeclaration",
"src": "4328:30:1",
"value": {
"arguments": [
{
"name": "_4",
"nativeSrc": "4342:2:1",
"nodeType": "YulIdentifier",
"src": "4342:2:1"
},
{
"name": "innerOffset",
"nativeSrc": "4346:11:1",
"nodeType": "YulIdentifier",
"src": "4346:11:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4338:3:1",
"nodeType": "YulIdentifier",
"src": "4338:3:1"
},
"nativeSrc": "4338:20:1",
"nodeType": "YulFunctionCall",
"src": "4338:20:1"
},
"variables": [
{
"name": "_7",
"nativeSrc": "4332:2:1",
"nodeType": "YulTypedName",
"src": "4332:2:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "4408:16:1",
"nodeType": "YulBlock",
"src": "4408:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "4417:1:1",
"nodeType": "YulLiteral",
"src": "4417:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "4420:1:1",
"nodeType": "YulLiteral",
"src": "4420:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "4410:6:1",
"nodeType": "YulIdentifier",
"src": "4410:6:1"
},
"nativeSrc": "4410:12:1",
"nodeType": "YulFunctionCall",
"src": "4410:12:1"
},
"nativeSrc": "4410:12:1",
"nodeType": "YulExpressionStatement",
"src": "4410:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_7",
"nativeSrc": "4389:2:1",
"nodeType": "YulIdentifier",
"src": "4389:2:1"
},
{
"kind": "number",
"nativeSrc": "4393:2:1",
"nodeType": "YulLiteral",
"src": "4393:2:1",
"type": "",
"value": "63"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4385:3:1",
"nodeType": "YulIdentifier",
"src": "4385:3:1"
},
"nativeSrc": "4385:11:1",
"nodeType": "YulFunctionCall",
"src": "4385:11:1"
},
{
"name": "dataEnd",
"nativeSrc": "4398:7:1",
"nodeType": "YulIdentifier",
"src": "4398:7:1"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "4381:3:1",
"nodeType": "YulIdentifier",
"src": "4381:3:1"
},
"nativeSrc": "4381:25:1",
"nodeType": "YulFunctionCall",
"src": "4381:25:1"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "4374:6:1",
"nodeType": "YulIdentifier",
"src": "4374:6:1"
},
"nativeSrc": "4374:33:1",
"nodeType": "YulFunctionCall",
"src": "4374:33:1"
},
"nativeSrc": "4371:53:1",
"nodeType": "YulIf",
"src": "4371:53:1"
},
{
"nativeSrc": "4437:35:1",
"nodeType": "YulVariableDeclaration",
"src": "4437:35:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_7",
"nativeSrc": "4464:2:1",
"nodeType": "YulIdentifier",
"src": "4464:2:1"
},
{
"name": "_2",
"nativeSrc": "4468:2:1",
"nodeType": "YulIdentifier",
"src": "4468:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4460:3:1",
"nodeType": "YulIdentifier",
"src": "4460:3:1"
},
"nativeSrc": "4460:11:1",
"nodeType": "YulFunctionCall",
"src": "4460:11:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "4447:12:1",
"nodeType": "YulIdentifier",
"src": "4447:12:1"
},
"nativeSrc": "4447:25:1",
"nodeType": "YulFunctionCall",
"src": "4447:25:1"
},
"variables": [
{
"name": "_8",
"nativeSrc": "4441:2:1",
"nodeType": "YulTypedName",
"src": "4441:2:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "4499:22:1",
"nodeType": "YulBlock",
"src": "4499:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "4501:16:1",
"nodeType": "YulIdentifier",
"src": "4501:16:1"
},
"nativeSrc": "4501:18:1",
"nodeType": "YulFunctionCall",
"src": "4501:18:1"
},
"nativeSrc": "4501:18:1",
"nodeType": "YulExpressionStatement",
"src": "4501:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "_8",
"nativeSrc": "4491:2:1",
"nodeType": "YulIdentifier",
"src": "4491:2:1"
},
{
"name": "_3",
"nativeSrc": "4495:2:1",
"nodeType": "YulIdentifier",
"src": "4495:2:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "4488:2:1",
"nodeType": "YulIdentifier",
"src": "4488:2:1"
},
"nativeSrc": "4488:10:1",
"nodeType": "YulFunctionCall",
"src": "4488:10:1"
},
"nativeSrc": "4485:36:1",
"nodeType": "YulIf",
"src": "4485:36:1"
},
{
"nativeSrc": "4534:64:1",
"nodeType": "YulVariableDeclaration",
"src": "4534:64:1",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_8",
"nativeSrc": "4575:2:1",
"nodeType": "YulIdentifier",
"src": "4575:2:1"
},
{
"name": "_5",
"nativeSrc": "4579:2:1",
"nodeType": "YulIdentifier",
"src": "4579:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4571:3:1",
"nodeType": "YulIdentifier",
"src": "4571:3:1"
},
"nativeSrc": "4571:11:1",
"nodeType": "YulFunctionCall",
"src": "4571:11:1"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "4588:2:1",
"nodeType": "YulLiteral",
"src": "4588:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nativeSrc": "4584:3:1",
"nodeType": "YulIdentifier",
"src": "4584:3:1"
},
"nativeSrc": "4584:7:1",
"nodeType": "YulFunctionCall",
"src": "4584:7:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "4567:3:1",
"nodeType": "YulIdentifier",
"src": "4567:3:1"
},
"nativeSrc": "4567:25:1",
"nodeType": "YulFunctionCall",
"src": "4567:25:1"
},
{
"name": "_2",
"nativeSrc": "4594:2:1",
"nodeType": "YulIdentifier",
"src": "4594:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4563:3:1",
"nodeType": "YulIdentifier",
"src": "4563:3:1"
},
"nativeSrc": "4563:34:1",
"nodeType": "YulFunctionCall",
"src": "4563:34:1"
}
],
"functionName": {
"name": "allocate_memory",
"nativeSrc": "4547:15:1",
"nodeType": "YulIdentifier",
"src": "4547:15:1"
},
"nativeSrc": "4547:51:1",
"nodeType": "YulFunctionCall",
"src": "4547:51:1"
},
"variables": [
{
"name": "array",
"nativeSrc": "4538:5:1",
"nodeType": "YulTypedName",
"src": "4538:5:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nativeSrc": "4618:5:1",
"nodeType": "YulIdentifier",
"src": "4618:5:1"
},
{
"name": "_8",
"nativeSrc": "4625:2:1",
"nodeType": "YulIdentifier",
"src": "4625:2:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4611:6:1",
"nodeType": "YulIdentifier",
"src": "4611:6:1"
},
"nativeSrc": "4611:17:1",
"nodeType": "YulFunctionCall",
"src": "4611:17:1"
},
"nativeSrc": "4611:17:1",
"nodeType": "YulExpressionStatement",
"src": "4611:17:1"
},
{
"body": {
"nativeSrc": "4678:16:1",
"nodeType": "YulBlock",
"src": "4678:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "4687:1:1",
"nodeType": "YulLiteral",
"src": "4687:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "4690:1:1",
"nodeType": "YulLiteral",
"src": "4690:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "4680:6:1",
"nodeType": "YulIdentifier",
"src": "4680:6:1"
},
"nativeSrc": "4680:12:1",
"nodeType": "YulFunctionCall",
"src": "4680:12:1"
},
"nativeSrc": "4680:12:1",
"nodeType": "YulExpressionStatement",
"src": "4680:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_7",
"nativeSrc": "4655:2:1",
"nodeType": "YulIdentifier",
"src": "4655:2:1"
},
{
"name": "_8",
"nativeSrc": "4659:2:1",
"nodeType": "YulIdentifier",
"src": "4659:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4651:3:1",
"nodeType": "YulIdentifier",
"src": "4651:3:1"
},
"nativeSrc": "4651:11:1",
"nodeType": "YulFunctionCall",
"src": "4651:11:1"
},
{
"name": "_1",
"nativeSrc": "4664:2:1",
"nodeType": "YulIdentifier",
"src": "4664:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4647:3:1",
"nodeType": "YulIdentifier",
"src": "4647:3:1"
},
"nativeSrc": "4647:20:1",
"nodeType": "YulFunctionCall",
"src": "4647:20:1"
},
{
"name": "dataEnd",
"nativeSrc": "4669:7:1",
"nodeType": "YulIdentifier",
"src": "4669:7:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "4644:2:1",
"nodeType": "YulIdentifier",
"src": "4644:2:1"
},
"nativeSrc": "4644:33:1",
"nodeType": "YulFunctionCall",
"src": "4644:33:1"
},
"nativeSrc": "4641:53:1",
"nodeType": "YulIf",
"src": "4641:53:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "array",
"nativeSrc": "4724:5:1",
"nodeType": "YulIdentifier",
"src": "4724:5:1"
},
{
"name": "_2",
"nativeSrc": "4731:2:1",
"nodeType": "YulIdentifier",
"src": "4731:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4720:3:1",
"nodeType": "YulIdentifier",
"src": "4720:3:1"
},
"nativeSrc": "4720:14:1",
"nodeType": "YulFunctionCall",
"src": "4720:14:1"
},
{
"arguments": [
{
"name": "_7",
"nativeSrc": "4740:2:1",
"nodeType": "YulIdentifier",
"src": "4740:2:1"
},
{
"name": "_1",
"nativeSrc": "4744:2:1",
"nodeType": "YulIdentifier",
"src": "4744:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4736:3:1",
"nodeType": "YulIdentifier",
"src": "4736:3:1"
},
"nativeSrc": "4736:11:1",
"nodeType": "YulFunctionCall",
"src": "4736:11:1"
},
{
"name": "_8",
"nativeSrc": "4749:2:1",
"nodeType": "YulIdentifier",
"src": "4749:2:1"
}
],
"functionName": {
"name": "calldatacopy",
"nativeSrc": "4707:12:1",
"nodeType": "YulIdentifier",
"src": "4707:12:1"
},
"nativeSrc": "4707:45:1",
"nodeType": "YulFunctionCall",
"src": "4707:45:1"
},
"nativeSrc": "4707:45:1",
"nodeType": "YulExpressionStatement",
"src": "4707:45:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "array",
"nativeSrc": "4780:5:1",
"nodeType": "YulIdentifier",
"src": "4780:5:1"
},
{
"name": "_8",
"nativeSrc": "4787:2:1",
"nodeType": "YulIdentifier",
"src": "4787:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4776:3:1",
"nodeType": "YulIdentifier",
"src": "4776:3:1"
},
"nativeSrc": "4776:14:1",
"nodeType": "YulFunctionCall",
"src": "4776:14:1"
},
{
"name": "_2",
"nativeSrc": "4792:2:1",
"nodeType": "YulIdentifier",
"src": "4792:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4772:3:1",
"nodeType": "YulIdentifier",
"src": "4772:3:1"
},
"nativeSrc": "4772:23:1",
"nodeType": "YulFunctionCall",
"src": "4772:23:1"
},
{
"kind": "number",
"nativeSrc": "4797:1:1",
"nodeType": "YulLiteral",
"src": "4797:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4765:6:1",
"nodeType": "YulIdentifier",
"src": "4765:6:1"
},
"nativeSrc": "4765:34:1",
"nodeType": "YulFunctionCall",
"src": "4765:34:1"
},
"nativeSrc": "4765:34:1",
"nodeType": "YulExpressionStatement",
"src": "4765:34:1"
},
{
"expression": {
"arguments": [
{
"name": "dst",
"nativeSrc": "4819:3:1",
"nodeType": "YulIdentifier",
"src": "4819:3:1"
},
{
"name": "array",
"nativeSrc": "4824:5:1",
"nodeType": "YulIdentifier",
"src": "4824:5:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4812:6:1",
"nodeType": "YulIdentifier",
"src": "4812:6:1"
},
"nativeSrc": "4812:18:1",
"nodeType": "YulFunctionCall",
"src": "4812:18:1"
},
"nativeSrc": "4812:18:1",
"nodeType": "YulExpressionStatement",
"src": "4812:18:1"
},
{
"nativeSrc": "4843:19:1",
"nodeType": "YulAssignment",
"src": "4843:19:1",
"value": {
"arguments": [
{
"name": "dst",
"nativeSrc": "4854:3:1",
"nodeType": "YulIdentifier",
"src": "4854:3:1"
},
{
"name": "_2",
"nativeSrc": "4859:2:1",
"nodeType": "YulIdentifier",
"src": "4859:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4850:3:1",
"nodeType": "YulIdentifier",
"src": "4850:3:1"
},
"nativeSrc": "4850:12:1",
"nodeType": "YulFunctionCall",
"src": "4850:12:1"
},
"variableNames": [
{
"name": "dst",
"nativeSrc": "4843:3:1",
"nodeType": "YulIdentifier",
"src": "4843:3:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "src",
"nativeSrc": "4168:3:1",
"nodeType": "YulIdentifier",
"src": "4168:3:1"
},
{
"name": "srcEnd",
"nativeSrc": "4173:6:1",
"nodeType": "YulIdentifier",
"src": "4173:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "4165:2:1",
"nodeType": "YulIdentifier",
"src": "4165:2:1"
},
"nativeSrc": "4165:15:1",
"nodeType": "YulFunctionCall",
"src": "4165:15:1"
},
"nativeSrc": "4157:715:1",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "4181:23:1",
"nodeType": "YulBlock",
"src": "4181:23:1",
"statements": [
{
"nativeSrc": "4183:19:1",
"nodeType": "YulAssignment",
"src": "4183:19:1",
"value": {
"arguments": [
{
"name": "src",
"nativeSrc": "4194:3:1",
"nodeType": "YulIdentifier",
"src": "4194:3:1"
},
{
"name": "_2",
"nativeSrc": "4199:2:1",
"nodeType": "YulIdentifier",
"src": "4199:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4190:3:1",
"nodeType": "YulIdentifier",
"src": "4190:3:1"
},
"nativeSrc": "4190:12:1",
"nodeType": "YulFunctionCall",
"src": "4190:12:1"
},
"variableNames": [
{
"name": "src",
"nativeSrc": "4183:3:1",
"nodeType": "YulIdentifier",
"src": "4183:3:1"
}
]
}
]
},
"pre": {
"nativeSrc": "4161:3:1",
"nodeType": "YulBlock",
"src": "4161:3:1",
"statements": []
},
"src": "4157:715:1"
},
{
"nativeSrc": "4881:15:1",
"nodeType": "YulAssignment",
"src": "4881:15:1",
"value": {
"name": "dst_1",
"nativeSrc": "4891:5:1",
"nodeType": "YulIdentifier",
"src": "4891:5:1"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "4881:6:1",
"nodeType": "YulIdentifier",
"src": "4881:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
"nativeSrc": "3296:1606:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "3375:9:1",
"nodeType": "YulTypedName",
"src": "3375:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "3386:7:1",
"nodeType": "YulTypedName",
"src": "3386:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "3398:6:1",
"nodeType": "YulTypedName",
"src": "3398:6:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "3406:6:1",
"nodeType": "YulTypedName",
"src": "3406:6:1",
"type": ""
}
],
"src": "3296:1606:1"
},
{
"body": {
"nativeSrc": "5036:175:1",
"nodeType": "YulBlock",
"src": "5036:175:1",
"statements": [
{
"nativeSrc": "5046:26:1",
"nodeType": "YulAssignment",
"src": "5046:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "5058:9:1",
"nodeType": "YulIdentifier",
"src": "5058:9:1"
},
{
"kind": "number",
"nativeSrc": "5069:2:1",
"nodeType": "YulLiteral",
"src": "5069:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5054:3:1",
"nodeType": "YulIdentifier",
"src": "5054:3:1"
},
"nativeSrc": "5054:18:1",
"nodeType": "YulFunctionCall",
"src": "5054:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "5046:4:1",
"nodeType": "YulIdentifier",
"src": "5046:4:1"
}
]
},
{
"nativeSrc": "5081:29:1",
"nodeType": "YulVariableDeclaration",
"src": "5081:29:1",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "5099:3:1",
"nodeType": "YulLiteral",
"src": "5099:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "5104:1:1",
"nodeType": "YulLiteral",
"src": "5104:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "5095:3:1",
"nodeType": "YulIdentifier",
"src": "5095:3:1"
},
"nativeSrc": "5095:11:1",
"nodeType": "YulFunctionCall",
"src": "5095:11:1"
},
{
"kind": "number",
"nativeSrc": "5108:1:1",
"nodeType": "YulLiteral",
"src": "5108:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "5091:3:1",
"nodeType": "YulIdentifier",
"src": "5091:3:1"
},
"nativeSrc": "5091:19:1",
"nodeType": "YulFunctionCall",
"src": "5091:19:1"
},
"variables": [
{
"name": "_1",
"nativeSrc": "5085:2:1",
"nodeType": "YulTypedName",
"src": "5085:2:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "5126:9:1",
"nodeType": "YulIdentifier",
"src": "5126:9:1"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "5141:6:1",
"nodeType": "YulIdentifier",
"src": "5141:6:1"
},
{
"name": "_1",
"nativeSrc": "5149:2:1",
"nodeType": "YulIdentifier",
"src": "5149:2:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5137:3:1",
"nodeType": "YulIdentifier",
"src": "5137:3:1"
},
"nativeSrc": "5137:15:1",
"nodeType": "YulFunctionCall",
"src": "5137:15:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5119:6:1",
"nodeType": "YulIdentifier",
"src": "5119:6:1"
},
"nativeSrc": "5119:34:1",
"nodeType": "YulFunctionCall",
"src": "5119:34:1"
},
"nativeSrc": "5119:34:1",
"nodeType": "YulExpressionStatement",
"src": "5119:34:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5173:9:1",
"nodeType": "YulIdentifier",
"src": "5173:9:1"
},
{
"kind": "number",
"nativeSrc": "5184:2:1",
"nodeType": "YulLiteral",
"src": "5184:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5169:3:1",
"nodeType": "YulIdentifier",
"src": "5169:3:1"
},
"nativeSrc": "5169:18:1",
"nodeType": "YulFunctionCall",
"src": "5169:18:1"
},
{
"arguments": [
{
"name": "value1",
"nativeSrc": "5193:6:1",
"nodeType": "YulIdentifier",
"src": "5193:6:1"
},
{
"name": "_1",
"nativeSrc": "5201:2:1",
"nodeType": "YulIdentifier",
"src": "5201:2:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5189:3:1",
"nodeType": "YulIdentifier",
"src": "5189:3:1"
},
"nativeSrc": "5189:15:1",
"nodeType": "YulFunctionCall",
"src": "5189:15:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5162:6:1",
"nodeType": "YulIdentifier",
"src": "5162:6:1"
},
"nativeSrc": "5162:43:1",
"nodeType": "YulFunctionCall",
"src": "5162:43:1"
},
"nativeSrc": "5162:43:1",
"nodeType": "YulExpressionStatement",
"src": "5162:43:1"
}
]
},
"name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
"nativeSrc": "4907:304:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "4997:9:1",
"nodeType": "YulTypedName",
"src": "4997:9:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "5008:6:1",
"nodeType": "YulTypedName",
"src": "5008:6:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "5016:6:1",
"nodeType": "YulTypedName",
"src": "5016:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "5027:4:1",
"nodeType": "YulTypedName",
"src": "5027:4:1",
"type": ""
}
],
"src": "4907:304:1"
},
{
"body": {
"nativeSrc": "5297:103:1",
"nodeType": "YulBlock",
"src": "5297:103:1",
"statements": [
{
"body": {
"nativeSrc": "5343:16:1",
"nodeType": "YulBlock",
"src": "5343:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "5352:1:1",
"nodeType": "YulLiteral",
"src": "5352:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "5355:1:1",
"nodeType": "YulLiteral",
"src": "5355:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "5345:6:1",
"nodeType": "YulIdentifier",
"src": "5345:6:1"
},
"nativeSrc": "5345:12:1",
"nodeType": "YulFunctionCall",
"src": "5345:12:1"
},
"nativeSrc": "5345:12:1",
"nodeType": "YulExpressionStatement",
"src": "5345:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "5318:7:1",
"nodeType": "YulIdentifier",
"src": "5318:7:1"
},
{
"name": "headStart",
"nativeSrc": "5327:9:1",
"nodeType": "YulIdentifier",
"src": "5327:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "5314:3:1",
"nodeType": "YulIdentifier",
"src": "5314:3:1"
},
"nativeSrc": "5314:23:1",
"nodeType": "YulFunctionCall",
"src": "5314:23:1"
},
{
"kind": "number",
"nativeSrc": "5339:2:1",
"nodeType": "YulLiteral",
"src": "5339:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "5310:3:1",
"nodeType": "YulIdentifier",
"src": "5310:3:1"
},
"nativeSrc": "5310:32:1",
"nodeType": "YulFunctionCall",
"src": "5310:32:1"
},
"nativeSrc": "5307:52:1",
"nodeType": "YulIf",
"src": "5307:52:1"
},
{
"nativeSrc": "5368:26:1",
"nodeType": "YulAssignment",
"src": "5368:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "5384:9:1",
"nodeType": "YulIdentifier",
"src": "5384:9:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "5378:5:1",
"nodeType": "YulIdentifier",
"src": "5378:5:1"
},
"nativeSrc": "5378:16:1",
"nodeType": "YulFunctionCall",
"src": "5378:16:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "5368:6:1",
"nodeType": "YulIdentifier",
"src": "5368:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32_fromMemory",
"nativeSrc": "5216:184:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "5263:9:1",
"nodeType": "YulTypedName",
"src": "5263:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "5274:7:1",
"nodeType": "YulTypedName",
"src": "5274:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "5286:6:1",
"nodeType": "YulTypedName",
"src": "5286:6:1",
"type": ""
}
],
"src": "5216:184:1"
},
{
"body": {
"nativeSrc": "5534:145:1",
"nodeType": "YulBlock",
"src": "5534:145:1",
"statements": [
{
"nativeSrc": "5544:26:1",
"nodeType": "YulAssignment",
"src": "5544:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "5556:9:1",
"nodeType": "YulIdentifier",
"src": "5556:9:1"
},
{
"kind": "number",
"nativeSrc": "5567:2:1",
"nodeType": "YulLiteral",
"src": "5567:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5552:3:1",
"nodeType": "YulIdentifier",
"src": "5552:3:1"
},
"nativeSrc": "5552:18:1",
"nodeType": "YulFunctionCall",
"src": "5552:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "5544:4:1",
"nodeType": "YulIdentifier",
"src": "5544:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "5586:9:1",
"nodeType": "YulIdentifier",
"src": "5586:9:1"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "5601:6:1",
"nodeType": "YulIdentifier",
"src": "5601:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "5617:3:1",
"nodeType": "YulLiteral",
"src": "5617:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "5622:1:1",
"nodeType": "YulLiteral",
"src": "5622:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "5613:3:1",
"nodeType": "YulIdentifier",
"src": "5613:3:1"
},
"nativeSrc": "5613:11:1",
"nodeType": "YulFunctionCall",
"src": "5613:11:1"
},
{
"kind": "number",
"nativeSrc": "5626:1:1",
"nodeType": "YulLiteral",
"src": "5626:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "5609:3:1",
"nodeType": "YulIdentifier",
"src": "5609:3:1"
},
"nativeSrc": "5609:19:1",
"nodeType": "YulFunctionCall",
"src": "5609:19:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5597:3:1",
"nodeType": "YulIdentifier",
"src": "5597:3:1"
},
"nativeSrc": "5597:32:1",
"nodeType": "YulFunctionCall",
"src": "5597:32:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5579:6:1",
"nodeType": "YulIdentifier",
"src": "5579:6:1"
},
"nativeSrc": "5579:51:1",
"nodeType": "YulFunctionCall",
"src": "5579:51:1"
},
"nativeSrc": "5579:51:1",
"nodeType": "YulExpressionStatement",
"src": "5579:51:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5650:9:1",
"nodeType": "YulIdentifier",
"src": "5650:9:1"
},
{
"kind": "number",
"nativeSrc": "5661:2:1",
"nodeType": "YulLiteral",
"src": "5661:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5646:3:1",
"nodeType": "YulIdentifier",
"src": "5646:3:1"
},
"nativeSrc": "5646:18:1",
"nodeType": "YulFunctionCall",
"src": "5646:18:1"
},
{
"name": "value1",
"nativeSrc": "5666:6:1",
"nodeType": "YulIdentifier",
"src": "5666:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5639:6:1",
"nodeType": "YulIdentifier",
"src": "5639:6:1"
},
"nativeSrc": "5639:34:1",
"nodeType": "YulFunctionCall",
"src": "5639:34:1"
},
"nativeSrc": "5639:34:1",
"nodeType": "YulExpressionStatement",
"src": "5639:34:1"
}
]
},
"name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed",
"nativeSrc": "5405:274:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "5495:9:1",
"nodeType": "YulTypedName",
"src": "5495:9:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "5506:6:1",
"nodeType": "YulTypedName",
"src": "5506:6:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "5514:6:1",
"nodeType": "YulTypedName",
"src": "5514:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "5525:4:1",
"nodeType": "YulTypedName",
"src": "5525:4:1",
"type": ""
}
],
"src": "5405:274:1"
},
{
"body": {
"nativeSrc": "5765:209:1",
"nodeType": "YulBlock",
"src": "5765:209:1",
"statements": [
{
"body": {
"nativeSrc": "5811:16:1",
"nodeType": "YulBlock",
"src": "5811:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "5820:1:1",
"nodeType": "YulLiteral",
"src": "5820:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "5823:1:1",
"nodeType": "YulLiteral",
"src": "5823:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "5813:6:1",
"nodeType": "YulIdentifier",
"src": "5813:6:1"
},
"nativeSrc": "5813:12:1",
"nodeType": "YulFunctionCall",
"src": "5813:12:1"
},
"nativeSrc": "5813:12:1",
"nodeType": "YulExpressionStatement",
"src": "5813:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "5786:7:1",
"nodeType": "YulIdentifier",
"src": "5786:7:1"
},
{
"name": "headStart",
"nativeSrc": "5795:9:1",
"nodeType": "YulIdentifier",
"src": "5795:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "5782:3:1",
"nodeType": "YulIdentifier",
"src": "5782:3:1"
},
"nativeSrc": "5782:23:1",
"nodeType": "YulFunctionCall",
"src": "5782:23:1"
},
{
"kind": "number",
"nativeSrc": "5807:2:1",
"nodeType": "YulLiteral",
"src": "5807:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "5778:3:1",
"nodeType": "YulIdentifier",
"src": "5778:3:1"
},
"nativeSrc": "5778:32:1",
"nodeType": "YulFunctionCall",
"src": "5778:32:1"
},
"nativeSrc": "5775:52:1",
"nodeType": "YulIf",
"src": "5775:52:1"
},
{
"nativeSrc": "5836:29:1",
"nodeType": "YulVariableDeclaration",
"src": "5836:29:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "5855:9:1",
"nodeType": "YulIdentifier",
"src": "5855:9:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "5849:5:1",
"nodeType": "YulIdentifier",
"src": "5849:5:1"
},
"nativeSrc": "5849:16:1",
"nodeType": "YulFunctionCall",
"src": "5849:16:1"
},
"variables": [
{
"name": "value",
"nativeSrc": "5840:5:1",
"nodeType": "YulTypedName",
"src": "5840:5:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "5928:16:1",
"nodeType": "YulBlock",
"src": "5928:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "5937:1:1",
"nodeType": "YulLiteral",
"src": "5937:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "5940:1:1",
"nodeType": "YulLiteral",
"src": "5940:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "5930:6:1",
"nodeType": "YulIdentifier",
"src": "5930:6:1"
},
"nativeSrc": "5930:12:1",
"nodeType": "YulFunctionCall",
"src": "5930:12:1"
},
"nativeSrc": "5930:12:1",
"nodeType": "YulExpressionStatement",
"src": "5930:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "5887:5:1",
"nodeType": "YulIdentifier",
"src": "5887:5:1"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "5898:5:1",
"nodeType": "YulIdentifier",
"src": "5898:5:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "5913:3:1",
"nodeType": "YulLiteral",
"src": "5913:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "5918:1:1",
"nodeType": "YulLiteral",
"src": "5918:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "5909:3:1",
"nodeType": "YulIdentifier",
"src": "5909:3:1"
},
"nativeSrc": "5909:11:1",
"nodeType": "YulFunctionCall",
"src": "5909:11:1"
},
{
"kind": "number",
"nativeSrc": "5922:1:1",
"nodeType": "YulLiteral",
"src": "5922:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "5905:3:1",
"nodeType": "YulIdentifier",
"src": "5905:3:1"
},
"nativeSrc": "5905:19:1",
"nodeType": "YulFunctionCall",
"src": "5905:19:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5894:3:1",
"nodeType": "YulIdentifier",
"src": "5894:3:1"
},
"nativeSrc": "5894:31:1",
"nodeType": "YulFunctionCall",
"src": "5894:31:1"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "5884:2:1",
"nodeType": "YulIdentifier",
"src": "5884:2:1"
},
"nativeSrc": "5884:42:1",
"nodeType": "YulFunctionCall",
"src": "5884:42:1"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "5877:6:1",
"nodeType": "YulIdentifier",
"src": "5877:6:1"
},
"nativeSrc": "5877:50:1",
"nodeType": "YulFunctionCall",
"src": "5877:50:1"
},
"nativeSrc": "5874:70:1",
"nodeType": "YulIf",
"src": "5874:70:1"
},
{
"nativeSrc": "5953:15:1",
"nodeType": "YulAssignment",
"src": "5953:15:1",
"value": {
"name": "value",
"nativeSrc": "5963:5:1",
"nodeType": "YulIdentifier",
"src": "5963:5:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "5953:6:1",
"nodeType": "YulIdentifier",
"src": "5953:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nativeSrc": "5684:290:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "5731:9:1",
"nodeType": "YulTypedName",
"src": "5731:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "5742:7:1",
"nodeType": "YulTypedName",
"src": "5742:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "5754:6:1",
"nodeType": "YulTypedName",
"src": "5754:6:1",
"type": ""
}
],
"src": "5684:290:1"
},
{
"body": {
"nativeSrc": "6011:95:1",
"nodeType": "YulBlock",
"src": "6011:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "6028:1:1",
"nodeType": "YulLiteral",
"src": "6028:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "6035:3:1",
"nodeType": "YulLiteral",
"src": "6035:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nativeSrc": "6040:10:1",
"nodeType": "YulLiteral",
"src": "6040:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "6031:3:1",
"nodeType": "YulIdentifier",
"src": "6031:3:1"
},
"nativeSrc": "6031:20:1",
"nodeType": "YulFunctionCall",
"src": "6031:20:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "6021:6:1",
"nodeType": "YulIdentifier",
"src": "6021:6:1"
},
"nativeSrc": "6021:31:1",
"nodeType": "YulFunctionCall",
"src": "6021:31:1"
},
"nativeSrc": "6021:31:1",
"nodeType": "YulExpressionStatement",
"src": "6021:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "6068:1:1",
"nodeType": "YulLiteral",
"src": "6068:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "6071:4:1",
"nodeType": "YulLiteral",
"src": "6071:4:1",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "6061:6:1",
"nodeType": "YulIdentifier",
"src": "6061:6:1"
},
"nativeSrc": "6061:15:1",
"nodeType": "YulFunctionCall",
"src": "6061:15:1"
},
"nativeSrc": "6061:15:1",
"nodeType": "YulExpressionStatement",
"src": "6061:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "6092:1:1",
"nodeType": "YulLiteral",
"src": "6092:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "6095:4:1",
"nodeType": "YulLiteral",
"src": "6095:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "6085:6:1",
"nodeType": "YulIdentifier",
"src": "6085:6:1"
},
"nativeSrc": "6085:15:1",
"nodeType": "YulFunctionCall",
"src": "6085:15:1"
},
"nativeSrc": "6085:15:1",
"nodeType": "YulExpressionStatement",
"src": "6085:15:1"
}
]
},
"name": "panic_error_0x32",
"nativeSrc": "5979:127:1",
"nodeType": "YulFunctionDefinition",
"src": "5979:127:1"
},
{
"body": {
"nativeSrc": "6212:76:1",
"nodeType": "YulBlock",
"src": "6212:76:1",
"statements": [
{
"nativeSrc": "6222:26:1",
"nodeType": "YulAssignment",
"src": "6222:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "6234:9:1",
"nodeType": "YulIdentifier",
"src": "6234:9:1"
},
{
"kind": "number",
"nativeSrc": "6245:2:1",
"nodeType": "YulLiteral",
"src": "6245:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6230:3:1",
"nodeType": "YulIdentifier",
"src": "6230:3:1"
},
"nativeSrc": "6230:18:1",
"nodeType": "YulFunctionCall",
"src": "6230:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "6222:4:1",
"nodeType": "YulIdentifier",
"src": "6222:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "6264:9:1",
"nodeType": "YulIdentifier",
"src": "6264:9:1"
},
{
"name": "value0",
"nativeSrc": "6275:6:1",
"nodeType": "YulIdentifier",
"src": "6275:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "6257:6:1",
"nodeType": "YulIdentifier",
"src": "6257:6:1"
},
"nativeSrc": "6257:25:1",
"nodeType": "YulFunctionCall",
"src": "6257:25:1"
},
"nativeSrc": "6257:25:1",
"nodeType": "YulExpressionStatement",
"src": "6257:25:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nativeSrc": "6111:177:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "6181:9:1",
"nodeType": "YulTypedName",
"src": "6181:9:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "6192:6:1",
"nodeType": "YulTypedName",
"src": "6192:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "6203:4:1",
"nodeType": "YulTypedName",
"src": "6203:4:1",
"type": ""
}
],
"src": "6111:177:1"
},
{
"body": {
"nativeSrc": "6450:162:1",
"nodeType": "YulBlock",
"src": "6450:162:1",
"statements": [
{
"nativeSrc": "6460:26:1",
"nodeType": "YulAssignment",
"src": "6460:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "6472:9:1",
"nodeType": "YulIdentifier",
"src": "6472:9:1"
},
{
"kind": "number",
"nativeSrc": "6483:2:1",
"nodeType": "YulLiteral",
"src": "6483:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6468:3:1",
"nodeType": "YulIdentifier",
"src": "6468:3:1"
},
"nativeSrc": "6468:18:1",
"nodeType": "YulFunctionCall",
"src": "6468:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "6460:4:1",
"nodeType": "YulIdentifier",
"src": "6460:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "6502:9:1",
"nodeType": "YulIdentifier",
"src": "6502:9:1"
},
{
"name": "value0",
"nativeSrc": "6513:6:1",
"nodeType": "YulIdentifier",
"src": "6513:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "6495:6:1",
"nodeType": "YulIdentifier",
"src": "6495:6:1"
},
"nativeSrc": "6495:25:1",
"nodeType": "YulFunctionCall",
"src": "6495:25:1"
},
"nativeSrc": "6495:25:1",
"nodeType": "YulExpressionStatement",
"src": "6495:25:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "6540:9:1",
"nodeType": "YulIdentifier",
"src": "6540:9:1"
},
{
"kind": "number",
"nativeSrc": "6551:2:1",
"nodeType": "YulLiteral",
"src": "6551:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6536:3:1",
"nodeType": "YulIdentifier",
"src": "6536:3:1"
},
"nativeSrc": "6536:18:1",
"nodeType": "YulFunctionCall",
"src": "6536:18:1"
},
{
"name": "value1",
"nativeSrc": "6556:6:1",
"nodeType": "YulIdentifier",
"src": "6556:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "6529:6:1",
"nodeType": "YulIdentifier",
"src": "6529:6:1"
},
"nativeSrc": "6529:34:1",
"nodeType": "YulFunctionCall",
"src": "6529:34:1"
},
"nativeSrc": "6529:34:1",
"nodeType": "YulExpressionStatement",
"src": "6529:34:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "6583:9:1",
"nodeType": "YulIdentifier",
"src": "6583:9:1"
},
{
"kind": "number",
"nativeSrc": "6594:2:1",
"nodeType": "YulLiteral",
"src": "6594:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6579:3:1",
"nodeType": "YulIdentifier",
"src": "6579:3:1"
},
"nativeSrc": "6579:18:1",
"nodeType": "YulFunctionCall",
"src": "6579:18:1"
},
{
"name": "value2",
"nativeSrc": "6599:6:1",
"nodeType": "YulIdentifier",
"src": "6599:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "6572:6:1",
"nodeType": "YulIdentifier",
"src": "6572:6:1"
},
"nativeSrc": "6572:34:1",
"nodeType": "YulFunctionCall",
"src": "6572:34:1"
},
"nativeSrc": "6572:34:1",
"nodeType": "YulExpressionStatement",
"src": "6572:34:1"
}
]
},
"name": "abi_encode_tuple_t_uint256_t_bytes32_t_bytes32__to_t_uint256_t_bytes32_t_bytes32__fromStack_reversed",
"nativeSrc": "6293:319:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "6403:9:1",
"nodeType": "YulTypedName",
"src": "6403:9:1",
"type": ""
},
{
"name": "value2",
"nativeSrc": "6414:6:1",
"nodeType": "YulTypedName",
"src": "6414:6:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "6422:6:1",
"nodeType": "YulTypedName",
"src": "6422:6:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "6430:6:1",
"nodeType": "YulTypedName",
"src": "6430:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "6441:4:1",
"nodeType": "YulTypedName",
"src": "6441:4:1",
"type": ""
}
],
"src": "6293:319:1"
},
{
"body": {
"nativeSrc": "6649:95:1",
"nodeType": "YulBlock",
"src": "6649:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "6666:1:1",
"nodeType": "YulLiteral",
"src": "6666:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "6673:3:1",
"nodeType": "YulLiteral",
"src": "6673:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nativeSrc": "6678:10:1",
"nodeType": "YulLiteral",
"src": "6678:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "6669:3:1",
"nodeType": "YulIdentifier",
"src": "6669:3:1"
},
"nativeSrc": "6669:20:1",
"nodeType": "YulFunctionCall",
"src": "6669:20:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "6659:6:1",
"nodeType": "YulIdentifier",
"src": "6659:6:1"
},
"nativeSrc": "6659:31:1",
"nodeType": "YulFunctionCall",
"src": "6659:31:1"
},
"nativeSrc": "6659:31:1",
"nodeType": "YulExpressionStatement",
"src": "6659:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "6706:1:1",
"nodeType": "YulLiteral",
"src": "6706:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "6709:4:1",
"nodeType": "YulLiteral",
"src": "6709:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "6699:6:1",
"nodeType": "YulIdentifier",
"src": "6699:6:1"
},
"nativeSrc": "6699:15:1",
"nodeType": "YulFunctionCall",
"src": "6699:15:1"
},
"nativeSrc": "6699:15:1",
"nodeType": "YulExpressionStatement",
"src": "6699:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "6730:1:1",
"nodeType": "YulLiteral",
"src": "6730:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "6733:4:1",
"nodeType": "YulLiteral",
"src": "6733:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "6723:6:1",
"nodeType": "YulIdentifier",
"src": "6723:6:1"
},
"nativeSrc": "6723:15:1",
"nodeType": "YulFunctionCall",
"src": "6723:15:1"
},
"nativeSrc": "6723:15:1",
"nodeType": "YulExpressionStatement",
"src": "6723:15:1"
}
]
},
"name": "panic_error_0x11",
"nativeSrc": "6617:127:1",
"nodeType": "YulFunctionDefinition",
"src": "6617:127:1"
},
{
"body": {
"nativeSrc": "6798:79:1",
"nodeType": "YulBlock",
"src": "6798:79:1",
"statements": [
{
"nativeSrc": "6808:17:1",
"nodeType": "YulAssignment",
"src": "6808:17:1",
"value": {
"arguments": [
{
"name": "x",
"nativeSrc": "6820:1:1",
"nodeType": "YulIdentifier",
"src": "6820:1:1"
},
{
"name": "y",
"nativeSrc": "6823:1:1",
"nodeType": "YulIdentifier",
"src": "6823:1:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "6816:3:1",
"nodeType": "YulIdentifier",
"src": "6816:3:1"
},
"nativeSrc": "6816:9:1",
"nodeType": "YulFunctionCall",
"src": "6816:9:1"
},
"variableNames": [
{
"name": "diff",
"nativeSrc": "6808:4:1",
"nodeType": "YulIdentifier",
"src": "6808:4:1"
}
]
},
{
"body": {
"nativeSrc": "6849:22:1",
"nodeType": "YulBlock",
"src": "6849:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nativeSrc": "6851:16:1",
"nodeType": "YulIdentifier",
"src": "6851:16:1"
},
"nativeSrc": "6851:18:1",
"nodeType": "YulFunctionCall",
"src": "6851:18:1"
},
"nativeSrc": "6851:18:1",
"nodeType": "YulExpressionStatement",
"src": "6851:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "diff",
"nativeSrc": "6840:4:1",
"nodeType": "YulIdentifier",
"src": "6840:4:1"
},
{
"name": "x",
"nativeSrc": "6846:1:1",
"nodeType": "YulIdentifier",
"src": "6846:1:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "6837:2:1",
"nodeType": "YulIdentifier",
"src": "6837:2:1"
},
"nativeSrc": "6837:11:1",
"nodeType": "YulFunctionCall",
"src": "6837:11:1"
},
"nativeSrc": "6834:37:1",
"nodeType": "YulIf",
"src": "6834:37:1"
}
]
},
"name": "checked_sub_t_uint256",
"nativeSrc": "6749:128:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nativeSrc": "6780:1:1",
"nodeType": "YulTypedName",
"src": "6780:1:1",
"type": ""
},
{
"name": "y",
"nativeSrc": "6783:1:1",
"nodeType": "YulTypedName",
"src": "6783:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nativeSrc": "6789:4:1",
"nodeType": "YulTypedName",
"src": "6789:4:1",
"type": ""
}
],
"src": "6749:128:1"
},
{
"body": {
"nativeSrc": "6930:77:1",
"nodeType": "YulBlock",
"src": "6930:77:1",
"statements": [
{
"nativeSrc": "6940:16:1",
"nodeType": "YulAssignment",
"src": "6940:16:1",
"value": {
"arguments": [
{
"name": "x",
"nativeSrc": "6951:1:1",
"nodeType": "YulIdentifier",
"src": "6951:1:1"
},
{
"name": "y",
"nativeSrc": "6954:1:1",
"nodeType": "YulIdentifier",
"src": "6954:1:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6947:3:1",
"nodeType": "YulIdentifier",
"src": "6947:3:1"
},
"nativeSrc": "6947:9:1",
"nodeType": "YulFunctionCall",
"src": "6947:9:1"
},
"variableNames": [
{
"name": "sum",
"nativeSrc": "6940:3:1",
"nodeType": "YulIdentifier",
"src": "6940:3:1"
}
]
},
{
"body": {
"nativeSrc": "6979:22:1",
"nodeType": "YulBlock",
"src": "6979:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nativeSrc": "6981:16:1",
"nodeType": "YulIdentifier",
"src": "6981:16:1"
},
"nativeSrc": "6981:18:1",
"nodeType": "YulFunctionCall",
"src": "6981:18:1"
},
"nativeSrc": "6981:18:1",
"nodeType": "YulExpressionStatement",
"src": "6981:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nativeSrc": "6971:1:1",
"nodeType": "YulIdentifier",
"src": "6971:1:1"
},
{
"name": "sum",
"nativeSrc": "6974:3:1",
"nodeType": "YulIdentifier",
"src": "6974:3:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "6968:2:1",
"nodeType": "YulIdentifier",
"src": "6968:2:1"
},
"nativeSrc": "6968:10:1",
"nodeType": "YulFunctionCall",
"src": "6968:10:1"
},
"nativeSrc": "6965:36:1",
"nodeType": "YulIf",
"src": "6965:36:1"
}
]
},
"name": "checked_add_t_uint256",
"nativeSrc": "6882:125:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nativeSrc": "6913:1:1",
"nodeType": "YulTypedName",
"src": "6913:1:1",
"type": ""
},
{
"name": "y",
"nativeSrc": "6916:1:1",
"nodeType": "YulTypedName",
"src": "6916:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nativeSrc": "6922:3:1",
"nodeType": "YulTypedName",
"src": "6922:3:1",
"type": ""
}
],
"src": "6882:125:1"
},
{
"body": {
"nativeSrc": "7059:88:1",
"nodeType": "YulBlock",
"src": "7059:88:1",
"statements": [
{
"body": {
"nativeSrc": "7090:22:1",
"nodeType": "YulBlock",
"src": "7090:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nativeSrc": "7092:16:1",
"nodeType": "YulIdentifier",
"src": "7092:16:1"
},
"nativeSrc": "7092:18:1",
"nodeType": "YulFunctionCall",
"src": "7092:18:1"
},
"nativeSrc": "7092:18:1",
"nodeType": "YulExpressionStatement",
"src": "7092:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nativeSrc": "7075:5:1",
"nodeType": "YulIdentifier",
"src": "7075:5:1"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "7086:1:1",
"nodeType": "YulLiteral",
"src": "7086:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nativeSrc": "7082:3:1",
"nodeType": "YulIdentifier",
"src": "7082:3:1"
},
"nativeSrc": "7082:6:1",
"nodeType": "YulFunctionCall",
"src": "7082:6:1"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "7072:2:1",
"nodeType": "YulIdentifier",
"src": "7072:2:1"
},
"nativeSrc": "7072:17:1",
"nodeType": "YulFunctionCall",
"src": "7072:17:1"
},
"nativeSrc": "7069:43:1",
"nodeType": "YulIf",
"src": "7069:43:1"
},
{
"nativeSrc": "7121:20:1",
"nodeType": "YulAssignment",
"src": "7121:20:1",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "7132:5:1",
"nodeType": "YulIdentifier",
"src": "7132:5:1"
},
{
"kind": "number",
"nativeSrc": "7139:1:1",
"nodeType": "YulLiteral",
"src": "7139:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "7128:3:1",
"nodeType": "YulIdentifier",
"src": "7128:3:1"
},
"nativeSrc": "7128:13:1",
"nodeType": "YulFunctionCall",
"src": "7128:13:1"
},
"variableNames": [
{
"name": "ret",
"nativeSrc": "7121:3:1",
"nodeType": "YulIdentifier",
"src": "7121:3:1"
}
]
}
]
},
"name": "increment_t_uint256",
"nativeSrc": "7012:135:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "7041:5:1",
"nodeType": "YulTypedName",
"src": "7041:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nativeSrc": "7051:3:1",
"nodeType": "YulTypedName",
"src": "7051:3:1",
"type": ""
}
],
"src": "7012:135:1"
},
{
"body": {
"nativeSrc": "7199:104:1",
"nodeType": "YulBlock",
"src": "7199:104:1",
"statements": [
{
"nativeSrc": "7209:39:1",
"nodeType": "YulAssignment",
"src": "7209:39:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "7225:1:1",
"nodeType": "YulIdentifier",
"src": "7225:1:1"
},
{
"kind": "number",
"nativeSrc": "7228:4:1",
"nodeType": "YulLiteral",
"src": "7228:4:1",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nativeSrc": "7221:3:1",
"nodeType": "YulIdentifier",
"src": "7221:3:1"
},
"nativeSrc": "7221:12:1",
"nodeType": "YulFunctionCall",
"src": "7221:12:1"
},
{
"arguments": [
{
"name": "y",
"nativeSrc": "7239:1:1",
"nodeType": "YulIdentifier",
"src": "7239:1:1"
},
{
"kind": "number",
"nativeSrc": "7242:4:1",
"nodeType": "YulLiteral",
"src": "7242:4:1",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nativeSrc": "7235:3:1",
"nodeType": "YulIdentifier",
"src": "7235:3:1"
},
"nativeSrc": "7235:12:1",
"nodeType": "YulFunctionCall",
"src": "7235:12:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "7217:3:1",
"nodeType": "YulIdentifier",
"src": "7217:3:1"
},
"nativeSrc": "7217:31:1",
"nodeType": "YulFunctionCall",
"src": "7217:31:1"
},
"variableNames": [
{
"name": "diff",
"nativeSrc": "7209:4:1",
"nodeType": "YulIdentifier",
"src": "7209:4:1"
}
]
},
{
"body": {
"nativeSrc": "7275:22:1",
"nodeType": "YulBlock",
"src": "7275:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nativeSrc": "7277:16:1",
"nodeType": "YulIdentifier",
"src": "7277:16:1"
},
"nativeSrc": "7277:18:1",
"nodeType": "YulFunctionCall",
"src": "7277:18:1"
},
"nativeSrc": "7277:18:1",
"nodeType": "YulExpressionStatement",
"src": "7277:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "diff",
"nativeSrc": "7263:4:1",
"nodeType": "YulIdentifier",
"src": "7263:4:1"
},
{
"kind": "number",
"nativeSrc": "7269:4:1",
"nodeType": "YulLiteral",
"src": "7269:4:1",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "7260:2:1",
"nodeType": "YulIdentifier",
"src": "7260:2:1"
},
"nativeSrc": "7260:14:1",
"nodeType": "YulFunctionCall",
"src": "7260:14:1"
},
"nativeSrc": "7257:40:1",
"nodeType": "YulIf",
"src": "7257:40:1"
}
]
},
"name": "checked_sub_t_uint8",
"nativeSrc": "7152:151:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nativeSrc": "7181:1:1",
"nodeType": "YulTypedName",
"src": "7181:1:1",
"type": ""
},
{
"name": "y",
"nativeSrc": "7184:1:1",
"nodeType": "YulTypedName",
"src": "7184:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nativeSrc": "7190:4:1",
"nodeType": "YulTypedName",
"src": "7190:4:1",
"type": ""
}
],
"src": "7152:151:1"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_contract$_IAMB_$1060__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_uint256_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function abi_decode_array_bytes32_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_1))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, 0x20)\n let srcEnd := add(add(offset, shl(5, _1)), 0x20)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, 0x20)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_array$_t_bytes32_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n let _4 := 0x20\n let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_3))\n let dst_1 := dst\n mstore(dst, _3)\n dst := add(dst, _4)\n let srcEnd := add(add(_2, shl(5, _3)), _4)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_2, _4)\n for { } lt(src, srcEnd) { src := add(src, _4) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _4)\n }\n value0 := dst_1\n let offset_1 := calldataload(add(headStart, _4))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_array_bytes32_dyn(add(headStart, offset_1), dataEnd)\n }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n let _1 := 64\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let _2 := 32\n let offset := calldataload(add(headStart, _2))\n let _3 := 0xffffffffffffffff\n if gt(offset, _3) { revert(0, 0) }\n let _4 := add(headStart, offset)\n let _5 := 0x1f\n if iszero(slt(add(_4, 0x1f), dataEnd)) { revert(0, 0) }\n let _6 := calldataload(_4)\n let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_6))\n let dst_1 := dst\n mstore(dst, _6)\n dst := add(dst, _2)\n let srcEnd := add(add(_4, shl(5, _6)), _2)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_4, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n let innerOffset := calldataload(src)\n if gt(innerOffset, _3) { revert(0, 0) }\n let _7 := add(_4, innerOffset)\n if iszero(slt(add(_7, 63), dataEnd)) { revert(0, 0) }\n let _8 := calldataload(add(_7, _2))\n if gt(_8, _3) { panic_error_0x41() }\n let array := allocate_memory(add(and(add(_8, _5), not(31)), _2))\n mstore(array, _8)\n if gt(add(add(_7, _8), _1), dataEnd) { revert(0, 0) }\n calldatacopy(add(array, _2), add(_7, _1), _8)\n mstore(add(add(array, _8), _2), 0)\n mstore(dst, array)\n dst := add(dst, _2)\n }\n value1 := dst_1\n }\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256_t_bytes32_t_bytes32__to_t_uint256_t_bytes32_t_bytes32__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function checked_sub_t_uint8(x, y) -> diff\n {\n diff := sub(and(x, 0xff), and(y, 0xff))\n if gt(diff, 0xff) { panic_error_0x11() }\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561000f575f80fd5b506004361061007a575f3560e01c80638599a969116100585780638599a969146100d65780639a8a05921461010c578063d13372ca14610115578063e81900a61461013c575f80fd5b8063010ec4411461007e5780631062b39a146100ae57806369f55903146100c1575b5f80fd5b600254610091906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600154610091906001600160a01b031681565b6100d46100cf366004610997565b61014f565b005b6100fe6100e4366004610a4a565b5f9182526020828152604080842092845291905290205490565b6040519081526020016100a5565b6100fe60035481565b6100fe610123366004610a4a565b5f60208181529281526040808220909352908152205481565b6100d461014a366004610a6a565b610355565b6001546001600160a01b0316331461018757604051634848191960e01b81523060048201523360248201526044015b60405180910390fd5b60035460015f9054906101000a90046001600160a01b03166001600160a01b0316639e307dff6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101fe9190610b71565b146102295760035460405163a015394d60e01b8152306004820152602481019190915260440161017e565b6002546001546040805163d67bdd2560e01b815290516001600160a01b03938416939092169163d67bdd25916004808201926020929091908290030181865afa158015610278573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029c9190610b88565b6001600160a01b0316146102d857600254604051630169b0ab60e61b81523060048201526001600160a01b03909116602482015260440161017e565b80518251146102fc5760405163e58349fb60e01b815230600482015260240161017e565b5f5b8251811015610350576103486003545f1c84838151811061032157610321610bae565b602002602001015184848151811061033b5761033b610bae565b60200260200101516104e9565b6001016102fe565b505050565b5f5b8151811015610350575f6103aa83838151811061037657610376610bae565b60200260200101516040805180820182525f8082526020918201528151808301909252825182529182019181019190915290565b90506103b581610551565b6103d25760405163e4508b9f60e01b815260040160405180910390fd5b5f6103dc82610588565b9050600f815110806103ef575060118151115b156104125780516040516327f5b84760e21b815260040161017e91815260200190565b5f610435825f8151811061042857610428610bae565b602002602001015161068e565b5f1b90505f6104508360088151811061042857610428610bae565b90505f86868151811061046557610465610bae565b6020908102919091018101518051908201205f8a8152808352604080822086835290935291909120549091508082146104c25760405163c442fd2b60e01b815260048101849052602481018390526044810182905260640161017e565b6104d7896104d1600186610bd6565b866104e9565b50506001909401935061035792505050565b5f8381526020818152604080832085845290915290205481811461054b575f8481526020818152604080832086845290915280822084905551839185917f7c57815e36323391c63e53a2fe2969599eb6dbcf52484a3bd8909aef4a6704d79190a35b50505050565b80515f90810361056257505f919050565b602082015180515f1a9060c082101561057e57505f9392505050565b5060019392505050565b606061059382610551565b61059b575f80fd5b5f6105a5836106d9565b90505f8167ffffffffffffffff8111156105c1576105c16108c3565b60405190808252806020026020018201604052801561060557816020015b604080518082019091525f80825260208201528152602001906001900390816105df5790505b5090505f6106168560200151610759565b85602001516106259190610bef565b90505f805b848110156106835761063b836107d9565b915060405180604001604052808381526020018481525084828151811061066457610664610bae565b60209081029190910101526106798284610bef565b925060010161062a565b509195945050505050565b80515f90158015906106a257508151602110155b6106aa575f80fd5b5f806106b584610881565b8151919350915060208210156106d15760208290036101000a90045b949350505050565b80515f9081036106ea57505f919050565b5f806106f98460200151610759565b84602001516107089190610bef565b90505f845f0151856020015161071e9190610bef565b90505b8082101561075057610732826107d9565b61073c9083610bef565b91508261074881610c02565b935050610721565b50909392505050565b80515f90811a608081101561077057505f92915050565b60b881108061078b575060c0811080159061078b575060f881105b156107995750600192915050565b60c08110156107cd576107ae600160b8610c1a565b6107bb9060ff1682610bd6565b6107c6906001610bef565b9392505050565b6107ae600160f8610c1a565b80515f908190811a60808110156107f3576001915061087a565b60b881101561081957610807608082610bd6565b610812906001610bef565b915061087a565b60c08110156108465760b78103600185019450806020036101000a8551046001820181019350505061087a565b60f881101561085a5761080760c082610bd6565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b5f805f6108918460200151610759565b90505f8185602001516108a49190610bef565b90505f82865f01516108b69190610bd6565b9196919550909350505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610900576109006108c3565b604052919050565b5f67ffffffffffffffff821115610921576109216108c3565b5060051b60200190565b5f82601f83011261093a575f80fd5b8135602061094f61094a83610908565b6108d7565b8083825260208201915060208460051b870101935086841115610970575f80fd5b602086015b8481101561098c5780358352918301918301610975565b509695505050505050565b5f80604083850312156109a8575f80fd5b823567ffffffffffffffff808211156109bf575f80fd5b818501915085601f8301126109d2575f80fd5b813560206109e261094a83610908565b82815260059290921b84018101918181019089841115610a00575f80fd5b948201945b83861015610a1e57853582529482019490820190610a05565b96505086013592505080821115610a33575f80fd5b50610a408582860161092b565b9150509250929050565b5f8060408385031215610a5b575f80fd5b50508035926020909101359150565b5f806040808486031215610a7c575f80fd5b8335925060208085013567ffffffffffffffff80821115610a9b575f80fd5b8187019150601f88601f840112610ab0575f80fd5b8235610abe61094a82610908565b81815260059190911b8401850190858101908b831115610adc575f80fd5b8686015b83811015610b5e57803586811115610af6575f80fd5b8701603f81018e13610b06575f80fd5b8881013587811115610b1a57610b1a6108c3565b610b2b818801601f19168b016108d7565b8181528f8c838501011115610b3e575f80fd5b818c84018c8301375f9181018b0191909152845250918701918701610ae0565b5080985050505050505050509250929050565b5f60208284031215610b81575f80fd5b5051919050565b5f60208284031215610b98575f80fd5b81516001600160a01b03811681146107c6575f80fd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610be957610be9610bc2565b92915050565b80820180821115610be957610be9610bc2565b5f60018201610c1357610c13610bc2565b5060010190565b60ff8281168282160390811115610be957610be9610bc256fea2646970667358221220a8ab8fea15edbb0fe64fa7dedb2949b970cb5c60b56b35b8c2c754afdb78320264736f6c63430008160033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7A JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8599A969 GT PUSH2 0x58 JUMPI DUP1 PUSH4 0x8599A969 EQ PUSH2 0xD6 JUMPI DUP1 PUSH4 0x9A8A0592 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xD13372CA EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0xE81900A6 EQ PUSH2 0x13C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x10EC441 EQ PUSH2 0x7E JUMPI DUP1 PUSH4 0x1062B39A EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x69F55903 EQ PUSH2 0xC1 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x91 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x91 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0xD4 PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0x997 JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFE PUSH2 0xE4 CALLDATASIZE PUSH1 0x4 PUSH2 0xA4A JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP3 DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA5 JUMP JUMPDEST PUSH2 0xFE PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xFE PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0xA4A JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP2 DUP2 MSTORE SWAP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 MSTORE SWAP1 DUP2 MSTORE KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xD4 PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x355 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x187 JUMPI PUSH1 0x40 MLOAD PUSH4 0x48481919 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9E307DFF PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 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 0x1FE SWAP2 SWAP1 PUSH2 0xB71 JUMP JUMPDEST EQ PUSH2 0x229 JUMPI PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH4 0xA015394D PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 ADD PUSH2 0x17E JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD67BDD25 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 SWAP1 SWAP3 AND SWAP2 PUSH4 0xD67BDD25 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x278 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 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 0x29C SWAP2 SWAP1 PUSH2 0xB88 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2D8 JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH4 0x169B0AB PUSH1 0xE6 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x17E JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x2FC JUMPI PUSH1 0x40 MLOAD PUSH4 0xE58349FB PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x17E JUMP JUMPDEST PUSH0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x350 JUMPI PUSH2 0x348 PUSH1 0x3 SLOAD PUSH0 SHR DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x321 JUMPI PUSH2 0x321 PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x33B JUMPI PUSH2 0x33B PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x4E9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2FE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x350 JUMPI PUSH0 PUSH2 0x3AA DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x376 JUMPI PUSH2 0x376 PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD SWAP1 SWAP3 MSTORE DUP3 MLOAD DUP3 MSTORE SWAP2 DUP3 ADD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x3B5 DUP2 PUSH2 0x551 JUMP JUMPDEST PUSH2 0x3D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE4508B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x3DC DUP3 PUSH2 0x588 JUMP JUMPDEST SWAP1 POP PUSH1 0xF DUP2 MLOAD LT DUP1 PUSH2 0x3EF JUMPI POP PUSH1 0x11 DUP2 MLOAD GT JUMPDEST ISZERO PUSH2 0x412 JUMPI DUP1 MLOAD PUSH1 0x40 MLOAD PUSH4 0x27F5B847 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x435 DUP3 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x428 JUMPI PUSH2 0x428 PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x68E JUMP JUMPDEST PUSH0 SHL SWAP1 POP PUSH0 PUSH2 0x450 DUP4 PUSH1 0x8 DUP2 MLOAD DUP2 LT PUSH2 0x428 JUMPI PUSH2 0x428 PUSH2 0xBAE JUMP JUMPDEST SWAP1 POP PUSH0 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x465 JUMPI PUSH2 0x465 PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP1 MLOAD SWAP1 DUP3 ADD KECCAK256 PUSH0 DUP11 DUP2 MSTORE DUP1 DUP4 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP7 DUP4 MSTORE SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP1 DUP3 EQ PUSH2 0x4C2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC442FD2B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x17E JUMP JUMPDEST PUSH2 0x4D7 DUP10 PUSH2 0x4D1 PUSH1 0x1 DUP7 PUSH2 0xBD6 JUMP JUMPDEST DUP7 PUSH2 0x4E9 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP5 ADD SWAP4 POP PUSH2 0x357 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 DUP2 EQ PUSH2 0x54B JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE MLOAD DUP4 SWAP2 DUP6 SWAP2 PUSH32 0x7C57815E36323391C63E53A2FE2969599EB6DBCF52484A3BD8909AEF4A6704D7 SWAP2 SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH0 SWAP1 DUP2 SUB PUSH2 0x562 JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD DUP1 MLOAD PUSH0 BYTE SWAP1 PUSH1 0xC0 DUP3 LT ISZERO PUSH2 0x57E JUMPI POP PUSH0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x593 DUP3 PUSH2 0x551 JUMP JUMPDEST PUSH2 0x59B JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH2 0x5A5 DUP4 PUSH2 0x6D9 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5C1 JUMPI PUSH2 0x5C1 PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x605 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x5DF JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH0 PUSH2 0x616 DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x759 JUMP JUMPDEST DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x625 SWAP2 SWAP1 PUSH2 0xBEF JUMP JUMPDEST SWAP1 POP PUSH0 DUP1 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x683 JUMPI PUSH2 0x63B DUP4 PUSH2 0x7D9 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x664 JUMPI PUSH2 0x664 PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x679 DUP3 DUP5 PUSH2 0xBEF JUMP JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0x62A JUMP JUMPDEST POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH0 SWAP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x6A2 JUMPI POP DUP2 MLOAD PUSH1 0x21 LT ISZERO JUMPDEST PUSH2 0x6AA JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP1 PUSH2 0x6B5 DUP5 PUSH2 0x881 JUMP JUMPDEST DUP2 MLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x20 DUP3 LT ISZERO PUSH2 0x6D1 JUMPI PUSH1 0x20 DUP3 SWAP1 SUB PUSH2 0x100 EXP SWAP1 DIV JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH0 SWAP1 DUP2 SUB PUSH2 0x6EA JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x6F9 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x759 JUMP JUMPDEST DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x708 SWAP2 SWAP1 PUSH2 0xBEF JUMP JUMPDEST SWAP1 POP PUSH0 DUP5 PUSH0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x71E SWAP2 SWAP1 PUSH2 0xBEF JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x750 JUMPI PUSH2 0x732 DUP3 PUSH2 0x7D9 JUMP JUMPDEST PUSH2 0x73C SWAP1 DUP4 PUSH2 0xBEF JUMP JUMPDEST SWAP2 POP DUP3 PUSH2 0x748 DUP2 PUSH2 0xC02 JUMP JUMPDEST SWAP4 POP POP PUSH2 0x721 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH0 SWAP1 DUP2 BYTE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x770 JUMPI POP PUSH0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xB8 DUP2 LT DUP1 PUSH2 0x78B JUMPI POP PUSH1 0xC0 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x78B JUMPI POP PUSH1 0xF8 DUP2 LT JUMPDEST ISZERO PUSH2 0x799 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x7CD JUMPI PUSH2 0x7AE PUSH1 0x1 PUSH1 0xB8 PUSH2 0xC1A JUMP JUMPDEST PUSH2 0x7BB SWAP1 PUSH1 0xFF AND DUP3 PUSH2 0xBD6 JUMP JUMPDEST PUSH2 0x7C6 SWAP1 PUSH1 0x1 PUSH2 0xBEF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x7AE PUSH1 0x1 PUSH1 0xF8 PUSH2 0xC1A JUMP JUMPDEST DUP1 MLOAD PUSH0 SWAP1 DUP2 SWAP1 DUP2 BYTE PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x7F3 JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x87A JUMP JUMPDEST PUSH1 0xB8 DUP2 LT ISZERO PUSH2 0x819 JUMPI PUSH2 0x807 PUSH1 0x80 DUP3 PUSH2 0xBD6 JUMP JUMPDEST PUSH2 0x812 SWAP1 PUSH1 0x1 PUSH2 0xBEF JUMP JUMPDEST SWAP2 POP PUSH2 0x87A JUMP JUMPDEST PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x846 JUMPI PUSH1 0xB7 DUP2 SUB PUSH1 0x1 DUP6 ADD SWAP5 POP DUP1 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP6 MLOAD DIV PUSH1 0x1 DUP3 ADD DUP2 ADD SWAP4 POP POP POP PUSH2 0x87A JUMP JUMPDEST PUSH1 0xF8 DUP2 LT ISZERO PUSH2 0x85A JUMPI PUSH2 0x807 PUSH1 0xC0 DUP3 PUSH2 0xBD6 JUMP JUMPDEST PUSH1 0xF7 DUP2 SUB PUSH1 0x1 DUP6 ADD SWAP5 POP DUP1 PUSH1 0x20 SUB PUSH2 0x100 EXP DUP6 MLOAD DIV PUSH1 0x1 DUP3 ADD DUP2 ADD SWAP4 POP POP POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH2 0x891 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x759 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x8A4 SWAP2 SWAP1 PUSH2 0xBEF JUMP JUMPDEST SWAP1 POP PUSH0 DUP3 DUP7 PUSH0 ADD MLOAD PUSH2 0x8B6 SWAP2 SWAP1 PUSH2 0xBD6 JUMP JUMPDEST SWAP2 SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x900 JUMPI PUSH2 0x900 PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x921 JUMPI PUSH2 0x921 PUSH2 0x8C3 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x93A JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x94F PUSH2 0x94A DUP4 PUSH2 0x908 JUMP JUMPDEST PUSH2 0x8D7 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP5 PUSH1 0x5 SHL DUP8 ADD ADD SWAP4 POP DUP7 DUP5 GT ISZERO PUSH2 0x970 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x98C JUMPI DUP1 CALLDATALOAD DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x975 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9A8 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x9BF JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9D2 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x9E2 PUSH2 0x94A DUP4 PUSH2 0x908 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP10 DUP5 GT ISZERO PUSH2 0xA00 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP5 DUP3 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0xA1E JUMPI DUP6 CALLDATALOAD DUP3 MSTORE SWAP5 DUP3 ADD SWAP5 SWAP1 DUP3 ADD SWAP1 PUSH2 0xA05 JUMP JUMPDEST SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0xA33 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0xA40 DUP6 DUP3 DUP7 ADD PUSH2 0x92B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA5B JUMPI PUSH0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP1 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA7C JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP1 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xA9B JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP PUSH1 0x1F DUP9 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xAB0 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xABE PUSH2 0x94A DUP3 PUSH2 0x908 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x5 SWAP2 SWAP1 SWAP2 SHL DUP5 ADD DUP6 ADD SWAP1 DUP6 DUP2 ADD SWAP1 DUP12 DUP4 GT ISZERO PUSH2 0xADC JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP7 DUP7 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB5E JUMPI DUP1 CALLDATALOAD DUP7 DUP2 GT ISZERO PUSH2 0xAF6 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP8 ADD PUSH1 0x3F DUP2 ADD DUP15 SGT PUSH2 0xB06 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP9 DUP2 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0xB1A JUMPI PUSH2 0xB1A PUSH2 0x8C3 JUMP JUMPDEST PUSH2 0xB2B DUP2 DUP9 ADD PUSH1 0x1F NOT AND DUP12 ADD PUSH2 0x8D7 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP16 DUP13 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0xB3E JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 DUP13 DUP5 ADD DUP13 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD DUP12 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MSTORE POP SWAP2 DUP8 ADD SWAP2 DUP8 ADD PUSH2 0xAE0 JUMP JUMPDEST POP DUP1 SWAP9 POP POP POP POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB81 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB98 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7C6 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xBE9 JUMPI PUSH2 0xBE9 PUSH2 0xBC2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xBE9 JUMPI PUSH2 0xBE9 PUSH2 0xBC2 JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0xC13 JUMPI PUSH2 0xC13 PUSH2 0xBC2 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0xBE9 JUMPI PUSH2 0xBE9 PUSH2 0xBC2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xAB DUP16 0xEA ISZERO 0xED 0xBB 0xF 0xE6 0x4F 0xA7 0xDE 0xDB 0x29 0x49 0xB9 PUSH17 0xCB5C60B56B35B8C2C754AFDB7832026473 PUSH16 0x6C634300081600330000000000000000 ",
"sourceMap": "14913:1585:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15001:23;;;;;-1:-1:-1;;;;;15001:23:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;15001:23:0;;;;;;;;14980:15;;;;;-1:-1:-1;;;;;14980:15:0;;;16194:302;;;;;;:::i;:::-;;:::i;:::-;;12105:134;;;;;;:::i;:::-;12183:12;12214:14;;;;;;;;;;;:18;;;;;;;;;;12105:134;;;;3260:25:1;;;3248:2;3233:18;12105:134:0;3114:177:1;15030:22:0;;;;;;11651:61;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13265:1203;;;;;;:::i;:::-;;:::i;16194:302::-;15576:3;;-1:-1:-1;;;;;15576:3:0;15554:10;:26;15550:81;;15589:42;;-1:-1:-1;;;15589:42:0;;15613:4;15589:42;;;5119:34:1;15620:10:0;5169:18:1;;;5162:43;5054:18;;15589:42:0;;;;;;;;15550:81;15675:7;;15645:3;;;;;;;;;-1:-1:-1;;;;;15645:3:0;-1:-1:-1;;;;;15645:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37;15641:93;;15726:7;;15691:43;;-1:-1:-1;;;15691:43:0;;15719:4;15691:43;;;5579:51:1;5646:18;;;5639:34;;;;5552:18;;15691:43:0;5405:274:1;15641:93:0;15771:8;;;15748:3;:19;;;-1:-1:-1;;;15748:19:0;;;;-1:-1:-1;;;;;15771:8:0;;;;15748:3;;;;:17;;:19;;;;;;;;;;;;;;;:3;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15748:31:0;;15744:93;;15828:8;;15788:49;;-1:-1:-1;;;15788:49:0;;15821:4;15788:49;;;5119:34:1;-1:-1:-1;;;;;15828:8:0;;;5169:18:1;;;5162:43;5054:18;;15788:49:0;4907:304:1;15744:93:0;16308:7:::1;:14;16294:3;:10;:28;16290:76;;16331:35;::::0;-1:-1:-1;;;16331:35:0;;16360:4:::1;16331:35;::::0;::::1;160:51:1::0;133:18;;16331:35:0::1;14:203:1::0;16290:76:0::1;16381:9;16376:114;16400:3;:10;16396:1;:14;16376:114;;;16431:48;16450:7;;16442:16;;16460:3;16464:1;16460:6;;;;;;;;:::i;:::-;;;;;;;16468:7;16476:1;16468:10;;;;;;;;:::i;:::-;;;;;;;16431;:48::i;:::-;16412:3;;16376:114;;;;16194:302:::0;;:::o;13265:1203::-;13370:9;13365:1097;13389:12;:19;13385:1;:23;13365:1097;;;13429:39;13471:36;13491:12;13504:1;13491:15;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;1709:28:0;;;;;;;;1717:11;;1709:28;;1667:15;;;1709:28;;;;;;;;1523:221;13471:36;13429:78;;13527:23;:14;:21;:23::i;:::-;13522:60;;13559:23;;-1:-1:-1;;;13559:23:0;;;;;;;;;;;13522:60;13597:45;13645:23;:14;:21;:23::i;:::-;13597:71;;13836:2;13808:18;:25;:30;:64;;;;13870:2;13842:18;:25;:30;13808:64;13804:144;;;13922:18;:25;13897:51;;-1:-1:-1;;;13897:51:0;;;;;;3260:25:1;;3248:2;3233:18;;3114:177;13804:144:0;13963:19;13993:30;:18;14012:1;13993:21;;;;;;;;:::i;:::-;;;;;;;:28;:30::i;:::-;13985:39;;13963:61;;14038:19;14068:30;:18;14087:1;14068:21;;;;;;;;:::i;:30::-;14038:61;;14114:25;14152:12;14165:1;14152:15;;;;;;;;:::i;:::-;;;;;;;;;;;;14142:26;;;;;;14182:23;14208:15;;;;;;;;;;:28;;;;;;;;;;;14142:26;;-1:-1:-1;14255:36:0;;;14251:136;;14316:71;;-1:-1:-1;;;14316:71:0;;;;;6495:25:1;;;6536:18;;;6529:34;;;6579:18;;;6572:34;;;6468:18;;14316:71:0;6293:319:1;14251:136:0;14402:49;14413:7;14422:15;14436:1;14422:11;:15;:::i;:::-;14439:11;14402:10;:49::i;:::-;-1:-1:-1;;13410:3:0;;;;;-1:-1:-1;13365:1097:0;;-1:-1:-1;;;13365:1097:0;12450:251;12531:19;12553:14;;;;;;;;;;;:18;;;;;;;;;12585:19;;;12581:114;;12620:6;:14;;;;;;;;;;;:18;;;;;;;;;:25;;;12664:20;12641:4;;12635:2;;12664:20;;12620:6;12664:20;12581:114;12521:180;12450:251;;;:::o;3579:321::-;3659:8;;3639:4;;3659:13;;3655:31;;-1:-1:-1;3681:5:0;;3579:321;-1:-1:-1;3579:321:0:o;3655:31::-;3735:11;;;;3796:13;;3697:11;3788:22;;338:4;3834:24;;3830:42;;;-1:-1:-1;3867:5:0;;3579:321;-1:-1:-1;;;3579:321:0:o;3830:42::-;-1:-1:-1;3889:4:0;;3579:321;-1:-1:-1;;;3579:321:0:o;2956:519::-;3016:16;3052:12;3059:4;3052:6;:12::i;:::-;3044:21;;;;;;3076:13;3092:14;3101:4;3092:8;:14::i;:::-;3076:30;;3116:23;3156:5;3142:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;3142:20:0;;;;;;;;;;;;;;;;3116:46;;3173:14;3204:27;3219:4;:11;;;3204:14;:27::i;:::-;3190:4;:11;;;:41;;;;:::i;:::-;3173:58;-1:-1:-1;3241:15:0;;3266:179;3290:5;3286:1;:9;3266:179;;;3326:19;3338:6;3326:11;:19::i;:::-;3316:29;;3371:24;;;;;;;;3379:7;3371:24;;;;3388:6;3371:24;;;3359:6;3366:1;3359:9;;;;;;;;:::i;:::-;;;;;;;;;;:36;3418:16;3427:7;3418:6;:16;:::i;:::-;3409:25;-1:-1:-1;3297:3:0;;3266:179;;;-1:-1:-1;3462:6:0;;2956:519;-1:-1:-1;;;;;2956:519:0:o;6059:467::-;6146:8;;6119:7;;6146:12;;;;:30;;-1:-1:-1;6162:8:0;;6174:2;-1:-1:-1;6162:14:0;6146:30;6138:39;;;;;;6189:14;6205:11;6220:21;6236:4;6220:15;:21::i;:::-;6309:13;;6188:53;;-1:-1:-1;6188:53:0;-1:-1:-1;6405:2:0;6397:11;;6394:92;;;6462:2;6458:12;;;6453:3;6449:22;6437:35;;6394:92;6513:6;6059:467;-1:-1:-1;;;;6059:467:0:o;7354:424::-;7438:8;;7415:7;;7438:13;;7434:27;;-1:-1:-1;7460:1:0;;7354:424;-1:-1:-1;7354:424:0:o;7434:27::-;7472:13;7499:15;7531:27;7546:4;:11;;;7531:14;:27::i;:::-;7517:4;:11;;;:41;;;;:::i;:::-;7499:59;;7568:14;7599:4;:8;;;7585:4;:11;;;:22;;;;:::i;:::-;7568:39;;7617:132;7634:6;7624:7;:16;7617:132;;;7676:20;7688:7;7676:11;:20::i;:::-;7666:30;;:7;:30;:::i;:::-;7656:40;-1:-1:-1;7731:7:0;;;;:::i;:::-;;;;7617:132;;;-1:-1:-1;7766:5:0;;7354:424;-1:-1:-1;;;7354:424:0:o;9142:581::-;9286:13;;9204:7;;9278:22;;249:4;9324:26;;9320:397;;;-1:-1:-1;9373:1:0;;9142:581;-1:-1:-1;;9142:581:0:o;9320:397::-;294:4;9395:25;;;:83;;-1:-1:-1;338:4:0;9425:25;;;;;:52;;-1:-1:-1;381:4:0;9454:23;;9425:52;9391:326;;;-1:-1:-1;9501:1:0;;9142:581;-1:-1:-1;;9142:581:0:o;9391:326::-;338:4;9523:24;;9519:198;;;9609:21;9629:1;294:4;9609:21;:::i;:::-;9600:31;;;;:5;:31;:::i;:::-;:35;;9634:1;9600:35;:::i;:::-;9593:42;9142:581;-1:-1:-1;;;9142:581:0:o;9519:198::-;9682:19;9700:1;381:4;9682:19;:::i;7827:1263::-;7993:13;;7886:7;;;;7985:22;;249:4;8031:26;;8027:1032;;;8083:1;8073:11;;8027:1032;;;294:4;8105:25;;8101:958;;;8156:26;249:4;8156:5;:26;:::i;:::-;:30;;8185:1;8156:30;:::i;:::-;8146:40;;8101:958;;;338:4;8207:24;;8203:856;;;8300:4;8293:5;8289:16;8379:1;8371:6;8367:14;8357:24;;8518:7;8514:2;8510:16;8505:3;8501:26;8492:6;8486:13;8482:46;8615:1;8606:7;8602:15;8593:7;8589:29;8578:40;;;;8203:856;;;381:4;8652:23;;8648:411;;;8701:24;338:4;8701:5;:24;:::i;8648:411::-;8813:4;8806:5;8802:16;8857:1;8849:6;8845:14;8835:24;;8928:7;8924:2;8920:16;8915:3;8911:26;8902:6;8896:13;8892:46;9032:1;9023:7;9019:15;9010:7;9006:29;8995:40;;;;8648:411;-1:-1:-1;9076:7:0;7827:1263;-1:-1:-1;;7827:1263:0:o;2400:281::-;2469:7;2478;2497:14;2514:27;2529:4;:11;;;2514:14;:27::i;:::-;2497:44;;2551:14;2582:6;2568:4;:11;;;:20;;;;:::i;:::-;2551:37;;2598:11;2623:6;2612:4;:8;;;:17;;;;:::i;:::-;2662:6;;2598:31;;-1:-1:-1;2400:281:0;;-1:-1:-1;;;;2400:281:0:o;443:127:1:-;504:10;499:3;495:20;492:1;485:31;535:4;532:1;525:15;559:4;556:1;549:15;575:275;646:2;640:9;711:2;692:13;;-1:-1:-1;;688:27:1;676:40;;746:18;731:34;;767:22;;;728:62;725:88;;;793:18;;:::i;:::-;829:2;822:22;575:275;;-1:-1:-1;575:275:1:o;855:183::-;915:4;948:18;940:6;937:30;934:56;;;970:18;;:::i;:::-;-1:-1:-1;1015:1:1;1011:14;1027:4;1007:25;;855:183::o;1043:668::-;1097:5;1150:3;1143:4;1135:6;1131:17;1127:27;1117:55;;1168:1;1165;1158:12;1117:55;1204:6;1191:20;1230:4;1254:60;1270:43;1310:2;1270:43;:::i;:::-;1254:60;:::i;:::-;1336:3;1360:2;1355:3;1348:15;1388:4;1383:3;1379:14;1372:21;;1445:4;1439:2;1436:1;1432:10;1424:6;1420:23;1416:34;1402:48;;1473:3;1465:6;1462:15;1459:35;;;1490:1;1487;1480:12;1459:35;1526:4;1518:6;1514:17;1540:142;1556:6;1551:3;1548:15;1540:142;;;1622:17;;1610:30;;1660:12;;;;1573;;1540:142;;;-1:-1:-1;1700:5:1;1043:668;-1:-1:-1;;;;;;1043:668:1:o;1716:1140::-;1834:6;1842;1895:2;1883:9;1874:7;1870:23;1866:32;1863:52;;;1911:1;1908;1901:12;1863:52;1951:9;1938:23;1980:18;2021:2;2013:6;2010:14;2007:34;;;2037:1;2034;2027:12;2007:34;2075:6;2064:9;2060:22;2050:32;;2120:7;2113:4;2109:2;2105:13;2101:27;2091:55;;2142:1;2139;2132:12;2091:55;2178:2;2165:16;2200:4;2224:60;2240:43;2280:2;2240:43;:::i;2224:60::-;2318:15;;;2400:1;2396:10;;;;2388:19;;2384:28;;;2349:12;;;;2424:19;;;2421:39;;;2456:1;2453;2446:12;2421:39;2480:11;;;;2500:142;2516:6;2511:3;2508:15;2500:142;;;2582:17;;2570:30;;2533:12;;;;2620;;;;2500:142;;;2661:5;-1:-1:-1;;2704:18:1;;2691:32;;-1:-1:-1;;2735:16:1;;;2732:36;;;2764:1;2761;2754:12;2732:36;;2787:63;2842:7;2831:8;2820:9;2816:24;2787:63;:::i;:::-;2777:73;;;1716:1140;;;;;:::o;2861:248::-;2929:6;2937;2990:2;2978:9;2969:7;2965:23;2961:32;2958:52;;;3006:1;3003;2996:12;2958:52;-1:-1:-1;;3029:23:1;;;3099:2;3084:18;;;3071:32;;-1:-1:-1;2861:248:1:o;3296:1606::-;3398:6;3406;3437:2;3480;3468:9;3459:7;3455:23;3451:32;3448:52;;;3496:1;3493;3486:12;3448:52;3532:9;3519:23;3509:33;;3561:2;3614;3603:9;3599:18;3586:32;3637:18;3678:2;3670:6;3667:14;3664:34;;;3694:1;3691;3684:12;3664:34;3732:6;3721:9;3717:22;3707:32;;3758:4;3800:7;3793:4;3789:2;3785:13;3781:27;3771:55;;3822:1;3819;3812:12;3771:55;3858:2;3845:16;3881:60;3897:43;3937:2;3897:43;:::i;3881:60::-;3975:15;;;4057:1;4053:10;;;;4045:19;;4041:28;;;4006:12;;;;4081:19;;;4078:39;;;4113:1;4110;4103:12;4078:39;4145:2;4141;4137:11;4157:715;4173:6;4168:3;4165:15;4157:715;;;4259:3;4246:17;4295:2;4282:11;4279:19;4276:39;;;4311:1;4308;4301:12;4276:39;4338:20;;4393:2;4385:11;;4381:25;-1:-1:-1;4371:53:1;;4420:1;4417;4410:12;4371:53;4468:2;4464;4460:11;4447:25;4495:2;4491;4488:10;4485:36;;;4501:18;;:::i;:::-;4547:51;4571:11;;;-1:-1:-1;;4567:25:1;4563:34;;4547:51;:::i;:::-;4625:2;4618:5;4611:17;4669:7;4664:2;4659;4655;4651:11;4647:20;4644:33;4641:53;;;4690:1;4687;4680:12;4641:53;4749:2;4744;4740;4736:11;4731:2;4724:5;4720:14;4707:45;4797:1;4776:14;;;4772:23;;4765:34;;;;4812:18;;-1:-1:-1;4850:12:1;;;;4190;;4157:715;;;4161:3;4891:5;4881:15;;;;;;;;;;3296:1606;;;;;:::o;5216:184::-;5286:6;5339:2;5327:9;5318:7;5314:23;5310:32;5307:52;;;5355:1;5352;5345:12;5307:52;-1:-1:-1;5378:16:1;;5216:184;-1:-1:-1;5216:184:1:o;5684:290::-;5754:6;5807:2;5795:9;5786:7;5782:23;5778:32;5775:52;;;5823:1;5820;5813:12;5775:52;5849:16;;-1:-1:-1;;;;;5894:31:1;;5884:42;;5874:70;;5940:1;5937;5930:12;5979:127;6040:10;6035:3;6031:20;6028:1;6021:31;6071:4;6068:1;6061:15;6095:4;6092:1;6085:15;6617:127;6678:10;6673:3;6669:20;6666:1;6659:31;6709:4;6706:1;6699:15;6733:4;6730:1;6723:15;6749:128;6816:9;;;6837:11;;;6834:37;;;6851:18;;:::i;:::-;6749:128;;;;:::o;6882:125::-;6947:9;;;6968:10;;;6965:36;;;6981:18;;:::i;7012:135::-;7051:3;7072:17;;;7069:43;;7092:18;;:::i;:::-;-1:-1:-1;7139:1:1;7128:13;;7012:135::o;7152:151::-;7242:4;7235:12;;;7221;;;7217:31;;7260:14;;7257:40;;;7277:18;;:::i"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "635400",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"amb()": "2348",
"chainId()": "2316",
"getHashFromOracle(uint256,uint256)": "2527",
"hashes(uint256,uint256)": "2568",
"proveAncestralBlockHashes(uint256,bytes[])": "infinite",
"reporter()": "2326",
"storeHashes(uint256[],bytes32[])": "infinite"
}
},
"methodIdentifiers": {
"amb()": "1062b39a",
"chainId()": "9a8a0592",
"getHashFromOracle(uint256,uint256)": "8599a969",
"hashes(uint256,uint256)": "d13372ca",
"proveAncestralBlockHashes(uint256,bytes[])": "e81900a6",
"reporter()": "010ec441",
"storeHashes(uint256[],bytes32[])": "69f55903"
}
},
"abi": [
{
"inputs": [
{
"internalType": "contract IAMB",
"name": "_amb",
"type": "address"
},
{
"internalType": "address",
"name": "_reporter",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_chainId",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
}
],
"name": "ArrayLengthMissmatch",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "reportedBlockHash",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "storedBlockHash",
"type": "bytes32"
}
],
"name": "ConflictingBlockHeader",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "length",
"type": "uint256"
}
],
"name": "InvalidBlockHeaderLength",
"type": "error"
},
{
"inputs": [],
"name": "InvalidBlockHeaderRLP",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "UnauthorizedAMB",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "bytes32",
"name": "chainId",
"type": "bytes32"
}
],
"name": "UnauthorizedChainId",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "address",
"name": "reporter",
"type": "address"
}
],
"name": "UnauthorizedHashReporter",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "hashes",
"type": "bytes32"
}
],
"name": "HashStored",
"type": "event"
},
{
"inputs": [],
"name": "amb",
"outputs": [
{
"internalType": "contract IAMB",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "chainId",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "domain",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getHashFromOracle",
"outputs": [
{
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "hashes",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "bytes[]",
"name": "blockHeaders",
"type": "bytes[]"
}
],
"name": "proveAncestralBlockHashes",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "reporter",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"internalType": "bytes32[]",
"name": "_hashes",
"type": "bytes32[]"
}
],
"name": "storeHashes",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "contract IAMB",
"name": "_amb",
"type": "address"
},
{
"internalType": "address",
"name": "_reporter",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_chainId",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
}
],
"name": "ArrayLengthMissmatch",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "reportedBlockHash",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "storedBlockHash",
"type": "bytes32"
}
],
"name": "ConflictingBlockHeader",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "length",
"type": "uint256"
}
],
"name": "InvalidBlockHeaderLength",
"type": "error"
},
{
"inputs": [],
"name": "InvalidBlockHeaderRLP",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "UnauthorizedAMB",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "bytes32",
"name": "chainId",
"type": "bytes32"
}
],
"name": "UnauthorizedChainId",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "address",
"name": "reporter",
"type": "address"
}
],
"name": "UnauthorizedHashReporter",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "hashes",
"type": "bytes32"
}
],
"name": "HashStored",
"type": "event"
},
{
"inputs": [],
"name": "amb",
"outputs": [
{
"internalType": "contract IAMB",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "chainId",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "domain",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getHashFromOracle",
"outputs": [
{
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "hashes",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "bytes[]",
"name": "blockHeaders",
"type": "bytes[]"
}
],
"name": "proveAncestralBlockHashes",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "reporter",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"internalType": "bytes32[]",
"name": "_hashes",
"type": "bytes32[]"
}
],
"name": "storeHashes",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"getHashFromOracle(uint256,uint256)": {
"details": "Returns the hash for a given domain and ID, as reported by the oracle.",
"params": {
"domain": "Identifier for the domain to query.",
"id": "Identifier for the ID to query."
},
"returns": {
"hash": "Bytes32 hash reported by the oracle for the given ID on the given domain."
}
},
"proveAncestralBlockHashes(uint256,bytes[])": {
"details": "Proves and stores valid ancestral block hashes for a given chain ID.",
"params": {
"blockHeaders": "The RLP encoded block headers to prove the hashes for.",
"chainId": "The ID of the chain to prove block hashes for."
}
},
"storeHashes(uint256[],bytes32[])": {
"details": "Stores the hashes for a given array of idss.",
"params": {
"_hashes": "Array of hashes to set for the given ids.",
"ids": "Array of ids number for which to set the hashes."
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"getHashFromOracle(uint256,uint256)": {
"notice": "MUST return bytes32(0) if the oracle has not yet reported a hash for the given ID."
},
"proveAncestralBlockHashes(uint256,bytes[])": {
"notice": "Block headers should be ordered by descending block number and should start with a known block header."
},
"storeHashes(uint256[],bytes32[])": {
"notice": "Only callable by `amb` with a message passed from `reporter.Will revert if given array lengths do not match."
}
},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/AMBHeaderReporter.sol": "AMBAdapter"
},
"evmVersion": "shanghai",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/AMBHeaderReporter.sol": {
"keccak256": "0x72fe1d5010cdef4d8fa000418e7b1fda6b8d2ed0217c9cd7c5dd45edb2e1ee3d",
"urls": [
"bzz-raw://928b19315eb303f7f224d34b52e4953006032ed45b346dbd78bf065772063f60",
"dweb:/ipfs/QmWnduKGVX2ZMyx6xAMH6FCZATL3a6t8d6WHvRXwXxYMtN"
]
}
},
"version": 1
}
{
"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": {
"@_1368": {
"entryPoint": null,
"id": 1368,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_decode_tuple_t_contract$_IAMB_$1060t_contract$_HeaderStorage_$1335_fromMemory": {
"entryPoint": 92,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"validator_revert_contract_IAMB": {
"entryPoint": 69,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nativeSrc": "0:590:1",
"nodeType": "YulBlock",
"src": "0:590:1",
"statements": [
{
"nativeSrc": "6:3:1",
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nativeSrc": "65:86:1",
"nodeType": "YulBlock",
"src": "65:86:1",
"statements": [
{
"body": {
"nativeSrc": "129:16:1",
"nodeType": "YulBlock",
"src": "129:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "138:1:1",
"nodeType": "YulLiteral",
"src": "138:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "141:1:1",
"nodeType": "YulLiteral",
"src": "141:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "131:6:1",
"nodeType": "YulIdentifier",
"src": "131:6:1"
},
"nativeSrc": "131:12:1",
"nodeType": "YulFunctionCall",
"src": "131:12:1"
},
"nativeSrc": "131:12:1",
"nodeType": "YulExpressionStatement",
"src": "131:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "88:5:1",
"nodeType": "YulIdentifier",
"src": "88:5:1"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "99:5:1",
"nodeType": "YulIdentifier",
"src": "99:5:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "114:3:1",
"nodeType": "YulLiteral",
"src": "114:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "119:1:1",
"nodeType": "YulLiteral",
"src": "119:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "110:3:1",
"nodeType": "YulIdentifier",
"src": "110:3:1"
},
"nativeSrc": "110:11:1",
"nodeType": "YulFunctionCall",
"src": "110:11:1"
},
{
"kind": "number",
"nativeSrc": "123:1:1",
"nodeType": "YulLiteral",
"src": "123:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "106:3:1",
"nodeType": "YulIdentifier",
"src": "106:3:1"
},
"nativeSrc": "106:19:1",
"nodeType": "YulFunctionCall",
"src": "106:19:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "95:3:1",
"nodeType": "YulIdentifier",
"src": "95:3:1"
},
"nativeSrc": "95:31:1",
"nodeType": "YulFunctionCall",
"src": "95:31:1"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "85:2:1",
"nodeType": "YulIdentifier",
"src": "85:2:1"
},
"nativeSrc": "85:42:1",
"nodeType": "YulFunctionCall",
"src": "85:42:1"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "78:6:1",
"nodeType": "YulIdentifier",
"src": "78:6:1"
},
"nativeSrc": "78:50:1",
"nodeType": "YulFunctionCall",
"src": "78:50:1"
},
"nativeSrc": "75:70:1",
"nodeType": "YulIf",
"src": "75:70:1"
}
]
},
"name": "validator_revert_contract_IAMB",
"nativeSrc": "14:137:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "54:5:1",
"nodeType": "YulTypedName",
"src": "54:5:1",
"type": ""
}
],
"src": "14:137:1"
},
{
"body": {
"nativeSrc": "289:299:1",
"nodeType": "YulBlock",
"src": "289:299:1",
"statements": [
{
"body": {
"nativeSrc": "335:16:1",
"nodeType": "YulBlock",
"src": "335:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "344:1:1",
"nodeType": "YulLiteral",
"src": "344:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "347:1:1",
"nodeType": "YulLiteral",
"src": "347:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "337:6:1",
"nodeType": "YulIdentifier",
"src": "337:6:1"
},
"nativeSrc": "337:12:1",
"nodeType": "YulFunctionCall",
"src": "337:12:1"
},
"nativeSrc": "337:12:1",
"nodeType": "YulExpressionStatement",
"src": "337:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "310:7:1",
"nodeType": "YulIdentifier",
"src": "310:7:1"
},
{
"name": "headStart",
"nativeSrc": "319:9:1",
"nodeType": "YulIdentifier",
"src": "319:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "306:3:1",
"nodeType": "YulIdentifier",
"src": "306:3:1"
},
"nativeSrc": "306:23:1",
"nodeType": "YulFunctionCall",
"src": "306:23:1"
},
{
"kind": "number",
"nativeSrc": "331:2:1",
"nodeType": "YulLiteral",
"src": "331:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "302:3:1",
"nodeType": "YulIdentifier",
"src": "302:3:1"
},
"nativeSrc": "302:32:1",
"nodeType": "YulFunctionCall",
"src": "302:32:1"
},
"nativeSrc": "299:52:1",
"nodeType": "YulIf",
"src": "299:52:1"
},
{
"nativeSrc": "360:29:1",
"nodeType": "YulVariableDeclaration",
"src": "360:29:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "379:9:1",
"nodeType": "YulIdentifier",
"src": "379:9:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "373:5:1",
"nodeType": "YulIdentifier",
"src": "373:5:1"
},
"nativeSrc": "373:16:1",
"nodeType": "YulFunctionCall",
"src": "373:16:1"
},
"variables": [
{
"name": "value",
"nativeSrc": "364:5:1",
"nodeType": "YulTypedName",
"src": "364:5:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nativeSrc": "429:5:1",
"nodeType": "YulIdentifier",
"src": "429:5:1"
}
],
"functionName": {
"name": "validator_revert_contract_IAMB",
"nativeSrc": "398:30:1",
"nodeType": "YulIdentifier",
"src": "398:30:1"
},
"nativeSrc": "398:37:1",
"nodeType": "YulFunctionCall",
"src": "398:37:1"
},
"nativeSrc": "398:37:1",
"nodeType": "YulExpressionStatement",
"src": "398:37:1"
},
{
"nativeSrc": "444:15:1",
"nodeType": "YulAssignment",
"src": "444:15:1",
"value": {
"name": "value",
"nativeSrc": "454:5:1",
"nodeType": "YulIdentifier",
"src": "454:5:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "444:6:1",
"nodeType": "YulIdentifier",
"src": "444:6:1"
}
]
},
{
"nativeSrc": "468:40:1",
"nodeType": "YulVariableDeclaration",
"src": "468:40:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "493:9:1",
"nodeType": "YulIdentifier",
"src": "493:9:1"
},
{
"kind": "number",
"nativeSrc": "504:2:1",
"nodeType": "YulLiteral",
"src": "504:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "489:3:1",
"nodeType": "YulIdentifier",
"src": "489:3:1"
},
"nativeSrc": "489:18:1",
"nodeType": "YulFunctionCall",
"src": "489:18:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "483:5:1",
"nodeType": "YulIdentifier",
"src": "483:5:1"
},
"nativeSrc": "483:25:1",
"nodeType": "YulFunctionCall",
"src": "483:25:1"
},
"variables": [
{
"name": "value_1",
"nativeSrc": "472:7:1",
"nodeType": "YulTypedName",
"src": "472:7:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value_1",
"nativeSrc": "548:7:1",
"nodeType": "YulIdentifier",
"src": "548:7:1"
}
],
"functionName": {
"name": "validator_revert_contract_IAMB",
"nativeSrc": "517:30:1",
"nodeType": "YulIdentifier",
"src": "517:30:1"
},
"nativeSrc": "517:39:1",
"nodeType": "YulFunctionCall",
"src": "517:39:1"
},
"nativeSrc": "517:39:1",
"nodeType": "YulExpressionStatement",
"src": "517:39:1"
},
{
"nativeSrc": "565:17:1",
"nodeType": "YulAssignment",
"src": "565:17:1",
"value": {
"name": "value_1",
"nativeSrc": "575:7:1",
"nodeType": "YulIdentifier",
"src": "575:7:1"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "565:6:1",
"nodeType": "YulIdentifier",
"src": "565:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_contract$_IAMB_$1060t_contract$_HeaderStorage_$1335_fromMemory",
"nativeSrc": "156:432:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "247:9:1",
"nodeType": "YulTypedName",
"src": "247:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "258:7:1",
"nodeType": "YulTypedName",
"src": "258:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "270:6:1",
"nodeType": "YulTypedName",
"src": "270:6:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "278:6:1",
"nodeType": "YulTypedName",
"src": "278:6:1",
"type": ""
}
],
"src": "156:432:1"
}
]
},
"contents": "{\n { }\n function validator_revert_contract_IAMB(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_contract$_IAMB_$1060t_contract$_HeaderStorage_$1335_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_contract_IAMB(value)\n value0 := value\n let value_1 := mload(add(headStart, 32))\n validator_revert_contract_IAMB(value_1)\n value1 := value_1\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "60c060405234801561000f575f80fd5b5060405161069f38038061069f83398101604081905261002e9161005c565b6001600160a01b039182166080521660a052610094565b6001600160a01b0381168114610059575f80fd5b50565b5f806040838503121561006d575f80fd5b825161007881610045565b602084015190925061008981610045565b809150509250929050565b60805160a0516105df6100c05f395f8181608c015260d301525f8181604801526101b701526105df5ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80631062b39a14610043578063124e181f14610087578063e2eb6f86146100ae575b5f80fd5b61006a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61006a7f000000000000000000000000000000000000000000000000000000000000000081565b6100c16100bc36600461033c565b6100cf565b60405190815260200161007e565b5f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ceee6e55866040518263ffffffff1660e01b815260040161011d9190610421565b5f604051808303815f875af1158015610138573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261015f919081019061043a565b90505f85826040516024016101759291906104c6565b60408051601f198184030181529181526020820180516001600160e01b03166369f5590360e01b1790525163dc8601b360e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dc8601b3906101f09088908590899060040161051b565b6020604051808303815f875af115801561020c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610230919061057e565b92505f5b86518110156102af5782818151811061024f5761024f610595565b602002602001015187828151811061026957610269610595565b6020026020010151306001600160a01b03167f91d88cce380da58b1f18fc437a4a6342ddea08c9a496e31ae03e16c08fc4fce160405160405180910390a4600101610234565b5050509392505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156102f6576102f66102b9565b604052919050565b5f67ffffffffffffffff821115610317576103176102b9565b5060051b60200190565b80356001600160a01b0381168114610337575f80fd5b919050565b5f805f6060848603121561034e575f80fd5b833567ffffffffffffffff811115610364575f80fd5b8401601f81018613610374575f80fd5b80356020610389610384836102fe565b6102cd565b82815260059290921b830181019181810190898411156103a7575f80fd5b938201935b838510156103c5578435825293820193908201906103ac565b96506103d49050878201610321565b9450505050604084013590509250925092565b5f815180845260208085019450602084015f5b83811015610416578151875295820195908201906001016103fa565b509495945050505050565b602081525f61043360208301846103e7565b9392505050565b5f602080838503121561044b575f80fd5b825167ffffffffffffffff811115610461575f80fd5b8301601f81018513610471575f80fd5b805161047f610384826102fe565b81815260059190911b8201830190838101908783111561049d575f80fd5b928401925b828410156104bb578351825292840192908401906104a2565b979650505050505050565b604081525f6104d860408301856103e7565b8281036020848101919091528451808352858201928201905f5b8181101561050e578451835293830193918301916001016104f2565b5090979650505050505050565b60018060a01b03841681525f60206060602084015284518060608501525f5b818110156105565786810183015185820160800152820161053a565b505f608082860101526080601f19601f83011685010192505050826040830152949350505050565b5f6020828403121561058e575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220179d05baf326f1f47480fae7b5172b855853791a8c178b1fc522662ba3f4d3d764736f6c63430008160033",
"opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x69F CODESIZE SUB DUP1 PUSH2 0x69F DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x5C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x80 MSTORE AND PUSH1 0xA0 MSTORE PUSH2 0x94 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x59 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6D JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x78 DUP2 PUSH2 0x45 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x89 DUP2 PUSH2 0x45 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH2 0x5DF PUSH2 0xC0 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH1 0x8C ADD MSTORE PUSH1 0xD3 ADD MSTORE PUSH0 DUP2 DUP2 PUSH1 0x48 ADD MSTORE PUSH2 0x1B7 ADD MSTORE PUSH2 0x5DF PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1062B39A EQ PUSH2 0x43 JUMPI DUP1 PUSH4 0x124E181F EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0xE2EB6F86 EQ PUSH2 0xAE JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x6A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0xC1 PUSH2 0xBC CALLDATASIZE PUSH1 0x4 PUSH2 0x33C JUMP JUMPDEST PUSH2 0xCF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x7E JUMP JUMPDEST PUSH0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCEEE6E55 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11D SWAP2 SWAP1 PUSH2 0x421 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x138 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x15F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x43A JUMP JUMPDEST SWAP1 POP PUSH0 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x175 SWAP3 SWAP2 SWAP1 PUSH2 0x4C6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x69F55903 PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH4 0xDC8601B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xDC8601B3 SWAP1 PUSH2 0x1F0 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x51B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 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 0x230 SWAP2 SWAP1 PUSH2 0x57E JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x2AF JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x24F JUMPI PUSH2 0x24F PUSH2 0x595 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x269 JUMPI PUSH2 0x269 PUSH2 0x595 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x91D88CCE380DA58B1F18FC437A4A6342DDEA08C9A496E31AE03E16C08FC4FCE1 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 ADD PUSH2 0x234 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2F6 JUMPI PUSH2 0x2F6 PUSH2 0x2B9 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x317 JUMPI PUSH2 0x317 PUSH2 0x2B9 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x337 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x34E JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x364 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP5 ADD PUSH1 0x1F DUP2 ADD DUP7 SGT PUSH2 0x374 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x20 PUSH2 0x389 PUSH2 0x384 DUP4 PUSH2 0x2FE JUMP JUMPDEST PUSH2 0x2CD JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP4 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP10 DUP5 GT ISZERO PUSH2 0x3A7 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP4 DUP3 ADD SWAP4 JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3C5 JUMPI DUP5 CALLDATALOAD DUP3 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH2 0x3AC JUMP JUMPDEST SWAP7 POP PUSH2 0x3D4 SWAP1 POP DUP8 DUP3 ADD PUSH2 0x321 JUMP JUMPDEST SWAP5 POP POP POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP5 ADD PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x416 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3FA JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x433 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3E7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x44B JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x461 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x471 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x47F PUSH2 0x384 DUP3 PUSH2 0x2FE JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x5 SWAP2 SWAP1 SWAP2 SHL DUP3 ADD DUP4 ADD SWAP1 DUP4 DUP2 ADD SWAP1 DUP8 DUP4 GT ISZERO PUSH2 0x49D JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP3 DUP5 ADD SWAP3 JUMPDEST DUP3 DUP5 LT ISZERO PUSH2 0x4BB JUMPI DUP4 MLOAD DUP3 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH2 0x4A2 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x4D8 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3E7 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MLOAD DUP1 DUP4 MSTORE DUP6 DUP3 ADD SWAP3 DUP3 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x50E JUMPI DUP5 MLOAD DUP4 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4F2 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE PUSH0 PUSH1 0x20 PUSH1 0x60 PUSH1 0x20 DUP5 ADD MSTORE DUP5 MLOAD DUP1 PUSH1 0x60 DUP6 ADD MSTORE PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x556 JUMPI DUP7 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x80 ADD MSTORE DUP3 ADD PUSH2 0x53A JUMP JUMPDEST POP PUSH0 PUSH1 0x80 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x80 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x58E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR SWAP14 SDIV 0xBA RETURN 0x26 CALL DELEGATECALL PUSH21 0x80FAE7B5172B855853791A8C178B1FC522662BA3F4 0xD3 0xD7 PUSH5 0x736F6C6343 STOP ADDMOD AND STOP CALLER ",
"sourceMap": "18199:1225:0:-:0;;;18424:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18487:10:0;;;;;18507:30;;;18199:1225;;14:137:1;-1:-1:-1;;;;;95:31:1;;85:42;;75:70;;141:1;138;131:12;75:70;14:137;:::o;156:432::-;270:6;278;331:2;319:9;310:7;306:23;302:32;299:52;;;347:1;344;337:12;299:52;379:9;373:16;398:37;429:5;398:37;:::i;:::-;504:2;489:18;;483:25;454:5;;-1:-1:-1;517:39:1;483:25;517:39;:::i;:::-;575:7;565:17;;;156:432;;;;;:::o;:::-;18199:1225:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@amb_1339": {
"entryPoint": null,
"id": 1339,
"parameterSlots": 0,
"returnSlots": 0
},
"@headerStorage_1342": {
"entryPoint": null,
"id": 1342,
"parameterSlots": 0,
"returnSlots": 0
},
"@reportHeaders_1438": {
"entryPoint": 207,
"id": 1438,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_address": {
"entryPoint": 801,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory": {
"entryPoint": 1082,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256": {
"entryPoint": 828,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_bytes32_fromMemory": {
"entryPoint": 1406,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_array_uint256_dyn": {
"entryPoint": 999,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_bytes_memory_ptr_t_uint256__to_t_address_t_bytes_memory_ptr_t_uint256__fromStack_reversed": {
"entryPoint": 1307,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed": {
"entryPoint": 1057,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed": {
"entryPoint": 1222,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_contract$_HeaderStorage_$1335__to_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_contract$_IAMB_$1060__to_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 717,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_allocation_size_array_uint256_dyn": {
"entryPoint": 766,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x32": {
"entryPoint": 1429,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 697,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nativeSrc": "0:5910:1",
"nodeType": "YulBlock",
"src": "0:5910:1",
"statements": [
{
"nativeSrc": "6:3:1",
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nativeSrc": "128:102:1",
"nodeType": "YulBlock",
"src": "128:102:1",
"statements": [
{
"nativeSrc": "138:26:1",
"nodeType": "YulAssignment",
"src": "138:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "150:9:1",
"nodeType": "YulIdentifier",
"src": "150:9:1"
},
{
"kind": "number",
"nativeSrc": "161:2:1",
"nodeType": "YulLiteral",
"src": "161:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "146:3:1",
"nodeType": "YulIdentifier",
"src": "146:3:1"
},
"nativeSrc": "146:18:1",
"nodeType": "YulFunctionCall",
"src": "146:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "138:4:1",
"nodeType": "YulIdentifier",
"src": "138:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "180:9:1",
"nodeType": "YulIdentifier",
"src": "180:9:1"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "195:6:1",
"nodeType": "YulIdentifier",
"src": "195:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "211:3:1",
"nodeType": "YulLiteral",
"src": "211:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "216:1:1",
"nodeType": "YulLiteral",
"src": "216:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "207:3:1",
"nodeType": "YulIdentifier",
"src": "207:3:1"
},
"nativeSrc": "207:11:1",
"nodeType": "YulFunctionCall",
"src": "207:11:1"
},
{
"kind": "number",
"nativeSrc": "220:1:1",
"nodeType": "YulLiteral",
"src": "220:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "203:3:1",
"nodeType": "YulIdentifier",
"src": "203:3:1"
},
"nativeSrc": "203:19:1",
"nodeType": "YulFunctionCall",
"src": "203:19:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "191:3:1",
"nodeType": "YulIdentifier",
"src": "191:3:1"
},
"nativeSrc": "191:32:1",
"nodeType": "YulFunctionCall",
"src": "191:32:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "173:6:1",
"nodeType": "YulIdentifier",
"src": "173:6:1"
},
"nativeSrc": "173:51:1",
"nodeType": "YulFunctionCall",
"src": "173:51:1"
},
"nativeSrc": "173:51:1",
"nodeType": "YulExpressionStatement",
"src": "173:51:1"
}
]
},
"name": "abi_encode_tuple_t_contract$_IAMB_$1060__to_t_address__fromStack_reversed",
"nativeSrc": "14:216:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "97:9:1",
"nodeType": "YulTypedName",
"src": "97:9:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "108:6:1",
"nodeType": "YulTypedName",
"src": "108:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "119:4:1",
"nodeType": "YulTypedName",
"src": "119:4:1",
"type": ""
}
],
"src": "14:216:1"
},
{
"body": {
"nativeSrc": "358:102:1",
"nodeType": "YulBlock",
"src": "358:102:1",
"statements": [
{
"nativeSrc": "368:26:1",
"nodeType": "YulAssignment",
"src": "368:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "380:9:1",
"nodeType": "YulIdentifier",
"src": "380:9:1"
},
{
"kind": "number",
"nativeSrc": "391:2:1",
"nodeType": "YulLiteral",
"src": "391:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "376:3:1",
"nodeType": "YulIdentifier",
"src": "376:3:1"
},
"nativeSrc": "376:18:1",
"nodeType": "YulFunctionCall",
"src": "376:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "368:4:1",
"nodeType": "YulIdentifier",
"src": "368:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "410:9:1",
"nodeType": "YulIdentifier",
"src": "410:9:1"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "425:6:1",
"nodeType": "YulIdentifier",
"src": "425:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "441:3:1",
"nodeType": "YulLiteral",
"src": "441:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "446:1:1",
"nodeType": "YulLiteral",
"src": "446:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "437:3:1",
"nodeType": "YulIdentifier",
"src": "437:3:1"
},
"nativeSrc": "437:11:1",
"nodeType": "YulFunctionCall",
"src": "437:11:1"
},
{
"kind": "number",
"nativeSrc": "450:1:1",
"nodeType": "YulLiteral",
"src": "450:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "433:3:1",
"nodeType": "YulIdentifier",
"src": "433:3:1"
},
"nativeSrc": "433:19:1",
"nodeType": "YulFunctionCall",
"src": "433:19:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "421:3:1",
"nodeType": "YulIdentifier",
"src": "421:3:1"
},
"nativeSrc": "421:32:1",
"nodeType": "YulFunctionCall",
"src": "421:32:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "403:6:1",
"nodeType": "YulIdentifier",
"src": "403:6:1"
},
"nativeSrc": "403:51:1",
"nodeType": "YulFunctionCall",
"src": "403:51:1"
},
"nativeSrc": "403:51:1",
"nodeType": "YulExpressionStatement",
"src": "403:51:1"
}
]
},
"name": "abi_encode_tuple_t_contract$_HeaderStorage_$1335__to_t_address__fromStack_reversed",
"nativeSrc": "235:225:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "327:9:1",
"nodeType": "YulTypedName",
"src": "327:9:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "338:6:1",
"nodeType": "YulTypedName",
"src": "338:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "349:4:1",
"nodeType": "YulTypedName",
"src": "349:4:1",
"type": ""
}
],
"src": "235:225:1"
},
{
"body": {
"nativeSrc": "497:95:1",
"nodeType": "YulBlock",
"src": "497:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "514:1:1",
"nodeType": "YulLiteral",
"src": "514:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "521:3:1",
"nodeType": "YulLiteral",
"src": "521:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nativeSrc": "526:10:1",
"nodeType": "YulLiteral",
"src": "526:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "517:3:1",
"nodeType": "YulIdentifier",
"src": "517:3:1"
},
"nativeSrc": "517:20:1",
"nodeType": "YulFunctionCall",
"src": "517:20:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "507:6:1",
"nodeType": "YulIdentifier",
"src": "507:6:1"
},
"nativeSrc": "507:31:1",
"nodeType": "YulFunctionCall",
"src": "507:31:1"
},
"nativeSrc": "507:31:1",
"nodeType": "YulExpressionStatement",
"src": "507:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "554:1:1",
"nodeType": "YulLiteral",
"src": "554:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "557:4:1",
"nodeType": "YulLiteral",
"src": "557:4:1",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "547:6:1",
"nodeType": "YulIdentifier",
"src": "547:6:1"
},
"nativeSrc": "547:15:1",
"nodeType": "YulFunctionCall",
"src": "547:15:1"
},
"nativeSrc": "547:15:1",
"nodeType": "YulExpressionStatement",
"src": "547:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "578:1:1",
"nodeType": "YulLiteral",
"src": "578:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "581:4:1",
"nodeType": "YulLiteral",
"src": "581:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "571:6:1",
"nodeType": "YulIdentifier",
"src": "571:6:1"
},
"nativeSrc": "571:15:1",
"nodeType": "YulFunctionCall",
"src": "571:15:1"
},
"nativeSrc": "571:15:1",
"nodeType": "YulExpressionStatement",
"src": "571:15:1"
}
]
},
"name": "panic_error_0x41",
"nativeSrc": "465:127:1",
"nodeType": "YulFunctionDefinition",
"src": "465:127:1"
},
{
"body": {
"nativeSrc": "642:230:1",
"nodeType": "YulBlock",
"src": "642:230:1",
"statements": [
{
"nativeSrc": "652:19:1",
"nodeType": "YulAssignment",
"src": "652:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "668:2:1",
"nodeType": "YulLiteral",
"src": "668:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "662:5:1",
"nodeType": "YulIdentifier",
"src": "662:5:1"
},
"nativeSrc": "662:9:1",
"nodeType": "YulFunctionCall",
"src": "662:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nativeSrc": "652:6:1",
"nodeType": "YulIdentifier",
"src": "652:6:1"
}
]
},
{
"nativeSrc": "680:58:1",
"nodeType": "YulVariableDeclaration",
"src": "680:58:1",
"value": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "702:6:1",
"nodeType": "YulIdentifier",
"src": "702:6:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "size",
"nativeSrc": "718:4:1",
"nodeType": "YulIdentifier",
"src": "718:4:1"
},
{
"kind": "number",
"nativeSrc": "724:2:1",
"nodeType": "YulLiteral",
"src": "724:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nativeSrc": "714:3:1",
"nodeType": "YulIdentifier",
"src": "714:3:1"
},
"nativeSrc": "714:13:1",
"nodeType": "YulFunctionCall",
"src": "714:13:1"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "733:2:1",
"nodeType": "YulLiteral",
"src": "733:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nativeSrc": "729:3:1",
"nodeType": "YulIdentifier",
"src": "729:3:1"
},
"nativeSrc": "729:7:1",
"nodeType": "YulFunctionCall",
"src": "729:7:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "710:3:1",
"nodeType": "YulIdentifier",
"src": "710:3:1"
},
"nativeSrc": "710:27:1",
"nodeType": "YulFunctionCall",
"src": "710:27:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "698:3:1",
"nodeType": "YulIdentifier",
"src": "698:3:1"
},
"nativeSrc": "698:40:1",
"nodeType": "YulFunctionCall",
"src": "698:40:1"
},
"variables": [
{
"name": "newFreePtr",
"nativeSrc": "684:10:1",
"nodeType": "YulTypedName",
"src": "684:10:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "813:22:1",
"nodeType": "YulBlock",
"src": "813:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "815:16:1",
"nodeType": "YulIdentifier",
"src": "815:16:1"
},
"nativeSrc": "815:18:1",
"nodeType": "YulFunctionCall",
"src": "815:18:1"
},
"nativeSrc": "815:18:1",
"nodeType": "YulExpressionStatement",
"src": "815:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "756:10:1",
"nodeType": "YulIdentifier",
"src": "756:10:1"
},
{
"kind": "number",
"nativeSrc": "768:18:1",
"nodeType": "YulLiteral",
"src": "768:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "753:2:1",
"nodeType": "YulIdentifier",
"src": "753:2:1"
},
"nativeSrc": "753:34:1",
"nodeType": "YulFunctionCall",
"src": "753:34:1"
},
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "792:10:1",
"nodeType": "YulIdentifier",
"src": "792:10:1"
},
{
"name": "memPtr",
"nativeSrc": "804:6:1",
"nodeType": "YulIdentifier",
"src": "804:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "789:2:1",
"nodeType": "YulIdentifier",
"src": "789:2:1"
},
"nativeSrc": "789:22:1",
"nodeType": "YulFunctionCall",
"src": "789:22:1"
}
],
"functionName": {
"name": "or",
"nativeSrc": "750:2:1",
"nodeType": "YulIdentifier",
"src": "750:2:1"
},
"nativeSrc": "750:62:1",
"nodeType": "YulFunctionCall",
"src": "750:62:1"
},
"nativeSrc": "747:88:1",
"nodeType": "YulIf",
"src": "747:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "851:2:1",
"nodeType": "YulLiteral",
"src": "851:2:1",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nativeSrc": "855:10:1",
"nodeType": "YulIdentifier",
"src": "855:10:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "844:6:1",
"nodeType": "YulIdentifier",
"src": "844:6:1"
},
"nativeSrc": "844:22:1",
"nodeType": "YulFunctionCall",
"src": "844:22:1"
},
"nativeSrc": "844:22:1",
"nodeType": "YulExpressionStatement",
"src": "844:22:1"
}
]
},
"name": "allocate_memory",
"nativeSrc": "597:275:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nativeSrc": "622:4:1",
"nodeType": "YulTypedName",
"src": "622:4:1",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nativeSrc": "631:6:1",
"nodeType": "YulTypedName",
"src": "631:6:1",
"type": ""
}
],
"src": "597:275:1"
},
{
"body": {
"nativeSrc": "946:114:1",
"nodeType": "YulBlock",
"src": "946:114:1",
"statements": [
{
"body": {
"nativeSrc": "990:22:1",
"nodeType": "YulBlock",
"src": "990:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "992:16:1",
"nodeType": "YulIdentifier",
"src": "992:16:1"
},
"nativeSrc": "992:18:1",
"nodeType": "YulFunctionCall",
"src": "992:18:1"
},
"nativeSrc": "992:18:1",
"nodeType": "YulExpressionStatement",
"src": "992:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nativeSrc": "962:6:1",
"nodeType": "YulIdentifier",
"src": "962:6:1"
},
{
"kind": "number",
"nativeSrc": "970:18:1",
"nodeType": "YulLiteral",
"src": "970:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "959:2:1",
"nodeType": "YulIdentifier",
"src": "959:2:1"
},
"nativeSrc": "959:30:1",
"nodeType": "YulFunctionCall",
"src": "959:30:1"
},
"nativeSrc": "956:56:1",
"nodeType": "YulIf",
"src": "956:56:1"
},
{
"nativeSrc": "1021:33:1",
"nodeType": "YulAssignment",
"src": "1021:33:1",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "1037:1:1",
"nodeType": "YulLiteral",
"src": "1037:1:1",
"type": "",
"value": "5"
},
{
"name": "length",
"nativeSrc": "1040:6:1",
"nodeType": "YulIdentifier",
"src": "1040:6:1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "1033:3:1",
"nodeType": "YulIdentifier",
"src": "1033:3:1"
},
"nativeSrc": "1033:14:1",
"nodeType": "YulFunctionCall",
"src": "1033:14:1"
},
{
"kind": "number",
"nativeSrc": "1049:4:1",
"nodeType": "YulLiteral",
"src": "1049:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1029:3:1",
"nodeType": "YulIdentifier",
"src": "1029:3:1"
},
"nativeSrc": "1029:25:1",
"nodeType": "YulFunctionCall",
"src": "1029:25:1"
},
"variableNames": [
{
"name": "size",
"nativeSrc": "1021:4:1",
"nodeType": "YulIdentifier",
"src": "1021:4:1"
}
]
}
]
},
"name": "array_allocation_size_array_uint256_dyn",
"nativeSrc": "877:183:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nativeSrc": "926:6:1",
"nodeType": "YulTypedName",
"src": "926:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nativeSrc": "937:4:1",
"nodeType": "YulTypedName",
"src": "937:4:1",
"type": ""
}
],
"src": "877:183:1"
},
{
"body": {
"nativeSrc": "1114:124:1",
"nodeType": "YulBlock",
"src": "1114:124:1",
"statements": [
{
"nativeSrc": "1124:29:1",
"nodeType": "YulAssignment",
"src": "1124:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "1146:6:1",
"nodeType": "YulIdentifier",
"src": "1146:6:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "1133:12:1",
"nodeType": "YulIdentifier",
"src": "1133:12:1"
},
"nativeSrc": "1133:20:1",
"nodeType": "YulFunctionCall",
"src": "1133:20:1"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "1124:5:1",
"nodeType": "YulIdentifier",
"src": "1124:5:1"
}
]
},
{
"body": {
"nativeSrc": "1216:16:1",
"nodeType": "YulBlock",
"src": "1216:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1225:1:1",
"nodeType": "YulLiteral",
"src": "1225:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1228:1:1",
"nodeType": "YulLiteral",
"src": "1228:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1218:6:1",
"nodeType": "YulIdentifier",
"src": "1218:6:1"
},
"nativeSrc": "1218:12:1",
"nodeType": "YulFunctionCall",
"src": "1218:12:1"
},
"nativeSrc": "1218:12:1",
"nodeType": "YulExpressionStatement",
"src": "1218:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "1175:5:1",
"nodeType": "YulIdentifier",
"src": "1175:5:1"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "1186:5:1",
"nodeType": "YulIdentifier",
"src": "1186:5:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "1201:3:1",
"nodeType": "YulLiteral",
"src": "1201:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "1206:1:1",
"nodeType": "YulLiteral",
"src": "1206:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "1197:3:1",
"nodeType": "YulIdentifier",
"src": "1197:3:1"
},
"nativeSrc": "1197:11:1",
"nodeType": "YulFunctionCall",
"src": "1197:11:1"
},
{
"kind": "number",
"nativeSrc": "1210:1:1",
"nodeType": "YulLiteral",
"src": "1210:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "1193:3:1",
"nodeType": "YulIdentifier",
"src": "1193:3:1"
},
"nativeSrc": "1193:19:1",
"nodeType": "YulFunctionCall",
"src": "1193:19:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "1182:3:1",
"nodeType": "YulIdentifier",
"src": "1182:3:1"
},
"nativeSrc": "1182:31:1",
"nodeType": "YulFunctionCall",
"src": "1182:31:1"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "1172:2:1",
"nodeType": "YulIdentifier",
"src": "1172:2:1"
},
"nativeSrc": "1172:42:1",
"nodeType": "YulFunctionCall",
"src": "1172:42:1"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "1165:6:1",
"nodeType": "YulIdentifier",
"src": "1165:6:1"
},
"nativeSrc": "1165:50:1",
"nodeType": "YulFunctionCall",
"src": "1165:50:1"
},
"nativeSrc": "1162:70:1",
"nodeType": "YulIf",
"src": "1162:70:1"
}
]
},
"name": "abi_decode_address",
"nativeSrc": "1065:173:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "1093:6:1",
"nodeType": "YulTypedName",
"src": "1093:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nativeSrc": "1104:5:1",
"nodeType": "YulTypedName",
"src": "1104:5:1",
"type": ""
}
],
"src": "1065:173:1"
},
{
"body": {
"nativeSrc": "1372:906:1",
"nodeType": "YulBlock",
"src": "1372:906:1",
"statements": [
{
"body": {
"nativeSrc": "1418:16:1",
"nodeType": "YulBlock",
"src": "1418:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1427:1:1",
"nodeType": "YulLiteral",
"src": "1427:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1430:1:1",
"nodeType": "YulLiteral",
"src": "1430:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1420:6:1",
"nodeType": "YulIdentifier",
"src": "1420:6:1"
},
"nativeSrc": "1420:12:1",
"nodeType": "YulFunctionCall",
"src": "1420:12:1"
},
"nativeSrc": "1420:12:1",
"nodeType": "YulExpressionStatement",
"src": "1420:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "1393:7:1",
"nodeType": "YulIdentifier",
"src": "1393:7:1"
},
{
"name": "headStart",
"nativeSrc": "1402:9:1",
"nodeType": "YulIdentifier",
"src": "1402:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "1389:3:1",
"nodeType": "YulIdentifier",
"src": "1389:3:1"
},
"nativeSrc": "1389:23:1",
"nodeType": "YulFunctionCall",
"src": "1389:23:1"
},
{
"kind": "number",
"nativeSrc": "1414:2:1",
"nodeType": "YulLiteral",
"src": "1414:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "1385:3:1",
"nodeType": "YulIdentifier",
"src": "1385:3:1"
},
"nativeSrc": "1385:32:1",
"nodeType": "YulFunctionCall",
"src": "1385:32:1"
},
"nativeSrc": "1382:52:1",
"nodeType": "YulIf",
"src": "1382:52:1"
},
{
"nativeSrc": "1443:37:1",
"nodeType": "YulVariableDeclaration",
"src": "1443:37:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "1470:9:1",
"nodeType": "YulIdentifier",
"src": "1470:9:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "1457:12:1",
"nodeType": "YulIdentifier",
"src": "1457:12:1"
},
"nativeSrc": "1457:23:1",
"nodeType": "YulFunctionCall",
"src": "1457:23:1"
},
"variables": [
{
"name": "offset",
"nativeSrc": "1447:6:1",
"nodeType": "YulTypedName",
"src": "1447:6:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "1523:16:1",
"nodeType": "YulBlock",
"src": "1523:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1532:1:1",
"nodeType": "YulLiteral",
"src": "1532:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1535:1:1",
"nodeType": "YulLiteral",
"src": "1535:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1525:6:1",
"nodeType": "YulIdentifier",
"src": "1525:6:1"
},
"nativeSrc": "1525:12:1",
"nodeType": "YulFunctionCall",
"src": "1525:12:1"
},
"nativeSrc": "1525:12:1",
"nodeType": "YulExpressionStatement",
"src": "1525:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nativeSrc": "1495:6:1",
"nodeType": "YulIdentifier",
"src": "1495:6:1"
},
{
"kind": "number",
"nativeSrc": "1503:18:1",
"nodeType": "YulLiteral",
"src": "1503:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "1492:2:1",
"nodeType": "YulIdentifier",
"src": "1492:2:1"
},
"nativeSrc": "1492:30:1",
"nodeType": "YulFunctionCall",
"src": "1492:30:1"
},
"nativeSrc": "1489:50:1",
"nodeType": "YulIf",
"src": "1489:50:1"
},
{
"nativeSrc": "1548:32:1",
"nodeType": "YulVariableDeclaration",
"src": "1548:32:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "1562:9:1",
"nodeType": "YulIdentifier",
"src": "1562:9:1"
},
{
"name": "offset",
"nativeSrc": "1573:6:1",
"nodeType": "YulIdentifier",
"src": "1573:6:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1558:3:1",
"nodeType": "YulIdentifier",
"src": "1558:3:1"
},
"nativeSrc": "1558:22:1",
"nodeType": "YulFunctionCall",
"src": "1558:22:1"
},
"variables": [
{
"name": "_1",
"nativeSrc": "1552:2:1",
"nodeType": "YulTypedName",
"src": "1552:2:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "1628:16:1",
"nodeType": "YulBlock",
"src": "1628:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1637:1:1",
"nodeType": "YulLiteral",
"src": "1637:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1640:1:1",
"nodeType": "YulLiteral",
"src": "1640:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1630:6:1",
"nodeType": "YulIdentifier",
"src": "1630:6:1"
},
"nativeSrc": "1630:12:1",
"nodeType": "YulFunctionCall",
"src": "1630:12:1"
},
"nativeSrc": "1630:12:1",
"nodeType": "YulExpressionStatement",
"src": "1630:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_1",
"nativeSrc": "1607:2:1",
"nodeType": "YulIdentifier",
"src": "1607:2:1"
},
{
"kind": "number",
"nativeSrc": "1611:4:1",
"nodeType": "YulLiteral",
"src": "1611:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1603:3:1",
"nodeType": "YulIdentifier",
"src": "1603:3:1"
},
"nativeSrc": "1603:13:1",
"nodeType": "YulFunctionCall",
"src": "1603:13:1"
},
{
"name": "dataEnd",
"nativeSrc": "1618:7:1",
"nodeType": "YulIdentifier",
"src": "1618:7:1"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "1599:3:1",
"nodeType": "YulIdentifier",
"src": "1599:3:1"
},
"nativeSrc": "1599:27:1",
"nodeType": "YulFunctionCall",
"src": "1599:27:1"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "1592:6:1",
"nodeType": "YulIdentifier",
"src": "1592:6:1"
},
"nativeSrc": "1592:35:1",
"nodeType": "YulFunctionCall",
"src": "1592:35:1"
},
"nativeSrc": "1589:55:1",
"nodeType": "YulIf",
"src": "1589:55:1"
},
{
"nativeSrc": "1653:26:1",
"nodeType": "YulVariableDeclaration",
"src": "1653:26:1",
"value": {
"arguments": [
{
"name": "_1",
"nativeSrc": "1676:2:1",
"nodeType": "YulIdentifier",
"src": "1676:2:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "1663:12:1",
"nodeType": "YulIdentifier",
"src": "1663:12:1"
},
"nativeSrc": "1663:16:1",
"nodeType": "YulFunctionCall",
"src": "1663:16:1"
},
"variables": [
{
"name": "_2",
"nativeSrc": "1657:2:1",
"nodeType": "YulTypedName",
"src": "1657:2:1",
"type": ""
}
]
},
{
"nativeSrc": "1688:14:1",
"nodeType": "YulVariableDeclaration",
"src": "1688:14:1",
"value": {
"kind": "number",
"nativeSrc": "1698:4:1",
"nodeType": "YulLiteral",
"src": "1698:4:1",
"type": "",
"value": "0x20"
},
"variables": [
{
"name": "_3",
"nativeSrc": "1692:2:1",
"nodeType": "YulTypedName",
"src": "1692:2:1",
"type": ""
}
]
},
{
"nativeSrc": "1711:71:1",
"nodeType": "YulVariableDeclaration",
"src": "1711:71:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_2",
"nativeSrc": "1778:2:1",
"nodeType": "YulIdentifier",
"src": "1778:2:1"
}
],
"functionName": {
"name": "array_allocation_size_array_uint256_dyn",
"nativeSrc": "1738:39:1",
"nodeType": "YulIdentifier",
"src": "1738:39:1"
},
"nativeSrc": "1738:43:1",
"nodeType": "YulFunctionCall",
"src": "1738:43:1"
}
],
"functionName": {
"name": "allocate_memory",
"nativeSrc": "1722:15:1",
"nodeType": "YulIdentifier",
"src": "1722:15:1"
},
"nativeSrc": "1722:60:1",
"nodeType": "YulFunctionCall",
"src": "1722:60:1"
},
"variables": [
{
"name": "dst",
"nativeSrc": "1715:3:1",
"nodeType": "YulTypedName",
"src": "1715:3:1",
"type": ""
}
]
},
{
"nativeSrc": "1791:16:1",
"nodeType": "YulVariableDeclaration",
"src": "1791:16:1",
"value": {
"name": "dst",
"nativeSrc": "1804:3:1",
"nodeType": "YulIdentifier",
"src": "1804:3:1"
},
"variables": [
{
"name": "dst_1",
"nativeSrc": "1795:5:1",
"nodeType": "YulTypedName",
"src": "1795:5:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dst",
"nativeSrc": "1823:3:1",
"nodeType": "YulIdentifier",
"src": "1823:3:1"
},
{
"name": "_2",
"nativeSrc": "1828:2:1",
"nodeType": "YulIdentifier",
"src": "1828:2:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1816:6:1",
"nodeType": "YulIdentifier",
"src": "1816:6:1"
},
"nativeSrc": "1816:15:1",
"nodeType": "YulFunctionCall",
"src": "1816:15:1"
},
"nativeSrc": "1816:15:1",
"nodeType": "YulExpressionStatement",
"src": "1816:15:1"
},
{
"nativeSrc": "1840:19:1",
"nodeType": "YulAssignment",
"src": "1840:19:1",
"value": {
"arguments": [
{
"name": "dst",
"nativeSrc": "1851:3:1",
"nodeType": "YulIdentifier",
"src": "1851:3:1"
},
{
"name": "_3",
"nativeSrc": "1856:2:1",
"nodeType": "YulIdentifier",
"src": "1856:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1847:3:1",
"nodeType": "YulIdentifier",
"src": "1847:3:1"
},
"nativeSrc": "1847:12:1",
"nodeType": "YulFunctionCall",
"src": "1847:12:1"
},
"variableNames": [
{
"name": "dst",
"nativeSrc": "1840:3:1",
"nodeType": "YulIdentifier",
"src": "1840:3:1"
}
]
},
{
"nativeSrc": "1868:42:1",
"nodeType": "YulVariableDeclaration",
"src": "1868:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_1",
"nativeSrc": "1890:2:1",
"nodeType": "YulIdentifier",
"src": "1890:2:1"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "1898:1:1",
"nodeType": "YulLiteral",
"src": "1898:1:1",
"type": "",
"value": "5"
},
{
"name": "_2",
"nativeSrc": "1901:2:1",
"nodeType": "YulIdentifier",
"src": "1901:2:1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "1894:3:1",
"nodeType": "YulIdentifier",
"src": "1894:3:1"
},
"nativeSrc": "1894:10:1",
"nodeType": "YulFunctionCall",
"src": "1894:10:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1886:3:1",
"nodeType": "YulIdentifier",
"src": "1886:3:1"
},
"nativeSrc": "1886:19:1",
"nodeType": "YulFunctionCall",
"src": "1886:19:1"
},
{
"name": "_3",
"nativeSrc": "1907:2:1",
"nodeType": "YulIdentifier",
"src": "1907:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1882:3:1",
"nodeType": "YulIdentifier",
"src": "1882:3:1"
},
"nativeSrc": "1882:28:1",
"nodeType": "YulFunctionCall",
"src": "1882:28:1"
},
"variables": [
{
"name": "srcEnd",
"nativeSrc": "1872:6:1",
"nodeType": "YulTypedName",
"src": "1872:6:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "1942:16:1",
"nodeType": "YulBlock",
"src": "1942:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1951:1:1",
"nodeType": "YulLiteral",
"src": "1951:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1954:1:1",
"nodeType": "YulLiteral",
"src": "1954:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1944:6:1",
"nodeType": "YulIdentifier",
"src": "1944:6:1"
},
"nativeSrc": "1944:12:1",
"nodeType": "YulFunctionCall",
"src": "1944:12:1"
},
"nativeSrc": "1944:12:1",
"nodeType": "YulExpressionStatement",
"src": "1944:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "srcEnd",
"nativeSrc": "1925:6:1",
"nodeType": "YulIdentifier",
"src": "1925:6:1"
},
{
"name": "dataEnd",
"nativeSrc": "1933:7:1",
"nodeType": "YulIdentifier",
"src": "1933:7:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "1922:2:1",
"nodeType": "YulIdentifier",
"src": "1922:2:1"
},
"nativeSrc": "1922:19:1",
"nodeType": "YulFunctionCall",
"src": "1922:19:1"
},
"nativeSrc": "1919:39:1",
"nodeType": "YulIf",
"src": "1919:39:1"
},
{
"nativeSrc": "1967:22:1",
"nodeType": "YulVariableDeclaration",
"src": "1967:22:1",
"value": {
"arguments": [
{
"name": "_1",
"nativeSrc": "1982:2:1",
"nodeType": "YulIdentifier",
"src": "1982:2:1"
},
{
"name": "_3",
"nativeSrc": "1986:2:1",
"nodeType": "YulIdentifier",
"src": "1986:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1978:3:1",
"nodeType": "YulIdentifier",
"src": "1978:3:1"
},
"nativeSrc": "1978:11:1",
"nodeType": "YulFunctionCall",
"src": "1978:11:1"
},
"variables": [
{
"name": "src",
"nativeSrc": "1971:3:1",
"nodeType": "YulTypedName",
"src": "1971:3:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "2054:86:1",
"nodeType": "YulBlock",
"src": "2054:86:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nativeSrc": "2075:3:1",
"nodeType": "YulIdentifier",
"src": "2075:3:1"
},
{
"arguments": [
{
"name": "src",
"nativeSrc": "2093:3:1",
"nodeType": "YulIdentifier",
"src": "2093:3:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "2080:12:1",
"nodeType": "YulIdentifier",
"src": "2080:12:1"
},
"nativeSrc": "2080:17:1",
"nodeType": "YulFunctionCall",
"src": "2080:17:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2068:6:1",
"nodeType": "YulIdentifier",
"src": "2068:6:1"
},
"nativeSrc": "2068:30:1",
"nodeType": "YulFunctionCall",
"src": "2068:30:1"
},
"nativeSrc": "2068:30:1",
"nodeType": "YulExpressionStatement",
"src": "2068:30:1"
},
{
"nativeSrc": "2111:19:1",
"nodeType": "YulAssignment",
"src": "2111:19:1",
"value": {
"arguments": [
{
"name": "dst",
"nativeSrc": "2122:3:1",
"nodeType": "YulIdentifier",
"src": "2122:3:1"
},
{
"name": "_3",
"nativeSrc": "2127:2:1",
"nodeType": "YulIdentifier",
"src": "2127:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2118:3:1",
"nodeType": "YulIdentifier",
"src": "2118:3:1"
},
"nativeSrc": "2118:12:1",
"nodeType": "YulFunctionCall",
"src": "2118:12:1"
},
"variableNames": [
{
"name": "dst",
"nativeSrc": "2111:3:1",
"nodeType": "YulIdentifier",
"src": "2111:3:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "src",
"nativeSrc": "2009:3:1",
"nodeType": "YulIdentifier",
"src": "2009:3:1"
},
{
"name": "srcEnd",
"nativeSrc": "2014:6:1",
"nodeType": "YulIdentifier",
"src": "2014:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "2006:2:1",
"nodeType": "YulIdentifier",
"src": "2006:2:1"
},
"nativeSrc": "2006:15:1",
"nodeType": "YulFunctionCall",
"src": "2006:15:1"
},
"nativeSrc": "1998:142:1",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "2022:23:1",
"nodeType": "YulBlock",
"src": "2022:23:1",
"statements": [
{
"nativeSrc": "2024:19:1",
"nodeType": "YulAssignment",
"src": "2024:19:1",
"value": {
"arguments": [
{
"name": "src",
"nativeSrc": "2035:3:1",
"nodeType": "YulIdentifier",
"src": "2035:3:1"
},
{
"name": "_3",
"nativeSrc": "2040:2:1",
"nodeType": "YulIdentifier",
"src": "2040:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2031:3:1",
"nodeType": "YulIdentifier",
"src": "2031:3:1"
},
"nativeSrc": "2031:12:1",
"nodeType": "YulFunctionCall",
"src": "2031:12:1"
},
"variableNames": [
{
"name": "src",
"nativeSrc": "2024:3:1",
"nodeType": "YulIdentifier",
"src": "2024:3:1"
}
]
}
]
},
"pre": {
"nativeSrc": "2002:3:1",
"nodeType": "YulBlock",
"src": "2002:3:1",
"statements": []
},
"src": "1998:142:1"
},
{
"nativeSrc": "2149:15:1",
"nodeType": "YulAssignment",
"src": "2149:15:1",
"value": {
"name": "dst_1",
"nativeSrc": "2159:5:1",
"nodeType": "YulIdentifier",
"src": "2159:5:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "2149:6:1",
"nodeType": "YulIdentifier",
"src": "2149:6:1"
}
]
},
{
"nativeSrc": "2173:48:1",
"nodeType": "YulAssignment",
"src": "2173:48:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "2206:9:1",
"nodeType": "YulIdentifier",
"src": "2206:9:1"
},
{
"name": "_3",
"nativeSrc": "2217:2:1",
"nodeType": "YulIdentifier",
"src": "2217:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2202:3:1",
"nodeType": "YulIdentifier",
"src": "2202:3:1"
},
"nativeSrc": "2202:18:1",
"nodeType": "YulFunctionCall",
"src": "2202:18:1"
}
],
"functionName": {
"name": "abi_decode_address",
"nativeSrc": "2183:18:1",
"nodeType": "YulIdentifier",
"src": "2183:18:1"
},
"nativeSrc": "2183:38:1",
"nodeType": "YulFunctionCall",
"src": "2183:38:1"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "2173:6:1",
"nodeType": "YulIdentifier",
"src": "2173:6:1"
}
]
},
{
"nativeSrc": "2230:42:1",
"nodeType": "YulAssignment",
"src": "2230:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "2257:9:1",
"nodeType": "YulIdentifier",
"src": "2257:9:1"
},
{
"kind": "number",
"nativeSrc": "2268:2:1",
"nodeType": "YulLiteral",
"src": "2268:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2253:3:1",
"nodeType": "YulIdentifier",
"src": "2253:3:1"
},
"nativeSrc": "2253:18:1",
"nodeType": "YulFunctionCall",
"src": "2253:18:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "2240:12:1",
"nodeType": "YulIdentifier",
"src": "2240:12:1"
},
"nativeSrc": "2240:32:1",
"nodeType": "YulFunctionCall",
"src": "2240:32:1"
},
"variableNames": [
{
"name": "value2",
"nativeSrc": "2230:6:1",
"nodeType": "YulIdentifier",
"src": "2230:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256",
"nativeSrc": "1243:1035:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "1322:9:1",
"nodeType": "YulTypedName",
"src": "1322:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "1333:7:1",
"nodeType": "YulTypedName",
"src": "1333:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "1345:6:1",
"nodeType": "YulTypedName",
"src": "1345:6:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "1353:6:1",
"nodeType": "YulTypedName",
"src": "1353:6:1",
"type": ""
},
{
"name": "value2",
"nativeSrc": "1361:6:1",
"nodeType": "YulTypedName",
"src": "1361:6:1",
"type": ""
}
],
"src": "1243:1035:1"
},
{
"body": {
"nativeSrc": "2384:76:1",
"nodeType": "YulBlock",
"src": "2384:76:1",
"statements": [
{
"nativeSrc": "2394:26:1",
"nodeType": "YulAssignment",
"src": "2394:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "2406:9:1",
"nodeType": "YulIdentifier",
"src": "2406:9:1"
},
{
"kind": "number",
"nativeSrc": "2417:2:1",
"nodeType": "YulLiteral",
"src": "2417:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2402:3:1",
"nodeType": "YulIdentifier",
"src": "2402:3:1"
},
"nativeSrc": "2402:18:1",
"nodeType": "YulFunctionCall",
"src": "2402:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "2394:4:1",
"nodeType": "YulIdentifier",
"src": "2394:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "2436:9:1",
"nodeType": "YulIdentifier",
"src": "2436:9:1"
},
{
"name": "value0",
"nativeSrc": "2447:6:1",
"nodeType": "YulIdentifier",
"src": "2447:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2429:6:1",
"nodeType": "YulIdentifier",
"src": "2429:6:1"
},
"nativeSrc": "2429:25:1",
"nodeType": "YulFunctionCall",
"src": "2429:25:1"
},
"nativeSrc": "2429:25:1",
"nodeType": "YulExpressionStatement",
"src": "2429:25:1"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nativeSrc": "2283:177:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "2353:9:1",
"nodeType": "YulTypedName",
"src": "2353:9:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "2364:6:1",
"nodeType": "YulTypedName",
"src": "2364:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "2375:4:1",
"nodeType": "YulTypedName",
"src": "2375:4:1",
"type": ""
}
],
"src": "2283:177:1"
},
{
"body": {
"nativeSrc": "2526:378:1",
"nodeType": "YulBlock",
"src": "2526:378:1",
"statements": [
{
"nativeSrc": "2536:26:1",
"nodeType": "YulVariableDeclaration",
"src": "2536:26:1",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "2556:5:1",
"nodeType": "YulIdentifier",
"src": "2556:5:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "2550:5:1",
"nodeType": "YulIdentifier",
"src": "2550:5:1"
},
"nativeSrc": "2550:12:1",
"nodeType": "YulFunctionCall",
"src": "2550:12:1"
},
"variables": [
{
"name": "length",
"nativeSrc": "2540:6:1",
"nodeType": "YulTypedName",
"src": "2540:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "2578:3:1",
"nodeType": "YulIdentifier",
"src": "2578:3:1"
},
{
"name": "length",
"nativeSrc": "2583:6:1",
"nodeType": "YulIdentifier",
"src": "2583:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2571:6:1",
"nodeType": "YulIdentifier",
"src": "2571:6:1"
},
"nativeSrc": "2571:19:1",
"nodeType": "YulFunctionCall",
"src": "2571:19:1"
},
"nativeSrc": "2571:19:1",
"nodeType": "YulExpressionStatement",
"src": "2571:19:1"
},
{
"nativeSrc": "2599:14:1",
"nodeType": "YulVariableDeclaration",
"src": "2599:14:1",
"value": {
"kind": "number",
"nativeSrc": "2609:4:1",
"nodeType": "YulLiteral",
"src": "2609:4:1",
"type": "",
"value": "0x20"
},
"variables": [
{
"name": "_1",
"nativeSrc": "2603:2:1",
"nodeType": "YulTypedName",
"src": "2603:2:1",
"type": ""
}
]
},
{
"nativeSrc": "2622:21:1",
"nodeType": "YulAssignment",
"src": "2622:21:1",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "2633:3:1",
"nodeType": "YulIdentifier",
"src": "2633:3:1"
},
{
"kind": "number",
"nativeSrc": "2638:4:1",
"nodeType": "YulLiteral",
"src": "2638:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2629:3:1",
"nodeType": "YulIdentifier",
"src": "2629:3:1"
},
"nativeSrc": "2629:14:1",
"nodeType": "YulFunctionCall",
"src": "2629:14:1"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "2622:3:1",
"nodeType": "YulIdentifier",
"src": "2622:3:1"
}
]
},
{
"nativeSrc": "2652:30:1",
"nodeType": "YulVariableDeclaration",
"src": "2652:30:1",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "2670:5:1",
"nodeType": "YulIdentifier",
"src": "2670:5:1"
},
{
"kind": "number",
"nativeSrc": "2677:4:1",
"nodeType": "YulLiteral",
"src": "2677:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2666:3:1",
"nodeType": "YulIdentifier",
"src": "2666:3:1"
},
"nativeSrc": "2666:16:1",
"nodeType": "YulFunctionCall",
"src": "2666:16:1"
},
"variables": [
{
"name": "srcPtr",
"nativeSrc": "2656:6:1",
"nodeType": "YulTypedName",
"src": "2656:6:1",
"type": ""
}
]
},
{
"nativeSrc": "2691:10:1",
"nodeType": "YulVariableDeclaration",
"src": "2691:10:1",
"value": {
"kind": "number",
"nativeSrc": "2700:1:1",
"nodeType": "YulLiteral",
"src": "2700:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nativeSrc": "2695:1:1",
"nodeType": "YulTypedName",
"src": "2695:1:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "2759:120:1",
"nodeType": "YulBlock",
"src": "2759:120:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "2780:3:1",
"nodeType": "YulIdentifier",
"src": "2780:3:1"
},
{
"arguments": [
{
"name": "srcPtr",
"nativeSrc": "2791:6:1",
"nodeType": "YulIdentifier",
"src": "2791:6:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "2785:5:1",
"nodeType": "YulIdentifier",
"src": "2785:5:1"
},
"nativeSrc": "2785:13:1",
"nodeType": "YulFunctionCall",
"src": "2785:13:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2773:6:1",
"nodeType": "YulIdentifier",
"src": "2773:6:1"
},
"nativeSrc": "2773:26:1",
"nodeType": "YulFunctionCall",
"src": "2773:26:1"
},
"nativeSrc": "2773:26:1",
"nodeType": "YulExpressionStatement",
"src": "2773:26:1"
},
{
"nativeSrc": "2812:19:1",
"nodeType": "YulAssignment",
"src": "2812:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "2823:3:1",
"nodeType": "YulIdentifier",
"src": "2823:3:1"
},
{
"name": "_1",
"nativeSrc": "2828:2:1",
"nodeType": "YulIdentifier",
"src": "2828:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2819:3:1",
"nodeType": "YulIdentifier",
"src": "2819:3:1"
},
"nativeSrc": "2819:12:1",
"nodeType": "YulFunctionCall",
"src": "2819:12:1"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "2812:3:1",
"nodeType": "YulIdentifier",
"src": "2812:3:1"
}
]
},
{
"nativeSrc": "2844:25:1",
"nodeType": "YulAssignment",
"src": "2844:25:1",
"value": {
"arguments": [
{
"name": "srcPtr",
"nativeSrc": "2858:6:1",
"nodeType": "YulIdentifier",
"src": "2858:6:1"
},
{
"name": "_1",
"nativeSrc": "2866:2:1",
"nodeType": "YulIdentifier",
"src": "2866:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2854:3:1",
"nodeType": "YulIdentifier",
"src": "2854:3:1"
},
"nativeSrc": "2854:15:1",
"nodeType": "YulFunctionCall",
"src": "2854:15:1"
},
"variableNames": [
{
"name": "srcPtr",
"nativeSrc": "2844:6:1",
"nodeType": "YulIdentifier",
"src": "2844:6:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nativeSrc": "2721:1:1",
"nodeType": "YulIdentifier",
"src": "2721:1:1"
},
{
"name": "length",
"nativeSrc": "2724:6:1",
"nodeType": "YulIdentifier",
"src": "2724:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "2718:2:1",
"nodeType": "YulIdentifier",
"src": "2718:2:1"
},
"nativeSrc": "2718:13:1",
"nodeType": "YulFunctionCall",
"src": "2718:13:1"
},
"nativeSrc": "2710:169:1",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "2732:18:1",
"nodeType": "YulBlock",
"src": "2732:18:1",
"statements": [
{
"nativeSrc": "2734:14:1",
"nodeType": "YulAssignment",
"src": "2734:14:1",
"value": {
"arguments": [
{
"name": "i",
"nativeSrc": "2743:1:1",
"nodeType": "YulIdentifier",
"src": "2743:1:1"
},
{
"kind": "number",
"nativeSrc": "2746:1:1",
"nodeType": "YulLiteral",
"src": "2746:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2739:3:1",
"nodeType": "YulIdentifier",
"src": "2739:3:1"
},
"nativeSrc": "2739:9:1",
"nodeType": "YulFunctionCall",
"src": "2739:9:1"
},
"variableNames": [
{
"name": "i",
"nativeSrc": "2734:1:1",
"nodeType": "YulIdentifier",
"src": "2734:1:1"
}
]
}
]
},
"pre": {
"nativeSrc": "2714:3:1",
"nodeType": "YulBlock",
"src": "2714:3:1",
"statements": []
},
"src": "2710:169:1"
},
{
"nativeSrc": "2888:10:1",
"nodeType": "YulAssignment",
"src": "2888:10:1",
"value": {
"name": "pos",
"nativeSrc": "2895:3:1",
"nodeType": "YulIdentifier",
"src": "2895:3:1"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "2888:3:1",
"nodeType": "YulIdentifier",
"src": "2888:3:1"
}
]
}
]
},
"name": "abi_encode_array_uint256_dyn",
"nativeSrc": "2465:439:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "2503:5:1",
"nodeType": "YulTypedName",
"src": "2503:5:1",
"type": ""
},
{
"name": "pos",
"nativeSrc": "2510:3:1",
"nodeType": "YulTypedName",
"src": "2510:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "2518:3:1",
"nodeType": "YulTypedName",
"src": "2518:3:1",
"type": ""
}
],
"src": "2465:439:1"
},
{
"body": {
"nativeSrc": "3060:110:1",
"nodeType": "YulBlock",
"src": "3060:110:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "3077:9:1",
"nodeType": "YulIdentifier",
"src": "3077:9:1"
},
{
"kind": "number",
"nativeSrc": "3088:2:1",
"nodeType": "YulLiteral",
"src": "3088:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "3070:6:1",
"nodeType": "YulIdentifier",
"src": "3070:6:1"
},
"nativeSrc": "3070:21:1",
"nodeType": "YulFunctionCall",
"src": "3070:21:1"
},
"nativeSrc": "3070:21:1",
"nodeType": "YulExpressionStatement",
"src": "3070:21:1"
},
{
"nativeSrc": "3100:64:1",
"nodeType": "YulAssignment",
"src": "3100:64:1",
"value": {
"arguments": [
{
"name": "value0",
"nativeSrc": "3137:6:1",
"nodeType": "YulIdentifier",
"src": "3137:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "3149:9:1",
"nodeType": "YulIdentifier",
"src": "3149:9:1"
},
{
"kind": "number",
"nativeSrc": "3160:2:1",
"nodeType": "YulLiteral",
"src": "3160:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3145:3:1",
"nodeType": "YulIdentifier",
"src": "3145:3:1"
},
"nativeSrc": "3145:18:1",
"nodeType": "YulFunctionCall",
"src": "3145:18:1"
}
],
"functionName": {
"name": "abi_encode_array_uint256_dyn",
"nativeSrc": "3108:28:1",
"nodeType": "YulIdentifier",
"src": "3108:28:1"
},
"nativeSrc": "3108:56:1",
"nodeType": "YulFunctionCall",
"src": "3108:56:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "3100:4:1",
"nodeType": "YulIdentifier",
"src": "3100:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
"nativeSrc": "2909:261:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "3029:9:1",
"nodeType": "YulTypedName",
"src": "3029:9:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "3040:6:1",
"nodeType": "YulTypedName",
"src": "3040:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "3051:4:1",
"nodeType": "YulTypedName",
"src": "3051:4:1",
"type": ""
}
],
"src": "2909:261:1"
},
{
"body": {
"nativeSrc": "3281:775:1",
"nodeType": "YulBlock",
"src": "3281:775:1",
"statements": [
{
"nativeSrc": "3291:12:1",
"nodeType": "YulVariableDeclaration",
"src": "3291:12:1",
"value": {
"kind": "number",
"nativeSrc": "3301:2:1",
"nodeType": "YulLiteral",
"src": "3301:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nativeSrc": "3295:2:1",
"nodeType": "YulTypedName",
"src": "3295:2:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "3348:16:1",
"nodeType": "YulBlock",
"src": "3348:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3357:1:1",
"nodeType": "YulLiteral",
"src": "3357:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "3360:1:1",
"nodeType": "YulLiteral",
"src": "3360:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "3350:6:1",
"nodeType": "YulIdentifier",
"src": "3350:6:1"
},
"nativeSrc": "3350:12:1",
"nodeType": "YulFunctionCall",
"src": "3350:12:1"
},
"nativeSrc": "3350:12:1",
"nodeType": "YulExpressionStatement",
"src": "3350:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "3323:7:1",
"nodeType": "YulIdentifier",
"src": "3323:7:1"
},
{
"name": "headStart",
"nativeSrc": "3332:9:1",
"nodeType": "YulIdentifier",
"src": "3332:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3319:3:1",
"nodeType": "YulIdentifier",
"src": "3319:3:1"
},
"nativeSrc": "3319:23:1",
"nodeType": "YulFunctionCall",
"src": "3319:23:1"
},
{
"name": "_1",
"nativeSrc": "3344:2:1",
"nodeType": "YulIdentifier",
"src": "3344:2:1"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "3315:3:1",
"nodeType": "YulIdentifier",
"src": "3315:3:1"
},
"nativeSrc": "3315:32:1",
"nodeType": "YulFunctionCall",
"src": "3315:32:1"
},
"nativeSrc": "3312:52:1",
"nodeType": "YulIf",
"src": "3312:52:1"
},
{
"nativeSrc": "3373:30:1",
"nodeType": "YulVariableDeclaration",
"src": "3373:30:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "3393:9:1",
"nodeType": "YulIdentifier",
"src": "3393:9:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3387:5:1",
"nodeType": "YulIdentifier",
"src": "3387:5:1"
},
"nativeSrc": "3387:16:1",
"nodeType": "YulFunctionCall",
"src": "3387:16:1"
},
"variables": [
{
"name": "offset",
"nativeSrc": "3377:6:1",
"nodeType": "YulTypedName",
"src": "3377:6:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "3446:16:1",
"nodeType": "YulBlock",
"src": "3446:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3455:1:1",
"nodeType": "YulLiteral",
"src": "3455:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "3458:1:1",
"nodeType": "YulLiteral",
"src": "3458:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "3448:6:1",
"nodeType": "YulIdentifier",
"src": "3448:6:1"
},
"nativeSrc": "3448:12:1",
"nodeType": "YulFunctionCall",
"src": "3448:12:1"
},
"nativeSrc": "3448:12:1",
"nodeType": "YulExpressionStatement",
"src": "3448:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nativeSrc": "3418:6:1",
"nodeType": "YulIdentifier",
"src": "3418:6:1"
},
{
"kind": "number",
"nativeSrc": "3426:18:1",
"nodeType": "YulLiteral",
"src": "3426:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "3415:2:1",
"nodeType": "YulIdentifier",
"src": "3415:2:1"
},
"nativeSrc": "3415:30:1",
"nodeType": "YulFunctionCall",
"src": "3415:30:1"
},
"nativeSrc": "3412:50:1",
"nodeType": "YulIf",
"src": "3412:50:1"
},
{
"nativeSrc": "3471:32:1",
"nodeType": "YulVariableDeclaration",
"src": "3471:32:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "3485:9:1",
"nodeType": "YulIdentifier",
"src": "3485:9:1"
},
{
"name": "offset",
"nativeSrc": "3496:6:1",
"nodeType": "YulIdentifier",
"src": "3496:6:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3481:3:1",
"nodeType": "YulIdentifier",
"src": "3481:3:1"
},
"nativeSrc": "3481:22:1",
"nodeType": "YulFunctionCall",
"src": "3481:22:1"
},
"variables": [
{
"name": "_2",
"nativeSrc": "3475:2:1",
"nodeType": "YulTypedName",
"src": "3475:2:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "3551:16:1",
"nodeType": "YulBlock",
"src": "3551:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3560:1:1",
"nodeType": "YulLiteral",
"src": "3560:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "3563:1:1",
"nodeType": "YulLiteral",
"src": "3563:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "3553:6:1",
"nodeType": "YulIdentifier",
"src": "3553:6:1"
},
"nativeSrc": "3553:12:1",
"nodeType": "YulFunctionCall",
"src": "3553:12:1"
},
"nativeSrc": "3553:12:1",
"nodeType": "YulExpressionStatement",
"src": "3553:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nativeSrc": "3530:2:1",
"nodeType": "YulIdentifier",
"src": "3530:2:1"
},
{
"kind": "number",
"nativeSrc": "3534:4:1",
"nodeType": "YulLiteral",
"src": "3534:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3526:3:1",
"nodeType": "YulIdentifier",
"src": "3526:3:1"
},
"nativeSrc": "3526:13:1",
"nodeType": "YulFunctionCall",
"src": "3526:13:1"
},
{
"name": "dataEnd",
"nativeSrc": "3541:7:1",
"nodeType": "YulIdentifier",
"src": "3541:7:1"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "3522:3:1",
"nodeType": "YulIdentifier",
"src": "3522:3:1"
},
"nativeSrc": "3522:27:1",
"nodeType": "YulFunctionCall",
"src": "3522:27:1"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "3515:6:1",
"nodeType": "YulIdentifier",
"src": "3515:6:1"
},
"nativeSrc": "3515:35:1",
"nodeType": "YulFunctionCall",
"src": "3515:35:1"
},
"nativeSrc": "3512:55:1",
"nodeType": "YulIf",
"src": "3512:55:1"
},
{
"nativeSrc": "3576:19:1",
"nodeType": "YulVariableDeclaration",
"src": "3576:19:1",
"value": {
"arguments": [
{
"name": "_2",
"nativeSrc": "3592:2:1",
"nodeType": "YulIdentifier",
"src": "3592:2:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3586:5:1",
"nodeType": "YulIdentifier",
"src": "3586:5:1"
},
"nativeSrc": "3586:9:1",
"nodeType": "YulFunctionCall",
"src": "3586:9:1"
},
"variables": [
{
"name": "_3",
"nativeSrc": "3580:2:1",
"nodeType": "YulTypedName",
"src": "3580:2:1",
"type": ""
}
]
},
{
"nativeSrc": "3604:71:1",
"nodeType": "YulVariableDeclaration",
"src": "3604:71:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_3",
"nativeSrc": "3671:2:1",
"nodeType": "YulIdentifier",
"src": "3671:2:1"
}
],
"functionName": {
"name": "array_allocation_size_array_uint256_dyn",
"nativeSrc": "3631:39:1",
"nodeType": "YulIdentifier",
"src": "3631:39:1"
},
"nativeSrc": "3631:43:1",
"nodeType": "YulFunctionCall",
"src": "3631:43:1"
}
],
"functionName": {
"name": "allocate_memory",
"nativeSrc": "3615:15:1",
"nodeType": "YulIdentifier",
"src": "3615:15:1"
},
"nativeSrc": "3615:60:1",
"nodeType": "YulFunctionCall",
"src": "3615:60:1"
},
"variables": [
{
"name": "dst",
"nativeSrc": "3608:3:1",
"nodeType": "YulTypedName",
"src": "3608:3:1",
"type": ""
}
]
},
{
"nativeSrc": "3684:16:1",
"nodeType": "YulVariableDeclaration",
"src": "3684:16:1",
"value": {
"name": "dst",
"nativeSrc": "3697:3:1",
"nodeType": "YulIdentifier",
"src": "3697:3:1"
},
"variables": [
{
"name": "dst_1",
"nativeSrc": "3688:5:1",
"nodeType": "YulTypedName",
"src": "3688:5:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dst",
"nativeSrc": "3716:3:1",
"nodeType": "YulIdentifier",
"src": "3716:3:1"
},
{
"name": "_3",
"nativeSrc": "3721:2:1",
"nodeType": "YulIdentifier",
"src": "3721:2:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "3709:6:1",
"nodeType": "YulIdentifier",
"src": "3709:6:1"
},
"nativeSrc": "3709:15:1",
"nodeType": "YulFunctionCall",
"src": "3709:15:1"
},
"nativeSrc": "3709:15:1",
"nodeType": "YulExpressionStatement",
"src": "3709:15:1"
},
{
"nativeSrc": "3733:19:1",
"nodeType": "YulAssignment",
"src": "3733:19:1",
"value": {
"arguments": [
{
"name": "dst",
"nativeSrc": "3744:3:1",
"nodeType": "YulIdentifier",
"src": "3744:3:1"
},
{
"name": "_1",
"nativeSrc": "3749:2:1",
"nodeType": "YulIdentifier",
"src": "3749:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3740:3:1",
"nodeType": "YulIdentifier",
"src": "3740:3:1"
},
"nativeSrc": "3740:12:1",
"nodeType": "YulFunctionCall",
"src": "3740:12:1"
},
"variableNames": [
{
"name": "dst",
"nativeSrc": "3733:3:1",
"nodeType": "YulIdentifier",
"src": "3733:3:1"
}
]
},
{
"nativeSrc": "3761:42:1",
"nodeType": "YulVariableDeclaration",
"src": "3761:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_2",
"nativeSrc": "3783:2:1",
"nodeType": "YulIdentifier",
"src": "3783:2:1"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "3791:1:1",
"nodeType": "YulLiteral",
"src": "3791:1:1",
"type": "",
"value": "5"
},
{
"name": "_3",
"nativeSrc": "3794:2:1",
"nodeType": "YulIdentifier",
"src": "3794:2:1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "3787:3:1",
"nodeType": "YulIdentifier",
"src": "3787:3:1"
},
"nativeSrc": "3787:10:1",
"nodeType": "YulFunctionCall",
"src": "3787:10:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3779:3:1",
"nodeType": "YulIdentifier",
"src": "3779:3:1"
},
"nativeSrc": "3779:19:1",
"nodeType": "YulFunctionCall",
"src": "3779:19:1"
},
{
"name": "_1",
"nativeSrc": "3800:2:1",
"nodeType": "YulIdentifier",
"src": "3800:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3775:3:1",
"nodeType": "YulIdentifier",
"src": "3775:3:1"
},
"nativeSrc": "3775:28:1",
"nodeType": "YulFunctionCall",
"src": "3775:28:1"
},
"variables": [
{
"name": "srcEnd",
"nativeSrc": "3765:6:1",
"nodeType": "YulTypedName",
"src": "3765:6:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "3835:16:1",
"nodeType": "YulBlock",
"src": "3835:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3844:1:1",
"nodeType": "YulLiteral",
"src": "3844:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "3847:1:1",
"nodeType": "YulLiteral",
"src": "3847:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "3837:6:1",
"nodeType": "YulIdentifier",
"src": "3837:6:1"
},
"nativeSrc": "3837:12:1",
"nodeType": "YulFunctionCall",
"src": "3837:12:1"
},
"nativeSrc": "3837:12:1",
"nodeType": "YulExpressionStatement",
"src": "3837:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "srcEnd",
"nativeSrc": "3818:6:1",
"nodeType": "YulIdentifier",
"src": "3818:6:1"
},
{
"name": "dataEnd",
"nativeSrc": "3826:7:1",
"nodeType": "YulIdentifier",
"src": "3826:7:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "3815:2:1",
"nodeType": "YulIdentifier",
"src": "3815:2:1"
},
"nativeSrc": "3815:19:1",
"nodeType": "YulFunctionCall",
"src": "3815:19:1"
},
"nativeSrc": "3812:39:1",
"nodeType": "YulIf",
"src": "3812:39:1"
},
{
"nativeSrc": "3860:22:1",
"nodeType": "YulVariableDeclaration",
"src": "3860:22:1",
"value": {
"arguments": [
{
"name": "_2",
"nativeSrc": "3875:2:1",
"nodeType": "YulIdentifier",
"src": "3875:2:1"
},
{
"name": "_1",
"nativeSrc": "3879:2:1",
"nodeType": "YulIdentifier",
"src": "3879:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3871:3:1",
"nodeType": "YulIdentifier",
"src": "3871:3:1"
},
"nativeSrc": "3871:11:1",
"nodeType": "YulFunctionCall",
"src": "3871:11:1"
},
"variables": [
{
"name": "src",
"nativeSrc": "3864:3:1",
"nodeType": "YulTypedName",
"src": "3864:3:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "3947:79:1",
"nodeType": "YulBlock",
"src": "3947:79:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nativeSrc": "3968:3:1",
"nodeType": "YulIdentifier",
"src": "3968:3:1"
},
{
"arguments": [
{
"name": "src",
"nativeSrc": "3979:3:1",
"nodeType": "YulIdentifier",
"src": "3979:3:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "3973:5:1",
"nodeType": "YulIdentifier",
"src": "3973:5:1"
},
"nativeSrc": "3973:10:1",
"nodeType": "YulFunctionCall",
"src": "3973:10:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "3961:6:1",
"nodeType": "YulIdentifier",
"src": "3961:6:1"
},
"nativeSrc": "3961:23:1",
"nodeType": "YulFunctionCall",
"src": "3961:23:1"
},
"nativeSrc": "3961:23:1",
"nodeType": "YulExpressionStatement",
"src": "3961:23:1"
},
{
"nativeSrc": "3997:19:1",
"nodeType": "YulAssignment",
"src": "3997:19:1",
"value": {
"arguments": [
{
"name": "dst",
"nativeSrc": "4008:3:1",
"nodeType": "YulIdentifier",
"src": "4008:3:1"
},
{
"name": "_1",
"nativeSrc": "4013:2:1",
"nodeType": "YulIdentifier",
"src": "4013:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4004:3:1",
"nodeType": "YulIdentifier",
"src": "4004:3:1"
},
"nativeSrc": "4004:12:1",
"nodeType": "YulFunctionCall",
"src": "4004:12:1"
},
"variableNames": [
{
"name": "dst",
"nativeSrc": "3997:3:1",
"nodeType": "YulIdentifier",
"src": "3997:3:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "src",
"nativeSrc": "3902:3:1",
"nodeType": "YulIdentifier",
"src": "3902:3:1"
},
{
"name": "srcEnd",
"nativeSrc": "3907:6:1",
"nodeType": "YulIdentifier",
"src": "3907:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "3899:2:1",
"nodeType": "YulIdentifier",
"src": "3899:2:1"
},
"nativeSrc": "3899:15:1",
"nodeType": "YulFunctionCall",
"src": "3899:15:1"
},
"nativeSrc": "3891:135:1",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "3915:23:1",
"nodeType": "YulBlock",
"src": "3915:23:1",
"statements": [
{
"nativeSrc": "3917:19:1",
"nodeType": "YulAssignment",
"src": "3917:19:1",
"value": {
"arguments": [
{
"name": "src",
"nativeSrc": "3928:3:1",
"nodeType": "YulIdentifier",
"src": "3928:3:1"
},
{
"name": "_1",
"nativeSrc": "3933:2:1",
"nodeType": "YulIdentifier",
"src": "3933:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3924:3:1",
"nodeType": "YulIdentifier",
"src": "3924:3:1"
},
"nativeSrc": "3924:12:1",
"nodeType": "YulFunctionCall",
"src": "3924:12:1"
},
"variableNames": [
{
"name": "src",
"nativeSrc": "3917:3:1",
"nodeType": "YulIdentifier",
"src": "3917:3:1"
}
]
}
]
},
"pre": {
"nativeSrc": "3895:3:1",
"nodeType": "YulBlock",
"src": "3895:3:1",
"statements": []
},
"src": "3891:135:1"
},
{
"nativeSrc": "4035:15:1",
"nodeType": "YulAssignment",
"src": "4035:15:1",
"value": {
"name": "dst_1",
"nativeSrc": "4045:5:1",
"nodeType": "YulIdentifier",
"src": "4045:5:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "4035:6:1",
"nodeType": "YulIdentifier",
"src": "4035:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory",
"nativeSrc": "3175:881:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "3247:9:1",
"nodeType": "YulTypedName",
"src": "3247:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "3258:7:1",
"nodeType": "YulTypedName",
"src": "3258:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "3270:6:1",
"nodeType": "YulTypedName",
"src": "3270:6:1",
"type": ""
}
],
"src": "3175:881:1"
},
{
"body": {
"nativeSrc": "4290:575:1",
"nodeType": "YulBlock",
"src": "4290:575:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "4307:9:1",
"nodeType": "YulIdentifier",
"src": "4307:9:1"
},
{
"kind": "number",
"nativeSrc": "4318:2:1",
"nodeType": "YulLiteral",
"src": "4318:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4300:6:1",
"nodeType": "YulIdentifier",
"src": "4300:6:1"
},
"nativeSrc": "4300:21:1",
"nodeType": "YulFunctionCall",
"src": "4300:21:1"
},
"nativeSrc": "4300:21:1",
"nodeType": "YulExpressionStatement",
"src": "4300:21:1"
},
{
"nativeSrc": "4330:70:1",
"nodeType": "YulVariableDeclaration",
"src": "4330:70:1",
"value": {
"arguments": [
{
"name": "value0",
"nativeSrc": "4373:6:1",
"nodeType": "YulIdentifier",
"src": "4373:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "4385:9:1",
"nodeType": "YulIdentifier",
"src": "4385:9:1"
},
{
"kind": "number",
"nativeSrc": "4396:2:1",
"nodeType": "YulLiteral",
"src": "4396:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4381:3:1",
"nodeType": "YulIdentifier",
"src": "4381:3:1"
},
"nativeSrc": "4381:18:1",
"nodeType": "YulFunctionCall",
"src": "4381:18:1"
}
],
"functionName": {
"name": "abi_encode_array_uint256_dyn",
"nativeSrc": "4344:28:1",
"nodeType": "YulIdentifier",
"src": "4344:28:1"
},
"nativeSrc": "4344:56:1",
"nodeType": "YulFunctionCall",
"src": "4344:56:1"
},
"variables": [
{
"name": "tail_1",
"nativeSrc": "4334:6:1",
"nodeType": "YulTypedName",
"src": "4334:6:1",
"type": ""
}
]
},
{
"nativeSrc": "4409:12:1",
"nodeType": "YulVariableDeclaration",
"src": "4409:12:1",
"value": {
"kind": "number",
"nativeSrc": "4419:2:1",
"nodeType": "YulLiteral",
"src": "4419:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nativeSrc": "4413:2:1",
"nodeType": "YulTypedName",
"src": "4413:2:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "4441:9:1",
"nodeType": "YulIdentifier",
"src": "4441:9:1"
},
{
"kind": "number",
"nativeSrc": "4452:2:1",
"nodeType": "YulLiteral",
"src": "4452:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4437:3:1",
"nodeType": "YulIdentifier",
"src": "4437:3:1"
},
"nativeSrc": "4437:18:1",
"nodeType": "YulFunctionCall",
"src": "4437:18:1"
},
{
"arguments": [
{
"name": "tail_1",
"nativeSrc": "4461:6:1",
"nodeType": "YulIdentifier",
"src": "4461:6:1"
},
{
"name": "headStart",
"nativeSrc": "4469:9:1",
"nodeType": "YulIdentifier",
"src": "4469:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "4457:3:1",
"nodeType": "YulIdentifier",
"src": "4457:3:1"
},
"nativeSrc": "4457:22:1",
"nodeType": "YulFunctionCall",
"src": "4457:22:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4430:6:1",
"nodeType": "YulIdentifier",
"src": "4430:6:1"
},
"nativeSrc": "4430:50:1",
"nodeType": "YulFunctionCall",
"src": "4430:50:1"
},
"nativeSrc": "4430:50:1",
"nodeType": "YulExpressionStatement",
"src": "4430:50:1"
},
{
"nativeSrc": "4489:17:1",
"nodeType": "YulVariableDeclaration",
"src": "4489:17:1",
"value": {
"name": "tail_1",
"nativeSrc": "4500:6:1",
"nodeType": "YulIdentifier",
"src": "4500:6:1"
},
"variables": [
{
"name": "pos",
"nativeSrc": "4493:3:1",
"nodeType": "YulTypedName",
"src": "4493:3:1",
"type": ""
}
]
},
{
"nativeSrc": "4515:27:1",
"nodeType": "YulVariableDeclaration",
"src": "4515:27:1",
"value": {
"arguments": [
{
"name": "value1",
"nativeSrc": "4535:6:1",
"nodeType": "YulIdentifier",
"src": "4535:6:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "4529:5:1",
"nodeType": "YulIdentifier",
"src": "4529:5:1"
},
"nativeSrc": "4529:13:1",
"nodeType": "YulFunctionCall",
"src": "4529:13:1"
},
"variables": [
{
"name": "length",
"nativeSrc": "4519:6:1",
"nodeType": "YulTypedName",
"src": "4519:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "tail_1",
"nativeSrc": "4558:6:1",
"nodeType": "YulIdentifier",
"src": "4558:6:1"
},
{
"name": "length",
"nativeSrc": "4566:6:1",
"nodeType": "YulIdentifier",
"src": "4566:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4551:6:1",
"nodeType": "YulIdentifier",
"src": "4551:6:1"
},
"nativeSrc": "4551:22:1",
"nodeType": "YulFunctionCall",
"src": "4551:22:1"
},
"nativeSrc": "4551:22:1",
"nodeType": "YulExpressionStatement",
"src": "4551:22:1"
},
{
"nativeSrc": "4582:22:1",
"nodeType": "YulAssignment",
"src": "4582:22:1",
"value": {
"arguments": [
{
"name": "tail_1",
"nativeSrc": "4593:6:1",
"nodeType": "YulIdentifier",
"src": "4593:6:1"
},
{
"kind": "number",
"nativeSrc": "4601:2:1",
"nodeType": "YulLiteral",
"src": "4601:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4589:3:1",
"nodeType": "YulIdentifier",
"src": "4589:3:1"
},
"nativeSrc": "4589:15:1",
"nodeType": "YulFunctionCall",
"src": "4589:15:1"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "4582:3:1",
"nodeType": "YulIdentifier",
"src": "4582:3:1"
}
]
},
{
"nativeSrc": "4613:29:1",
"nodeType": "YulVariableDeclaration",
"src": "4613:29:1",
"value": {
"arguments": [
{
"name": "value1",
"nativeSrc": "4631:6:1",
"nodeType": "YulIdentifier",
"src": "4631:6:1"
},
{
"kind": "number",
"nativeSrc": "4639:2:1",
"nodeType": "YulLiteral",
"src": "4639:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4627:3:1",
"nodeType": "YulIdentifier",
"src": "4627:3:1"
},
"nativeSrc": "4627:15:1",
"nodeType": "YulFunctionCall",
"src": "4627:15:1"
},
"variables": [
{
"name": "srcPtr",
"nativeSrc": "4617:6:1",
"nodeType": "YulTypedName",
"src": "4617:6:1",
"type": ""
}
]
},
{
"nativeSrc": "4651:10:1",
"nodeType": "YulVariableDeclaration",
"src": "4651:10:1",
"value": {
"kind": "number",
"nativeSrc": "4660:1:1",
"nodeType": "YulLiteral",
"src": "4660:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nativeSrc": "4655:1:1",
"nodeType": "YulTypedName",
"src": "4655:1:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "4719:120:1",
"nodeType": "YulBlock",
"src": "4719:120:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "4740:3:1",
"nodeType": "YulIdentifier",
"src": "4740:3:1"
},
{
"arguments": [
{
"name": "srcPtr",
"nativeSrc": "4751:6:1",
"nodeType": "YulIdentifier",
"src": "4751:6:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "4745:5:1",
"nodeType": "YulIdentifier",
"src": "4745:5:1"
},
"nativeSrc": "4745:13:1",
"nodeType": "YulFunctionCall",
"src": "4745:13:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4733:6:1",
"nodeType": "YulIdentifier",
"src": "4733:6:1"
},
"nativeSrc": "4733:26:1",
"nodeType": "YulFunctionCall",
"src": "4733:26:1"
},
"nativeSrc": "4733:26:1",
"nodeType": "YulExpressionStatement",
"src": "4733:26:1"
},
{
"nativeSrc": "4772:19:1",
"nodeType": "YulAssignment",
"src": "4772:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "4783:3:1",
"nodeType": "YulIdentifier",
"src": "4783:3:1"
},
{
"name": "_1",
"nativeSrc": "4788:2:1",
"nodeType": "YulIdentifier",
"src": "4788:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4779:3:1",
"nodeType": "YulIdentifier",
"src": "4779:3:1"
},
"nativeSrc": "4779:12:1",
"nodeType": "YulFunctionCall",
"src": "4779:12:1"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "4772:3:1",
"nodeType": "YulIdentifier",
"src": "4772:3:1"
}
]
},
{
"nativeSrc": "4804:25:1",
"nodeType": "YulAssignment",
"src": "4804:25:1",
"value": {
"arguments": [
{
"name": "srcPtr",
"nativeSrc": "4818:6:1",
"nodeType": "YulIdentifier",
"src": "4818:6:1"
},
{
"name": "_1",
"nativeSrc": "4826:2:1",
"nodeType": "YulIdentifier",
"src": "4826:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4814:3:1",
"nodeType": "YulIdentifier",
"src": "4814:3:1"
},
"nativeSrc": "4814:15:1",
"nodeType": "YulFunctionCall",
"src": "4814:15:1"
},
"variableNames": [
{
"name": "srcPtr",
"nativeSrc": "4804:6:1",
"nodeType": "YulIdentifier",
"src": "4804:6:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nativeSrc": "4681:1:1",
"nodeType": "YulIdentifier",
"src": "4681:1:1"
},
{
"name": "length",
"nativeSrc": "4684:6:1",
"nodeType": "YulIdentifier",
"src": "4684:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "4678:2:1",
"nodeType": "YulIdentifier",
"src": "4678:2:1"
},
"nativeSrc": "4678:13:1",
"nodeType": "YulFunctionCall",
"src": "4678:13:1"
},
"nativeSrc": "4670:169:1",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "4692:18:1",
"nodeType": "YulBlock",
"src": "4692:18:1",
"statements": [
{
"nativeSrc": "4694:14:1",
"nodeType": "YulAssignment",
"src": "4694:14:1",
"value": {
"arguments": [
{
"name": "i",
"nativeSrc": "4703:1:1",
"nodeType": "YulIdentifier",
"src": "4703:1:1"
},
{
"kind": "number",
"nativeSrc": "4706:1:1",
"nodeType": "YulLiteral",
"src": "4706:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4699:3:1",
"nodeType": "YulIdentifier",
"src": "4699:3:1"
},
"nativeSrc": "4699:9:1",
"nodeType": "YulFunctionCall",
"src": "4699:9:1"
},
"variableNames": [
{
"name": "i",
"nativeSrc": "4694:1:1",
"nodeType": "YulIdentifier",
"src": "4694:1:1"
}
]
}
]
},
"pre": {
"nativeSrc": "4674:3:1",
"nodeType": "YulBlock",
"src": "4674:3:1",
"statements": []
},
"src": "4670:169:1"
},
{
"nativeSrc": "4848:11:1",
"nodeType": "YulAssignment",
"src": "4848:11:1",
"value": {
"name": "pos",
"nativeSrc": "4856:3:1",
"nodeType": "YulIdentifier",
"src": "4856:3:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "4848:4:1",
"nodeType": "YulIdentifier",
"src": "4848:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed",
"nativeSrc": "4061:804:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "4251:9:1",
"nodeType": "YulTypedName",
"src": "4251:9:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "4262:6:1",
"nodeType": "YulTypedName",
"src": "4262:6:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "4270:6:1",
"nodeType": "YulTypedName",
"src": "4270:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "4281:4:1",
"nodeType": "YulTypedName",
"src": "4281:4:1",
"type": ""
}
],
"src": "4061:804:1"
},
{
"body": {
"nativeSrc": "5045:542:1",
"nodeType": "YulBlock",
"src": "5045:542:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "5062:9:1",
"nodeType": "YulIdentifier",
"src": "5062:9:1"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "5077:6:1",
"nodeType": "YulIdentifier",
"src": "5077:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "5093:3:1",
"nodeType": "YulLiteral",
"src": "5093:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "5098:1:1",
"nodeType": "YulLiteral",
"src": "5098:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "5089:3:1",
"nodeType": "YulIdentifier",
"src": "5089:3:1"
},
"nativeSrc": "5089:11:1",
"nodeType": "YulFunctionCall",
"src": "5089:11:1"
},
{
"kind": "number",
"nativeSrc": "5102:1:1",
"nodeType": "YulLiteral",
"src": "5102:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "5085:3:1",
"nodeType": "YulIdentifier",
"src": "5085:3:1"
},
"nativeSrc": "5085:19:1",
"nodeType": "YulFunctionCall",
"src": "5085:19:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5073:3:1",
"nodeType": "YulIdentifier",
"src": "5073:3:1"
},
"nativeSrc": "5073:32:1",
"nodeType": "YulFunctionCall",
"src": "5073:32:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5055:6:1",
"nodeType": "YulIdentifier",
"src": "5055:6:1"
},
"nativeSrc": "5055:51:1",
"nodeType": "YulFunctionCall",
"src": "5055:51:1"
},
"nativeSrc": "5055:51:1",
"nodeType": "YulExpressionStatement",
"src": "5055:51:1"
},
{
"nativeSrc": "5115:12:1",
"nodeType": "YulVariableDeclaration",
"src": "5115:12:1",
"value": {
"kind": "number",
"nativeSrc": "5125:2:1",
"nodeType": "YulLiteral",
"src": "5125:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nativeSrc": "5119:2:1",
"nodeType": "YulTypedName",
"src": "5119:2:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5147:9:1",
"nodeType": "YulIdentifier",
"src": "5147:9:1"
},
{
"kind": "number",
"nativeSrc": "5158:2:1",
"nodeType": "YulLiteral",
"src": "5158:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5143:3:1",
"nodeType": "YulIdentifier",
"src": "5143:3:1"
},
"nativeSrc": "5143:18:1",
"nodeType": "YulFunctionCall",
"src": "5143:18:1"
},
{
"kind": "number",
"nativeSrc": "5163:2:1",
"nodeType": "YulLiteral",
"src": "5163:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5136:6:1",
"nodeType": "YulIdentifier",
"src": "5136:6:1"
},
"nativeSrc": "5136:30:1",
"nodeType": "YulFunctionCall",
"src": "5136:30:1"
},
"nativeSrc": "5136:30:1",
"nodeType": "YulExpressionStatement",
"src": "5136:30:1"
},
{
"nativeSrc": "5175:27:1",
"nodeType": "YulVariableDeclaration",
"src": "5175:27:1",
"value": {
"arguments": [
{
"name": "value1",
"nativeSrc": "5195:6:1",
"nodeType": "YulIdentifier",
"src": "5195:6:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "5189:5:1",
"nodeType": "YulIdentifier",
"src": "5189:5:1"
},
"nativeSrc": "5189:13:1",
"nodeType": "YulFunctionCall",
"src": "5189:13:1"
},
"variables": [
{
"name": "length",
"nativeSrc": "5179:6:1",
"nodeType": "YulTypedName",
"src": "5179:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5222:9:1",
"nodeType": "YulIdentifier",
"src": "5222:9:1"
},
{
"kind": "number",
"nativeSrc": "5233:2:1",
"nodeType": "YulLiteral",
"src": "5233:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5218:3:1",
"nodeType": "YulIdentifier",
"src": "5218:3:1"
},
"nativeSrc": "5218:18:1",
"nodeType": "YulFunctionCall",
"src": "5218:18:1"
},
{
"name": "length",
"nativeSrc": "5238:6:1",
"nodeType": "YulIdentifier",
"src": "5238:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5211:6:1",
"nodeType": "YulIdentifier",
"src": "5211:6:1"
},
"nativeSrc": "5211:34:1",
"nodeType": "YulFunctionCall",
"src": "5211:34:1"
},
"nativeSrc": "5211:34:1",
"nodeType": "YulExpressionStatement",
"src": "5211:34:1"
},
{
"nativeSrc": "5254:10:1",
"nodeType": "YulVariableDeclaration",
"src": "5254:10:1",
"value": {
"kind": "number",
"nativeSrc": "5263:1:1",
"nodeType": "YulLiteral",
"src": "5263:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nativeSrc": "5258:1:1",
"nodeType": "YulTypedName",
"src": "5258:1:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "5323:91:1",
"nodeType": "YulBlock",
"src": "5323:91:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5352:9:1",
"nodeType": "YulIdentifier",
"src": "5352:9:1"
},
{
"name": "i",
"nativeSrc": "5363:1:1",
"nodeType": "YulIdentifier",
"src": "5363:1:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5348:3:1",
"nodeType": "YulIdentifier",
"src": "5348:3:1"
},
"nativeSrc": "5348:17:1",
"nodeType": "YulFunctionCall",
"src": "5348:17:1"
},
{
"kind": "number",
"nativeSrc": "5367:3:1",
"nodeType": "YulLiteral",
"src": "5367:3:1",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5344:3:1",
"nodeType": "YulIdentifier",
"src": "5344:3:1"
},
"nativeSrc": "5344:27:1",
"nodeType": "YulFunctionCall",
"src": "5344:27:1"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value1",
"nativeSrc": "5387:6:1",
"nodeType": "YulIdentifier",
"src": "5387:6:1"
},
{
"name": "i",
"nativeSrc": "5395:1:1",
"nodeType": "YulIdentifier",
"src": "5395:1:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5383:3:1",
"nodeType": "YulIdentifier",
"src": "5383:3:1"
},
"nativeSrc": "5383:14:1",
"nodeType": "YulFunctionCall",
"src": "5383:14:1"
},
{
"name": "_1",
"nativeSrc": "5399:2:1",
"nodeType": "YulIdentifier",
"src": "5399:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5379:3:1",
"nodeType": "YulIdentifier",
"src": "5379:3:1"
},
"nativeSrc": "5379:23:1",
"nodeType": "YulFunctionCall",
"src": "5379:23:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "5373:5:1",
"nodeType": "YulIdentifier",
"src": "5373:5:1"
},
"nativeSrc": "5373:30:1",
"nodeType": "YulFunctionCall",
"src": "5373:30:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5337:6:1",
"nodeType": "YulIdentifier",
"src": "5337:6:1"
},
"nativeSrc": "5337:67:1",
"nodeType": "YulFunctionCall",
"src": "5337:67:1"
},
"nativeSrc": "5337:67:1",
"nodeType": "YulExpressionStatement",
"src": "5337:67:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nativeSrc": "5284:1:1",
"nodeType": "YulIdentifier",
"src": "5284:1:1"
},
{
"name": "length",
"nativeSrc": "5287:6:1",
"nodeType": "YulIdentifier",
"src": "5287:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "5281:2:1",
"nodeType": "YulIdentifier",
"src": "5281:2:1"
},
"nativeSrc": "5281:13:1",
"nodeType": "YulFunctionCall",
"src": "5281:13:1"
},
"nativeSrc": "5273:141:1",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "5295:19:1",
"nodeType": "YulBlock",
"src": "5295:19:1",
"statements": [
{
"nativeSrc": "5297:15:1",
"nodeType": "YulAssignment",
"src": "5297:15:1",
"value": {
"arguments": [
{
"name": "i",
"nativeSrc": "5306:1:1",
"nodeType": "YulIdentifier",
"src": "5306:1:1"
},
{
"name": "_1",
"nativeSrc": "5309:2:1",
"nodeType": "YulIdentifier",
"src": "5309:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5302:3:1",
"nodeType": "YulIdentifier",
"src": "5302:3:1"
},
"nativeSrc": "5302:10:1",
"nodeType": "YulFunctionCall",
"src": "5302:10:1"
},
"variableNames": [
{
"name": "i",
"nativeSrc": "5297:1:1",
"nodeType": "YulIdentifier",
"src": "5297:1:1"
}
]
}
]
},
"pre": {
"nativeSrc": "5277:3:1",
"nodeType": "YulBlock",
"src": "5277:3:1",
"statements": []
},
"src": "5273:141:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5438:9:1",
"nodeType": "YulIdentifier",
"src": "5438:9:1"
},
{
"name": "length",
"nativeSrc": "5449:6:1",
"nodeType": "YulIdentifier",
"src": "5449:6:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5434:3:1",
"nodeType": "YulIdentifier",
"src": "5434:3:1"
},
"nativeSrc": "5434:22:1",
"nodeType": "YulFunctionCall",
"src": "5434:22:1"
},
{
"kind": "number",
"nativeSrc": "5458:3:1",
"nodeType": "YulLiteral",
"src": "5458:3:1",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5430:3:1",
"nodeType": "YulIdentifier",
"src": "5430:3:1"
},
"nativeSrc": "5430:32:1",
"nodeType": "YulFunctionCall",
"src": "5430:32:1"
},
{
"kind": "number",
"nativeSrc": "5464:1:1",
"nodeType": "YulLiteral",
"src": "5464:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5423:6:1",
"nodeType": "YulIdentifier",
"src": "5423:6:1"
},
"nativeSrc": "5423:43:1",
"nodeType": "YulFunctionCall",
"src": "5423:43:1"
},
"nativeSrc": "5423:43:1",
"nodeType": "YulExpressionStatement",
"src": "5423:43:1"
},
{
"nativeSrc": "5475:63:1",
"nodeType": "YulAssignment",
"src": "5475:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5491:9:1",
"nodeType": "YulIdentifier",
"src": "5491:9:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nativeSrc": "5510:6:1",
"nodeType": "YulIdentifier",
"src": "5510:6:1"
},
{
"kind": "number",
"nativeSrc": "5518:2:1",
"nodeType": "YulLiteral",
"src": "5518:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5506:3:1",
"nodeType": "YulIdentifier",
"src": "5506:3:1"
},
"nativeSrc": "5506:15:1",
"nodeType": "YulFunctionCall",
"src": "5506:15:1"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "5527:2:1",
"nodeType": "YulLiteral",
"src": "5527:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nativeSrc": "5523:3:1",
"nodeType": "YulIdentifier",
"src": "5523:3:1"
},
"nativeSrc": "5523:7:1",
"nodeType": "YulFunctionCall",
"src": "5523:7:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5502:3:1",
"nodeType": "YulIdentifier",
"src": "5502:3:1"
},
"nativeSrc": "5502:29:1",
"nodeType": "YulFunctionCall",
"src": "5502:29:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5487:3:1",
"nodeType": "YulIdentifier",
"src": "5487:3:1"
},
"nativeSrc": "5487:45:1",
"nodeType": "YulFunctionCall",
"src": "5487:45:1"
},
{
"kind": "number",
"nativeSrc": "5534:3:1",
"nodeType": "YulLiteral",
"src": "5534:3:1",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5483:3:1",
"nodeType": "YulIdentifier",
"src": "5483:3:1"
},
"nativeSrc": "5483:55:1",
"nodeType": "YulFunctionCall",
"src": "5483:55:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "5475:4:1",
"nodeType": "YulIdentifier",
"src": "5475:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5558:9:1",
"nodeType": "YulIdentifier",
"src": "5558:9:1"
},
{
"kind": "number",
"nativeSrc": "5569:2:1",
"nodeType": "YulLiteral",
"src": "5569:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5554:3:1",
"nodeType": "YulIdentifier",
"src": "5554:3:1"
},
"nativeSrc": "5554:18:1",
"nodeType": "YulFunctionCall",
"src": "5554:18:1"
},
{
"name": "value2",
"nativeSrc": "5574:6:1",
"nodeType": "YulIdentifier",
"src": "5574:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5547:6:1",
"nodeType": "YulIdentifier",
"src": "5547:6:1"
},
"nativeSrc": "5547:34:1",
"nodeType": "YulFunctionCall",
"src": "5547:34:1"
},
"nativeSrc": "5547:34:1",
"nodeType": "YulExpressionStatement",
"src": "5547:34:1"
}
]
},
"name": "abi_encode_tuple_t_address_t_bytes_memory_ptr_t_uint256__to_t_address_t_bytes_memory_ptr_t_uint256__fromStack_reversed",
"nativeSrc": "4870:717:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "4998:9:1",
"nodeType": "YulTypedName",
"src": "4998:9:1",
"type": ""
},
{
"name": "value2",
"nativeSrc": "5009:6:1",
"nodeType": "YulTypedName",
"src": "5009:6:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "5017:6:1",
"nodeType": "YulTypedName",
"src": "5017:6:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "5025:6:1",
"nodeType": "YulTypedName",
"src": "5025:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "5036:4:1",
"nodeType": "YulTypedName",
"src": "5036:4:1",
"type": ""
}
],
"src": "4870:717:1"
},
{
"body": {
"nativeSrc": "5673:103:1",
"nodeType": "YulBlock",
"src": "5673:103:1",
"statements": [
{
"body": {
"nativeSrc": "5719:16:1",
"nodeType": "YulBlock",
"src": "5719:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "5728:1:1",
"nodeType": "YulLiteral",
"src": "5728:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "5731:1:1",
"nodeType": "YulLiteral",
"src": "5731:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "5721:6:1",
"nodeType": "YulIdentifier",
"src": "5721:6:1"
},
"nativeSrc": "5721:12:1",
"nodeType": "YulFunctionCall",
"src": "5721:12:1"
},
"nativeSrc": "5721:12:1",
"nodeType": "YulExpressionStatement",
"src": "5721:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "5694:7:1",
"nodeType": "YulIdentifier",
"src": "5694:7:1"
},
{
"name": "headStart",
"nativeSrc": "5703:9:1",
"nodeType": "YulIdentifier",
"src": "5703:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "5690:3:1",
"nodeType": "YulIdentifier",
"src": "5690:3:1"
},
"nativeSrc": "5690:23:1",
"nodeType": "YulFunctionCall",
"src": "5690:23:1"
},
{
"kind": "number",
"nativeSrc": "5715:2:1",
"nodeType": "YulLiteral",
"src": "5715:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "5686:3:1",
"nodeType": "YulIdentifier",
"src": "5686:3:1"
},
"nativeSrc": "5686:32:1",
"nodeType": "YulFunctionCall",
"src": "5686:32:1"
},
"nativeSrc": "5683:52:1",
"nodeType": "YulIf",
"src": "5683:52:1"
},
{
"nativeSrc": "5744:26:1",
"nodeType": "YulAssignment",
"src": "5744:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "5760:9:1",
"nodeType": "YulIdentifier",
"src": "5760:9:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "5754:5:1",
"nodeType": "YulIdentifier",
"src": "5754:5:1"
},
"nativeSrc": "5754:16:1",
"nodeType": "YulFunctionCall",
"src": "5754:16:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "5744:6:1",
"nodeType": "YulIdentifier",
"src": "5744:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32_fromMemory",
"nativeSrc": "5592:184:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "5639:9:1",
"nodeType": "YulTypedName",
"src": "5639:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "5650:7:1",
"nodeType": "YulTypedName",
"src": "5650:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "5662:6:1",
"nodeType": "YulTypedName",
"src": "5662:6:1",
"type": ""
}
],
"src": "5592:184:1"
},
{
"body": {
"nativeSrc": "5813:95:1",
"nodeType": "YulBlock",
"src": "5813:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "5830:1:1",
"nodeType": "YulLiteral",
"src": "5830:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "5837:3:1",
"nodeType": "YulLiteral",
"src": "5837:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nativeSrc": "5842:10:1",
"nodeType": "YulLiteral",
"src": "5842:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "5833:3:1",
"nodeType": "YulIdentifier",
"src": "5833:3:1"
},
"nativeSrc": "5833:20:1",
"nodeType": "YulFunctionCall",
"src": "5833:20:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5823:6:1",
"nodeType": "YulIdentifier",
"src": "5823:6:1"
},
"nativeSrc": "5823:31:1",
"nodeType": "YulFunctionCall",
"src": "5823:31:1"
},
"nativeSrc": "5823:31:1",
"nodeType": "YulExpressionStatement",
"src": "5823:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "5870:1:1",
"nodeType": "YulLiteral",
"src": "5870:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "5873:4:1",
"nodeType": "YulLiteral",
"src": "5873:4:1",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5863:6:1",
"nodeType": "YulIdentifier",
"src": "5863:6:1"
},
"nativeSrc": "5863:15:1",
"nodeType": "YulFunctionCall",
"src": "5863:15:1"
},
"nativeSrc": "5863:15:1",
"nodeType": "YulExpressionStatement",
"src": "5863:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "5894:1:1",
"nodeType": "YulLiteral",
"src": "5894:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "5897:4:1",
"nodeType": "YulLiteral",
"src": "5897:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "5887:6:1",
"nodeType": "YulIdentifier",
"src": "5887:6:1"
},
"nativeSrc": "5887:15:1",
"nodeType": "YulFunctionCall",
"src": "5887:15:1"
},
"nativeSrc": "5887:15:1",
"nodeType": "YulExpressionStatement",
"src": "5887:15:1"
}
]
},
"name": "panic_error_0x32",
"nativeSrc": "5781:127:1",
"nodeType": "YulFunctionDefinition",
"src": "5781:127:1"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_contract$_IAMB_$1060__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_contract$_HeaderStorage_$1335__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_array_uint256_dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n size := add(shl(5, length), 0x20)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n let _2 := calldataload(_1)\n let _3 := 0x20\n let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_2))\n let dst_1 := dst\n mstore(dst, _2)\n dst := add(dst, _3)\n let srcEnd := add(add(_1, shl(5, _2)), _3)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_1, _3)\n for { } lt(src, srcEnd) { src := add(src, _3) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _3)\n }\n value0 := dst_1\n value1 := abi_decode_address(add(headStart, _3))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_array_uint256_dyn(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let _1 := 0x20\n pos := add(pos, 0x20)\n let srcPtr := add(value, 0x20)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n end := pos\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_array_uint256_dyn(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n let _1 := 32\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := mload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := mload(_2)\n let dst := allocate_memory(array_allocation_size_array_uint256_dyn(_3))\n let dst_1 := dst\n mstore(dst, _3)\n dst := add(dst, _1)\n let srcEnd := add(add(_2, shl(5, _3)), _1)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_2, _1)\n for { } lt(src, srcEnd) { src := add(src, _1) }\n {\n mstore(dst, mload(src))\n dst := add(dst, _1)\n }\n value0 := dst_1\n }\n function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_array_uint256_dyn(value0, add(headStart, 64))\n let _1 := 32\n mstore(add(headStart, 32), sub(tail_1, headStart))\n let pos := tail_1\n let length := mload(value1)\n mstore(tail_1, length)\n pos := add(tail_1, 32)\n let srcPtr := add(value1, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr_t_uint256__to_t_address_t_bytes_memory_ptr_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n let _1 := 32\n mstore(add(headStart, 32), 96)\n let length := mload(value1)\n mstore(add(headStart, 96), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 128), mload(add(add(value1, i), _1)))\n }\n mstore(add(add(headStart, length), 128), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 128)\n mstore(add(headStart, 64), value2)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {
"1339": [
{
"length": 32,
"start": 72
},
{
"length": 32,
"start": 439
}
],
"1342": [
{
"length": 32,
"start": 140
},
{
"length": 32,
"start": 211
}
]
},
"linkReferences": {},
"object": "608060405234801561000f575f80fd5b506004361061003f575f3560e01c80631062b39a14610043578063124e181f14610087578063e2eb6f86146100ae575b5f80fd5b61006a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61006a7f000000000000000000000000000000000000000000000000000000000000000081565b6100c16100bc36600461033c565b6100cf565b60405190815260200161007e565b5f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ceee6e55866040518263ffffffff1660e01b815260040161011d9190610421565b5f604051808303815f875af1158015610138573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261015f919081019061043a565b90505f85826040516024016101759291906104c6565b60408051601f198184030181529181526020820180516001600160e01b03166369f5590360e01b1790525163dc8601b360e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dc8601b3906101f09088908590899060040161051b565b6020604051808303815f875af115801561020c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610230919061057e565b92505f5b86518110156102af5782818151811061024f5761024f610595565b602002602001015187828151811061026957610269610595565b6020026020010151306001600160a01b03167f91d88cce380da58b1f18fc437a4a6342ddea08c9a496e31ae03e16c08fc4fce160405160405180910390a4600101610234565b5050509392505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156102f6576102f66102b9565b604052919050565b5f67ffffffffffffffff821115610317576103176102b9565b5060051b60200190565b80356001600160a01b0381168114610337575f80fd5b919050565b5f805f6060848603121561034e575f80fd5b833567ffffffffffffffff811115610364575f80fd5b8401601f81018613610374575f80fd5b80356020610389610384836102fe565b6102cd565b82815260059290921b830181019181810190898411156103a7575f80fd5b938201935b838510156103c5578435825293820193908201906103ac565b96506103d49050878201610321565b9450505050604084013590509250925092565b5f815180845260208085019450602084015f5b83811015610416578151875295820195908201906001016103fa565b509495945050505050565b602081525f61043360208301846103e7565b9392505050565b5f602080838503121561044b575f80fd5b825167ffffffffffffffff811115610461575f80fd5b8301601f81018513610471575f80fd5b805161047f610384826102fe565b81815260059190911b8201830190838101908783111561049d575f80fd5b928401925b828410156104bb578351825292840192908401906104a2565b979650505050505050565b604081525f6104d860408301856103e7565b8281036020848101919091528451808352858201928201905f5b8181101561050e578451835293830193918301916001016104f2565b5090979650505050505050565b60018060a01b03841681525f60206060602084015284518060608501525f5b818110156105565786810183015185820160800152820161053a565b505f608082860101526080601f19601f83011685010192505050826040830152949350505050565b5f6020828403121561058e575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220179d05baf326f1f47480fae7b5172b855853791a8c178b1fc522662ba3f4d3d764736f6c63430008160033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1062B39A EQ PUSH2 0x43 JUMPI DUP1 PUSH4 0x124E181F EQ PUSH2 0x87 JUMPI DUP1 PUSH4 0xE2EB6F86 EQ PUSH2 0xAE JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x6A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0xC1 PUSH2 0xBC CALLDATASIZE PUSH1 0x4 PUSH2 0x33C JUMP JUMPDEST PUSH2 0xCF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x7E JUMP JUMPDEST PUSH0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xCEEE6E55 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11D SWAP2 SWAP1 PUSH2 0x421 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x138 JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x15F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x43A JUMP JUMPDEST SWAP1 POP PUSH0 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x175 SWAP3 SWAP2 SWAP1 PUSH2 0x4C6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x69F55903 PUSH1 0xE0 SHL OR SWAP1 MSTORE MLOAD PUSH4 0xDC8601B3 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xDC8601B3 SWAP1 PUSH2 0x1F0 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x51B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20C JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 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 0x230 SWAP2 SWAP1 PUSH2 0x57E JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x2AF JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x24F JUMPI PUSH2 0x24F PUSH2 0x595 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x269 JUMPI PUSH2 0x269 PUSH2 0x595 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x91D88CCE380DA58B1F18FC437A4A6342DDEA08C9A496E31AE03E16C08FC4FCE1 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 ADD PUSH2 0x234 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2F6 JUMPI PUSH2 0x2F6 PUSH2 0x2B9 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x317 JUMPI PUSH2 0x317 PUSH2 0x2B9 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x337 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x34E JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x364 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP5 ADD PUSH1 0x1F DUP2 ADD DUP7 SGT PUSH2 0x374 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x20 PUSH2 0x389 PUSH2 0x384 DUP4 PUSH2 0x2FE JUMP JUMPDEST PUSH2 0x2CD JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP4 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP10 DUP5 GT ISZERO PUSH2 0x3A7 JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP4 DUP3 ADD SWAP4 JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3C5 JUMPI DUP5 CALLDATALOAD DUP3 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH2 0x3AC JUMP JUMPDEST SWAP7 POP PUSH2 0x3D4 SWAP1 POP DUP8 DUP3 ADD PUSH2 0x321 JUMP JUMPDEST SWAP5 POP POP POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP5 ADD PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x416 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3FA JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x433 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3E7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x44B JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x461 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x471 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x47F PUSH2 0x384 DUP3 PUSH2 0x2FE JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x5 SWAP2 SWAP1 SWAP2 SHL DUP3 ADD DUP4 ADD SWAP1 DUP4 DUP2 ADD SWAP1 DUP8 DUP4 GT ISZERO PUSH2 0x49D JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP3 DUP5 ADD SWAP3 JUMPDEST DUP3 DUP5 LT ISZERO PUSH2 0x4BB JUMPI DUP4 MLOAD DUP3 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH2 0x4A2 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x4D8 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x3E7 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MLOAD DUP1 DUP4 MSTORE DUP6 DUP3 ADD SWAP3 DUP3 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x50E JUMPI DUP5 MLOAD DUP4 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4F2 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE PUSH0 PUSH1 0x20 PUSH1 0x60 PUSH1 0x20 DUP5 ADD MSTORE DUP5 MLOAD DUP1 PUSH1 0x60 DUP6 ADD MSTORE PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x556 JUMPI DUP7 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x80 ADD MSTORE DUP3 ADD PUSH2 0x53A JUMP JUMPDEST POP PUSH0 PUSH1 0x80 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x80 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x58E JUMPI PUSH0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR SWAP14 SDIV 0xBA RETURN 0x26 CALL DELEGATECALL PUSH21 0x80FAE7B5172B855853791A8C178B1FC522662BA3F4 0xD3 0xD7 PUSH5 0x736F6C6343 STOP ADDMOD AND STOP CALLER ",
"sourceMap": "18199:1225:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18232:25;;;;;;;;-1:-1:-1;;;;;191:32:1;;;173:51;;161:2;146:18;18232:25:0;;;;;;;;18263:44;;;;;18861:561;;;;;;:::i;:::-;;:::i;:::-;;;2429:25:1;;;2417:2;2402:18;18861:561:0;2283:177:1;18861:561:0;18994:15;19021:29;19053:13;-1:-1:-1;;;;;19053:31:0;;19085:12;19053:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19053:45:0;;;;;;;;;;;;:::i;:::-;19021:77;;19108:17;19168:12;19182;19128:68;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;19128:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;19128:68:0;-1:-1:-1;;;19128:68:0;;;19216:47;-1:-1:-1;;;19216:47:0;;19128:68;;-1:-1:-1;;;;;;19216:3:0;:24;;;;:47;;19241:10;;19128:68;;19259:3;;19216:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19206:57;;19278:9;19273:143;19297:12;:19;19293:1;:23;19273:143;;;19389:12;19402:1;19389:15;;;;;;;;:::i;:::-;;;;;;;19372:12;19385:1;19372:15;;;;;;;;:::i;:::-;;;;;;;19365:4;-1:-1:-1;;;;;19342:63:0;;;;;;;;;;;19318:3;;19273:143;;;;19011:411;;18861:561;;;;;:::o;465:127:1:-;526:10;521:3;517:20;514:1;507:31;557:4;554:1;547:15;581:4;578:1;571:15;597:275;668:2;662:9;733:2;714:13;;-1:-1:-1;;710:27:1;698:40;;768:18;753:34;;789:22;;;750:62;747:88;;;815:18;;:::i;:::-;851:2;844:22;597:275;;-1:-1:-1;597:275:1:o;877:183::-;937:4;970:18;962:6;959:30;956:56;;;992:18;;:::i;:::-;-1:-1:-1;1037:1:1;1033:14;1049:4;1029:25;;877:183::o;1065:173::-;1133:20;;-1:-1:-1;;;;;1182:31:1;;1172:42;;1162:70;;1228:1;1225;1218:12;1162:70;1065:173;;;:::o;1243:1035::-;1345:6;1353;1361;1414:2;1402:9;1393:7;1389:23;1385:32;1382:52;;;1430:1;1427;1420:12;1382:52;1470:9;1457:23;1503:18;1495:6;1492:30;1489:50;;;1535:1;1532;1525:12;1489:50;1558:22;;1611:4;1603:13;;1599:27;-1:-1:-1;1589:55:1;;1640:1;1637;1630:12;1589:55;1676:2;1663:16;1698:4;1722:60;1738:43;1778:2;1738:43;:::i;:::-;1722:60;:::i;:::-;1816:15;;;1898:1;1894:10;;;;1886:19;;1882:28;;;1847:12;;;;1922:19;;;1919:39;;;1954:1;1951;1944:12;1919:39;1978:11;;;;1998:142;2014:6;2009:3;2006:15;1998:142;;;2080:17;;2068:30;;2031:12;;;;2118;;;;1998:142;;;2159:5;-1:-1:-1;2183:38:1;;-1:-1:-1;2202:18:1;;;2183:38;:::i;:::-;2173:48;;;;;2268:2;2257:9;2253:18;2240:32;2230:42;;1243:1035;;;;;:::o;2465:439::-;2518:3;2556:5;2550:12;2583:6;2578:3;2571:19;2609:4;2638;2633:3;2629:14;2622:21;;2677:4;2670:5;2666:16;2700:1;2710:169;2724:6;2721:1;2718:13;2710:169;;;2785:13;;2773:26;;2819:12;;;;2854:15;;;;2746:1;2739:9;2710:169;;;-1:-1:-1;2895:3:1;;2465:439;-1:-1:-1;;;;;2465:439:1:o;2909:261::-;3088:2;3077:9;3070:21;3051:4;3108:56;3160:2;3149:9;3145:18;3137:6;3108:56;:::i;:::-;3100:64;2909:261;-1:-1:-1;;;2909:261:1:o;3175:881::-;3270:6;3301:2;3344;3332:9;3323:7;3319:23;3315:32;3312:52;;;3360:1;3357;3350:12;3312:52;3393:9;3387:16;3426:18;3418:6;3415:30;3412:50;;;3458:1;3455;3448:12;3412:50;3481:22;;3534:4;3526:13;;3522:27;-1:-1:-1;3512:55:1;;3563:1;3560;3553:12;3512:55;3592:2;3586:9;3615:60;3631:43;3671:2;3631:43;:::i;3615:60::-;3709:15;;;3791:1;3787:10;;;;3779:19;;3775:28;;;3740:12;;;;3815:19;;;3812:39;;;3847:1;3844;3837:12;3812:39;3871:11;;;;3891:135;3907:6;3902:3;3899:15;3891:135;;;3973:10;;3961:23;;3924:12;;;;4004;;;;3891:135;;;4045:5;3175:881;-1:-1:-1;;;;;;;3175:881:1:o;4061:804::-;4318:2;4307:9;4300:21;4281:4;4344:56;4396:2;4385:9;4381:18;4373:6;4344:56;:::i;:::-;4457:22;;;4419:2;4437:18;;;4430:50;;;;4529:13;;4551:22;;;4627:15;;;;4589;;;4660:1;4670:169;4684:6;4681:1;4678:13;4670:169;;;4745:13;;4733:26;;4814:15;;;;4779:12;;;;4706:1;4699:9;4670:169;;;-1:-1:-1;4856:3:1;;4061:804;-1:-1:-1;;;;;;;4061:804:1:o;4870:717::-;5102:1;5098;5093:3;5089:11;5085:19;5077:6;5073:32;5062:9;5055:51;5036:4;5125:2;5163;5158;5147:9;5143:18;5136:30;5195:6;5189:13;5238:6;5233:2;5222:9;5218:18;5211:34;5263:1;5273:141;5287:6;5284:1;5281:13;5273:141;;;5383:14;;;5379:23;;5373:30;5348:17;;;5367:3;5344:27;5337:67;5302:10;;5273:141;;;5277:3;5464:1;5458:3;5449:6;5438:9;5434:22;5430:32;5423:43;5534:3;5527:2;5523:7;5518:2;5510:6;5506:15;5502:29;5491:9;5487:45;5483:55;5475:63;;;;5574:6;5569:2;5558:9;5554:18;5547:34;4870:717;;;;;;:::o;5592:184::-;5662:6;5715:2;5703:9;5694:7;5690:23;5686:32;5683:52;;;5731:1;5728;5721:12;5683:52;-1:-1:-1;5754:16:1;;5592:184;-1:-1:-1;5592:184:1:o;5781:127::-;5842:10;5837:3;5833:20;5830:1;5823:31;5873:4;5870:1;5863:15;5897:4;5894:1;5887:15"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "300600",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"amb()": "infinite",
"headerStorage()": "infinite",
"reportHeaders(uint256[],address,uint256)": "infinite"
}
},
"methodIdentifiers": {
"amb()": "1062b39a",
"headerStorage()": "124e181f",
"reportHeaders(uint256[],address,uint256)": "e2eb6f86"
}
},
"abi": [
{
"inputs": [
{
"internalType": "contract IAMB",
"name": "_amb",
"type": "address"
},
{
"internalType": "contract HeaderStorage",
"name": "_headerStorage",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"name": "HeaderReported",
"type": "event"
},
{
"inputs": [],
"name": "amb",
"outputs": [
{
"internalType": "contract IAMB",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "headerStorage",
"outputs": [
{
"internalType": "contract HeaderStorage",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "blockNumbers",
"type": "uint256[]"
},
{
"internalType": "address",
"name": "ambAdapter",
"type": "address"
},
{
"internalType": "uint256",
"name": "gas",
"type": "uint256"
}
],
"name": "reportHeaders",
"outputs": [
{
"internalType": "bytes32",
"name": "receipt",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "contract IAMB",
"name": "_amb",
"type": "address"
},
{
"internalType": "contract HeaderStorage",
"name": "_headerStorage",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "blockHeader",
"type": "bytes32"
}
],
"name": "HeaderReported",
"type": "event"
},
{
"inputs": [],
"name": "amb",
"outputs": [
{
"internalType": "contract IAMB",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "headerStorage",
"outputs": [
{
"internalType": "contract HeaderStorage",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "blockNumbers",
"type": "uint256[]"
},
{
"internalType": "address",
"name": "ambAdapter",
"type": "address"
},
{
"internalType": "uint256",
"name": "gas",
"type": "uint256"
}
],
"name": "reportHeaders",
"outputs": [
{
"internalType": "bytes32",
"name": "receipt",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"reportHeaders(uint256[],address,uint256)": {
"details": "Reports the given block headers to the oracleAdapter via the AMB.",
"params": {
"ambAdapter": "Address of the oracle adapter to pass the header to over the AMB.",
"blockNumbers": "Uint256 array of block number to pass over the AMB.",
"receipt": "Bytes32 receipt for the transaction."
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/AMBHeaderReporter.sol": "AMBHeaderReporter"
},
"evmVersion": "shanghai",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/AMBHeaderReporter.sol": {
"keccak256": "0x72fe1d5010cdef4d8fa000418e7b1fda6b8d2ed0217c9cd7c5dd45edb2e1ee3d",
"urls": [
"bzz-raw://928b19315eb303f7f224d34b52e4953006032ed45b346dbd78bf065772063f60",
"dweb:/ipfs/QmWnduKGVX2ZMyx6xAMH6FCZATL3a6t8d6WHvRXwXxYMtN"
]
}
},
"version": 1
}
{
"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": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"getHashFromOracle(uint256,uint256)": "8599a969",
"hashes(uint256,uint256)": "d13372ca",
"proveAncestralBlockHashes(uint256,bytes[])": "e81900a6"
}
},
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "reportedBlockHash",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "storedBlockHash",
"type": "bytes32"
}
],
"name": "ConflictingBlockHeader",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "length",
"type": "uint256"
}
],
"name": "InvalidBlockHeaderLength",
"type": "error"
},
{
"inputs": [],
"name": "InvalidBlockHeaderRLP",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "hashes",
"type": "bytes32"
}
],
"name": "HashStored",
"type": "event"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "domain",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getHashFromOracle",
"outputs": [
{
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "hashes",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "bytes[]",
"name": "blockHeaders",
"type": "bytes[]"
}
],
"name": "proveAncestralBlockHashes",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "reportedBlockHash",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "storedBlockHash",
"type": "bytes32"
}
],
"name": "ConflictingBlockHeader",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "length",
"type": "uint256"
}
],
"name": "InvalidBlockHeaderLength",
"type": "error"
},
{
"inputs": [],
"name": "InvalidBlockHeaderRLP",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "hashes",
"type": "bytes32"
}
],
"name": "HashStored",
"type": "event"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "domain",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getHashFromOracle",
"outputs": [
{
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "hashes",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "bytes[]",
"name": "blockHeaders",
"type": "bytes[]"
}
],
"name": "proveAncestralBlockHashes",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"getHashFromOracle(uint256,uint256)": {
"details": "Returns the hash for a given domain and ID, as reported by the oracle.",
"params": {
"domain": "Identifier for the domain to query.",
"id": "Identifier for the ID to query."
},
"returns": {
"hash": "Bytes32 hash reported by the oracle for the given ID on the given domain."
}
},
"proveAncestralBlockHashes(uint256,bytes[])": {
"details": "Proves and stores valid ancestral block hashes for a given chain ID.",
"params": {
"blockHeaders": "The RLP encoded block headers to prove the hashes for.",
"chainId": "The ID of the chain to prove block hashes for."
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"getHashFromOracle(uint256,uint256)": {
"notice": "MUST return bytes32(0) if the oracle has not yet reported a hash for the given ID."
},
"proveAncestralBlockHashes(uint256,bytes[])": {
"notice": "Block headers should be ordered by descending block number and should start with a known block header."
}
},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/AMBHeaderReporter.sol": "BlockHashOracleAdapter"
},
"evmVersion": "shanghai",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/AMBHeaderReporter.sol": {
"keccak256": "0x72fe1d5010cdef4d8fa000418e7b1fda6b8d2ed0217c9cd7c5dd45edb2e1ee3d",
"urls": [
"bzz-raw://928b19315eb303f7f224d34b52e4953006032ed45b346dbd78bf065772063f60",
"dweb:/ipfs/QmWnduKGVX2ZMyx6xAMH6FCZATL3a6t8d6WHvRXwXxYMtN"
]
}
},
"version": 1
}
{
"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": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561000f575f80fd5b506105d38061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80633e144098146100435780639e03f8c91461006c578063ead227541461008d575b5f80fd5b610056610051366004610444565b6100a0565b604051610063919061048e565b60405180910390f35b61007f61007a3660046104d1565b61016e565b604051908152602001610063565b61007f61009b366004610501565b6101e6565b606083515f036100ca5760405163c1a9bd2f60e01b81523060048201526024015b60405180910390fd5b5f845167ffffffffffffffff8111156100e5576100e5610373565b60405190808252806020026020018201604052801561010e578160200160208202803683370190505b5090505f5b8551811015610165576101408682815181106101315761013161054d565b6020026020010151868661016e565b8282815181106101525761015261054d565b6020908102919091010152600101610113565b50949350505050565b604051638599a96960e01b815260048101839052602481018290525f906001600160a01b03851690638599a96990604401602060405180830381865afa1580156101ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101de9190610561565b949350505050565b5f81515f0361020a5760405163c1a9bd2f60e01b81523060048201526024016100c1565b5f6102168386866100a0565b9050805f8151811061022a5761022a61054d565b602002602001015191505f801b82036102885730835f815181106102505761025061054d565b6020026020010151604051632a0c203960e01b81526004016100c19291906001600160a01b0392831681529116602082015260400190565b60015b815181101561036a575f801b8282815181106102a9576102a961054d565b6020026020010151036102c957308482815181106102505761025061054d565b8181815181106102db576102db61054d565b602002602001015183146103625730846102f6600184610578565b815181106103065761030661054d565b60200260200101518583815181106103205761032061054d565b602002602001015160405163dbed4b2760e01b81526004016100c1939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60010161028b565b50509392505050565b634e487b7160e01b5f52604160045260245ffd5b80356001600160a01b038116811461039d575f80fd5b919050565b5f82601f8301126103b1575f80fd5b8135602067ffffffffffffffff808311156103ce576103ce610373565b8260051b604051601f19603f830116810181811084821117156103f3576103f3610373565b6040529384526020818701810194908101925087851115610412575f80fd5b6020870191505b848210156104395761042a82610387565b83529183019190830190610419565b979650505050505050565b5f805f60608486031215610456575f80fd5b833567ffffffffffffffff81111561046c575f80fd5b610478868287016103a2565b9660208601359650604090950135949350505050565b602080825282518282018190525f9190848201906040850190845b818110156104c5578351835292840192918401916001016104a9565b50909695505050505050565b5f805f606084860312156104e3575f80fd5b6104ec84610387565b95602085013595506040909401359392505050565b5f805f60608486031215610513575f80fd5b8335925060208401359150604084013567ffffffffffffffff811115610537575f80fd5b610543868287016103a2565b9150509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215610571575f80fd5b5051919050565b8181038181111561059757634e487b7160e01b5f52601160045260245ffd5b9291505056fea2646970667358221220b3fd8def2034668fd6a6e6199283c2beb5f95dc7da5d3ff0ea7176ab662ae26264736f6c63430008160033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x5D3 DUP1 PUSH2 0x1D PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3E144098 EQ PUSH2 0x43 JUMPI DUP1 PUSH4 0x9E03F8C9 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0xEAD22754 EQ PUSH2 0x8D JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x56 PUSH2 0x51 CALLDATASIZE PUSH1 0x4 PUSH2 0x444 JUMP JUMPDEST PUSH2 0xA0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x63 SWAP2 SWAP1 PUSH2 0x48E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x4D1 JUMP JUMPDEST PUSH2 0x16E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x63 JUMP JUMPDEST PUSH2 0x7F PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x501 JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH0 SUB PUSH2 0xCA JUMPI PUSH1 0x40 MLOAD PUSH4 0xC1A9BD2F PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP5 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE5 JUMPI PUSH2 0xE5 PUSH2 0x373 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x10E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x165 JUMPI PUSH2 0x140 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x131 JUMPI PUSH2 0x131 PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP7 PUSH2 0x16E JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x152 JUMPI PUSH2 0x152 PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x113 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8599A969 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x8599A969 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 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 0x1DE SWAP2 SWAP1 PUSH2 0x561 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD PUSH0 SUB PUSH2 0x20A JUMPI PUSH1 0x40 MLOAD PUSH4 0xC1A9BD2F PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xC1 JUMP JUMPDEST PUSH0 PUSH2 0x216 DUP4 DUP7 DUP7 PUSH2 0xA0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x22A JUMPI PUSH2 0x22A PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP PUSH0 DUP1 SHL DUP3 SUB PUSH2 0x288 JUMPI ADDRESS DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x250 JUMPI PUSH2 0x250 PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x2A0C2039 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC1 SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x36A JUMPI PUSH0 DUP1 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2A9 JUMPI PUSH2 0x2A9 PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB PUSH2 0x2C9 JUMPI ADDRESS DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x250 JUMPI PUSH2 0x250 PUSH2 0x54D JUMP JUMPDEST DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2DB JUMPI PUSH2 0x2DB PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 EQ PUSH2 0x362 JUMPI ADDRESS DUP5 PUSH2 0x2F6 PUSH1 0x1 DUP5 PUSH2 0x578 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x306 JUMPI PUSH2 0x306 PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x320 JUMPI PUSH2 0x320 PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xDBED4B27 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x28B JUMP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x39D JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B1 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 GT ISZERO PUSH2 0x3CE JUMPI PUSH2 0x3CE PUSH2 0x373 JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x3F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x3F3 JUMPI PUSH2 0x3F3 PUSH2 0x373 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP4 DUP5 MSTORE PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD SWAP5 SWAP1 DUP2 ADD SWAP3 POP DUP8 DUP6 GT ISZERO PUSH2 0x412 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP8 ADD SWAP2 POP JUMPDEST DUP5 DUP3 LT ISZERO PUSH2 0x439 JUMPI PUSH2 0x42A DUP3 PUSH2 0x387 JUMP JUMPDEST DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0x419 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x456 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x46C JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x478 DUP7 DUP3 DUP8 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP7 PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP7 POP PUSH1 0x40 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4C5 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4A9 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4E3 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x4EC DUP5 PUSH2 0x387 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x513 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x537 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x543 DUP7 DUP3 DUP8 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x571 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x597 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB3 REVERT DUP14 0xEF KECCAK256 CALLVALUE PUSH7 0x8FD6A6E6199283 0xC2 0xBE 0xB5 0xF9 0x5D 0xC7 0xDA 0x5D EXTCODEHASH CREATE 0xEA PUSH18 0x76AB662AE26264736F6C6343000816003300 ",
"sourceMap": "4344:2807:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@getHashFromOracle_76": {
"entryPoint": 366,
"id": 76,
"parameterSlots": 3,
"returnSlots": 1
},
"@getHash_257": {
"entryPoint": 486,
"id": 257,
"parameterSlots": 3,
"returnSlots": 1
},
"@getHashesFromOracles_143": {
"entryPoint": 160,
"id": 143,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_array_contract_IOracleAdapter_dyn": {
"entryPoint": 930,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_contract_IOracleAdapter": {
"entryPoint": 903,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_decode_tuple_t_array$_t_contract$_IOracleAdapter_$32_$dyn_memory_ptrt_uint256t_uint256": {
"entryPoint": 1092,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_bytes32_fromMemory": {
"entryPoint": 1377,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_contract$_IOracleAdapter_$32t_uint256t_uint256": {
"entryPoint": 1233,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_uint256t_uint256t_array$_t_contract$_IOracleAdapter_$32_$dyn_memory_ptr": {
"entryPoint": 1281,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_contract$_IOracleAdapter_$32__to_t_address_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_contract$_IOracleAdapter_$32_t_contract$_IOracleAdapter_$32__to_t_address_t_address_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed": {
"entryPoint": 1166,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"checked_sub_t_uint256": {
"entryPoint": 1400,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x32": {
"entryPoint": 1357,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 883,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nativeSrc": "0:5296:1",
"nodeType": "YulBlock",
"src": "0:5296:1",
"statements": [
{
"nativeSrc": "6:3:1",
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nativeSrc": "46:95:1",
"nodeType": "YulBlock",
"src": "46:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "63:1:1",
"nodeType": "YulLiteral",
"src": "63:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "70:3:1",
"nodeType": "YulLiteral",
"src": "70:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nativeSrc": "75:10:1",
"nodeType": "YulLiteral",
"src": "75:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "66:3:1",
"nodeType": "YulIdentifier",
"src": "66:3:1"
},
"nativeSrc": "66:20:1",
"nodeType": "YulFunctionCall",
"src": "66:20:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "56:6:1",
"nodeType": "YulIdentifier",
"src": "56:6:1"
},
"nativeSrc": "56:31:1",
"nodeType": "YulFunctionCall",
"src": "56:31:1"
},
"nativeSrc": "56:31:1",
"nodeType": "YulExpressionStatement",
"src": "56:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "103:1:1",
"nodeType": "YulLiteral",
"src": "103:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "106:4:1",
"nodeType": "YulLiteral",
"src": "106:4:1",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "96:6:1",
"nodeType": "YulIdentifier",
"src": "96:6:1"
},
"nativeSrc": "96:15:1",
"nodeType": "YulFunctionCall",
"src": "96:15:1"
},
"nativeSrc": "96:15:1",
"nodeType": "YulExpressionStatement",
"src": "96:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "127:1:1",
"nodeType": "YulLiteral",
"src": "127:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "130:4:1",
"nodeType": "YulLiteral",
"src": "130:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "120:6:1",
"nodeType": "YulIdentifier",
"src": "120:6:1"
},
"nativeSrc": "120:15:1",
"nodeType": "YulFunctionCall",
"src": "120:15:1"
},
"nativeSrc": "120:15:1",
"nodeType": "YulExpressionStatement",
"src": "120:15:1"
}
]
},
"name": "panic_error_0x41",
"nativeSrc": "14:127:1",
"nodeType": "YulFunctionDefinition",
"src": "14:127:1"
},
{
"body": {
"nativeSrc": "211:124:1",
"nodeType": "YulBlock",
"src": "211:124:1",
"statements": [
{
"nativeSrc": "221:29:1",
"nodeType": "YulAssignment",
"src": "221:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "243:6:1",
"nodeType": "YulIdentifier",
"src": "243:6:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "230:12:1",
"nodeType": "YulIdentifier",
"src": "230:12:1"
},
"nativeSrc": "230:20:1",
"nodeType": "YulFunctionCall",
"src": "230:20:1"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "221:5:1",
"nodeType": "YulIdentifier",
"src": "221:5:1"
}
]
},
{
"body": {
"nativeSrc": "313:16:1",
"nodeType": "YulBlock",
"src": "313:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "322:1:1",
"nodeType": "YulLiteral",
"src": "322:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "325:1:1",
"nodeType": "YulLiteral",
"src": "325:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "315:6:1",
"nodeType": "YulIdentifier",
"src": "315:6:1"
},
"nativeSrc": "315:12:1",
"nodeType": "YulFunctionCall",
"src": "315:12:1"
},
"nativeSrc": "315:12:1",
"nodeType": "YulExpressionStatement",
"src": "315:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "272:5:1",
"nodeType": "YulIdentifier",
"src": "272:5:1"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "283:5:1",
"nodeType": "YulIdentifier",
"src": "283:5:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "298:3:1",
"nodeType": "YulLiteral",
"src": "298:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "303:1:1",
"nodeType": "YulLiteral",
"src": "303:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "294:3:1",
"nodeType": "YulIdentifier",
"src": "294:3:1"
},
"nativeSrc": "294:11:1",
"nodeType": "YulFunctionCall",
"src": "294:11:1"
},
{
"kind": "number",
"nativeSrc": "307:1:1",
"nodeType": "YulLiteral",
"src": "307:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "290:3:1",
"nodeType": "YulIdentifier",
"src": "290:3:1"
},
"nativeSrc": "290:19:1",
"nodeType": "YulFunctionCall",
"src": "290:19:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "279:3:1",
"nodeType": "YulIdentifier",
"src": "279:3:1"
},
"nativeSrc": "279:31:1",
"nodeType": "YulFunctionCall",
"src": "279:31:1"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "269:2:1",
"nodeType": "YulIdentifier",
"src": "269:2:1"
},
"nativeSrc": "269:42:1",
"nodeType": "YulFunctionCall",
"src": "269:42:1"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "262:6:1",
"nodeType": "YulIdentifier",
"src": "262:6:1"
},
"nativeSrc": "262:50:1",
"nodeType": "YulFunctionCall",
"src": "262:50:1"
},
"nativeSrc": "259:70:1",
"nodeType": "YulIf",
"src": "259:70:1"
}
]
},
"name": "abi_decode_contract_IOracleAdapter",
"nativeSrc": "146:189:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "190:6:1",
"nodeType": "YulTypedName",
"src": "190:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nativeSrc": "201:5:1",
"nodeType": "YulTypedName",
"src": "201:5:1",
"type": ""
}
],
"src": "146:189:1"
},
{
"body": {
"nativeSrc": "420:866:1",
"nodeType": "YulBlock",
"src": "420:866:1",
"statements": [
{
"body": {
"nativeSrc": "469:16:1",
"nodeType": "YulBlock",
"src": "469:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "478:1:1",
"nodeType": "YulLiteral",
"src": "478:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "481:1:1",
"nodeType": "YulLiteral",
"src": "481:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "471:6:1",
"nodeType": "YulIdentifier",
"src": "471:6:1"
},
"nativeSrc": "471:12:1",
"nodeType": "YulFunctionCall",
"src": "471:12:1"
},
"nativeSrc": "471:12:1",
"nodeType": "YulExpressionStatement",
"src": "471:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nativeSrc": "448:6:1",
"nodeType": "YulIdentifier",
"src": "448:6:1"
},
{
"kind": "number",
"nativeSrc": "456:4:1",
"nodeType": "YulLiteral",
"src": "456:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nativeSrc": "444:3:1",
"nodeType": "YulIdentifier",
"src": "444:3:1"
},
"nativeSrc": "444:17:1",
"nodeType": "YulFunctionCall",
"src": "444:17:1"
},
{
"name": "end",
"nativeSrc": "463:3:1",
"nodeType": "YulIdentifier",
"src": "463:3:1"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "440:3:1",
"nodeType": "YulIdentifier",
"src": "440:3:1"
},
"nativeSrc": "440:27:1",
"nodeType": "YulFunctionCall",
"src": "440:27:1"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "433:6:1",
"nodeType": "YulIdentifier",
"src": "433:6:1"
},
"nativeSrc": "433:35:1",
"nodeType": "YulFunctionCall",
"src": "433:35:1"
},
"nativeSrc": "430:55:1",
"nodeType": "YulIf",
"src": "430:55:1"
},
{
"nativeSrc": "494:30:1",
"nodeType": "YulVariableDeclaration",
"src": "494:30:1",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "517:6:1",
"nodeType": "YulIdentifier",
"src": "517:6:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "504:12:1",
"nodeType": "YulIdentifier",
"src": "504:12:1"
},
"nativeSrc": "504:20:1",
"nodeType": "YulFunctionCall",
"src": "504:20:1"
},
"variables": [
{
"name": "_1",
"nativeSrc": "498:2:1",
"nodeType": "YulTypedName",
"src": "498:2:1",
"type": ""
}
]
},
{
"nativeSrc": "533:14:1",
"nodeType": "YulVariableDeclaration",
"src": "533:14:1",
"value": {
"kind": "number",
"nativeSrc": "543:4:1",
"nodeType": "YulLiteral",
"src": "543:4:1",
"type": "",
"value": "0x20"
},
"variables": [
{
"name": "_2",
"nativeSrc": "537:2:1",
"nodeType": "YulTypedName",
"src": "537:2:1",
"type": ""
}
]
},
{
"nativeSrc": "556:28:1",
"nodeType": "YulVariableDeclaration",
"src": "556:28:1",
"value": {
"kind": "number",
"nativeSrc": "566:18:1",
"nodeType": "YulLiteral",
"src": "566:18:1",
"type": "",
"value": "0xffffffffffffffff"
},
"variables": [
{
"name": "_3",
"nativeSrc": "560:2:1",
"nodeType": "YulTypedName",
"src": "560:2:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "607:22:1",
"nodeType": "YulBlock",
"src": "607:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "609:16:1",
"nodeType": "YulIdentifier",
"src": "609:16:1"
},
"nativeSrc": "609:18:1",
"nodeType": "YulFunctionCall",
"src": "609:18:1"
},
"nativeSrc": "609:18:1",
"nodeType": "YulExpressionStatement",
"src": "609:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "_1",
"nativeSrc": "599:2:1",
"nodeType": "YulIdentifier",
"src": "599:2:1"
},
{
"name": "_3",
"nativeSrc": "603:2:1",
"nodeType": "YulIdentifier",
"src": "603:2:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "596:2:1",
"nodeType": "YulIdentifier",
"src": "596:2:1"
},
"nativeSrc": "596:10:1",
"nodeType": "YulFunctionCall",
"src": "596:10:1"
},
"nativeSrc": "593:36:1",
"nodeType": "YulIf",
"src": "593:36:1"
},
{
"nativeSrc": "638:20:1",
"nodeType": "YulVariableDeclaration",
"src": "638:20:1",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "652:1:1",
"nodeType": "YulLiteral",
"src": "652:1:1",
"type": "",
"value": "5"
},
{
"name": "_1",
"nativeSrc": "655:2:1",
"nodeType": "YulIdentifier",
"src": "655:2:1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "648:3:1",
"nodeType": "YulIdentifier",
"src": "648:3:1"
},
"nativeSrc": "648:10:1",
"nodeType": "YulFunctionCall",
"src": "648:10:1"
},
"variables": [
{
"name": "_4",
"nativeSrc": "642:2:1",
"nodeType": "YulTypedName",
"src": "642:2:1",
"type": ""
}
]
},
{
"nativeSrc": "667:23:1",
"nodeType": "YulVariableDeclaration",
"src": "667:23:1",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "687:2:1",
"nodeType": "YulLiteral",
"src": "687:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "681:5:1",
"nodeType": "YulIdentifier",
"src": "681:5:1"
},
"nativeSrc": "681:9:1",
"nodeType": "YulFunctionCall",
"src": "681:9:1"
},
"variables": [
{
"name": "memPtr",
"nativeSrc": "671:6:1",
"nodeType": "YulTypedName",
"src": "671:6:1",
"type": ""
}
]
},
{
"nativeSrc": "699:56:1",
"nodeType": "YulVariableDeclaration",
"src": "699:56:1",
"value": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "721:6:1",
"nodeType": "YulIdentifier",
"src": "721:6:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "_4",
"nativeSrc": "737:2:1",
"nodeType": "YulIdentifier",
"src": "737:2:1"
},
{
"kind": "number",
"nativeSrc": "741:2:1",
"nodeType": "YulLiteral",
"src": "741:2:1",
"type": "",
"value": "63"
}
],
"functionName": {
"name": "add",
"nativeSrc": "733:3:1",
"nodeType": "YulIdentifier",
"src": "733:3:1"
},
"nativeSrc": "733:11:1",
"nodeType": "YulFunctionCall",
"src": "733:11:1"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "750:2:1",
"nodeType": "YulLiteral",
"src": "750:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nativeSrc": "746:3:1",
"nodeType": "YulIdentifier",
"src": "746:3:1"
},
"nativeSrc": "746:7:1",
"nodeType": "YulFunctionCall",
"src": "746:7:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "729:3:1",
"nodeType": "YulIdentifier",
"src": "729:3:1"
},
"nativeSrc": "729:25:1",
"nodeType": "YulFunctionCall",
"src": "729:25:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "717:3:1",
"nodeType": "YulIdentifier",
"src": "717:3:1"
},
"nativeSrc": "717:38:1",
"nodeType": "YulFunctionCall",
"src": "717:38:1"
},
"variables": [
{
"name": "newFreePtr",
"nativeSrc": "703:10:1",
"nodeType": "YulTypedName",
"src": "703:10:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "814:22:1",
"nodeType": "YulBlock",
"src": "814:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "816:16:1",
"nodeType": "YulIdentifier",
"src": "816:16:1"
},
"nativeSrc": "816:18:1",
"nodeType": "YulFunctionCall",
"src": "816:18:1"
},
"nativeSrc": "816:18:1",
"nodeType": "YulExpressionStatement",
"src": "816:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "773:10:1",
"nodeType": "YulIdentifier",
"src": "773:10:1"
},
{
"name": "_3",
"nativeSrc": "785:2:1",
"nodeType": "YulIdentifier",
"src": "785:2:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "770:2:1",
"nodeType": "YulIdentifier",
"src": "770:2:1"
},
"nativeSrc": "770:18:1",
"nodeType": "YulFunctionCall",
"src": "770:18:1"
},
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "793:10:1",
"nodeType": "YulIdentifier",
"src": "793:10:1"
},
{
"name": "memPtr",
"nativeSrc": "805:6:1",
"nodeType": "YulIdentifier",
"src": "805:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "790:2:1",
"nodeType": "YulIdentifier",
"src": "790:2:1"
},
"nativeSrc": "790:22:1",
"nodeType": "YulFunctionCall",
"src": "790:22:1"
}
],
"functionName": {
"name": "or",
"nativeSrc": "767:2:1",
"nodeType": "YulIdentifier",
"src": "767:2:1"
},
"nativeSrc": "767:46:1",
"nodeType": "YulFunctionCall",
"src": "767:46:1"
},
"nativeSrc": "764:72:1",
"nodeType": "YulIf",
"src": "764:72:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "852:2:1",
"nodeType": "YulLiteral",
"src": "852:2:1",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nativeSrc": "856:10:1",
"nodeType": "YulIdentifier",
"src": "856:10:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "845:6:1",
"nodeType": "YulIdentifier",
"src": "845:6:1"
},
"nativeSrc": "845:22:1",
"nodeType": "YulFunctionCall",
"src": "845:22:1"
},
"nativeSrc": "845:22:1",
"nodeType": "YulExpressionStatement",
"src": "845:22:1"
},
{
"nativeSrc": "876:17:1",
"nodeType": "YulVariableDeclaration",
"src": "876:17:1",
"value": {
"name": "memPtr",
"nativeSrc": "887:6:1",
"nodeType": "YulIdentifier",
"src": "887:6:1"
},
"variables": [
{
"name": "dst",
"nativeSrc": "880:3:1",
"nodeType": "YulTypedName",
"src": "880:3:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "909:6:1",
"nodeType": "YulIdentifier",
"src": "909:6:1"
},
{
"name": "_1",
"nativeSrc": "917:2:1",
"nodeType": "YulIdentifier",
"src": "917:2:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "902:6:1",
"nodeType": "YulIdentifier",
"src": "902:6:1"
},
"nativeSrc": "902:18:1",
"nodeType": "YulFunctionCall",
"src": "902:18:1"
},
"nativeSrc": "902:18:1",
"nodeType": "YulExpressionStatement",
"src": "902:18:1"
},
{
"nativeSrc": "929:24:1",
"nodeType": "YulAssignment",
"src": "929:24:1",
"value": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "940:6:1",
"nodeType": "YulIdentifier",
"src": "940:6:1"
},
{
"kind": "number",
"nativeSrc": "948:4:1",
"nodeType": "YulLiteral",
"src": "948:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "936:3:1",
"nodeType": "YulIdentifier",
"src": "936:3:1"
},
"nativeSrc": "936:17:1",
"nodeType": "YulFunctionCall",
"src": "936:17:1"
},
"variableNames": [
{
"name": "dst",
"nativeSrc": "929:3:1",
"nodeType": "YulIdentifier",
"src": "929:3:1"
}
]
},
{
"nativeSrc": "962:40:1",
"nodeType": "YulVariableDeclaration",
"src": "962:40:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nativeSrc": "984:6:1",
"nodeType": "YulIdentifier",
"src": "984:6:1"
},
{
"name": "_4",
"nativeSrc": "992:2:1",
"nodeType": "YulIdentifier",
"src": "992:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "980:3:1",
"nodeType": "YulIdentifier",
"src": "980:3:1"
},
"nativeSrc": "980:15:1",
"nodeType": "YulFunctionCall",
"src": "980:15:1"
},
{
"kind": "number",
"nativeSrc": "997:4:1",
"nodeType": "YulLiteral",
"src": "997:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "976:3:1",
"nodeType": "YulIdentifier",
"src": "976:3:1"
},
"nativeSrc": "976:26:1",
"nodeType": "YulFunctionCall",
"src": "976:26:1"
},
"variables": [
{
"name": "srcEnd",
"nativeSrc": "966:6:1",
"nodeType": "YulTypedName",
"src": "966:6:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "1030:16:1",
"nodeType": "YulBlock",
"src": "1030:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1039:1:1",
"nodeType": "YulLiteral",
"src": "1039:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1042:1:1",
"nodeType": "YulLiteral",
"src": "1042:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1032:6:1",
"nodeType": "YulIdentifier",
"src": "1032:6:1"
},
"nativeSrc": "1032:12:1",
"nodeType": "YulFunctionCall",
"src": "1032:12:1"
},
"nativeSrc": "1032:12:1",
"nodeType": "YulExpressionStatement",
"src": "1032:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "srcEnd",
"nativeSrc": "1017:6:1",
"nodeType": "YulIdentifier",
"src": "1017:6:1"
},
{
"name": "end",
"nativeSrc": "1025:3:1",
"nodeType": "YulIdentifier",
"src": "1025:3:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "1014:2:1",
"nodeType": "YulIdentifier",
"src": "1014:2:1"
},
"nativeSrc": "1014:15:1",
"nodeType": "YulFunctionCall",
"src": "1014:15:1"
},
"nativeSrc": "1011:35:1",
"nodeType": "YulIf",
"src": "1011:35:1"
},
{
"nativeSrc": "1055:28:1",
"nodeType": "YulVariableDeclaration",
"src": "1055:28:1",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "1070:6:1",
"nodeType": "YulIdentifier",
"src": "1070:6:1"
},
{
"kind": "number",
"nativeSrc": "1078:4:1",
"nodeType": "YulLiteral",
"src": "1078:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1066:3:1",
"nodeType": "YulIdentifier",
"src": "1066:3:1"
},
"nativeSrc": "1066:17:1",
"nodeType": "YulFunctionCall",
"src": "1066:17:1"
},
"variables": [
{
"name": "src",
"nativeSrc": "1059:3:1",
"nodeType": "YulTypedName",
"src": "1059:3:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "1148:108:1",
"nodeType": "YulBlock",
"src": "1148:108:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nativeSrc": "1169:3:1",
"nodeType": "YulIdentifier",
"src": "1169:3:1"
},
{
"arguments": [
{
"name": "src",
"nativeSrc": "1209:3:1",
"nodeType": "YulIdentifier",
"src": "1209:3:1"
}
],
"functionName": {
"name": "abi_decode_contract_IOracleAdapter",
"nativeSrc": "1174:34:1",
"nodeType": "YulIdentifier",
"src": "1174:34:1"
},
"nativeSrc": "1174:39:1",
"nodeType": "YulFunctionCall",
"src": "1174:39:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1162:6:1",
"nodeType": "YulIdentifier",
"src": "1162:6:1"
},
"nativeSrc": "1162:52:1",
"nodeType": "YulFunctionCall",
"src": "1162:52:1"
},
"nativeSrc": "1162:52:1",
"nodeType": "YulExpressionStatement",
"src": "1162:52:1"
},
{
"nativeSrc": "1227:19:1",
"nodeType": "YulAssignment",
"src": "1227:19:1",
"value": {
"arguments": [
{
"name": "dst",
"nativeSrc": "1238:3:1",
"nodeType": "YulIdentifier",
"src": "1238:3:1"
},
{
"name": "_2",
"nativeSrc": "1243:2:1",
"nodeType": "YulIdentifier",
"src": "1243:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1234:3:1",
"nodeType": "YulIdentifier",
"src": "1234:3:1"
},
"nativeSrc": "1234:12:1",
"nodeType": "YulFunctionCall",
"src": "1234:12:1"
},
"variableNames": [
{
"name": "dst",
"nativeSrc": "1227:3:1",
"nodeType": "YulIdentifier",
"src": "1227:3:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "src",
"nativeSrc": "1103:3:1",
"nodeType": "YulIdentifier",
"src": "1103:3:1"
},
{
"name": "srcEnd",
"nativeSrc": "1108:6:1",
"nodeType": "YulIdentifier",
"src": "1108:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "1100:2:1",
"nodeType": "YulIdentifier",
"src": "1100:2:1"
},
"nativeSrc": "1100:15:1",
"nodeType": "YulFunctionCall",
"src": "1100:15:1"
},
"nativeSrc": "1092:164:1",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "1116:23:1",
"nodeType": "YulBlock",
"src": "1116:23:1",
"statements": [
{
"nativeSrc": "1118:19:1",
"nodeType": "YulAssignment",
"src": "1118:19:1",
"value": {
"arguments": [
{
"name": "src",
"nativeSrc": "1129:3:1",
"nodeType": "YulIdentifier",
"src": "1129:3:1"
},
{
"name": "_2",
"nativeSrc": "1134:2:1",
"nodeType": "YulIdentifier",
"src": "1134:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1125:3:1",
"nodeType": "YulIdentifier",
"src": "1125:3:1"
},
"nativeSrc": "1125:12:1",
"nodeType": "YulFunctionCall",
"src": "1125:12:1"
},
"variableNames": [
{
"name": "src",
"nativeSrc": "1118:3:1",
"nodeType": "YulIdentifier",
"src": "1118:3:1"
}
]
}
]
},
"pre": {
"nativeSrc": "1096:3:1",
"nodeType": "YulBlock",
"src": "1096:3:1",
"statements": []
},
"src": "1092:164:1"
},
{
"nativeSrc": "1265:15:1",
"nodeType": "YulAssignment",
"src": "1265:15:1",
"value": {
"name": "memPtr",
"nativeSrc": "1274:6:1",
"nodeType": "YulIdentifier",
"src": "1274:6:1"
},
"variableNames": [
{
"name": "array",
"nativeSrc": "1265:5:1",
"nodeType": "YulIdentifier",
"src": "1265:5:1"
}
]
}
]
},
"name": "abi_decode_array_contract_IOracleAdapter_dyn",
"nativeSrc": "340:946:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "394:6:1",
"nodeType": "YulTypedName",
"src": "394:6:1",
"type": ""
},
{
"name": "end",
"nativeSrc": "402:3:1",
"nodeType": "YulTypedName",
"src": "402:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nativeSrc": "410:5:1",
"nodeType": "YulTypedName",
"src": "410:5:1",
"type": ""
}
],
"src": "340:946:1"
},
{
"body": {
"nativeSrc": "1441:371:1",
"nodeType": "YulBlock",
"src": "1441:371:1",
"statements": [
{
"body": {
"nativeSrc": "1487:16:1",
"nodeType": "YulBlock",
"src": "1487:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1496:1:1",
"nodeType": "YulLiteral",
"src": "1496:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1499:1:1",
"nodeType": "YulLiteral",
"src": "1499:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1489:6:1",
"nodeType": "YulIdentifier",
"src": "1489:6:1"
},
"nativeSrc": "1489:12:1",
"nodeType": "YulFunctionCall",
"src": "1489:12:1"
},
"nativeSrc": "1489:12:1",
"nodeType": "YulExpressionStatement",
"src": "1489:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "1462:7:1",
"nodeType": "YulIdentifier",
"src": "1462:7:1"
},
{
"name": "headStart",
"nativeSrc": "1471:9:1",
"nodeType": "YulIdentifier",
"src": "1471:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "1458:3:1",
"nodeType": "YulIdentifier",
"src": "1458:3:1"
},
"nativeSrc": "1458:23:1",
"nodeType": "YulFunctionCall",
"src": "1458:23:1"
},
{
"kind": "number",
"nativeSrc": "1483:2:1",
"nodeType": "YulLiteral",
"src": "1483:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "1454:3:1",
"nodeType": "YulIdentifier",
"src": "1454:3:1"
},
"nativeSrc": "1454:32:1",
"nodeType": "YulFunctionCall",
"src": "1454:32:1"
},
"nativeSrc": "1451:52:1",
"nodeType": "YulIf",
"src": "1451:52:1"
},
{
"nativeSrc": "1512:37:1",
"nodeType": "YulVariableDeclaration",
"src": "1512:37:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "1539:9:1",
"nodeType": "YulIdentifier",
"src": "1539:9:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "1526:12:1",
"nodeType": "YulIdentifier",
"src": "1526:12:1"
},
"nativeSrc": "1526:23:1",
"nodeType": "YulFunctionCall",
"src": "1526:23:1"
},
"variables": [
{
"name": "offset",
"nativeSrc": "1516:6:1",
"nodeType": "YulTypedName",
"src": "1516:6:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "1592:16:1",
"nodeType": "YulBlock",
"src": "1592:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1601:1:1",
"nodeType": "YulLiteral",
"src": "1601:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1604:1:1",
"nodeType": "YulLiteral",
"src": "1604:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1594:6:1",
"nodeType": "YulIdentifier",
"src": "1594:6:1"
},
"nativeSrc": "1594:12:1",
"nodeType": "YulFunctionCall",
"src": "1594:12:1"
},
"nativeSrc": "1594:12:1",
"nodeType": "YulExpressionStatement",
"src": "1594:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nativeSrc": "1564:6:1",
"nodeType": "YulIdentifier",
"src": "1564:6:1"
},
{
"kind": "number",
"nativeSrc": "1572:18:1",
"nodeType": "YulLiteral",
"src": "1572:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "1561:2:1",
"nodeType": "YulIdentifier",
"src": "1561:2:1"
},
"nativeSrc": "1561:30:1",
"nodeType": "YulFunctionCall",
"src": "1561:30:1"
},
"nativeSrc": "1558:50:1",
"nodeType": "YulIf",
"src": "1558:50:1"
},
{
"nativeSrc": "1617:87:1",
"nodeType": "YulAssignment",
"src": "1617:87:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "1676:9:1",
"nodeType": "YulIdentifier",
"src": "1676:9:1"
},
{
"name": "offset",
"nativeSrc": "1687:6:1",
"nodeType": "YulIdentifier",
"src": "1687:6:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1672:3:1",
"nodeType": "YulIdentifier",
"src": "1672:3:1"
},
"nativeSrc": "1672:22:1",
"nodeType": "YulFunctionCall",
"src": "1672:22:1"
},
{
"name": "dataEnd",
"nativeSrc": "1696:7:1",
"nodeType": "YulIdentifier",
"src": "1696:7:1"
}
],
"functionName": {
"name": "abi_decode_array_contract_IOracleAdapter_dyn",
"nativeSrc": "1627:44:1",
"nodeType": "YulIdentifier",
"src": "1627:44:1"
},
"nativeSrc": "1627:77:1",
"nodeType": "YulFunctionCall",
"src": "1627:77:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "1617:6:1",
"nodeType": "YulIdentifier",
"src": "1617:6:1"
}
]
},
{
"nativeSrc": "1713:42:1",
"nodeType": "YulAssignment",
"src": "1713:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "1740:9:1",
"nodeType": "YulIdentifier",
"src": "1740:9:1"
},
{
"kind": "number",
"nativeSrc": "1751:2:1",
"nodeType": "YulLiteral",
"src": "1751:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1736:3:1",
"nodeType": "YulIdentifier",
"src": "1736:3:1"
},
"nativeSrc": "1736:18:1",
"nodeType": "YulFunctionCall",
"src": "1736:18:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "1723:12:1",
"nodeType": "YulIdentifier",
"src": "1723:12:1"
},
"nativeSrc": "1723:32:1",
"nodeType": "YulFunctionCall",
"src": "1723:32:1"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "1713:6:1",
"nodeType": "YulIdentifier",
"src": "1713:6:1"
}
]
},
{
"nativeSrc": "1764:42:1",
"nodeType": "YulAssignment",
"src": "1764:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "1791:9:1",
"nodeType": "YulIdentifier",
"src": "1791:9:1"
},
{
"kind": "number",
"nativeSrc": "1802:2:1",
"nodeType": "YulLiteral",
"src": "1802:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1787:3:1",
"nodeType": "YulIdentifier",
"src": "1787:3:1"
},
"nativeSrc": "1787:18:1",
"nodeType": "YulFunctionCall",
"src": "1787:18:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "1774:12:1",
"nodeType": "YulIdentifier",
"src": "1774:12:1"
},
"nativeSrc": "1774:32:1",
"nodeType": "YulFunctionCall",
"src": "1774:32:1"
},
"variableNames": [
{
"name": "value2",
"nativeSrc": "1764:6:1",
"nodeType": "YulIdentifier",
"src": "1764:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_array$_t_contract$_IOracleAdapter_$32_$dyn_memory_ptrt_uint256t_uint256",
"nativeSrc": "1291:521:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "1391:9:1",
"nodeType": "YulTypedName",
"src": "1391:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "1402:7:1",
"nodeType": "YulTypedName",
"src": "1402:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "1414:6:1",
"nodeType": "YulTypedName",
"src": "1414:6:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "1422:6:1",
"nodeType": "YulTypedName",
"src": "1422:6:1",
"type": ""
},
{
"name": "value2",
"nativeSrc": "1430:6:1",
"nodeType": "YulTypedName",
"src": "1430:6:1",
"type": ""
}
],
"src": "1291:521:1"
},
{
"body": {
"nativeSrc": "1968:481:1",
"nodeType": "YulBlock",
"src": "1968:481:1",
"statements": [
{
"nativeSrc": "1978:12:1",
"nodeType": "YulVariableDeclaration",
"src": "1978:12:1",
"value": {
"kind": "number",
"nativeSrc": "1988:2:1",
"nodeType": "YulLiteral",
"src": "1988:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nativeSrc": "1982:2:1",
"nodeType": "YulTypedName",
"src": "1982:2:1",
"type": ""
}
]
},
{
"nativeSrc": "1999:32:1",
"nodeType": "YulVariableDeclaration",
"src": "1999:32:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "2017:9:1",
"nodeType": "YulIdentifier",
"src": "2017:9:1"
},
{
"kind": "number",
"nativeSrc": "2028:2:1",
"nodeType": "YulLiteral",
"src": "2028:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2013:3:1",
"nodeType": "YulIdentifier",
"src": "2013:3:1"
},
"nativeSrc": "2013:18:1",
"nodeType": "YulFunctionCall",
"src": "2013:18:1"
},
"variables": [
{
"name": "tail_1",
"nativeSrc": "2003:6:1",
"nodeType": "YulTypedName",
"src": "2003:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "2047:9:1",
"nodeType": "YulIdentifier",
"src": "2047:9:1"
},
{
"kind": "number",
"nativeSrc": "2058:2:1",
"nodeType": "YulLiteral",
"src": "2058:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2040:6:1",
"nodeType": "YulIdentifier",
"src": "2040:6:1"
},
"nativeSrc": "2040:21:1",
"nodeType": "YulFunctionCall",
"src": "2040:21:1"
},
"nativeSrc": "2040:21:1",
"nodeType": "YulExpressionStatement",
"src": "2040:21:1"
},
{
"nativeSrc": "2070:17:1",
"nodeType": "YulVariableDeclaration",
"src": "2070:17:1",
"value": {
"name": "tail_1",
"nativeSrc": "2081:6:1",
"nodeType": "YulIdentifier",
"src": "2081:6:1"
},
"variables": [
{
"name": "pos",
"nativeSrc": "2074:3:1",
"nodeType": "YulTypedName",
"src": "2074:3:1",
"type": ""
}
]
},
{
"nativeSrc": "2096:27:1",
"nodeType": "YulVariableDeclaration",
"src": "2096:27:1",
"value": {
"arguments": [
{
"name": "value0",
"nativeSrc": "2116:6:1",
"nodeType": "YulIdentifier",
"src": "2116:6:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "2110:5:1",
"nodeType": "YulIdentifier",
"src": "2110:5:1"
},
"nativeSrc": "2110:13:1",
"nodeType": "YulFunctionCall",
"src": "2110:13:1"
},
"variables": [
{
"name": "length",
"nativeSrc": "2100:6:1",
"nodeType": "YulTypedName",
"src": "2100:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "tail_1",
"nativeSrc": "2139:6:1",
"nodeType": "YulIdentifier",
"src": "2139:6:1"
},
{
"name": "length",
"nativeSrc": "2147:6:1",
"nodeType": "YulIdentifier",
"src": "2147:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2132:6:1",
"nodeType": "YulIdentifier",
"src": "2132:6:1"
},
"nativeSrc": "2132:22:1",
"nodeType": "YulFunctionCall",
"src": "2132:22:1"
},
"nativeSrc": "2132:22:1",
"nodeType": "YulExpressionStatement",
"src": "2132:22:1"
},
{
"nativeSrc": "2163:25:1",
"nodeType": "YulAssignment",
"src": "2163:25:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "2174:9:1",
"nodeType": "YulIdentifier",
"src": "2174:9:1"
},
{
"kind": "number",
"nativeSrc": "2185:2:1",
"nodeType": "YulLiteral",
"src": "2185:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2170:3:1",
"nodeType": "YulIdentifier",
"src": "2170:3:1"
},
"nativeSrc": "2170:18:1",
"nodeType": "YulFunctionCall",
"src": "2170:18:1"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "2163:3:1",
"nodeType": "YulIdentifier",
"src": "2163:3:1"
}
]
},
{
"nativeSrc": "2197:29:1",
"nodeType": "YulVariableDeclaration",
"src": "2197:29:1",
"value": {
"arguments": [
{
"name": "value0",
"nativeSrc": "2215:6:1",
"nodeType": "YulIdentifier",
"src": "2215:6:1"
},
{
"kind": "number",
"nativeSrc": "2223:2:1",
"nodeType": "YulLiteral",
"src": "2223:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2211:3:1",
"nodeType": "YulIdentifier",
"src": "2211:3:1"
},
"nativeSrc": "2211:15:1",
"nodeType": "YulFunctionCall",
"src": "2211:15:1"
},
"variables": [
{
"name": "srcPtr",
"nativeSrc": "2201:6:1",
"nodeType": "YulTypedName",
"src": "2201:6:1",
"type": ""
}
]
},
{
"nativeSrc": "2235:10:1",
"nodeType": "YulVariableDeclaration",
"src": "2235:10:1",
"value": {
"kind": "number",
"nativeSrc": "2244:1:1",
"nodeType": "YulLiteral",
"src": "2244:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nativeSrc": "2239:1:1",
"nodeType": "YulTypedName",
"src": "2239:1:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "2303:120:1",
"nodeType": "YulBlock",
"src": "2303:120:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "2324:3:1",
"nodeType": "YulIdentifier",
"src": "2324:3:1"
},
{
"arguments": [
{
"name": "srcPtr",
"nativeSrc": "2335:6:1",
"nodeType": "YulIdentifier",
"src": "2335:6:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "2329:5:1",
"nodeType": "YulIdentifier",
"src": "2329:5:1"
},
"nativeSrc": "2329:13:1",
"nodeType": "YulFunctionCall",
"src": "2329:13:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2317:6:1",
"nodeType": "YulIdentifier",
"src": "2317:6:1"
},
"nativeSrc": "2317:26:1",
"nodeType": "YulFunctionCall",
"src": "2317:26:1"
},
"nativeSrc": "2317:26:1",
"nodeType": "YulExpressionStatement",
"src": "2317:26:1"
},
{
"nativeSrc": "2356:19:1",
"nodeType": "YulAssignment",
"src": "2356:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "2367:3:1",
"nodeType": "YulIdentifier",
"src": "2367:3:1"
},
{
"name": "_1",
"nativeSrc": "2372:2:1",
"nodeType": "YulIdentifier",
"src": "2372:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2363:3:1",
"nodeType": "YulIdentifier",
"src": "2363:3:1"
},
"nativeSrc": "2363:12:1",
"nodeType": "YulFunctionCall",
"src": "2363:12:1"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "2356:3:1",
"nodeType": "YulIdentifier",
"src": "2356:3:1"
}
]
},
{
"nativeSrc": "2388:25:1",
"nodeType": "YulAssignment",
"src": "2388:25:1",
"value": {
"arguments": [
{
"name": "srcPtr",
"nativeSrc": "2402:6:1",
"nodeType": "YulIdentifier",
"src": "2402:6:1"
},
{
"name": "_1",
"nativeSrc": "2410:2:1",
"nodeType": "YulIdentifier",
"src": "2410:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2398:3:1",
"nodeType": "YulIdentifier",
"src": "2398:3:1"
},
"nativeSrc": "2398:15:1",
"nodeType": "YulFunctionCall",
"src": "2398:15:1"
},
"variableNames": [
{
"name": "srcPtr",
"nativeSrc": "2388:6:1",
"nodeType": "YulIdentifier",
"src": "2388:6:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nativeSrc": "2265:1:1",
"nodeType": "YulIdentifier",
"src": "2265:1:1"
},
{
"name": "length",
"nativeSrc": "2268:6:1",
"nodeType": "YulIdentifier",
"src": "2268:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "2262:2:1",
"nodeType": "YulIdentifier",
"src": "2262:2:1"
},
"nativeSrc": "2262:13:1",
"nodeType": "YulFunctionCall",
"src": "2262:13:1"
},
"nativeSrc": "2254:169:1",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "2276:18:1",
"nodeType": "YulBlock",
"src": "2276:18:1",
"statements": [
{
"nativeSrc": "2278:14:1",
"nodeType": "YulAssignment",
"src": "2278:14:1",
"value": {
"arguments": [
{
"name": "i",
"nativeSrc": "2287:1:1",
"nodeType": "YulIdentifier",
"src": "2287:1:1"
},
{
"kind": "number",
"nativeSrc": "2290:1:1",
"nodeType": "YulLiteral",
"src": "2290:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2283:3:1",
"nodeType": "YulIdentifier",
"src": "2283:3:1"
},
"nativeSrc": "2283:9:1",
"nodeType": "YulFunctionCall",
"src": "2283:9:1"
},
"variableNames": [
{
"name": "i",
"nativeSrc": "2278:1:1",
"nodeType": "YulIdentifier",
"src": "2278:1:1"
}
]
}
]
},
"pre": {
"nativeSrc": "2258:3:1",
"nodeType": "YulBlock",
"src": "2258:3:1",
"statements": []
},
"src": "2254:169:1"
},
{
"nativeSrc": "2432:11:1",
"nodeType": "YulAssignment",
"src": "2432:11:1",
"value": {
"name": "pos",
"nativeSrc": "2440:3:1",
"nodeType": "YulIdentifier",
"src": "2440:3:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "2432:4:1",
"nodeType": "YulIdentifier",
"src": "2432:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed",
"nativeSrc": "1817:632:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "1937:9:1",
"nodeType": "YulTypedName",
"src": "1937:9:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "1948:6:1",
"nodeType": "YulTypedName",
"src": "1948:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "1959:4:1",
"nodeType": "YulTypedName",
"src": "1959:4:1",
"type": ""
}
],
"src": "1817:632:1"
},
{
"body": {
"nativeSrc": "2579:234:1",
"nodeType": "YulBlock",
"src": "2579:234:1",
"statements": [
{
"body": {
"nativeSrc": "2625:16:1",
"nodeType": "YulBlock",
"src": "2625:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "2634:1:1",
"nodeType": "YulLiteral",
"src": "2634:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "2637:1:1",
"nodeType": "YulLiteral",
"src": "2637:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "2627:6:1",
"nodeType": "YulIdentifier",
"src": "2627:6:1"
},
"nativeSrc": "2627:12:1",
"nodeType": "YulFunctionCall",
"src": "2627:12:1"
},
"nativeSrc": "2627:12:1",
"nodeType": "YulExpressionStatement",
"src": "2627:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "2600:7:1",
"nodeType": "YulIdentifier",
"src": "2600:7:1"
},
{
"name": "headStart",
"nativeSrc": "2609:9:1",
"nodeType": "YulIdentifier",
"src": "2609:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "2596:3:1",
"nodeType": "YulIdentifier",
"src": "2596:3:1"
},
"nativeSrc": "2596:23:1",
"nodeType": "YulFunctionCall",
"src": "2596:23:1"
},
{
"kind": "number",
"nativeSrc": "2621:2:1",
"nodeType": "YulLiteral",
"src": "2621:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "2592:3:1",
"nodeType": "YulIdentifier",
"src": "2592:3:1"
},
"nativeSrc": "2592:32:1",
"nodeType": "YulFunctionCall",
"src": "2592:32:1"
},
"nativeSrc": "2589:52:1",
"nodeType": "YulIf",
"src": "2589:52:1"
},
{
"nativeSrc": "2650:55:1",
"nodeType": "YulAssignment",
"src": "2650:55:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "2695:9:1",
"nodeType": "YulIdentifier",
"src": "2695:9:1"
}
],
"functionName": {
"name": "abi_decode_contract_IOracleAdapter",
"nativeSrc": "2660:34:1",
"nodeType": "YulIdentifier",
"src": "2660:34:1"
},
"nativeSrc": "2660:45:1",
"nodeType": "YulFunctionCall",
"src": "2660:45:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "2650:6:1",
"nodeType": "YulIdentifier",
"src": "2650:6:1"
}
]
},
{
"nativeSrc": "2714:42:1",
"nodeType": "YulAssignment",
"src": "2714:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "2741:9:1",
"nodeType": "YulIdentifier",
"src": "2741:9:1"
},
{
"kind": "number",
"nativeSrc": "2752:2:1",
"nodeType": "YulLiteral",
"src": "2752:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2737:3:1",
"nodeType": "YulIdentifier",
"src": "2737:3:1"
},
"nativeSrc": "2737:18:1",
"nodeType": "YulFunctionCall",
"src": "2737:18:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "2724:12:1",
"nodeType": "YulIdentifier",
"src": "2724:12:1"
},
"nativeSrc": "2724:32:1",
"nodeType": "YulFunctionCall",
"src": "2724:32:1"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "2714:6:1",
"nodeType": "YulIdentifier",
"src": "2714:6:1"
}
]
},
{
"nativeSrc": "2765:42:1",
"nodeType": "YulAssignment",
"src": "2765:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "2792:9:1",
"nodeType": "YulIdentifier",
"src": "2792:9:1"
},
{
"kind": "number",
"nativeSrc": "2803:2:1",
"nodeType": "YulLiteral",
"src": "2803:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2788:3:1",
"nodeType": "YulIdentifier",
"src": "2788:3:1"
},
"nativeSrc": "2788:18:1",
"nodeType": "YulFunctionCall",
"src": "2788:18:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "2775:12:1",
"nodeType": "YulIdentifier",
"src": "2775:12:1"
},
"nativeSrc": "2775:32:1",
"nodeType": "YulFunctionCall",
"src": "2775:32:1"
},
"variableNames": [
{
"name": "value2",
"nativeSrc": "2765:6:1",
"nodeType": "YulIdentifier",
"src": "2765:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_contract$_IOracleAdapter_$32t_uint256t_uint256",
"nativeSrc": "2454:359:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "2529:9:1",
"nodeType": "YulTypedName",
"src": "2529:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "2540:7:1",
"nodeType": "YulTypedName",
"src": "2540:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "2552:6:1",
"nodeType": "YulTypedName",
"src": "2552:6:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "2560:6:1",
"nodeType": "YulTypedName",
"src": "2560:6:1",
"type": ""
},
{
"name": "value2",
"nativeSrc": "2568:6:1",
"nodeType": "YulTypedName",
"src": "2568:6:1",
"type": ""
}
],
"src": "2454:359:1"
},
{
"body": {
"nativeSrc": "2919:76:1",
"nodeType": "YulBlock",
"src": "2919:76:1",
"statements": [
{
"nativeSrc": "2929:26:1",
"nodeType": "YulAssignment",
"src": "2929:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "2941:9:1",
"nodeType": "YulIdentifier",
"src": "2941:9:1"
},
{
"kind": "number",
"nativeSrc": "2952:2:1",
"nodeType": "YulLiteral",
"src": "2952:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2937:3:1",
"nodeType": "YulIdentifier",
"src": "2937:3:1"
},
"nativeSrc": "2937:18:1",
"nodeType": "YulFunctionCall",
"src": "2937:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "2929:4:1",
"nodeType": "YulIdentifier",
"src": "2929:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "2971:9:1",
"nodeType": "YulIdentifier",
"src": "2971:9:1"
},
{
"name": "value0",
"nativeSrc": "2982:6:1",
"nodeType": "YulIdentifier",
"src": "2982:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2964:6:1",
"nodeType": "YulIdentifier",
"src": "2964:6:1"
},
"nativeSrc": "2964:25:1",
"nodeType": "YulFunctionCall",
"src": "2964:25:1"
},
"nativeSrc": "2964:25:1",
"nodeType": "YulExpressionStatement",
"src": "2964:25:1"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nativeSrc": "2818:177:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "2888:9:1",
"nodeType": "YulTypedName",
"src": "2888:9:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "2899:6:1",
"nodeType": "YulTypedName",
"src": "2899:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "2910:4:1",
"nodeType": "YulTypedName",
"src": "2910:4:1",
"type": ""
}
],
"src": "2818:177:1"
},
{
"body": {
"nativeSrc": "3150:371:1",
"nodeType": "YulBlock",
"src": "3150:371:1",
"statements": [
{
"body": {
"nativeSrc": "3196:16:1",
"nodeType": "YulBlock",
"src": "3196:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3205:1:1",
"nodeType": "YulLiteral",
"src": "3205:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "3208:1:1",
"nodeType": "YulLiteral",
"src": "3208:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "3198:6:1",
"nodeType": "YulIdentifier",
"src": "3198:6:1"
},
"nativeSrc": "3198:12:1",
"nodeType": "YulFunctionCall",
"src": "3198:12:1"
},
"nativeSrc": "3198:12:1",
"nodeType": "YulExpressionStatement",
"src": "3198:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "3171:7:1",
"nodeType": "YulIdentifier",
"src": "3171:7:1"
},
{
"name": "headStart",
"nativeSrc": "3180:9:1",
"nodeType": "YulIdentifier",
"src": "3180:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3167:3:1",
"nodeType": "YulIdentifier",
"src": "3167:3:1"
},
"nativeSrc": "3167:23:1",
"nodeType": "YulFunctionCall",
"src": "3167:23:1"
},
{
"kind": "number",
"nativeSrc": "3192:2:1",
"nodeType": "YulLiteral",
"src": "3192:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "3163:3:1",
"nodeType": "YulIdentifier",
"src": "3163:3:1"
},
"nativeSrc": "3163:32:1",
"nodeType": "YulFunctionCall",
"src": "3163:32:1"
},
"nativeSrc": "3160:52:1",
"nodeType": "YulIf",
"src": "3160:52:1"
},
{
"nativeSrc": "3221:33:1",
"nodeType": "YulAssignment",
"src": "3221:33:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "3244:9:1",
"nodeType": "YulIdentifier",
"src": "3244:9:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "3231:12:1",
"nodeType": "YulIdentifier",
"src": "3231:12:1"
},
"nativeSrc": "3231:23:1",
"nodeType": "YulFunctionCall",
"src": "3231:23:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "3221:6:1",
"nodeType": "YulIdentifier",
"src": "3221:6:1"
}
]
},
{
"nativeSrc": "3263:42:1",
"nodeType": "YulAssignment",
"src": "3263:42:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "3290:9:1",
"nodeType": "YulIdentifier",
"src": "3290:9:1"
},
{
"kind": "number",
"nativeSrc": "3301:2:1",
"nodeType": "YulLiteral",
"src": "3301:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3286:3:1",
"nodeType": "YulIdentifier",
"src": "3286:3:1"
},
"nativeSrc": "3286:18:1",
"nodeType": "YulFunctionCall",
"src": "3286:18:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "3273:12:1",
"nodeType": "YulIdentifier",
"src": "3273:12:1"
},
"nativeSrc": "3273:32:1",
"nodeType": "YulFunctionCall",
"src": "3273:32:1"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "3263:6:1",
"nodeType": "YulIdentifier",
"src": "3263:6:1"
}
]
},
{
"nativeSrc": "3314:46:1",
"nodeType": "YulVariableDeclaration",
"src": "3314:46:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "3345:9:1",
"nodeType": "YulIdentifier",
"src": "3345:9:1"
},
{
"kind": "number",
"nativeSrc": "3356:2:1",
"nodeType": "YulLiteral",
"src": "3356:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3341:3:1",
"nodeType": "YulIdentifier",
"src": "3341:3:1"
},
"nativeSrc": "3341:18:1",
"nodeType": "YulFunctionCall",
"src": "3341:18:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "3328:12:1",
"nodeType": "YulIdentifier",
"src": "3328:12:1"
},
"nativeSrc": "3328:32:1",
"nodeType": "YulFunctionCall",
"src": "3328:32:1"
},
"variables": [
{
"name": "offset",
"nativeSrc": "3318:6:1",
"nodeType": "YulTypedName",
"src": "3318:6:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "3403:16:1",
"nodeType": "YulBlock",
"src": "3403:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3412:1:1",
"nodeType": "YulLiteral",
"src": "3412:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "3415:1:1",
"nodeType": "YulLiteral",
"src": "3415:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "3405:6:1",
"nodeType": "YulIdentifier",
"src": "3405:6:1"
},
"nativeSrc": "3405:12:1",
"nodeType": "YulFunctionCall",
"src": "3405:12:1"
},
"nativeSrc": "3405:12:1",
"nodeType": "YulExpressionStatement",
"src": "3405:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nativeSrc": "3375:6:1",
"nodeType": "YulIdentifier",
"src": "3375:6:1"
},
{
"kind": "number",
"nativeSrc": "3383:18:1",
"nodeType": "YulLiteral",
"src": "3383:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "3372:2:1",
"nodeType": "YulIdentifier",
"src": "3372:2:1"
},
"nativeSrc": "3372:30:1",
"nodeType": "YulFunctionCall",
"src": "3372:30:1"
},
"nativeSrc": "3369:50:1",
"nodeType": "YulIf",
"src": "3369:50:1"
},
{
"nativeSrc": "3428:87:1",
"nodeType": "YulAssignment",
"src": "3428:87:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "3487:9:1",
"nodeType": "YulIdentifier",
"src": "3487:9:1"
},
{
"name": "offset",
"nativeSrc": "3498:6:1",
"nodeType": "YulIdentifier",
"src": "3498:6:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3483:3:1",
"nodeType": "YulIdentifier",
"src": "3483:3:1"
},
"nativeSrc": "3483:22:1",
"nodeType": "YulFunctionCall",
"src": "3483:22:1"
},
{
"name": "dataEnd",
"nativeSrc": "3507:7:1",
"nodeType": "YulIdentifier",
"src": "3507:7:1"
}
],
"functionName": {
"name": "abi_decode_array_contract_IOracleAdapter_dyn",
"nativeSrc": "3438:44:1",
"nodeType": "YulIdentifier",
"src": "3438:44:1"
},
"nativeSrc": "3438:77:1",
"nodeType": "YulFunctionCall",
"src": "3438:77:1"
},
"variableNames": [
{
"name": "value2",
"nativeSrc": "3428:6:1",
"nodeType": "YulIdentifier",
"src": "3428:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_uint256t_array$_t_contract$_IOracleAdapter_$32_$dyn_memory_ptr",
"nativeSrc": "3000:521:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "3100:9:1",
"nodeType": "YulTypedName",
"src": "3100:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "3111:7:1",
"nodeType": "YulTypedName",
"src": "3111:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "3123:6:1",
"nodeType": "YulTypedName",
"src": "3123:6:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "3131:6:1",
"nodeType": "YulTypedName",
"src": "3131:6:1",
"type": ""
},
{
"name": "value2",
"nativeSrc": "3139:6:1",
"nodeType": "YulTypedName",
"src": "3139:6:1",
"type": ""
}
],
"src": "3000:521:1"
},
{
"body": {
"nativeSrc": "3627:102:1",
"nodeType": "YulBlock",
"src": "3627:102:1",
"statements": [
{
"nativeSrc": "3637:26:1",
"nodeType": "YulAssignment",
"src": "3637:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "3649:9:1",
"nodeType": "YulIdentifier",
"src": "3649:9:1"
},
{
"kind": "number",
"nativeSrc": "3660:2:1",
"nodeType": "YulLiteral",
"src": "3660:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3645:3:1",
"nodeType": "YulIdentifier",
"src": "3645:3:1"
},
"nativeSrc": "3645:18:1",
"nodeType": "YulFunctionCall",
"src": "3645:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "3637:4:1",
"nodeType": "YulIdentifier",
"src": "3637:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "3679:9:1",
"nodeType": "YulIdentifier",
"src": "3679:9:1"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "3694:6:1",
"nodeType": "YulIdentifier",
"src": "3694:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "3710:3:1",
"nodeType": "YulLiteral",
"src": "3710:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "3715:1:1",
"nodeType": "YulLiteral",
"src": "3715:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "3706:3:1",
"nodeType": "YulIdentifier",
"src": "3706:3:1"
},
"nativeSrc": "3706:11:1",
"nodeType": "YulFunctionCall",
"src": "3706:11:1"
},
{
"kind": "number",
"nativeSrc": "3719:1:1",
"nodeType": "YulLiteral",
"src": "3719:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3702:3:1",
"nodeType": "YulIdentifier",
"src": "3702:3:1"
},
"nativeSrc": "3702:19:1",
"nodeType": "YulFunctionCall",
"src": "3702:19:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "3690:3:1",
"nodeType": "YulIdentifier",
"src": "3690:3:1"
},
"nativeSrc": "3690:32:1",
"nodeType": "YulFunctionCall",
"src": "3690:32:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "3672:6:1",
"nodeType": "YulIdentifier",
"src": "3672:6:1"
},
"nativeSrc": "3672:51:1",
"nodeType": "YulFunctionCall",
"src": "3672:51:1"
},
"nativeSrc": "3672:51:1",
"nodeType": "YulExpressionStatement",
"src": "3672:51:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nativeSrc": "3526:203:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "3596:9:1",
"nodeType": "YulTypedName",
"src": "3596:9:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "3607:6:1",
"nodeType": "YulTypedName",
"src": "3607:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "3618:4:1",
"nodeType": "YulTypedName",
"src": "3618:4:1",
"type": ""
}
],
"src": "3526:203:1"
},
{
"body": {
"nativeSrc": "3766:95:1",
"nodeType": "YulBlock",
"src": "3766:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3783:1:1",
"nodeType": "YulLiteral",
"src": "3783:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "3790:3:1",
"nodeType": "YulLiteral",
"src": "3790:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nativeSrc": "3795:10:1",
"nodeType": "YulLiteral",
"src": "3795:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "3786:3:1",
"nodeType": "YulIdentifier",
"src": "3786:3:1"
},
"nativeSrc": "3786:20:1",
"nodeType": "YulFunctionCall",
"src": "3786:20:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "3776:6:1",
"nodeType": "YulIdentifier",
"src": "3776:6:1"
},
"nativeSrc": "3776:31:1",
"nodeType": "YulFunctionCall",
"src": "3776:31:1"
},
"nativeSrc": "3776:31:1",
"nodeType": "YulExpressionStatement",
"src": "3776:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3823:1:1",
"nodeType": "YulLiteral",
"src": "3823:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "3826:4:1",
"nodeType": "YulLiteral",
"src": "3826:4:1",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "3816:6:1",
"nodeType": "YulIdentifier",
"src": "3816:6:1"
},
"nativeSrc": "3816:15:1",
"nodeType": "YulFunctionCall",
"src": "3816:15:1"
},
"nativeSrc": "3816:15:1",
"nodeType": "YulExpressionStatement",
"src": "3816:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3847:1:1",
"nodeType": "YulLiteral",
"src": "3847:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "3850:4:1",
"nodeType": "YulLiteral",
"src": "3850:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "3840:6:1",
"nodeType": "YulIdentifier",
"src": "3840:6:1"
},
"nativeSrc": "3840:15:1",
"nodeType": "YulFunctionCall",
"src": "3840:15:1"
},
"nativeSrc": "3840:15:1",
"nodeType": "YulExpressionStatement",
"src": "3840:15:1"
}
]
},
"name": "panic_error_0x32",
"nativeSrc": "3734:127:1",
"nodeType": "YulFunctionDefinition",
"src": "3734:127:1"
},
{
"body": {
"nativeSrc": "3995:119:1",
"nodeType": "YulBlock",
"src": "3995:119:1",
"statements": [
{
"nativeSrc": "4005:26:1",
"nodeType": "YulAssignment",
"src": "4005:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "4017:9:1",
"nodeType": "YulIdentifier",
"src": "4017:9:1"
},
{
"kind": "number",
"nativeSrc": "4028:2:1",
"nodeType": "YulLiteral",
"src": "4028:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4013:3:1",
"nodeType": "YulIdentifier",
"src": "4013:3:1"
},
"nativeSrc": "4013:18:1",
"nodeType": "YulFunctionCall",
"src": "4013:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "4005:4:1",
"nodeType": "YulIdentifier",
"src": "4005:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "4047:9:1",
"nodeType": "YulIdentifier",
"src": "4047:9:1"
},
{
"name": "value0",
"nativeSrc": "4058:6:1",
"nodeType": "YulIdentifier",
"src": "4058:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4040:6:1",
"nodeType": "YulIdentifier",
"src": "4040:6:1"
},
"nativeSrc": "4040:25:1",
"nodeType": "YulFunctionCall",
"src": "4040:25:1"
},
"nativeSrc": "4040:25:1",
"nodeType": "YulExpressionStatement",
"src": "4040:25:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "4085:9:1",
"nodeType": "YulIdentifier",
"src": "4085:9:1"
},
{
"kind": "number",
"nativeSrc": "4096:2:1",
"nodeType": "YulLiteral",
"src": "4096:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4081:3:1",
"nodeType": "YulIdentifier",
"src": "4081:3:1"
},
"nativeSrc": "4081:18:1",
"nodeType": "YulFunctionCall",
"src": "4081:18:1"
},
{
"name": "value1",
"nativeSrc": "4101:6:1",
"nodeType": "YulIdentifier",
"src": "4101:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4074:6:1",
"nodeType": "YulIdentifier",
"src": "4074:6:1"
},
"nativeSrc": "4074:34:1",
"nodeType": "YulFunctionCall",
"src": "4074:34:1"
},
"nativeSrc": "4074:34:1",
"nodeType": "YulExpressionStatement",
"src": "4074:34:1"
}
]
},
"name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
"nativeSrc": "3866:248:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "3956:9:1",
"nodeType": "YulTypedName",
"src": "3956:9:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "3967:6:1",
"nodeType": "YulTypedName",
"src": "3967:6:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "3975:6:1",
"nodeType": "YulTypedName",
"src": "3975:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "3986:4:1",
"nodeType": "YulTypedName",
"src": "3986:4:1",
"type": ""
}
],
"src": "3866:248:1"
},
{
"body": {
"nativeSrc": "4200:103:1",
"nodeType": "YulBlock",
"src": "4200:103:1",
"statements": [
{
"body": {
"nativeSrc": "4246:16:1",
"nodeType": "YulBlock",
"src": "4246:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "4255:1:1",
"nodeType": "YulLiteral",
"src": "4255:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "4258:1:1",
"nodeType": "YulLiteral",
"src": "4258:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "4248:6:1",
"nodeType": "YulIdentifier",
"src": "4248:6:1"
},
"nativeSrc": "4248:12:1",
"nodeType": "YulFunctionCall",
"src": "4248:12:1"
},
"nativeSrc": "4248:12:1",
"nodeType": "YulExpressionStatement",
"src": "4248:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "4221:7:1",
"nodeType": "YulIdentifier",
"src": "4221:7:1"
},
{
"name": "headStart",
"nativeSrc": "4230:9:1",
"nodeType": "YulIdentifier",
"src": "4230:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "4217:3:1",
"nodeType": "YulIdentifier",
"src": "4217:3:1"
},
"nativeSrc": "4217:23:1",
"nodeType": "YulFunctionCall",
"src": "4217:23:1"
},
{
"kind": "number",
"nativeSrc": "4242:2:1",
"nodeType": "YulLiteral",
"src": "4242:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "4213:3:1",
"nodeType": "YulIdentifier",
"src": "4213:3:1"
},
"nativeSrc": "4213:32:1",
"nodeType": "YulFunctionCall",
"src": "4213:32:1"
},
"nativeSrc": "4210:52:1",
"nodeType": "YulIf",
"src": "4210:52:1"
},
{
"nativeSrc": "4271:26:1",
"nodeType": "YulAssignment",
"src": "4271:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "4287:9:1",
"nodeType": "YulIdentifier",
"src": "4287:9:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "4281:5:1",
"nodeType": "YulIdentifier",
"src": "4281:5:1"
},
"nativeSrc": "4281:16:1",
"nodeType": "YulFunctionCall",
"src": "4281:16:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "4271:6:1",
"nodeType": "YulIdentifier",
"src": "4271:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32_fromMemory",
"nativeSrc": "4119:184:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "4166:9:1",
"nodeType": "YulTypedName",
"src": "4166:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "4177:7:1",
"nodeType": "YulTypedName",
"src": "4177:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "4189:6:1",
"nodeType": "YulTypedName",
"src": "4189:6:1",
"type": ""
}
],
"src": "4119:184:1"
},
{
"body": {
"nativeSrc": "4458:175:1",
"nodeType": "YulBlock",
"src": "4458:175:1",
"statements": [
{
"nativeSrc": "4468:26:1",
"nodeType": "YulAssignment",
"src": "4468:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "4480:9:1",
"nodeType": "YulIdentifier",
"src": "4480:9:1"
},
{
"kind": "number",
"nativeSrc": "4491:2:1",
"nodeType": "YulLiteral",
"src": "4491:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4476:3:1",
"nodeType": "YulIdentifier",
"src": "4476:3:1"
},
"nativeSrc": "4476:18:1",
"nodeType": "YulFunctionCall",
"src": "4476:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "4468:4:1",
"nodeType": "YulIdentifier",
"src": "4468:4:1"
}
]
},
{
"nativeSrc": "4503:29:1",
"nodeType": "YulVariableDeclaration",
"src": "4503:29:1",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "4521:3:1",
"nodeType": "YulLiteral",
"src": "4521:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "4526:1:1",
"nodeType": "YulLiteral",
"src": "4526:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "4517:3:1",
"nodeType": "YulIdentifier",
"src": "4517:3:1"
},
"nativeSrc": "4517:11:1",
"nodeType": "YulFunctionCall",
"src": "4517:11:1"
},
{
"kind": "number",
"nativeSrc": "4530:1:1",
"nodeType": "YulLiteral",
"src": "4530:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "4513:3:1",
"nodeType": "YulIdentifier",
"src": "4513:3:1"
},
"nativeSrc": "4513:19:1",
"nodeType": "YulFunctionCall",
"src": "4513:19:1"
},
"variables": [
{
"name": "_1",
"nativeSrc": "4507:2:1",
"nodeType": "YulTypedName",
"src": "4507:2:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "4548:9:1",
"nodeType": "YulIdentifier",
"src": "4548:9:1"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "4563:6:1",
"nodeType": "YulIdentifier",
"src": "4563:6:1"
},
{
"name": "_1",
"nativeSrc": "4571:2:1",
"nodeType": "YulIdentifier",
"src": "4571:2:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "4559:3:1",
"nodeType": "YulIdentifier",
"src": "4559:3:1"
},
"nativeSrc": "4559:15:1",
"nodeType": "YulFunctionCall",
"src": "4559:15:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4541:6:1",
"nodeType": "YulIdentifier",
"src": "4541:6:1"
},
"nativeSrc": "4541:34:1",
"nodeType": "YulFunctionCall",
"src": "4541:34:1"
},
"nativeSrc": "4541:34:1",
"nodeType": "YulExpressionStatement",
"src": "4541:34:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "4595:9:1",
"nodeType": "YulIdentifier",
"src": "4595:9:1"
},
{
"kind": "number",
"nativeSrc": "4606:2:1",
"nodeType": "YulLiteral",
"src": "4606:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4591:3:1",
"nodeType": "YulIdentifier",
"src": "4591:3:1"
},
"nativeSrc": "4591:18:1",
"nodeType": "YulFunctionCall",
"src": "4591:18:1"
},
{
"arguments": [
{
"name": "value1",
"nativeSrc": "4615:6:1",
"nodeType": "YulIdentifier",
"src": "4615:6:1"
},
{
"name": "_1",
"nativeSrc": "4623:2:1",
"nodeType": "YulIdentifier",
"src": "4623:2:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "4611:3:1",
"nodeType": "YulIdentifier",
"src": "4611:3:1"
},
"nativeSrc": "4611:15:1",
"nodeType": "YulFunctionCall",
"src": "4611:15:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4584:6:1",
"nodeType": "YulIdentifier",
"src": "4584:6:1"
},
"nativeSrc": "4584:43:1",
"nodeType": "YulFunctionCall",
"src": "4584:43:1"
},
"nativeSrc": "4584:43:1",
"nodeType": "YulExpressionStatement",
"src": "4584:43:1"
}
]
},
"name": "abi_encode_tuple_t_address_t_contract$_IOracleAdapter_$32__to_t_address_t_address__fromStack_reversed",
"nativeSrc": "4308:325:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "4419:9:1",
"nodeType": "YulTypedName",
"src": "4419:9:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "4430:6:1",
"nodeType": "YulTypedName",
"src": "4430:6:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "4438:6:1",
"nodeType": "YulTypedName",
"src": "4438:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "4449:4:1",
"nodeType": "YulTypedName",
"src": "4449:4:1",
"type": ""
}
],
"src": "4308:325:1"
},
{
"body": {
"nativeSrc": "4687:176:1",
"nodeType": "YulBlock",
"src": "4687:176:1",
"statements": [
{
"nativeSrc": "4697:17:1",
"nodeType": "YulAssignment",
"src": "4697:17:1",
"value": {
"arguments": [
{
"name": "x",
"nativeSrc": "4709:1:1",
"nodeType": "YulIdentifier",
"src": "4709:1:1"
},
{
"name": "y",
"nativeSrc": "4712:1:1",
"nodeType": "YulIdentifier",
"src": "4712:1:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "4705:3:1",
"nodeType": "YulIdentifier",
"src": "4705:3:1"
},
"nativeSrc": "4705:9:1",
"nodeType": "YulFunctionCall",
"src": "4705:9:1"
},
"variableNames": [
{
"name": "diff",
"nativeSrc": "4697:4:1",
"nodeType": "YulIdentifier",
"src": "4697:4:1"
}
]
},
{
"body": {
"nativeSrc": "4746:111:1",
"nodeType": "YulBlock",
"src": "4746:111:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "4767:1:1",
"nodeType": "YulLiteral",
"src": "4767:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "4774:3:1",
"nodeType": "YulLiteral",
"src": "4774:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nativeSrc": "4779:10:1",
"nodeType": "YulLiteral",
"src": "4779:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "4770:3:1",
"nodeType": "YulIdentifier",
"src": "4770:3:1"
},
"nativeSrc": "4770:20:1",
"nodeType": "YulFunctionCall",
"src": "4770:20:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4760:6:1",
"nodeType": "YulIdentifier",
"src": "4760:6:1"
},
"nativeSrc": "4760:31:1",
"nodeType": "YulFunctionCall",
"src": "4760:31:1"
},
"nativeSrc": "4760:31:1",
"nodeType": "YulExpressionStatement",
"src": "4760:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "4811:1:1",
"nodeType": "YulLiteral",
"src": "4811:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "4814:4:1",
"nodeType": "YulLiteral",
"src": "4814:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4804:6:1",
"nodeType": "YulIdentifier",
"src": "4804:6:1"
},
"nativeSrc": "4804:15:1",
"nodeType": "YulFunctionCall",
"src": "4804:15:1"
},
"nativeSrc": "4804:15:1",
"nodeType": "YulExpressionStatement",
"src": "4804:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "4839:1:1",
"nodeType": "YulLiteral",
"src": "4839:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "4842:4:1",
"nodeType": "YulLiteral",
"src": "4842:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "4832:6:1",
"nodeType": "YulIdentifier",
"src": "4832:6:1"
},
"nativeSrc": "4832:15:1",
"nodeType": "YulFunctionCall",
"src": "4832:15:1"
},
"nativeSrc": "4832:15:1",
"nodeType": "YulExpressionStatement",
"src": "4832:15:1"
}
]
},
"condition": {
"arguments": [
{
"name": "diff",
"nativeSrc": "4729:4:1",
"nodeType": "YulIdentifier",
"src": "4729:4:1"
},
{
"name": "x",
"nativeSrc": "4735:1:1",
"nodeType": "YulIdentifier",
"src": "4735:1:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "4726:2:1",
"nodeType": "YulIdentifier",
"src": "4726:2:1"
},
"nativeSrc": "4726:11:1",
"nodeType": "YulFunctionCall",
"src": "4726:11:1"
},
"nativeSrc": "4723:134:1",
"nodeType": "YulIf",
"src": "4723:134:1"
}
]
},
"name": "checked_sub_t_uint256",
"nativeSrc": "4638:225:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nativeSrc": "4669:1:1",
"nodeType": "YulTypedName",
"src": "4669:1:1",
"type": ""
},
{
"name": "y",
"nativeSrc": "4672:1:1",
"nodeType": "YulTypedName",
"src": "4672:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "diff",
"nativeSrc": "4678:4:1",
"nodeType": "YulTypedName",
"src": "4678:4:1",
"type": ""
}
],
"src": "4638:225:1"
},
{
"body": {
"nativeSrc": "5067:227:1",
"nodeType": "YulBlock",
"src": "5067:227:1",
"statements": [
{
"nativeSrc": "5077:26:1",
"nodeType": "YulAssignment",
"src": "5077:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "5089:9:1",
"nodeType": "YulIdentifier",
"src": "5089:9:1"
},
{
"kind": "number",
"nativeSrc": "5100:2:1",
"nodeType": "YulLiteral",
"src": "5100:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5085:3:1",
"nodeType": "YulIdentifier",
"src": "5085:3:1"
},
"nativeSrc": "5085:18:1",
"nodeType": "YulFunctionCall",
"src": "5085:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "5077:4:1",
"nodeType": "YulIdentifier",
"src": "5077:4:1"
}
]
},
{
"nativeSrc": "5112:29:1",
"nodeType": "YulVariableDeclaration",
"src": "5112:29:1",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "5130:3:1",
"nodeType": "YulLiteral",
"src": "5130:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "5135:1:1",
"nodeType": "YulLiteral",
"src": "5135:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "5126:3:1",
"nodeType": "YulIdentifier",
"src": "5126:3:1"
},
"nativeSrc": "5126:11:1",
"nodeType": "YulFunctionCall",
"src": "5126:11:1"
},
{
"kind": "number",
"nativeSrc": "5139:1:1",
"nodeType": "YulLiteral",
"src": "5139:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "5122:3:1",
"nodeType": "YulIdentifier",
"src": "5122:3:1"
},
"nativeSrc": "5122:19:1",
"nodeType": "YulFunctionCall",
"src": "5122:19:1"
},
"variables": [
{
"name": "_1",
"nativeSrc": "5116:2:1",
"nodeType": "YulTypedName",
"src": "5116:2:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "5157:9:1",
"nodeType": "YulIdentifier",
"src": "5157:9:1"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "5172:6:1",
"nodeType": "YulIdentifier",
"src": "5172:6:1"
},
{
"name": "_1",
"nativeSrc": "5180:2:1",
"nodeType": "YulIdentifier",
"src": "5180:2:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5168:3:1",
"nodeType": "YulIdentifier",
"src": "5168:3:1"
},
"nativeSrc": "5168:15:1",
"nodeType": "YulFunctionCall",
"src": "5168:15:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5150:6:1",
"nodeType": "YulIdentifier",
"src": "5150:6:1"
},
"nativeSrc": "5150:34:1",
"nodeType": "YulFunctionCall",
"src": "5150:34:1"
},
"nativeSrc": "5150:34:1",
"nodeType": "YulExpressionStatement",
"src": "5150:34:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5204:9:1",
"nodeType": "YulIdentifier",
"src": "5204:9:1"
},
{
"kind": "number",
"nativeSrc": "5215:2:1",
"nodeType": "YulLiteral",
"src": "5215:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5200:3:1",
"nodeType": "YulIdentifier",
"src": "5200:3:1"
},
"nativeSrc": "5200:18:1",
"nodeType": "YulFunctionCall",
"src": "5200:18:1"
},
{
"arguments": [
{
"name": "value1",
"nativeSrc": "5224:6:1",
"nodeType": "YulIdentifier",
"src": "5224:6:1"
},
{
"name": "_1",
"nativeSrc": "5232:2:1",
"nodeType": "YulIdentifier",
"src": "5232:2:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5220:3:1",
"nodeType": "YulIdentifier",
"src": "5220:3:1"
},
"nativeSrc": "5220:15:1",
"nodeType": "YulFunctionCall",
"src": "5220:15:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5193:6:1",
"nodeType": "YulIdentifier",
"src": "5193:6:1"
},
"nativeSrc": "5193:43:1",
"nodeType": "YulFunctionCall",
"src": "5193:43:1"
},
"nativeSrc": "5193:43:1",
"nodeType": "YulExpressionStatement",
"src": "5193:43:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5256:9:1",
"nodeType": "YulIdentifier",
"src": "5256:9:1"
},
{
"kind": "number",
"nativeSrc": "5267:2:1",
"nodeType": "YulLiteral",
"src": "5267:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5252:3:1",
"nodeType": "YulIdentifier",
"src": "5252:3:1"
},
"nativeSrc": "5252:18:1",
"nodeType": "YulFunctionCall",
"src": "5252:18:1"
},
{
"arguments": [
{
"name": "value2",
"nativeSrc": "5276:6:1",
"nodeType": "YulIdentifier",
"src": "5276:6:1"
},
{
"name": "_1",
"nativeSrc": "5284:2:1",
"nodeType": "YulIdentifier",
"src": "5284:2:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "5272:3:1",
"nodeType": "YulIdentifier",
"src": "5272:3:1"
},
"nativeSrc": "5272:15:1",
"nodeType": "YulFunctionCall",
"src": "5272:15:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5245:6:1",
"nodeType": "YulIdentifier",
"src": "5245:6:1"
},
"nativeSrc": "5245:43:1",
"nodeType": "YulFunctionCall",
"src": "5245:43:1"
},
"nativeSrc": "5245:43:1",
"nodeType": "YulExpressionStatement",
"src": "5245:43:1"
}
]
},
"name": "abi_encode_tuple_t_address_t_contract$_IOracleAdapter_$32_t_contract$_IOracleAdapter_$32__to_t_address_t_address_t_address__fromStack_reversed",
"nativeSrc": "4868:426:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "5020:9:1",
"nodeType": "YulTypedName",
"src": "5020:9:1",
"type": ""
},
{
"name": "value2",
"nativeSrc": "5031:6:1",
"nodeType": "YulTypedName",
"src": "5031:6:1",
"type": ""
},
{
"name": "value1",
"nativeSrc": "5039:6:1",
"nodeType": "YulTypedName",
"src": "5039:6:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "5047:6:1",
"nodeType": "YulTypedName",
"src": "5047:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "5058:4:1",
"nodeType": "YulTypedName",
"src": "5058:4:1",
"type": ""
}
],
"src": "4868:426:1"
}
]
},
"contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_contract_IOracleAdapter(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_array_contract_IOracleAdapter_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n let _3 := 0xffffffffffffffff\n if gt(_1, _3) { panic_error_0x41() }\n let _4 := shl(5, _1)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(_4, 63), not(31)))\n if or(gt(newFreePtr, _3), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n let dst := memPtr\n mstore(memPtr, _1)\n dst := add(memPtr, 0x20)\n let srcEnd := add(add(offset, _4), 0x20)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, 0x20)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, abi_decode_contract_IOracleAdapter(src))\n dst := add(dst, _2)\n }\n array := memPtr\n }\n function abi_decode_tuple_t_array$_t_contract$_IOracleAdapter_$32_$dyn_memory_ptrt_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value0 := abi_decode_array_contract_IOracleAdapter_dyn(add(headStart, offset), dataEnd)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_contract$_IOracleAdapter_$32t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_contract_IOracleAdapter(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256t_uint256t_array$_t_contract$_IOracleAdapter_$32_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value2 := abi_decode_array_contract_IOracleAdapter_dyn(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_address_t_contract$_IOracleAdapter_$32__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_address_t_contract$_IOracleAdapter_$32_t_contract$_IOracleAdapter_$32__to_t_address_t_address_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561000f575f80fd5b506004361061003f575f3560e01c80633e144098146100435780639e03f8c91461006c578063ead227541461008d575b5f80fd5b610056610051366004610444565b6100a0565b604051610063919061048e565b60405180910390f35b61007f61007a3660046104d1565b61016e565b604051908152602001610063565b61007f61009b366004610501565b6101e6565b606083515f036100ca5760405163c1a9bd2f60e01b81523060048201526024015b60405180910390fd5b5f845167ffffffffffffffff8111156100e5576100e5610373565b60405190808252806020026020018201604052801561010e578160200160208202803683370190505b5090505f5b8551811015610165576101408682815181106101315761013161054d565b6020026020010151868661016e565b8282815181106101525761015261054d565b6020908102919091010152600101610113565b50949350505050565b604051638599a96960e01b815260048101839052602481018290525f906001600160a01b03851690638599a96990604401602060405180830381865afa1580156101ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101de9190610561565b949350505050565b5f81515f0361020a5760405163c1a9bd2f60e01b81523060048201526024016100c1565b5f6102168386866100a0565b9050805f8151811061022a5761022a61054d565b602002602001015191505f801b82036102885730835f815181106102505761025061054d565b6020026020010151604051632a0c203960e01b81526004016100c19291906001600160a01b0392831681529116602082015260400190565b60015b815181101561036a575f801b8282815181106102a9576102a961054d565b6020026020010151036102c957308482815181106102505761025061054d565b8181815181106102db576102db61054d565b602002602001015183146103625730846102f6600184610578565b815181106103065761030661054d565b60200260200101518583815181106103205761032061054d565b602002602001015160405163dbed4b2760e01b81526004016100c1939291906001600160a01b0393841681529183166020830152909116604082015260600190565b60010161028b565b50509392505050565b634e487b7160e01b5f52604160045260245ffd5b80356001600160a01b038116811461039d575f80fd5b919050565b5f82601f8301126103b1575f80fd5b8135602067ffffffffffffffff808311156103ce576103ce610373565b8260051b604051601f19603f830116810181811084821117156103f3576103f3610373565b6040529384526020818701810194908101925087851115610412575f80fd5b6020870191505b848210156104395761042a82610387565b83529183019190830190610419565b979650505050505050565b5f805f60608486031215610456575f80fd5b833567ffffffffffffffff81111561046c575f80fd5b610478868287016103a2565b9660208601359650604090950135949350505050565b602080825282518282018190525f9190848201906040850190845b818110156104c5578351835292840192918401916001016104a9565b50909695505050505050565b5f805f606084860312156104e3575f80fd5b6104ec84610387565b95602085013595506040909401359392505050565b5f805f60608486031215610513575f80fd5b8335925060208401359150604084013567ffffffffffffffff811115610537575f80fd5b610543868287016103a2565b9150509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215610571575f80fd5b5051919050565b8181038181111561059757634e487b7160e01b5f52601160045260245ffd5b9291505056fea2646970667358221220b3fd8def2034668fd6a6e6199283c2beb5f95dc7da5d3ff0ea7176ab662ae26264736f6c63430008160033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3E144098 EQ PUSH2 0x43 JUMPI DUP1 PUSH4 0x9E03F8C9 EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0xEAD22754 EQ PUSH2 0x8D JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x56 PUSH2 0x51 CALLDATASIZE PUSH1 0x4 PUSH2 0x444 JUMP JUMPDEST PUSH2 0xA0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x63 SWAP2 SWAP1 PUSH2 0x48E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x4D1 JUMP JUMPDEST PUSH2 0x16E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x63 JUMP JUMPDEST PUSH2 0x7F PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x501 JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH0 SUB PUSH2 0xCA JUMPI PUSH1 0x40 MLOAD PUSH4 0xC1A9BD2F PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP5 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE5 JUMPI PUSH2 0xE5 PUSH2 0x373 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x10E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x165 JUMPI PUSH2 0x140 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x131 JUMPI PUSH2 0x131 PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP7 PUSH2 0x16E JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x152 JUMPI PUSH2 0x152 PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x113 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8599A969 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x8599A969 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BA JUMPI RETURNDATASIZE PUSH0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH0 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 0x1DE SWAP2 SWAP1 PUSH2 0x561 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD PUSH0 SUB PUSH2 0x20A JUMPI PUSH1 0x40 MLOAD PUSH4 0xC1A9BD2F PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xC1 JUMP JUMPDEST PUSH0 PUSH2 0x216 DUP4 DUP7 DUP7 PUSH2 0xA0 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x22A JUMPI PUSH2 0x22A PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP PUSH0 DUP1 SHL DUP3 SUB PUSH2 0x288 JUMPI ADDRESS DUP4 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x250 JUMPI PUSH2 0x250 PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x2A0C2039 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC1 SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x36A JUMPI PUSH0 DUP1 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2A9 JUMPI PUSH2 0x2A9 PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB PUSH2 0x2C9 JUMPI ADDRESS DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x250 JUMPI PUSH2 0x250 PUSH2 0x54D JUMP JUMPDEST DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2DB JUMPI PUSH2 0x2DB PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 EQ PUSH2 0x362 JUMPI ADDRESS DUP5 PUSH2 0x2F6 PUSH1 0x1 DUP5 PUSH2 0x578 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x306 JUMPI PUSH2 0x306 PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x320 JUMPI PUSH2 0x320 PUSH2 0x54D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xDBED4B27 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x28B JUMP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x39D JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B1 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 GT ISZERO PUSH2 0x3CE JUMPI PUSH2 0x3CE PUSH2 0x373 JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x3F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0x3F3 JUMPI PUSH2 0x3F3 PUSH2 0x373 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP4 DUP5 MSTORE PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD SWAP5 SWAP1 DUP2 ADD SWAP3 POP DUP8 DUP6 GT ISZERO PUSH2 0x412 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP8 ADD SWAP2 POP JUMPDEST DUP5 DUP3 LT ISZERO PUSH2 0x439 JUMPI PUSH2 0x42A DUP3 PUSH2 0x387 JUMP JUMPDEST DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0x419 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x456 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x46C JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x478 DUP7 DUP3 DUP8 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP7 PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP7 POP PUSH1 0x40 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4C5 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4A9 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4E3 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x4EC DUP5 PUSH2 0x387 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x513 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x537 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x543 DUP7 DUP3 DUP8 ADD PUSH2 0x3A2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x571 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x597 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB3 REVERT DUP14 0xEF KECCAK256 CALLVALUE PUSH7 0x8FD6A6E6199283 0xC2 0xBE 0xB5 0xF9 0x5D 0xC7 0xDA 0x5D EXTCODEHASH CREATE 0xEA PUSH18 0x76AB662AE26264736F6C6343000816003300 ",
"sourceMap": "4344:2807:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5492:500;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4917:217;;;;;;:::i;:::-;;:::i;:::-;;;2964:25:1;;;2952:2;2937:18;4917:217:0;2818:177:1;6422:727:0;;;;;;:::i;:::-;;:::i;5492:500::-;5641:16;5673:14;:21;5698:1;5673:26;5669:75;;5708:36;;-1:-1:-1;;;5708:36:0;;5738:4;5708:36;;;3672:51:1;3645:18;;5708:36:0;;;;;;;;5669:75;5754:23;5794:14;:21;5780:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5780:36:0;;5754:62;;5831:9;5826:137;5850:14;:21;5846:1;:25;5826:137;;;5904:48;5922:14;5937:1;5922:17;;;;;;;;:::i;:::-;;;;;;;5941:6;5949:2;5904:17;:48::i;:::-;5892:6;5899:1;5892:9;;;;;;;;:::i;:::-;;;;;;;;;;:60;5873:3;;5826:137;;;-1:-1:-1;5979:6:0;5492:500;-1:-1:-1;;;;5492:500:0:o;4917:217::-;5084:43;;-1:-1:-1;;;5084:43:0;;;;;4040:25:1;;;4081:18;;;4074:34;;;5053:12:0;;-1:-1:-1;;;;;5084:31:0;;;;;4013:18:1;;5084:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5077:50;4917:217;-1:-1:-1;;;;4917:217:0:o;6422:727::-;6558:12;6586:14;:21;6611:1;6586:26;6582:75;;6621:36;;-1:-1:-1;;;6621:36:0;;6651:4;6621:36;;;3672:51:1;3645:18;;6621:36:0;3526:203:1;6582:75:0;6667:23;6693:48;6714:14;6730:6;6738:2;6693:20;:48::i;:::-;6667:74;;6758:6;6765:1;6758:9;;;;;;;;:::i;:::-;;;;;;;6751:16;;6797:1;6789:10;;6781:4;:18;6777:83;;6835:4;6842:14;6857:1;6842:17;;;;;;;;:::i;:::-;;;;;;;6808:52;;-1:-1:-1;;;6808:52:0;;;;;;;;-1:-1:-1;;;;;4559:15:1;;;4541:34;;4611:15;;4606:2;4591:18;;4584:43;4491:2;4476:18;;4308:325;6777:83:0;6887:1;6870:273;6894:6;:13;6890:1;:17;6870:273;;;6953:1;6945:10;;6932:6;6939:1;6932:9;;;;;;;;:::i;:::-;;;;;;;:23;6928:88;;6991:4;6998:14;7013:1;6998:17;;;;;;;;:::i;6928:88::-;7042:6;7049:1;7042:9;;;;;;;;:::i;:::-;;;;;;;7034:4;:17;7030:102;;7084:4;7091:14;7106:5;7110:1;7106;:5;:::i;:::-;7091:21;;;;;;;;:::i;:::-;;;;;;;7114:14;7129:1;7114:17;;;;;;;;:::i;:::-;;;;;;;7060:72;;-1:-1:-1;;;7060:72:0;;;;;;;;;-1:-1:-1;;;;;5168:15:1;;;5150:34;;5220:15;;;5215:2;5200:18;;5193:43;5272:15;;;5267:2;5252:18;;5245:43;5100:2;5085:18;;4868:426;7030:102:0;6909:3;;6870:273;;;;6572:577;6422:727;;;;;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:189;230:20;;-1:-1:-1;;;;;279:31:1;;269:42;;259:70;;325:1;322;315:12;259:70;146:189;;;:::o;340:946::-;410:5;463:3;456:4;448:6;444:17;440:27;430:55;;481:1;478;471:12;430:55;517:6;504:20;543:4;566:18;603:2;599;596:10;593:36;;;609:18;;:::i;:::-;655:2;652:1;648:10;687:2;681:9;750:2;746:7;741:2;737;733:11;729:25;721:6;717:38;805:6;793:10;790:22;785:2;773:10;770:18;767:46;764:72;;;816:18;;:::i;:::-;852:2;845:22;902:18;;;948:4;980:15;;;976:26;;;936:17;;;;-1:-1:-1;1014:15:1;;;1011:35;;;1042:1;1039;1032:12;1011:35;1078:4;1070:6;1066:17;1055:28;;1092:164;1108:6;1103:3;1100:15;1092:164;;;1174:39;1209:3;1174:39;:::i;:::-;1162:52;;1234:12;;;;1125;;;;1092:164;;;1274:6;340:946;-1:-1:-1;;;;;;;340:946:1:o;1291:521::-;1414:6;1422;1430;1483:2;1471:9;1462:7;1458:23;1454:32;1451:52;;;1499:1;1496;1489:12;1451:52;1539:9;1526:23;1572:18;1564:6;1561:30;1558:50;;;1604:1;1601;1594:12;1558:50;1627:77;1696:7;1687:6;1676:9;1672:22;1627:77;:::i;:::-;1617:87;1751:2;1736:18;;1723:32;;-1:-1:-1;1802:2:1;1787:18;;;1774:32;;1291:521;-1:-1:-1;;;;1291:521:1:o;1817:632::-;1988:2;2040:21;;;2110:13;;2013:18;;;2132:22;;;1959:4;;1988:2;2211:15;;;;2185:2;2170:18;;;1959:4;2254:169;2268:6;2265:1;2262:13;2254:169;;;2329:13;;2317:26;;2398:15;;;;2363:12;;;;2290:1;2283:9;2254:169;;;-1:-1:-1;2440:3:1;;1817:632;-1:-1:-1;;;;;;1817:632:1:o;2454:359::-;2552:6;2560;2568;2621:2;2609:9;2600:7;2596:23;2592:32;2589:52;;;2637:1;2634;2627:12;2589:52;2660:45;2695:9;2660:45;:::i;:::-;2650:55;2752:2;2737:18;;2724:32;;-1:-1:-1;2803:2:1;2788:18;;;2775:32;;2454:359;-1:-1:-1;;;2454:359:1:o;3000:521::-;3123:6;3131;3139;3192:2;3180:9;3171:7;3167:23;3163:32;3160:52;;;3208:1;3205;3198:12;3160:52;3244:9;3231:23;3221:33;;3301:2;3290:9;3286:18;3273:32;3263:42;;3356:2;3345:9;3341:18;3328:32;3383:18;3375:6;3372:30;3369:50;;;3415:1;3412;3405:12;3369:50;3438:77;3507:7;3498:6;3487:9;3483:22;3438:77;:::i;:::-;3428:87;;;3000:521;;;;;:::o;3734:127::-;3795:10;3790:3;3786:20;3783:1;3776:31;3826:4;3823:1;3816:15;3850:4;3847:1;3840:15;4119:184;4189:6;4242:2;4230:9;4221:7;4217:23;4213:32;4210:52;;;4258:1;4255;4248:12;4210:52;-1:-1:-1;4281:16:1;;4119:184;-1:-1:-1;4119:184:1:o;4638:225::-;4705:9;;;4726:11;;;4723:134;;;4779:10;4774:3;4770:20;4767:1;4760:31;4814:4;4811:1;4804:15;4842:4;4839:1;4832:15;4723:134;4638:225;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "298200",
"executionCost": "335",
"totalCost": "298535"
},
"external": {
"getHash(uint256,uint256,address[])": "infinite",
"getHashFromOracle(address,uint256,uint256)": "infinite",
"getHashesFromOracles(address[],uint256,uint256)": "infinite"
}
},
"methodIdentifiers": {
"getHash(uint256,uint256,address[])": "ead22754",
"getHashFromOracle(address,uint256,uint256)": "9e03f8c9",
"getHashesFromOracles(address[],uint256,uint256)": "3e144098"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
}
],
"name": "NoOracleAdaptersGiven",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "contract IOracleAdapter",
"name": "oracleAdapter",
"type": "address"
}
],
"name": "OracleDidNotReport",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "contract IOracleAdapter",
"name": "oracleOne",
"type": "address"
},
{
"internalType": "contract IOracleAdapter",
"name": "oracleTwo",
"type": "address"
}
],
"name": "OraclesDisagree",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "domain",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "contract IOracleAdapter[]",
"name": "oracleAdapters",
"type": "address[]"
}
],
"name": "getHash",
"outputs": [
{
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IOracleAdapter",
"name": "oracleAdapter",
"type": "address"
},
{
"internalType": "uint256",
"name": "domain",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getHashFromOracle",
"outputs": [
{
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IOracleAdapter[]",
"name": "oracleAdapters",
"type": "address[]"
},
{
"internalType": "uint256",
"name": "domain",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getHashesFromOracles",
"outputs": [
{
"internalType": "bytes32[]",
"name": "",
"type": "bytes32[]"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
}
],
"name": "NoOracleAdaptersGiven",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "contract IOracleAdapter",
"name": "oracleAdapter",
"type": "address"
}
],
"name": "OracleDidNotReport",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "emitter",
"type": "address"
},
{
"internalType": "contract IOracleAdapter",
"name": "oracleOne",
"type": "address"
},
{
"internalType": "contract IOracleAdapter",
"name": "oracleTwo",
"type": "address"
}
],
"name": "OraclesDisagree",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "domain",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "contract IOracleAdapter[]",
"name": "oracleAdapters",
"type": "address[]"
}
],
"name": "getHash",
"outputs": [
{
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IOracleAdapter",
"name": "oracleAdapter",
"type": "address"
},
{
"internalType": "uint256",
"name": "domain",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getHashFromOracle",
"outputs": [
{
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IOracleAdapter[]",
"name": "oracleAdapters",
"type": "address[]"
},
{
"internalType": "uint256",
"name": "domain",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "getHashesFromOracles",
"outputs": [
{
"internalType": "bytes32[]",
"name": "",
"type": "bytes32[]"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"getHash(uint256,uint256,address[])": {
"details": "Returns the hash unanimously agreed upon by a given set of oracles.",
"params": {
"domain": "ID of the domain to query.",
"id": "ID for which to return hash.",
"oracleAdapters": "Array of address for the oracle adapters to query."
},
"returns": {
"hash": "Hash agreed on by the given set of oracle adapters."
}
},
"getHashFromOracle(address,uint256,uint256)": {
"details": "Returns the hash reported by a given oracle for a given ID.",
"params": {
"domain": "Id of the domain to query.",
"id": "ID for which to return a hash.",
"oracleAdapter": "Address of the oracle adapter to query."
},
"returns": {
"hash": "Hash reported by the given oracle adapter for the given ID number."
}
},
"getHashesFromOracles(address[],uint256,uint256)": {
"details": "Returns the hash for a given ID reported by a given set of oracles.",
"params": {
"domain": "ID of the domain to query.",
"id": "ID for which to return hashs.",
"oracleAdapters": "Array of address for the oracle adapters to query."
},
"returns": {
"_0": "hashes Array of hash reported by the given oracle adapters for the given ID."
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"getHash(uint256,uint256,address[])": {
"notice": "MUST revert if oracles disagree on the hash or if an oracle does not report."
}
},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Hashi.sol": "Hashi"
},
"evmVersion": "shanghai",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Hashi.sol": {
"keccak256": "0xfb91fea8a57447ece56dedbb38bb8cc6654720ea93dec84713efbc7ef19baf09",
"urls": [
"bzz-raw://ca9bf5ae7b3fa2dfdaa8ffa1f11b9512a0d67971542ebbdf28ee2ebff377b05d",
"dweb:/ipfs/QmQmReER1ZNdmkYj8Zzq2W7EAYEHkUg8AFpVW4PwibTuiE"
]
}
},
"version": 1
}
// File: packages/evm/contracts/interfaces/IOracleAdapter.sol
pragma solidity ^0.8.17;
interface IOracleAdapter {
event HashStored(uint256 indexed id, bytes32 indexed hashes);
error InvalidBlockHeaderLength(uint256 length);
error InvalidBlockHeaderRLP();
error ConflictingBlockHeader(uint256 blockNumber, bytes32 reportedBlockHash, bytes32 storedBlockHash);
/// @dev Returns the hash for a given ID, as reported by the oracle.
/// @param domain Identifier for the domain to query.
/// @param id Identifier for the ID to query.
/// @return hash Bytes32 hash reported by the oracle for the given ID on the given domain.
/// @notice MUST return bytes32(0) if the oracle has not yet reported a hash for the given ID.
function getHashFromOracle(uint256 domain, uint256 id) external view returns (bytes32 hash);
}
// File: packages/evm/contracts/Hashi.sol
/*
███▄▄▄ ,▄▄███▄
████▀` ,╓▄▄▄████████████▄
███▌ ,╓▄▄▄▄█████████▀▀▀▀▀▀╙└`
███▌ ▀▀▀▀▀▀▀▀▀▀╙└└- ████L
███▌ ████` ╓██▄
███▌ ╓▄ ╓╓╓╓╓╓╓╓╓╓╓████▄╓╓╓╓╓╓╓╓╓╓╓╓╓╓▄███████▄
███▌ ▄█████▄ ▀▀▀▀▀▀▀▀▀▀████▀▀▀▀▀▀██▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
███████████████████████_ ▄███▀ ██µ
▐███▌ ,███▀ ▀██µ
████▌ ▄███▌, ▄████▄
▐████▌ ▄██▀████▀▀▀▀▀▀▀▀▀▀█████▀███▄
,█████▌ ,▄██▀_ ▓███ ▐███_ ▀████▄▄
██████▌, ▄██▀_ ▓███ ▐███_ ▀███████▄-
███▀███▌▀███▄ ╙" ▓███▄▄▄▄▄▄▄▄▄▄▄███_ `▀███└
▄██^ ███▌ ^████▄ ▓███▀▀▀▀▀▀▀▀▀▀▀███_ `
▄██_ ███▌ ╙███ ▓██▀ └▀▀_ ▄,
██▀ ███▌ ▀└ ▐███▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄████▄µ
██^ ███▌ ▐███▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀██████▀
╓█▀ ███▌ ▐███⌐ µ ╓ ▐███
▀ ███▌ ▐███⌐ ███▄▄▄▄▄▄▄████▄ ▐███
███▌ ▐███⌐ ████▀▀▀▀▀▀▀████▀ ▐███
███▌ ▐███⌐ ███▌ J███M ▐███
███▌ ▐███⌐ ███▌ J███M ▐███
███▌ ▐███⌐ ████▄▄▄▄▄▄████M ▐███
███▌ ▐███⌐ ███▌ ▐███M ▐███
███▌ ▐███⌐ ███▌ ▀▀_ ████
███▌ ▐███⌐ ▀▀_ ▀▀▀███████
███^ ▐███_ ▐██▀▀ 
Made with ❤️ by Gnosis Guild
*/
pragma solidity ^0.8.17;
contract Hashi {
error NoOracleAdaptersGiven(address emitter);
error OracleDidNotReport(address emitter, IOracleAdapter oracleAdapter);
error OraclesDisagree(address emitter, IOracleAdapter oracleOne, IOracleAdapter oracleTwo);
/// @dev Returns the hash reported by a given oracle for a given ID.
/// @param oracleAdapter Address of the oracle adapter to query.
/// @param domain Id of the domain to query.
/// @param id ID for which to return a hash.
/// @return hash Hash reported by the given oracle adapter for the given ID number.
function getHashFromOracle(
IOracleAdapter oracleAdapter,
uint256 domain,
uint256 id
) public view returns (bytes32 hash) {
hash = oracleAdapter.getHashFromOracle(domain, id);
}
/// @dev Returns the hash for a given ID reported by a given set of oracles.
/// @param oracleAdapters Array of address for the oracle adapters to query.
/// @param domain ID of the domain to query.
/// @param id ID for which to return hashs.
/// @return hashes Array of hash reported by the given oracle adapters for the given ID.
function getHashesFromOracles(
IOracleAdapter[] memory oracleAdapters,
uint256 domain,
uint256 id
) public view returns (bytes32[] memory) {
if (oracleAdapters.length == 0) revert NoOracleAdaptersGiven(address(this));
bytes32[] memory hashes = new bytes32[](oracleAdapters.length);
for (uint256 i = 0; i < oracleAdapters.length; i++) {
hashes[i] = getHashFromOracle(oracleAdapters[i], domain, id);
}
return hashes;
}
/// @dev Returns the hash unanimously agreed upon by a given set of oracles.
/// @param domain ID of the domain to query.
/// @param id ID for which to return hash.
/// @param oracleAdapters Array of address for the oracle adapters to query.
/// @return hash Hash agreed on by the given set of oracle adapters.
/// @notice MUST revert if oracles disagree on the hash or if an oracle does not report.
function getHash(
uint256 domain,
uint256 id,
IOracleAdapter[] memory oracleAdapters
) public view returns (bytes32 hash) {
if (oracleAdapters.length == 0) revert NoOracleAdaptersGiven(address(this));
bytes32[] memory hashes = getHashesFromOracles(oracleAdapters, domain, id);
hash = hashes[0];
if (hash == bytes32(0)) revert OracleDidNotReport(address(this), oracleAdapters[0]);
for (uint256 i = 1; i < hashes.length; i++) {
if (hashes[i] == bytes32(0)) revert OracleDidNotReport(address(this), oracleAdapters[i]);
if (hash != hashes[i]) revert OraclesDisagree(address(this), oracleAdapters[i - 1], oracleAdapters[i]);
}
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
import "./AMBHeaderReporter.sol";
contract PingPong {
uint256 public count;
event Ping(uint256 indexed count);
function ping() public {
emit Ping(count);
count++;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
import "solidity-rlp/contracts/RLPReader.sol";
import "./Hashi.sol";
import {Merkle} from "./libraries/Merkle.sol";
import {MerklePatriciaProof} from "./libraries/MerklePatriciaProof.sol";
struct EventProof {
bytes receiptsRootProofPath;
bytes receiptsRootProofParentNodes;
bytes receipt;
uint256 logIndex;
bytes blockHeader;
}
// block.parentHash,
// block.sha3Uncles,
// block.miner,
// block.stateRoot,
// block.transactionsRoot,
// block.receiptsRoot,
// block.logsBloom,
// block.difficulty,
// block.number,
// block.gasLimit,
// block.gasUsed,
// block.timestamp,
// block.extraData,
// block.mixHash,
// block.nonce,
// block.baseFeePerGas,
error InvalidEventEmitter(address proofEmitter, address actualEmitter);
error InvalidTopic(bytes32 topic, bytes32 expectedTopic);
error InvalidBlockHash(bytes32 blockHash, bytes32 expectedBlockHash);
error InvalidReceiptsRootMerkleProof();
error InvalidBlockHeaderLength(uint256 length);
contract VerifyEvent {
Hashi public hashi;
address public expectedPingPong;
IOracleAdapter public ambAdapter;
bytes32 public constant EVENT_SIGNATURE_TOPIC= 0x48257dc961b6f792c2b78a080dacfed693b660960a702de21cee364e20270e2f;
constructor(address hashi_, address pingpong_, address ambAdapter_){
hashi = Hashi(hashi_);
expectedPingPong = pingpong_;
ambAdapter = IOracleAdapter(ambAdapter_);
}
function verify(EventProof memory proof) external {
RLPReader.RLPItem memory blockHeaderRLP = RLPReader.toRlpItem(proof.blockHeader);
RLPReader.RLPItem[] memory blockHeaderContent = RLPReader.toList(blockHeaderRLP);
uint256 blockNumber = uint256(RLPReader.toUint(blockHeaderContent[8]));
bytes32 receiptRoot = bytes32(RLPReader.toUint(blockHeaderContent[6]));
RLPReader.RLPItem memory receiptRlpItem = RLPReader.toRlpItem(proof.receipt);
RLPReader.RLPItem[] memory receiptData = RLPReader.toList(receiptRlpItem);
RLPReader.RLPItem[] memory logs = RLPReader.toList(receiptData[3]); //logs[]
RLPReader.RLPItem[] memory log = RLPReader.toList(logs[proof.logIndex]); // log of the event
address pingpong = RLPReader.toAddress(log[0]);
// Check emit address
if(pingpong != expectedPingPong){
revert InvalidEventEmitter(pingpong, expectedPingPong);
}
RLPReader.RLPItem[] memory topics = RLPReader.toList(log[1]);
bytes32 pingPongTopic = bytes32(RLPReader.toBytes(topics[0]));
// Check event topic
if(EVENT_SIGNATURE_TOPIC != pingPongTopic){
revert InvalidTopic(pingPongTopic, EVENT_SIGNATURE_TOPIC);
}
// Check block hash
bytes32 reportedBlockHash = keccak256(proof.blockHeader);
// check the block number with Hashi
IOracleAdapter[] memory oracleAdapters = new IOracleAdapter[](1);
oracleAdapters[0] = ambAdapter;
bytes32[] memory expectedBlockHash = hashi.getHashesFromOracles(oracleAdapters,5,blockNumber);
if(expectedBlockHash[0]!=reportedBlockHash){
revert InvalidBlockHash(reportedBlockHash, expectedBlockHash[0]);
}
if (
!MerklePatriciaProof.verify(
proof.receipt,
proof.receiptsRootProofPath,
proof.receiptsRootProofParentNodes,
receiptRoot
)
) {
revert InvalidReceiptsRootMerkleProof();
}
}
}
View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

This file has been truncated, but you can view the full file.
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561000f575f80fd5b506103428061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c806356f90d79146100435780636c1e8a9514610075578063ceee6e5514610088575b5f80fd5b6100626100513660046101d1565b5f6020819052908152604090205481565b6040519081526020015b60405180910390f35b6100626100833660046101d1565b6100a8565b61009b6100963660046101fc565b61012f565b60405161006c91906102b5565b5f818152602081905260408120549081900361012a575080405f8190036100ef5760405163b4992a6b60e01b81523060048201526024810183905260440160405180910390fd5b5f8281526020819052604080822083905551829184917ff7df17dce0093aedfcbae24b4f04e823f9e863c97986ab1ba6c5267ace49ddea9190a35b919050565b60605f825167ffffffffffffffff81111561014c5761014c6101e8565b604051908082528060200260200182016040528015610175578160200160208202803683370190505b5090505f5b83518110156101ca576101a5848281518110610198576101986102f8565b60200260200101516100a8565b8282815181106101b7576101b76102f8565b602090810291909101015260010161017a565b5092915050565b5f602082840312156101e1575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f602080838503121561020d575f80fd5b823567ffffffffffffffff80821115610224575f80fd5b818501915085601f830112610237575f80fd5b813581811115610249576102496101e8565b8060051b604051601f19603f8301168101818110858211171561026e5761026e6101e8565b60405291825284820192508381018501918883111561028b575f80fd5b938501935b828510156102a957843584529385019392850192610290565b98975050505050505050565b602080825282518282018190525f9190848201906040850190845b818110156102ec578351835292840192918401916001016102d0565b50909695505050505050565b634e487b7160e01b5f52603260045260245ffdfea26469706673582212205a86fb515f4ddda151b3c919725ddee01af9aaf6a688098856f6a244b3d6b25c64736f6c63430008160033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH2 0x342 DUP1 PUSH2 0x1D PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x56F90D79 EQ PUSH2 0x43 JUMPI DUP1 PUSH4 0x6C1E8A95 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0xCEEE6E55 EQ PUSH2 0x88 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x62 PUSH2 0x51 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x62 PUSH2 0x83 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D1 JUMP JUMPDEST PUSH2 0xA8 JUMP JUMPDEST PUSH2 0x9B PUSH2 0x96 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x12F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6C SWAP2 SWAP1 PUSH2 0x2B5 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x12A JUMPI POP DUP1 BLOCKHASH PUSH0 DUP2 SWAP1 SUB PUSH2 0xEF JUMPI PUSH1 0x40 MLOAD PUSH4 0xB4992A6B PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP4 SWAP1 SSTORE MLOAD DUP3 SWAP2 DUP5 SWAP2 PUSH32 0xF7DF17DCE0093AEDFCBAE24B4F04E823F9E863C97986AB1BA6C5267ACE49DDEA SWAP2 SWAP1 LOG3 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14C JUMPI PUSH2 0x14C PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x175 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1CA JUMPI PUSH2 0x1A5 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x198 JUMPI PUSH2 0x198 PUSH2 0x2F8 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xA8 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B7 JUMPI PUSH2 0x1B7 PUSH2 0x2F8 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x17A JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E1 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20D JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x224 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x237 JUMPI PUSH0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x249 JUMPI PUSH2 0x249 PUSH2 0x1E8 JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x3F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT DUP6 DUP3 GT OR ISZERO PUSH2 0x26E JUMPI PUSH2 0x26E PUSH2 0x1E8 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 DUP3 MSTORE DUP5 DUP3 ADD SWAP3 POP DUP4 DUP2 ADD DUP6 ADD SWAP2 DUP9 DUP4 GT ISZERO PUSH2 0x28B JUMPI PUSH0 DUP1 REVERT JUMPDEST SWAP4 DUP6 ADD SWAP4 JUMPDEST DUP3 DUP6 LT ISZERO PUSH2 0x2A9 JUMPI DUP5 CALLDATALOAD DUP5 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP3 DUP6 ADD SWAP3 PUSH2 0x290 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2EC JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2D0 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GAS DUP7 0xFB MLOAD PUSH0 0x4D 0xDD LOG1 MLOAD 0xB3 0xC9 NOT PUSH19 0x5DDEE01AF9AAF6A688098856F6A244B3D6B25C PUSH5 0x736F6C6343 STOP ADDMOD AND STOP CALLER ",
"sourceMap": "16584:1515:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@headers_1225": {
"entryPoint": null,
"id": 1225,
"parameterSlots": 0,
"returnSlots": 0
},
"@storeBlockHeader_1286": {
"entryPoint": 168,
"id": 1286,
"parameterSlots": 1,
"returnSlots": 1
},
"@storeBlockHeaders_1334": {
"entryPoint": 303,
"id": 1334,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr": {
"entryPoint": 508,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 465,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed": {
"entryPoint": 693,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x32": {
"entryPoint": 760,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 488,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nativeSrc": "0:2678:1",
"nodeType": "YulBlock",
"src": "0:2678:1",
"statements": [
{
"nativeSrc": "6:3:1",
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nativeSrc": "84:110:1",
"nodeType": "YulBlock",
"src": "84:110:1",
"statements": [
{
"body": {
"nativeSrc": "130:16:1",
"nodeType": "YulBlock",
"src": "130:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "139:1:1",
"nodeType": "YulLiteral",
"src": "139:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "142:1:1",
"nodeType": "YulLiteral",
"src": "142:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "132:6:1",
"nodeType": "YulIdentifier",
"src": "132:6:1"
},
"nativeSrc": "132:12:1",
"nodeType": "YulFunctionCall",
"src": "132:12:1"
},
"nativeSrc": "132:12:1",
"nodeType": "YulExpressionStatement",
"src": "132:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "105:7:1",
"nodeType": "YulIdentifier",
"src": "105:7:1"
},
{
"name": "headStart",
"nativeSrc": "114:9:1",
"nodeType": "YulIdentifier",
"src": "114:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "101:3:1",
"nodeType": "YulIdentifier",
"src": "101:3:1"
},
"nativeSrc": "101:23:1",
"nodeType": "YulFunctionCall",
"src": "101:23:1"
},
{
"kind": "number",
"nativeSrc": "126:2:1",
"nodeType": "YulLiteral",
"src": "126:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "97:3:1",
"nodeType": "YulIdentifier",
"src": "97:3:1"
},
"nativeSrc": "97:32:1",
"nodeType": "YulFunctionCall",
"src": "97:32:1"
},
"nativeSrc": "94:52:1",
"nodeType": "YulIf",
"src": "94:52:1"
},
{
"nativeSrc": "155:33:1",
"nodeType": "YulAssignment",
"src": "155:33:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "178:9:1",
"nodeType": "YulIdentifier",
"src": "178:9:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "165:12:1",
"nodeType": "YulIdentifier",
"src": "165:12:1"
},
"nativeSrc": "165:23:1",
"nodeType": "YulFunctionCall",
"src": "165:23:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "155:6:1",
"nodeType": "YulIdentifier",
"src": "155:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nativeSrc": "14:180:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "50:9:1",
"nodeType": "YulTypedName",
"src": "50:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "61:7:1",
"nodeType": "YulTypedName",
"src": "61:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "73:6:1",
"nodeType": "YulTypedName",
"src": "73:6:1",
"type": ""
}
],
"src": "14:180:1"
},
{
"body": {
"nativeSrc": "300:76:1",
"nodeType": "YulBlock",
"src": "300:76:1",
"statements": [
{
"nativeSrc": "310:26:1",
"nodeType": "YulAssignment",
"src": "310:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "322:9:1",
"nodeType": "YulIdentifier",
"src": "322:9:1"
},
{
"kind": "number",
"nativeSrc": "333:2:1",
"nodeType": "YulLiteral",
"src": "333:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "318:3:1",
"nodeType": "YulIdentifier",
"src": "318:3:1"
},
"nativeSrc": "318:18:1",
"nodeType": "YulFunctionCall",
"src": "318:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "310:4:1",
"nodeType": "YulIdentifier",
"src": "310:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "352:9:1",
"nodeType": "YulIdentifier",
"src": "352:9:1"
},
{
"name": "value0",
"nativeSrc": "363:6:1",
"nodeType": "YulIdentifier",
"src": "363:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "345:6:1",
"nodeType": "YulIdentifier",
"src": "345:6:1"
},
"nativeSrc": "345:25:1",
"nodeType": "YulFunctionCall",
"src": "345:25:1"
},
"nativeSrc": "345:25:1",
"nodeType": "YulExpressionStatement",
"src": "345:25:1"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nativeSrc": "199:177:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "269:9:1",
"nodeType": "YulTypedName",
"src": "269:9:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "280:6:1",
"nodeType": "YulTypedName",
"src": "280:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "291:4:1",
"nodeType": "YulTypedName",
"src": "291:4:1",
"type": ""
}
],
"src": "199:177:1"
},
{
"body": {
"nativeSrc": "413:95:1",
"nodeType": "YulBlock",
"src": "413:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "430:1:1",
"nodeType": "YulLiteral",
"src": "430:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "437:3:1",
"nodeType": "YulLiteral",
"src": "437:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nativeSrc": "442:10:1",
"nodeType": "YulLiteral",
"src": "442:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "433:3:1",
"nodeType": "YulIdentifier",
"src": "433:3:1"
},
"nativeSrc": "433:20:1",
"nodeType": "YulFunctionCall",
"src": "433:20:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "423:6:1",
"nodeType": "YulIdentifier",
"src": "423:6:1"
},
"nativeSrc": "423:31:1",
"nodeType": "YulFunctionCall",
"src": "423:31:1"
},
"nativeSrc": "423:31:1",
"nodeType": "YulExpressionStatement",
"src": "423:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "470:1:1",
"nodeType": "YulLiteral",
"src": "470:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "473:4:1",
"nodeType": "YulLiteral",
"src": "473:4:1",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "463:6:1",
"nodeType": "YulIdentifier",
"src": "463:6:1"
},
"nativeSrc": "463:15:1",
"nodeType": "YulFunctionCall",
"src": "463:15:1"
},
"nativeSrc": "463:15:1",
"nodeType": "YulExpressionStatement",
"src": "463:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "494:1:1",
"nodeType": "YulLiteral",
"src": "494:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "497:4:1",
"nodeType": "YulLiteral",
"src": "497:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "487:6:1",
"nodeType": "YulIdentifier",
"src": "487:6:1"
},
"nativeSrc": "487:15:1",
"nodeType": "YulFunctionCall",
"src": "487:15:1"
},
"nativeSrc": "487:15:1",
"nodeType": "YulExpressionStatement",
"src": "487:15:1"
}
]
},
"name": "panic_error_0x41",
"nativeSrc": "381:127:1",
"nodeType": "YulFunctionDefinition",
"src": "381:127:1"
},
{
"body": {
"nativeSrc": "608:1020:1",
"nodeType": "YulBlock",
"src": "608:1020:1",
"statements": [
{
"nativeSrc": "618:12:1",
"nodeType": "YulVariableDeclaration",
"src": "618:12:1",
"value": {
"kind": "number",
"nativeSrc": "628:2:1",
"nodeType": "YulLiteral",
"src": "628:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nativeSrc": "622:2:1",
"nodeType": "YulTypedName",
"src": "622:2:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "675:16:1",
"nodeType": "YulBlock",
"src": "675:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "684:1:1",
"nodeType": "YulLiteral",
"src": "684:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "687:1:1",
"nodeType": "YulLiteral",
"src": "687:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "677:6:1",
"nodeType": "YulIdentifier",
"src": "677:6:1"
},
"nativeSrc": "677:12:1",
"nodeType": "YulFunctionCall",
"src": "677:12:1"
},
"nativeSrc": "677:12:1",
"nodeType": "YulExpressionStatement",
"src": "677:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "650:7:1",
"nodeType": "YulIdentifier",
"src": "650:7:1"
},
{
"name": "headStart",
"nativeSrc": "659:9:1",
"nodeType": "YulIdentifier",
"src": "659:9:1"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "646:3:1",
"nodeType": "YulIdentifier",
"src": "646:3:1"
},
"nativeSrc": "646:23:1",
"nodeType": "YulFunctionCall",
"src": "646:23:1"
},
{
"name": "_1",
"nativeSrc": "671:2:1",
"nodeType": "YulIdentifier",
"src": "671:2:1"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "642:3:1",
"nodeType": "YulIdentifier",
"src": "642:3:1"
},
"nativeSrc": "642:32:1",
"nodeType": "YulFunctionCall",
"src": "642:32:1"
},
"nativeSrc": "639:52:1",
"nodeType": "YulIf",
"src": "639:52:1"
},
{
"nativeSrc": "700:37:1",
"nodeType": "YulVariableDeclaration",
"src": "700:37:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "727:9:1",
"nodeType": "YulIdentifier",
"src": "727:9:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "714:12:1",
"nodeType": "YulIdentifier",
"src": "714:12:1"
},
"nativeSrc": "714:23:1",
"nodeType": "YulFunctionCall",
"src": "714:23:1"
},
"variables": [
{
"name": "offset",
"nativeSrc": "704:6:1",
"nodeType": "YulTypedName",
"src": "704:6:1",
"type": ""
}
]
},
{
"nativeSrc": "746:28:1",
"nodeType": "YulVariableDeclaration",
"src": "746:28:1",
"value": {
"kind": "number",
"nativeSrc": "756:18:1",
"nodeType": "YulLiteral",
"src": "756:18:1",
"type": "",
"value": "0xffffffffffffffff"
},
"variables": [
{
"name": "_2",
"nativeSrc": "750:2:1",
"nodeType": "YulTypedName",
"src": "750:2:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "801:16:1",
"nodeType": "YulBlock",
"src": "801:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "810:1:1",
"nodeType": "YulLiteral",
"src": "810:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "813:1:1",
"nodeType": "YulLiteral",
"src": "813:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "803:6:1",
"nodeType": "YulIdentifier",
"src": "803:6:1"
},
"nativeSrc": "803:12:1",
"nodeType": "YulFunctionCall",
"src": "803:12:1"
},
"nativeSrc": "803:12:1",
"nodeType": "YulExpressionStatement",
"src": "803:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nativeSrc": "789:6:1",
"nodeType": "YulIdentifier",
"src": "789:6:1"
},
{
"name": "_2",
"nativeSrc": "797:2:1",
"nodeType": "YulIdentifier",
"src": "797:2:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "786:2:1",
"nodeType": "YulIdentifier",
"src": "786:2:1"
},
"nativeSrc": "786:14:1",
"nodeType": "YulFunctionCall",
"src": "786:14:1"
},
"nativeSrc": "783:34:1",
"nodeType": "YulIf",
"src": "783:34:1"
},
{
"nativeSrc": "826:32:1",
"nodeType": "YulVariableDeclaration",
"src": "826:32:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "840:9:1",
"nodeType": "YulIdentifier",
"src": "840:9:1"
},
{
"name": "offset",
"nativeSrc": "851:6:1",
"nodeType": "YulIdentifier",
"src": "851:6:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "836:3:1",
"nodeType": "YulIdentifier",
"src": "836:3:1"
},
"nativeSrc": "836:22:1",
"nodeType": "YulFunctionCall",
"src": "836:22:1"
},
"variables": [
{
"name": "_3",
"nativeSrc": "830:2:1",
"nodeType": "YulTypedName",
"src": "830:2:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "906:16:1",
"nodeType": "YulBlock",
"src": "906:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "915:1:1",
"nodeType": "YulLiteral",
"src": "915:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "918:1:1",
"nodeType": "YulLiteral",
"src": "918:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "908:6:1",
"nodeType": "YulIdentifier",
"src": "908:6:1"
},
"nativeSrc": "908:12:1",
"nodeType": "YulFunctionCall",
"src": "908:12:1"
},
"nativeSrc": "908:12:1",
"nodeType": "YulExpressionStatement",
"src": "908:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_3",
"nativeSrc": "885:2:1",
"nodeType": "YulIdentifier",
"src": "885:2:1"
},
{
"kind": "number",
"nativeSrc": "889:4:1",
"nodeType": "YulLiteral",
"src": "889:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nativeSrc": "881:3:1",
"nodeType": "YulIdentifier",
"src": "881:3:1"
},
"nativeSrc": "881:13:1",
"nodeType": "YulFunctionCall",
"src": "881:13:1"
},
{
"name": "dataEnd",
"nativeSrc": "896:7:1",
"nodeType": "YulIdentifier",
"src": "896:7:1"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "877:3:1",
"nodeType": "YulIdentifier",
"src": "877:3:1"
},
"nativeSrc": "877:27:1",
"nodeType": "YulFunctionCall",
"src": "877:27:1"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "870:6:1",
"nodeType": "YulIdentifier",
"src": "870:6:1"
},
"nativeSrc": "870:35:1",
"nodeType": "YulFunctionCall",
"src": "870:35:1"
},
"nativeSrc": "867:55:1",
"nodeType": "YulIf",
"src": "867:55:1"
},
{
"nativeSrc": "931:26:1",
"nodeType": "YulVariableDeclaration",
"src": "931:26:1",
"value": {
"arguments": [
{
"name": "_3",
"nativeSrc": "954:2:1",
"nodeType": "YulIdentifier",
"src": "954:2:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "941:12:1",
"nodeType": "YulIdentifier",
"src": "941:12:1"
},
"nativeSrc": "941:16:1",
"nodeType": "YulFunctionCall",
"src": "941:16:1"
},
"variables": [
{
"name": "_4",
"nativeSrc": "935:2:1",
"nodeType": "YulTypedName",
"src": "935:2:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "980:22:1",
"nodeType": "YulBlock",
"src": "980:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "982:16:1",
"nodeType": "YulIdentifier",
"src": "982:16:1"
},
"nativeSrc": "982:18:1",
"nodeType": "YulFunctionCall",
"src": "982:18:1"
},
"nativeSrc": "982:18:1",
"nodeType": "YulExpressionStatement",
"src": "982:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "_4",
"nativeSrc": "972:2:1",
"nodeType": "YulIdentifier",
"src": "972:2:1"
},
{
"name": "_2",
"nativeSrc": "976:2:1",
"nodeType": "YulIdentifier",
"src": "976:2:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "969:2:1",
"nodeType": "YulIdentifier",
"src": "969:2:1"
},
"nativeSrc": "969:10:1",
"nodeType": "YulFunctionCall",
"src": "969:10:1"
},
"nativeSrc": "966:36:1",
"nodeType": "YulIf",
"src": "966:36:1"
},
{
"nativeSrc": "1011:20:1",
"nodeType": "YulVariableDeclaration",
"src": "1011:20:1",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1025:1:1",
"nodeType": "YulLiteral",
"src": "1025:1:1",
"type": "",
"value": "5"
},
{
"name": "_4",
"nativeSrc": "1028:2:1",
"nodeType": "YulIdentifier",
"src": "1028:2:1"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "1021:3:1",
"nodeType": "YulIdentifier",
"src": "1021:3:1"
},
"nativeSrc": "1021:10:1",
"nodeType": "YulFunctionCall",
"src": "1021:10:1"
},
"variables": [
{
"name": "_5",
"nativeSrc": "1015:2:1",
"nodeType": "YulTypedName",
"src": "1015:2:1",
"type": ""
}
]
},
{
"nativeSrc": "1040:23:1",
"nodeType": "YulVariableDeclaration",
"src": "1040:23:1",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1060:2:1",
"nodeType": "YulLiteral",
"src": "1060:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "1054:5:1",
"nodeType": "YulIdentifier",
"src": "1054:5:1"
},
"nativeSrc": "1054:9:1",
"nodeType": "YulFunctionCall",
"src": "1054:9:1"
},
"variables": [
{
"name": "memPtr",
"nativeSrc": "1044:6:1",
"nodeType": "YulTypedName",
"src": "1044:6:1",
"type": ""
}
]
},
{
"nativeSrc": "1072:56:1",
"nodeType": "YulVariableDeclaration",
"src": "1072:56:1",
"value": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "1094:6:1",
"nodeType": "YulIdentifier",
"src": "1094:6:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "_5",
"nativeSrc": "1110:2:1",
"nodeType": "YulIdentifier",
"src": "1110:2:1"
},
{
"kind": "number",
"nativeSrc": "1114:2:1",
"nodeType": "YulLiteral",
"src": "1114:2:1",
"type": "",
"value": "63"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1106:3:1",
"nodeType": "YulIdentifier",
"src": "1106:3:1"
},
"nativeSrc": "1106:11:1",
"nodeType": "YulFunctionCall",
"src": "1106:11:1"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "1123:2:1",
"nodeType": "YulLiteral",
"src": "1123:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nativeSrc": "1119:3:1",
"nodeType": "YulIdentifier",
"src": "1119:3:1"
},
"nativeSrc": "1119:7:1",
"nodeType": "YulFunctionCall",
"src": "1119:7:1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "1102:3:1",
"nodeType": "YulIdentifier",
"src": "1102:3:1"
},
"nativeSrc": "1102:25:1",
"nodeType": "YulFunctionCall",
"src": "1102:25:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1090:3:1",
"nodeType": "YulIdentifier",
"src": "1090:3:1"
},
"nativeSrc": "1090:38:1",
"nodeType": "YulFunctionCall",
"src": "1090:38:1"
},
"variables": [
{
"name": "newFreePtr",
"nativeSrc": "1076:10:1",
"nodeType": "YulTypedName",
"src": "1076:10:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "1187:22:1",
"nodeType": "YulBlock",
"src": "1187:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "1189:16:1",
"nodeType": "YulIdentifier",
"src": "1189:16:1"
},
"nativeSrc": "1189:18:1",
"nodeType": "YulFunctionCall",
"src": "1189:18:1"
},
"nativeSrc": "1189:18:1",
"nodeType": "YulExpressionStatement",
"src": "1189:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "1146:10:1",
"nodeType": "YulIdentifier",
"src": "1146:10:1"
},
{
"name": "_2",
"nativeSrc": "1158:2:1",
"nodeType": "YulIdentifier",
"src": "1158:2:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "1143:2:1",
"nodeType": "YulIdentifier",
"src": "1143:2:1"
},
"nativeSrc": "1143:18:1",
"nodeType": "YulFunctionCall",
"src": "1143:18:1"
},
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "1166:10:1",
"nodeType": "YulIdentifier",
"src": "1166:10:1"
},
{
"name": "memPtr",
"nativeSrc": "1178:6:1",
"nodeType": "YulIdentifier",
"src": "1178:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "1163:2:1",
"nodeType": "YulIdentifier",
"src": "1163:2:1"
},
"nativeSrc": "1163:22:1",
"nodeType": "YulFunctionCall",
"src": "1163:22:1"
}
],
"functionName": {
"name": "or",
"nativeSrc": "1140:2:1",
"nodeType": "YulIdentifier",
"src": "1140:2:1"
},
"nativeSrc": "1140:46:1",
"nodeType": "YulFunctionCall",
"src": "1140:46:1"
},
"nativeSrc": "1137:72:1",
"nodeType": "YulIf",
"src": "1137:72:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1225:2:1",
"nodeType": "YulLiteral",
"src": "1225:2:1",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nativeSrc": "1229:10:1",
"nodeType": "YulIdentifier",
"src": "1229:10:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1218:6:1",
"nodeType": "YulIdentifier",
"src": "1218:6:1"
},
"nativeSrc": "1218:22:1",
"nodeType": "YulFunctionCall",
"src": "1218:22:1"
},
"nativeSrc": "1218:22:1",
"nodeType": "YulExpressionStatement",
"src": "1218:22:1"
},
{
"nativeSrc": "1249:17:1",
"nodeType": "YulVariableDeclaration",
"src": "1249:17:1",
"value": {
"name": "memPtr",
"nativeSrc": "1260:6:1",
"nodeType": "YulIdentifier",
"src": "1260:6:1"
},
"variables": [
{
"name": "dst",
"nativeSrc": "1253:3:1",
"nodeType": "YulTypedName",
"src": "1253:3:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "1282:6:1",
"nodeType": "YulIdentifier",
"src": "1282:6:1"
},
{
"name": "_4",
"nativeSrc": "1290:2:1",
"nodeType": "YulIdentifier",
"src": "1290:2:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1275:6:1",
"nodeType": "YulIdentifier",
"src": "1275:6:1"
},
"nativeSrc": "1275:18:1",
"nodeType": "YulFunctionCall",
"src": "1275:18:1"
},
"nativeSrc": "1275:18:1",
"nodeType": "YulExpressionStatement",
"src": "1275:18:1"
},
{
"nativeSrc": "1302:22:1",
"nodeType": "YulAssignment",
"src": "1302:22:1",
"value": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "1313:6:1",
"nodeType": "YulIdentifier",
"src": "1313:6:1"
},
{
"name": "_1",
"nativeSrc": "1321:2:1",
"nodeType": "YulIdentifier",
"src": "1321:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1309:3:1",
"nodeType": "YulIdentifier",
"src": "1309:3:1"
},
"nativeSrc": "1309:15:1",
"nodeType": "YulFunctionCall",
"src": "1309:15:1"
},
"variableNames": [
{
"name": "dst",
"nativeSrc": "1302:3:1",
"nodeType": "YulIdentifier",
"src": "1302:3:1"
}
]
},
{
"nativeSrc": "1333:34:1",
"nodeType": "YulVariableDeclaration",
"src": "1333:34:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_3",
"nativeSrc": "1355:2:1",
"nodeType": "YulIdentifier",
"src": "1355:2:1"
},
{
"name": "_5",
"nativeSrc": "1359:2:1",
"nodeType": "YulIdentifier",
"src": "1359:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1351:3:1",
"nodeType": "YulIdentifier",
"src": "1351:3:1"
},
"nativeSrc": "1351:11:1",
"nodeType": "YulFunctionCall",
"src": "1351:11:1"
},
{
"name": "_1",
"nativeSrc": "1364:2:1",
"nodeType": "YulIdentifier",
"src": "1364:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1347:3:1",
"nodeType": "YulIdentifier",
"src": "1347:3:1"
},
"nativeSrc": "1347:20:1",
"nodeType": "YulFunctionCall",
"src": "1347:20:1"
},
"variables": [
{
"name": "srcEnd",
"nativeSrc": "1337:6:1",
"nodeType": "YulTypedName",
"src": "1337:6:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "1399:16:1",
"nodeType": "YulBlock",
"src": "1399:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "1408:1:1",
"nodeType": "YulLiteral",
"src": "1408:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "1411:1:1",
"nodeType": "YulLiteral",
"src": "1411:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "1401:6:1",
"nodeType": "YulIdentifier",
"src": "1401:6:1"
},
"nativeSrc": "1401:12:1",
"nodeType": "YulFunctionCall",
"src": "1401:12:1"
},
"nativeSrc": "1401:12:1",
"nodeType": "YulExpressionStatement",
"src": "1401:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "srcEnd",
"nativeSrc": "1382:6:1",
"nodeType": "YulIdentifier",
"src": "1382:6:1"
},
{
"name": "dataEnd",
"nativeSrc": "1390:7:1",
"nodeType": "YulIdentifier",
"src": "1390:7:1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "1379:2:1",
"nodeType": "YulIdentifier",
"src": "1379:2:1"
},
"nativeSrc": "1379:19:1",
"nodeType": "YulFunctionCall",
"src": "1379:19:1"
},
"nativeSrc": "1376:39:1",
"nodeType": "YulIf",
"src": "1376:39:1"
},
{
"nativeSrc": "1424:22:1",
"nodeType": "YulVariableDeclaration",
"src": "1424:22:1",
"value": {
"arguments": [
{
"name": "_3",
"nativeSrc": "1439:2:1",
"nodeType": "YulIdentifier",
"src": "1439:2:1"
},
{
"name": "_1",
"nativeSrc": "1443:2:1",
"nodeType": "YulIdentifier",
"src": "1443:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1435:3:1",
"nodeType": "YulIdentifier",
"src": "1435:3:1"
},
"nativeSrc": "1435:11:1",
"nodeType": "YulFunctionCall",
"src": "1435:11:1"
},
"variables": [
{
"name": "src",
"nativeSrc": "1428:3:1",
"nodeType": "YulTypedName",
"src": "1428:3:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "1511:86:1",
"nodeType": "YulBlock",
"src": "1511:86:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nativeSrc": "1532:3:1",
"nodeType": "YulIdentifier",
"src": "1532:3:1"
},
{
"arguments": [
{
"name": "src",
"nativeSrc": "1550:3:1",
"nodeType": "YulIdentifier",
"src": "1550:3:1"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "1537:12:1",
"nodeType": "YulIdentifier",
"src": "1537:12:1"
},
"nativeSrc": "1537:17:1",
"nodeType": "YulFunctionCall",
"src": "1537:17:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1525:6:1",
"nodeType": "YulIdentifier",
"src": "1525:6:1"
},
"nativeSrc": "1525:30:1",
"nodeType": "YulFunctionCall",
"src": "1525:30:1"
},
"nativeSrc": "1525:30:1",
"nodeType": "YulExpressionStatement",
"src": "1525:30:1"
},
{
"nativeSrc": "1568:19:1",
"nodeType": "YulAssignment",
"src": "1568:19:1",
"value": {
"arguments": [
{
"name": "dst",
"nativeSrc": "1579:3:1",
"nodeType": "YulIdentifier",
"src": "1579:3:1"
},
{
"name": "_1",
"nativeSrc": "1584:2:1",
"nodeType": "YulIdentifier",
"src": "1584:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1575:3:1",
"nodeType": "YulIdentifier",
"src": "1575:3:1"
},
"nativeSrc": "1575:12:1",
"nodeType": "YulFunctionCall",
"src": "1575:12:1"
},
"variableNames": [
{
"name": "dst",
"nativeSrc": "1568:3:1",
"nodeType": "YulIdentifier",
"src": "1568:3:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "src",
"nativeSrc": "1466:3:1",
"nodeType": "YulIdentifier",
"src": "1466:3:1"
},
{
"name": "srcEnd",
"nativeSrc": "1471:6:1",
"nodeType": "YulIdentifier",
"src": "1471:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "1463:2:1",
"nodeType": "YulIdentifier",
"src": "1463:2:1"
},
"nativeSrc": "1463:15:1",
"nodeType": "YulFunctionCall",
"src": "1463:15:1"
},
"nativeSrc": "1455:142:1",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "1479:23:1",
"nodeType": "YulBlock",
"src": "1479:23:1",
"statements": [
{
"nativeSrc": "1481:19:1",
"nodeType": "YulAssignment",
"src": "1481:19:1",
"value": {
"arguments": [
{
"name": "src",
"nativeSrc": "1492:3:1",
"nodeType": "YulIdentifier",
"src": "1492:3:1"
},
{
"name": "_1",
"nativeSrc": "1497:2:1",
"nodeType": "YulIdentifier",
"src": "1497:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1488:3:1",
"nodeType": "YulIdentifier",
"src": "1488:3:1"
},
"nativeSrc": "1488:12:1",
"nodeType": "YulFunctionCall",
"src": "1488:12:1"
},
"variableNames": [
{
"name": "src",
"nativeSrc": "1481:3:1",
"nodeType": "YulIdentifier",
"src": "1481:3:1"
}
]
}
]
},
"pre": {
"nativeSrc": "1459:3:1",
"nodeType": "YulBlock",
"src": "1459:3:1",
"statements": []
},
"src": "1455:142:1"
},
{
"nativeSrc": "1606:16:1",
"nodeType": "YulAssignment",
"src": "1606:16:1",
"value": {
"name": "memPtr",
"nativeSrc": "1616:6:1",
"nodeType": "YulIdentifier",
"src": "1616:6:1"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "1606:6:1",
"nodeType": "YulIdentifier",
"src": "1606:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr",
"nativeSrc": "513:1115:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "574:9:1",
"nodeType": "YulTypedName",
"src": "574:9:1",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "585:7:1",
"nodeType": "YulTypedName",
"src": "585:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "597:6:1",
"nodeType": "YulTypedName",
"src": "597:6:1",
"type": ""
}
],
"src": "513:1115:1"
},
{
"body": {
"nativeSrc": "1784:481:1",
"nodeType": "YulBlock",
"src": "1784:481:1",
"statements": [
{
"nativeSrc": "1794:12:1",
"nodeType": "YulVariableDeclaration",
"src": "1794:12:1",
"value": {
"kind": "number",
"nativeSrc": "1804:2:1",
"nodeType": "YulLiteral",
"src": "1804:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nativeSrc": "1798:2:1",
"nodeType": "YulTypedName",
"src": "1798:2:1",
"type": ""
}
]
},
{
"nativeSrc": "1815:32:1",
"nodeType": "YulVariableDeclaration",
"src": "1815:32:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "1833:9:1",
"nodeType": "YulIdentifier",
"src": "1833:9:1"
},
{
"kind": "number",
"nativeSrc": "1844:2:1",
"nodeType": "YulLiteral",
"src": "1844:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1829:3:1",
"nodeType": "YulIdentifier",
"src": "1829:3:1"
},
"nativeSrc": "1829:18:1",
"nodeType": "YulFunctionCall",
"src": "1829:18:1"
},
"variables": [
{
"name": "tail_1",
"nativeSrc": "1819:6:1",
"nodeType": "YulTypedName",
"src": "1819:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "1863:9:1",
"nodeType": "YulIdentifier",
"src": "1863:9:1"
},
{
"kind": "number",
"nativeSrc": "1874:2:1",
"nodeType": "YulLiteral",
"src": "1874:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1856:6:1",
"nodeType": "YulIdentifier",
"src": "1856:6:1"
},
"nativeSrc": "1856:21:1",
"nodeType": "YulFunctionCall",
"src": "1856:21:1"
},
"nativeSrc": "1856:21:1",
"nodeType": "YulExpressionStatement",
"src": "1856:21:1"
},
{
"nativeSrc": "1886:17:1",
"nodeType": "YulVariableDeclaration",
"src": "1886:17:1",
"value": {
"name": "tail_1",
"nativeSrc": "1897:6:1",
"nodeType": "YulIdentifier",
"src": "1897:6:1"
},
"variables": [
{
"name": "pos",
"nativeSrc": "1890:3:1",
"nodeType": "YulTypedName",
"src": "1890:3:1",
"type": ""
}
]
},
{
"nativeSrc": "1912:27:1",
"nodeType": "YulVariableDeclaration",
"src": "1912:27:1",
"value": {
"arguments": [
{
"name": "value0",
"nativeSrc": "1932:6:1",
"nodeType": "YulIdentifier",
"src": "1932:6:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "1926:5:1",
"nodeType": "YulIdentifier",
"src": "1926:5:1"
},
"nativeSrc": "1926:13:1",
"nodeType": "YulFunctionCall",
"src": "1926:13:1"
},
"variables": [
{
"name": "length",
"nativeSrc": "1916:6:1",
"nodeType": "YulTypedName",
"src": "1916:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "tail_1",
"nativeSrc": "1955:6:1",
"nodeType": "YulIdentifier",
"src": "1955:6:1"
},
{
"name": "length",
"nativeSrc": "1963:6:1",
"nodeType": "YulIdentifier",
"src": "1963:6:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1948:6:1",
"nodeType": "YulIdentifier",
"src": "1948:6:1"
},
"nativeSrc": "1948:22:1",
"nodeType": "YulFunctionCall",
"src": "1948:22:1"
},
"nativeSrc": "1948:22:1",
"nodeType": "YulExpressionStatement",
"src": "1948:22:1"
},
{
"nativeSrc": "1979:25:1",
"nodeType": "YulAssignment",
"src": "1979:25:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "1990:9:1",
"nodeType": "YulIdentifier",
"src": "1990:9:1"
},
{
"kind": "number",
"nativeSrc": "2001:2:1",
"nodeType": "YulLiteral",
"src": "2001:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1986:3:1",
"nodeType": "YulIdentifier",
"src": "1986:3:1"
},
"nativeSrc": "1986:18:1",
"nodeType": "YulFunctionCall",
"src": "1986:18:1"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "1979:3:1",
"nodeType": "YulIdentifier",
"src": "1979:3:1"
}
]
},
{
"nativeSrc": "2013:29:1",
"nodeType": "YulVariableDeclaration",
"src": "2013:29:1",
"value": {
"arguments": [
{
"name": "value0",
"nativeSrc": "2031:6:1",
"nodeType": "YulIdentifier",
"src": "2031:6:1"
},
{
"kind": "number",
"nativeSrc": "2039:2:1",
"nodeType": "YulLiteral",
"src": "2039:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2027:3:1",
"nodeType": "YulIdentifier",
"src": "2027:3:1"
},
"nativeSrc": "2027:15:1",
"nodeType": "YulFunctionCall",
"src": "2027:15:1"
},
"variables": [
{
"name": "srcPtr",
"nativeSrc": "2017:6:1",
"nodeType": "YulTypedName",
"src": "2017:6:1",
"type": ""
}
]
},
{
"nativeSrc": "2051:10:1",
"nodeType": "YulVariableDeclaration",
"src": "2051:10:1",
"value": {
"kind": "number",
"nativeSrc": "2060:1:1",
"nodeType": "YulLiteral",
"src": "2060:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nativeSrc": "2055:1:1",
"nodeType": "YulTypedName",
"src": "2055:1:1",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "2119:120:1",
"nodeType": "YulBlock",
"src": "2119:120:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "2140:3:1",
"nodeType": "YulIdentifier",
"src": "2140:3:1"
},
{
"arguments": [
{
"name": "srcPtr",
"nativeSrc": "2151:6:1",
"nodeType": "YulIdentifier",
"src": "2151:6:1"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "2145:5:1",
"nodeType": "YulIdentifier",
"src": "2145:5:1"
},
"nativeSrc": "2145:13:1",
"nodeType": "YulFunctionCall",
"src": "2145:13:1"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2133:6:1",
"nodeType": "YulIdentifier",
"src": "2133:6:1"
},
"nativeSrc": "2133:26:1",
"nodeType": "YulFunctionCall",
"src": "2133:26:1"
},
"nativeSrc": "2133:26:1",
"nodeType": "YulExpressionStatement",
"src": "2133:26:1"
},
{
"nativeSrc": "2172:19:1",
"nodeType": "YulAssignment",
"src": "2172:19:1",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "2183:3:1",
"nodeType": "YulIdentifier",
"src": "2183:3:1"
},
{
"name": "_1",
"nativeSrc": "2188:2:1",
"nodeType": "YulIdentifier",
"src": "2188:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2179:3:1",
"nodeType": "YulIdentifier",
"src": "2179:3:1"
},
"nativeSrc": "2179:12:1",
"nodeType": "YulFunctionCall",
"src": "2179:12:1"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "2172:3:1",
"nodeType": "YulIdentifier",
"src": "2172:3:1"
}
]
},
{
"nativeSrc": "2204:25:1",
"nodeType": "YulAssignment",
"src": "2204:25:1",
"value": {
"arguments": [
{
"name": "srcPtr",
"nativeSrc": "2218:6:1",
"nodeType": "YulIdentifier",
"src": "2218:6:1"
},
{
"name": "_1",
"nativeSrc": "2226:2:1",
"nodeType": "YulIdentifier",
"src": "2226:2:1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2214:3:1",
"nodeType": "YulIdentifier",
"src": "2214:3:1"
},
"nativeSrc": "2214:15:1",
"nodeType": "YulFunctionCall",
"src": "2214:15:1"
},
"variableNames": [
{
"name": "srcPtr",
"nativeSrc": "2204:6:1",
"nodeType": "YulIdentifier",
"src": "2204:6:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nativeSrc": "2081:1:1",
"nodeType": "YulIdentifier",
"src": "2081:1:1"
},
{
"name": "length",
"nativeSrc": "2084:6:1",
"nodeType": "YulIdentifier",
"src": "2084:6:1"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "2078:2:1",
"nodeType": "YulIdentifier",
"src": "2078:2:1"
},
"nativeSrc": "2078:13:1",
"nodeType": "YulFunctionCall",
"src": "2078:13:1"
},
"nativeSrc": "2070:169:1",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "2092:18:1",
"nodeType": "YulBlock",
"src": "2092:18:1",
"statements": [
{
"nativeSrc": "2094:14:1",
"nodeType": "YulAssignment",
"src": "2094:14:1",
"value": {
"arguments": [
{
"name": "i",
"nativeSrc": "2103:1:1",
"nodeType": "YulIdentifier",
"src": "2103:1:1"
},
{
"kind": "number",
"nativeSrc": "2106:1:1",
"nodeType": "YulLiteral",
"src": "2106:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2099:3:1",
"nodeType": "YulIdentifier",
"src": "2099:3:1"
},
"nativeSrc": "2099:9:1",
"nodeType": "YulFunctionCall",
"src": "2099:9:1"
},
"variableNames": [
{
"name": "i",
"nativeSrc": "2094:1:1",
"nodeType": "YulIdentifier",
"src": "2094:1:1"
}
]
}
]
},
"pre": {
"nativeSrc": "2074:3:1",
"nodeType": "YulBlock",
"src": "2074:3:1",
"statements": []
},
"src": "2070:169:1"
},
{
"nativeSrc": "2248:11:1",
"nodeType": "YulAssignment",
"src": "2248:11:1",
"value": {
"name": "pos",
"nativeSrc": "2256:3:1",
"nodeType": "YulIdentifier",
"src": "2256:3:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "2248:4:1",
"nodeType": "YulIdentifier",
"src": "2248:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed",
"nativeSrc": "1633:632:1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "1753:9:1",
"nodeType": "YulTypedName",
"src": "1753:9:1",
"type": ""
},
{
"name": "value0",
"nativeSrc": "1764:6:1",
"nodeType": "YulTypedName",
"src": "1764:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "1775:4:1",
"nodeType": "YulTypedName",
"src": "1775:4:1",
"type": ""
}
],
"src": "1633:632:1"
},
{
"body": {
"nativeSrc": "2399:145:1",
"nodeType": "YulBlock",
"src": "2399:145:1",
"statements": [
{
"nativeSrc": "2409:26:1",
"nodeType": "YulAssignment",
"src": "2409:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "2421:9:1",
"nodeType": "YulIdentifier",
"src": "2421:9:1"
},
{
"kind": "number",
"nativeSrc": "2432:2:1",
"nodeType": "YulLiteral",
"src": "2432:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2417:3:1",
"nodeType": "YulIdentifier",
"src": "2417:3:1"
},
"nativeSrc": "2417:18:1",
"nodeType": "YulFunctionCall",
"src": "2417:18:1"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "2409:4:1",
"nodeType": "YulIdentifier",
"src": "2409:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "2451:9:1",
"nodeType": "YulIdentifier",
"src": "2451:9:1"
},
{
"arguments": [
{
"name": "value0",
"nativeSrc": "2466:6:1",
"nodeType": "YulIdentifier",
"src": "2466:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "2482:3:1",
"nodeType": "YulLiteral",
"src": "2482:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nativeSrc": "2487:1:1",
"nodeType": "YulLiteral",
"src": "2487:1:1",
"type": "",
"value": "1"
View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

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