Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save patsissons/6c4945f28adab36d231090f49e22ac7e to your computer and use it in GitHub Desktop.
Save patsissons/6c4945f28adab36d231090f49e22ac7e 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=undefined&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (access/AccessControl.sol)
pragma solidity ^0.8.0;
import "./IAccessControl.sol";
import "../utils/Context.sol";
import "../utils/Strings.sol";
import "../utils/introspection/ERC165.sol";
/**
* @dev Contract module that allows children to implement role-based access
* control mechanisms. This is a lightweight version that doesn't allow enumerating role
* members except through off-chain means by accessing the contract event logs. Some
* applications may benefit from on-chain enumerability, for those cases see
* {AccessControlEnumerable}.
*
* Roles are referred to by their `bytes32` identifier. These should be exposed
* in the external API and be unique. The best way to achieve this is by
* using `public constant` hash digests:
*
* ```
* bytes32 public constant MY_ROLE = keccak256("MY_ROLE");
* ```
*
* Roles can be used to represent a set of permissions. To restrict access to a
* function call, use {hasRole}:
*
* ```
* function foo() public {
* require(hasRole(MY_ROLE, msg.sender));
* ...
* }
* ```
*
* Roles can be granted and revoked dynamically via the {grantRole} and
* {revokeRole} functions. Each role has an associated admin role, and only
* accounts that have a role's admin role can call {grantRole} and {revokeRole}.
*
* By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means
* that only accounts with this role will be able to grant or revoke other
* roles. More complex role relationships can be created by using
* {_setRoleAdmin}.
*
* WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to
* grant and revoke this role. Extra precautions should be taken to secure
* accounts that have been granted it.
*/
abstract contract AccessControl is Context, IAccessControl, ERC165 {
struct RoleData {
mapping(address => bool) members;
bytes32 adminRole;
}
mapping(bytes32 => RoleData) private _roles;
bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;
/**
* @dev Modifier that checks that an account has a specific role. Reverts
* with a standardized message including the required role.
*
* The format of the revert reason is given by the following regular expression:
*
* /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
*
* _Available since v4.1._
*/
modifier onlyRole(bytes32 role) {
_checkRole(role);
_;
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
}
/**
* @dev Returns `true` if `account` has been granted `role`.
*/
function hasRole(bytes32 role, address account) public view virtual override returns (bool) {
return _roles[role].members[account];
}
/**
* @dev Revert with a standard message if `_msgSender()` is missing `role`.
* Overriding this function changes the behavior of the {onlyRole} modifier.
*
* Format of the revert message is described in {_checkRole}.
*
* _Available since v4.6._
*/
function _checkRole(bytes32 role) internal view virtual {
_checkRole(role, _msgSender());
}
/**
* @dev Revert with a standard message if `account` is missing `role`.
*
* The format of the revert reason is given by the following regular expression:
*
* /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
*/
function _checkRole(bytes32 role, address account) internal view virtual {
if (!hasRole(role, account)) {
revert(
string(
abi.encodePacked(
"AccessControl: account ",
Strings.toHexString(account),
" is missing role ",
Strings.toHexString(uint256(role), 32)
)
)
);
}
}
/**
* @dev Returns the admin role that controls `role`. See {grantRole} and
* {revokeRole}.
*
* To change a role's admin, use {_setRoleAdmin}.
*/
function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {
return _roles[role].adminRole;
}
/**
* @dev Grants `role` to `account`.
*
* If `account` had not been already granted `role`, emits a {RoleGranted}
* event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*
* May emit a {RoleGranted} event.
*/
function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
_grantRole(role, account);
}
/**
* @dev Revokes `role` from `account`.
*
* If `account` had been granted `role`, emits a {RoleRevoked} event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*
* May emit a {RoleRevoked} event.
*/
function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
_revokeRole(role, account);
}
/**
* @dev Revokes `role` from the calling account.
*
* Roles are often managed via {grantRole} and {revokeRole}: this function's
* purpose is to provide a mechanism for accounts to lose their privileges
* if they are compromised (such as when a trusted device is misplaced).
*
* If the calling account had been revoked `role`, emits a {RoleRevoked}
* event.
*
* Requirements:
*
* - the caller must be `account`.
*
* May emit a {RoleRevoked} event.
*/
function renounceRole(bytes32 role, address account) public virtual override {
require(account == _msgSender(), "AccessControl: can only renounce roles for self");
_revokeRole(role, account);
}
/**
* @dev Grants `role` to `account`.
*
* If `account` had not been already granted `role`, emits a {RoleGranted}
* event. Note that unlike {grantRole}, this function doesn't perform any
* checks on the calling account.
*
* May emit a {RoleGranted} event.
*
* [WARNING]
* ====
* This function should only be called from the constructor when setting
* up the initial roles for the system.
*
* Using this function in any other way is effectively circumventing the admin
* system imposed by {AccessControl}.
* ====
*
* NOTE: This function is deprecated in favor of {_grantRole}.
*/
function _setupRole(bytes32 role, address account) internal virtual {
_grantRole(role, account);
}
/**
* @dev Sets `adminRole` as ``role``'s admin role.
*
* Emits a {RoleAdminChanged} event.
*/
function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
bytes32 previousAdminRole = getRoleAdmin(role);
_roles[role].adminRole = adminRole;
emit RoleAdminChanged(role, previousAdminRole, adminRole);
}
/**
* @dev Grants `role` to `account`.
*
* Internal function without access restriction.
*
* May emit a {RoleGranted} event.
*/
function _grantRole(bytes32 role, address account) internal virtual {
if (!hasRole(role, account)) {
_roles[role].members[account] = true;
emit RoleGranted(role, account, _msgSender());
}
}
/**
* @dev Revokes `role` from `account`.
*
* Internal function without access restriction.
*
* May emit a {RoleRevoked} event.
*/
function _revokeRole(bytes32 role, address account) internal virtual {
if (hasRole(role, account)) {
_roles[role].members[account] = false;
emit RoleRevoked(role, account, _msgSender());
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)
pragma solidity ^0.8.0;
/**
* @dev External interface of AccessControl declared to support ERC165 detection.
*/
interface IAccessControl {
/**
* @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
*
* `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
* {RoleAdminChanged} not being emitted signaling this.
*
* _Available since v3.1._
*/
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
/**
* @dev Emitted when `account` is granted `role`.
*
* `sender` is the account that originated the contract call, an admin role
* bearer except when using {AccessControl-_setupRole}.
*/
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
/**
* @dev Emitted when `account` is revoked `role`.
*
* `sender` is the account that originated the contract call:
* - if using `revokeRole`, it is the admin role bearer
* - if using `renounceRole`, it is the role bearer (i.e. `account`)
*/
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
/**
* @dev Returns `true` if `account` has been granted `role`.
*/
function hasRole(bytes32 role, address account) external view returns (bool);
/**
* @dev Returns the admin role that controls `role`. See {grantRole} and
* {revokeRole}.
*
* To change a role's admin, use {AccessControl-_setRoleAdmin}.
*/
function getRoleAdmin(bytes32 role) external view returns (bytes32);
/**
* @dev Grants `role` to `account`.
*
* If `account` had not been already granted `role`, emits a {RoleGranted}
* event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*/
function grantRole(bytes32 role, address account) external;
/**
* @dev Revokes `role` from `account`.
*
* If `account` had been granted `role`, emits a {RoleRevoked} event.
*
* Requirements:
*
* - the caller must have ``role``'s admin role.
*/
function revokeRole(bytes32 role, address account) external;
/**
* @dev Revokes `role` from the calling account.
*
* Roles are often managed via {grantRole} and {revokeRole}: this function's
* purpose is to provide a mechanism for accounts to lose their privileges
* if they are compromised (such as when a trusted device is misplaced).
*
* If the calling account had been granted `role`, emits a {RoleRevoked}
* event.
*
* Requirements:
*
* - the caller must be `account`.
*/
function renounceRole(bytes32 role, address account) external;
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
pragma solidity ^0.8.0;
import "./IERC165.sol";
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
* for the additional interface id that will be supported. For example:
*
* ```solidity
* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
* }
* ```
*
* Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
*/
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)
pragma solidity ^0.8.0;
/**
* @dev Standard math utilities missing in the Solidity language.
*/
library Math {
enum Rounding {
Down, // Toward negative infinity
Up, // Toward infinity
Zero // Toward zero
}
/**
* @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 up instead
* of rounding down.
*/
function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
// (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; // Least significant 256 bits of the product
uint256 prod1; // Most significant 256 bits of the product
assembly {
let mm := mulmod(x, y, not(0))
prod0 := mul(x, y)
prod1 := sub(sub(mm, prod0), lt(mm, prod0))
}
// Handle non-overflow cases, 256 by 256 division.
if (prod1 == 0) {
return prod0 / denominator;
}
// Make sure the result is less than 2^256. Also prevents denominator == 0.
require(denominator > prod1);
///////////////////////////////////////////////
// 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.
// Does not overflow because the denominator cannot be zero at this stage in the function.
uint256 twos = denominator & (~denominator + 1);
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 (rounding == Rounding.Up && 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 down.
*
* 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 + (rounding == Rounding.Up && result * result < a ? 1 : 0);
}
}
/**
* @dev Return the log in base 2, rounded down, of a positive value.
* 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 + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);
}
}
/**
* @dev Return the log in base 10, rounded down, of a positive value.
* 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 + (rounding == Rounding.Up && 10**result < value ? 1 : 0);
}
}
/**
* @dev Return the log in base 256, rounded down, of a positive value.
* 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 10, 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 + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)
pragma solidity ^0.8.0;
import "./math/Math.sol";
/**
* @dev String operations.
*/
library Strings {
bytes16 private constant _SYMBOLS = "0123456789abcdef";
uint8 private constant _ADDRESS_LENGTH = 20;
/**
* @dev Converts a `uint256` to its ASCII `string` decimal representation.
*/
function toString(uint256 value) internal pure returns (string memory) {
unchecked {
uint256 length = Math.log10(value) + 1;
string memory buffer = new string(length);
uint256 ptr;
/// @solidity memory-safe-assembly
assembly {
ptr := add(buffer, add(32, length))
}
while (true) {
ptr--;
/// @solidity memory-safe-assembly
assembly {
mstore8(ptr, byte(mod(value, 10), _SYMBOLS))
}
value /= 10;
if (value == 0) break;
}
return buffer;
}
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
*/
function toHexString(uint256 value) internal pure returns (string memory) {
unchecked {
return toHexString(value, Math.log256(value) + 1);
}
}
/**
* @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
*/
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = _SYMBOLS[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
/**
* @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.
*/
function toHexString(address addr) internal pure returns (string memory) {
return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
}
}
{
"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": {
"@_1521": {
"entryPoint": null,
"id": 1521,
"parameterSlots": 0,
"returnSlots": 0
},
"@_grantRole_283": {
"entryPoint": 95,
"id": 283,
"parameterSlots": 2,
"returnSlots": 0
},
"@_msgSender_400": {
"entryPoint": 442,
"id": 400,
"parameterSlots": 0,
"returnSlots": 1
},
"@hasRole_79": {
"entryPoint": 336,
"id": 79,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [],
"linkReferences": {},
"object": "60806040523480156200001157600080fd5b50620000276000801b336200005f60201b60201c565b620000597fe2889e7308860b3fe8df0daa86fccfea4d71e43776719a57be28cf90b6db81e9336200005f60201b60201c565b620001c2565b6200007182826200015060201b60201c565b6200014c57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620000f1620001ba60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b61165f80620001d26000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80636fa8cf33116100715780636fa8cf331461017757806391d1485414610195578063a217fddf146101c5578063d547741f146101e3578063ea0a5237146101ff578063eafb79e21461022f576100a9565b806301ffc9a7146100ae5780631bcfbe31146100de578063248a9ca31461010f5780632f2ff15d1461013f57806336568abe1461015b575b600080fd5b6100c860048036038101906100c39190610bb8565b61024d565b6040516100d59190610c00565b60405180910390f35b6100f860048036038101906100f39190610c51565b6102c7565b604051610106929190610d4f565b60405180910390f35b61012960048036038101906101249190610db5565b6103a3565b6040516101369190610df1565b60405180910390f35b61015960048036038101906101549190610e38565b6103c2565b005b61017560048036038101906101709190610e38565b6103e3565b005b61017f610466565b60405161018c9190610e87565b60405180910390f35b6101af60048036038101906101aa9190610e38565b610473565b6040516101bc9190610c00565b60405180910390f35b6101cd6104dd565b6040516101da9190610df1565b60405180910390f35b6101fd60048036038101906101f89190610e38565b6104e4565b005b61021960048036038101906102149190610fd7565b610505565b6040516102269190610e87565b60405180910390f35b6102376105f3565b6040516102449190610df1565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102c057506102bf82610617565b5b9050919050565b600181815481106102d757600080fd5b90600052602060002090600202016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010180546103209061104f565b80601f016020809104026020016040519081016040528092919081815260200182805461034c9061104f565b80156103995780601f1061036e57610100808354040283529160200191610399565b820191906000526020600020905b81548152906001019060200180831161037c57829003601f168201915b5050505050905082565b6000806000838152602001908152602001600020600101549050919050565b6103cb826103a3565b6103d481610681565b6103de8383610695565b505050565b6103eb610775565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044f906110f2565b60405180910390fd5b610462828261077d565b5050565b6000600180549050905090565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b6104ed826103a3565b6104f681610681565b610500838361077d565b505050565b60006105317fe2889e7308860b3fe8df0daa86fccfea4d71e43776719a57be28cf90b6db81e933610473565b61053a57600080fd5b60405180604001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001838152506001808160018154018082558091505003906000526020600020906002020160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010190816105e091906112be565b509050506105ec610466565b9050919050565b7fe2889e7308860b3fe8df0daa86fccfea4d71e43776719a57be28cf90b6db81e981565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6106928161068d610775565b61085e565b50565b61069f8282610473565b61077157600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610716610775565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600033905090565b6107878282610473565b1561085a57600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506107ff610775565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6108688282610473565b6108df57610875816108e3565b6108838360001c6020610910565b604051602001610894929190611464565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d6919061149e565b60405180910390fd5b5050565b60606109098273ffffffffffffffffffffffffffffffffffffffff16601460ff16610910565b9050919050565b60606000600283600261092391906114ef565b61092d9190611531565b67ffffffffffffffff81111561094657610945610eac565b5b6040519080825280601f01601f1916602001820160405280156109785781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106109b0576109af611565565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610a1457610a13611565565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002610a5491906114ef565b610a5e9190611531565b90505b6001811115610afe577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110610aa057610a9f611565565b5b1a60f81b828281518110610ab757610ab6611565565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080610af790611594565b9050610a61565b5060008414610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990611609565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610b9581610b60565b8114610ba057600080fd5b50565b600081359050610bb281610b8c565b92915050565b600060208284031215610bce57610bcd610b56565b5b6000610bdc84828501610ba3565b91505092915050565b60008115159050919050565b610bfa81610be5565b82525050565b6000602082019050610c156000830184610bf1565b92915050565b6000819050919050565b610c2e81610c1b565b8114610c3957600080fd5b50565b600081359050610c4b81610c25565b92915050565b600060208284031215610c6757610c66610b56565b5b6000610c7584828501610c3c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ca982610c7e565b9050919050565b610cb981610c9e565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610cf9578082015181840152602081019050610cde565b60008484015250505050565b6000601f19601f8301169050919050565b6000610d2182610cbf565b610d2b8185610cca565b9350610d3b818560208601610cdb565b610d4481610d05565b840191505092915050565b6000604082019050610d646000830185610cb0565b8181036020830152610d768184610d16565b90509392505050565b6000819050919050565b610d9281610d7f565b8114610d9d57600080fd5b50565b600081359050610daf81610d89565b92915050565b600060208284031215610dcb57610dca610b56565b5b6000610dd984828501610da0565b91505092915050565b610deb81610d7f565b82525050565b6000602082019050610e066000830184610de2565b92915050565b610e1581610c9e565b8114610e2057600080fd5b50565b600081359050610e3281610e0c565b92915050565b60008060408385031215610e4f57610e4e610b56565b5b6000610e5d85828601610da0565b9250506020610e6e85828601610e23565b9150509250929050565b610e8181610c1b565b82525050565b6000602082019050610e9c6000830184610e78565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610ee482610d05565b810181811067ffffffffffffffff82111715610f0357610f02610eac565b5b80604052505050565b6000610f16610b4c565b9050610f228282610edb565b919050565b600067ffffffffffffffff821115610f4257610f41610eac565b5b610f4b82610d05565b9050602081019050919050565b82818337600083830152505050565b6000610f7a610f7584610f27565b610f0c565b905082815260208101848484011115610f9657610f95610ea7565b5b610fa1848285610f58565b509392505050565b600082601f830112610fbe57610fbd610ea2565b5b8135610fce848260208601610f67565b91505092915050565b600060208284031215610fed57610fec610b56565b5b600082013567ffffffffffffffff81111561100b5761100a610b5b565b5b61101784828501610fa9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061106757607f821691505b60208210810361107a57611079611020565b5b50919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b60006110dc602f83610cca565b91506110e782611080565b604082019050919050565b6000602082019050818103600083015261110b816110cf565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026111747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611137565b61117e8683611137565b95508019841693508086168417925050509392505050565b6000819050919050565b60006111bb6111b66111b184610c1b565b611196565b610c1b565b9050919050565b6000819050919050565b6111d5836111a0565b6111e96111e1826111c2565b848454611144565b825550505050565b600090565b6111fe6111f1565b6112098184846111cc565b505050565b5b8181101561122d576112226000826111f6565b60018101905061120f565b5050565b601f8211156112725761124381611112565b61124c84611127565b8101602085101561125b578190505b61126f61126785611127565b83018261120e565b50505b505050565b600082821c905092915050565b600061129560001984600802611277565b1980831691505092915050565b60006112ae8383611284565b9150826002028217905092915050565b6112c782610cbf565b67ffffffffffffffff8111156112e0576112df610eac565b5b6112ea825461104f565b6112f5828285611231565b600060209050601f8311600181146113285760008415611316578287015190505b61132085826112a2565b865550611388565b601f19841661133686611112565b60005b8281101561135e57848901518255600182019150602085019450602081019050611339565b8683101561137b5784890151611377601f891682611284565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006113d1601783611390565b91506113dc8261139b565b601782019050919050565b60006113f282610cbf565b6113fc8185611390565b935061140c818560208601610cdb565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061144e601183611390565b915061145982611418565b601182019050919050565b600061146f826113c4565b915061147b82856113e7565b915061148682611441565b915061149282846113e7565b91508190509392505050565b600060208201905081810360008301526114b88184610d16565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006114fa82610c1b565b915061150583610c1b565b925082820261151381610c1b565b9150828204841483151761152a576115296114c0565b5b5092915050565b600061153c82610c1b565b915061154783610c1b565b925082820190508082111561155f5761155e6114c0565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061159f82610c1b565b9150600082036115b2576115b16114c0565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006115f3602083610cca565b91506115fe826115bd565b602082019050919050565b60006020820190508181036000830152611622816115e6565b905091905056fea2646970667358221220c98ffc77395c5b35a623c03136d6d45bb351a2483965d83f306f1b150b1ad13a64736f6c63430008120033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x27 PUSH1 0x0 DUP1 SHL CALLER PUSH3 0x5F PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x59 PUSH32 0xE2889E7308860B3FE8DF0DAA86FCCFEA4D71E43776719A57BE28CF90B6DB81E9 CALLER PUSH3 0x5F PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1C2 JUMP JUMPDEST PUSH3 0x71 DUP3 DUP3 PUSH3 0x150 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x14C JUMPI PUSH1 0x1 PUSH1 0x0 DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0xF1 PUSH3 0x1BA PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x165F DUP1 PUSH3 0x1D2 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FA8CF33 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x6FA8CF33 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0xEA0A5237 EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xEAFB79E2 EQ PUSH2 0x22F JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x1BCFBE31 EQ PUSH2 0xDE JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x15B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC3 SWAP2 SWAP1 PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x24D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP2 SWAP1 PUSH2 0xC00 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0xC51 JUMP JUMPDEST PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x106 SWAP3 SWAP2 SWAP1 PUSH2 0xD4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x124 SWAP2 SWAP1 PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x3A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x136 SWAP2 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x154 SWAP2 SWAP1 PUSH2 0xE38 JUMP JUMPDEST PUSH2 0x3C2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x175 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x170 SWAP2 SWAP1 PUSH2 0xE38 JUMP JUMPDEST PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x17F PUSH2 0x466 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1AA SWAP2 SWAP1 PUSH2 0xE38 JUMP JUMPDEST PUSH2 0x473 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BC SWAP2 SWAP1 PUSH2 0xC00 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1CD PUSH2 0x4DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DA SWAP2 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1F8 SWAP2 SWAP1 PUSH2 0xE38 JUMP JUMPDEST PUSH2 0x4E4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x219 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x214 SWAP2 SWAP1 PUSH2 0xFD7 JUMP JUMPDEST PUSH2 0x505 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x226 SWAP2 SWAP1 PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 PUSH2 0x5F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x244 SWAP2 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x2C0 JUMPI POP PUSH2 0x2BF DUP3 PUSH2 0x617 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH2 0x320 SWAP1 PUSH2 0x104F JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x34C SWAP1 PUSH2 0x104F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x399 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x36E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x399 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x37C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3CB DUP3 PUSH2 0x3A3 JUMP JUMPDEST PUSH2 0x3D4 DUP2 PUSH2 0x681 JUMP JUMPDEST PUSH2 0x3DE DUP4 DUP4 PUSH2 0x695 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x3EB PUSH2 0x775 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x44F SWAP1 PUSH2 0x10F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x462 DUP3 DUP3 PUSH2 0x77D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SHL DUP2 JUMP JUMPDEST PUSH2 0x4ED DUP3 PUSH2 0x3A3 JUMP JUMPDEST PUSH2 0x4F6 DUP2 PUSH2 0x681 JUMP JUMPDEST PUSH2 0x500 DUP4 DUP4 PUSH2 0x77D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x531 PUSH32 0xE2889E7308860B3FE8DF0DAA86FCCFEA4D71E43776719A57BE28CF90B6DB81E9 CALLER PUSH2 0x473 JUMP JUMPDEST PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x1 DUP1 DUP2 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP2 PUSH2 0x5E0 SWAP2 SWAP1 PUSH2 0x12BE JUMP JUMPDEST POP SWAP1 POP POP PUSH2 0x5EC PUSH2 0x466 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xE2889E7308860B3FE8DF0DAA86FCCFEA4D71E43776719A57BE28CF90B6DB81E9 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x692 DUP2 PUSH2 0x68D PUSH2 0x775 JUMP JUMPDEST PUSH2 0x85E JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x69F DUP3 DUP3 PUSH2 0x473 JUMP JUMPDEST PUSH2 0x771 JUMPI PUSH1 0x1 PUSH1 0x0 DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x716 PUSH2 0x775 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x787 DUP3 DUP3 PUSH2 0x473 JUMP JUMPDEST ISZERO PUSH2 0x85A JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x7FF PUSH2 0x775 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x868 DUP3 DUP3 PUSH2 0x473 JUMP JUMPDEST PUSH2 0x8DF JUMPI PUSH2 0x875 DUP2 PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x883 DUP4 PUSH1 0x0 SHR PUSH1 0x20 PUSH2 0x910 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x894 SWAP3 SWAP2 SWAP1 PUSH2 0x1464 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8D6 SWAP2 SWAP1 PUSH2 0x149E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x909 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH1 0xFF AND PUSH2 0x910 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 DUP4 PUSH1 0x2 PUSH2 0x923 SWAP2 SWAP1 PUSH2 0x14EF JUMP JUMPDEST PUSH2 0x92D SWAP2 SWAP1 PUSH2 0x1531 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x946 JUMPI PUSH2 0x945 PUSH2 0xEAC JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x978 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x9B0 JUMPI PUSH2 0x9AF PUSH2 0x1565 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xA14 JUMPI PUSH2 0xA13 PUSH2 0x1565 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x2 PUSH2 0xA54 SWAP2 SWAP1 PUSH2 0x14EF JUMP JUMPDEST PUSH2 0xA5E SWAP2 SWAP1 PUSH2 0x1531 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xAFE JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP7 AND PUSH1 0x10 DUP2 LT PUSH2 0xAA0 JUMPI PUSH2 0xA9F PUSH2 0x1565 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAB7 JUMPI PUSH2 0xAB6 PUSH2 0x1565 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 DUP6 SWAP1 SHR SWAP5 POP DUP1 PUSH2 0xAF7 SWAP1 PUSH2 0x1594 JUMP JUMPDEST SWAP1 POP PUSH2 0xA61 JUMP JUMPDEST POP PUSH1 0x0 DUP5 EQ PUSH2 0xB42 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB39 SWAP1 PUSH2 0x1609 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB95 DUP2 PUSH2 0xB60 JUMP JUMPDEST DUP2 EQ PUSH2 0xBA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xBB2 DUP2 PUSH2 0xB8C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBCE JUMPI PUSH2 0xBCD PUSH2 0xB56 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xBDC DUP5 DUP3 DUP6 ADD PUSH2 0xBA3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBFA DUP2 PUSH2 0xBE5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC15 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xBF1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC2E DUP2 PUSH2 0xC1B JUMP JUMPDEST DUP2 EQ PUSH2 0xC39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xC4B DUP2 PUSH2 0xC25 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC67 JUMPI PUSH2 0xC66 PUSH2 0xB56 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC75 DUP5 DUP3 DUP6 ADD PUSH2 0xC3C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCA9 DUP3 PUSH2 0xC7E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCB9 DUP2 PUSH2 0xC9E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCF9 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xCDE JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD21 DUP3 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0xD2B DUP2 DUP6 PUSH2 0xCCA JUMP JUMPDEST SWAP4 POP PUSH2 0xD3B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xCDB JUMP JUMPDEST PUSH2 0xD44 DUP2 PUSH2 0xD05 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xD64 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xCB0 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xD76 DUP2 DUP5 PUSH2 0xD16 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD92 DUP2 PUSH2 0xD7F JUMP JUMPDEST DUP2 EQ PUSH2 0xD9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xDAF DUP2 PUSH2 0xD89 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDCB JUMPI PUSH2 0xDCA PUSH2 0xB56 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xDD9 DUP5 DUP3 DUP6 ADD PUSH2 0xDA0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDEB DUP2 PUSH2 0xD7F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xE06 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xDE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE15 DUP2 PUSH2 0xC9E JUMP JUMPDEST DUP2 EQ PUSH2 0xE20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xE32 DUP2 PUSH2 0xE0C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE4F JUMPI PUSH2 0xE4E PUSH2 0xB56 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xE5D DUP6 DUP3 DUP7 ADD PUSH2 0xDA0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xE6E DUP6 DUP3 DUP7 ADD PUSH2 0xE23 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xE81 DUP2 PUSH2 0xC1B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xE9C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xEE4 DUP3 PUSH2 0xD05 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xF03 JUMPI PUSH2 0xF02 PUSH2 0xEAC JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF16 PUSH2 0xB4C JUMP JUMPDEST SWAP1 POP PUSH2 0xF22 DUP3 DUP3 PUSH2 0xEDB JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xF42 JUMPI PUSH2 0xF41 PUSH2 0xEAC JUMP JUMPDEST JUMPDEST PUSH2 0xF4B DUP3 PUSH2 0xD05 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF7A PUSH2 0xF75 DUP5 PUSH2 0xF27 JUMP JUMPDEST PUSH2 0xF0C JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0xF96 JUMPI PUSH2 0xF95 PUSH2 0xEA7 JUMP JUMPDEST JUMPDEST PUSH2 0xFA1 DUP5 DUP3 DUP6 PUSH2 0xF58 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xFBE JUMPI PUSH2 0xFBD PUSH2 0xEA2 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFCE DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0xF67 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFEC PUSH2 0xB56 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x100B JUMPI PUSH2 0x100A PUSH2 0xB5B JUMP JUMPDEST JUMPDEST PUSH2 0x1017 DUP5 DUP3 DUP6 ADD PUSH2 0xFA9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x1067 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x107A JUMPI PUSH2 0x1079 PUSH2 0x1020 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10DC PUSH1 0x2F DUP4 PUSH2 0xCCA JUMP JUMPDEST SWAP2 POP PUSH2 0x10E7 DUP3 PUSH2 0x1080 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x110B DUP2 PUSH2 0x10CF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x1174 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x1137 JUMP JUMPDEST PUSH2 0x117E DUP7 DUP4 PUSH2 0x1137 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11BB PUSH2 0x11B6 PUSH2 0x11B1 DUP5 PUSH2 0xC1B JUMP JUMPDEST PUSH2 0x1196 JUMP JUMPDEST PUSH2 0xC1B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x11D5 DUP4 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0x11E9 PUSH2 0x11E1 DUP3 PUSH2 0x11C2 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x1144 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x11FE PUSH2 0x11F1 JUMP JUMPDEST PUSH2 0x1209 DUP2 DUP5 DUP5 PUSH2 0x11CC JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x122D JUMPI PUSH2 0x1222 PUSH1 0x0 DUP3 PUSH2 0x11F6 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x120F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1272 JUMPI PUSH2 0x1243 DUP2 PUSH2 0x1112 JUMP JUMPDEST PUSH2 0x124C DUP5 PUSH2 0x1127 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x125B JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x126F PUSH2 0x1267 DUP6 PUSH2 0x1127 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x120E JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1295 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x1277 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12AE DUP4 DUP4 PUSH2 0x1284 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x12C7 DUP3 PUSH2 0xCBF JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12E0 JUMPI PUSH2 0x12DF PUSH2 0xEAC JUMP JUMPDEST JUMPDEST PUSH2 0x12EA DUP3 SLOAD PUSH2 0x104F JUMP JUMPDEST PUSH2 0x12F5 DUP3 DUP3 DUP6 PUSH2 0x1231 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x1328 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x1316 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x1320 DUP6 DUP3 PUSH2 0x12A2 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x1388 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x1336 DUP7 PUSH2 0x1112 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x135E JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1339 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x137B JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x1377 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x1284 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D1 PUSH1 0x17 DUP4 PUSH2 0x1390 JUMP JUMPDEST SWAP2 POP PUSH2 0x13DC DUP3 PUSH2 0x139B JUMP JUMPDEST PUSH1 0x17 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F2 DUP3 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0x13FC DUP2 DUP6 PUSH2 0x1390 JUMP JUMPDEST SWAP4 POP PUSH2 0x140C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xCDB JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x144E PUSH1 0x11 DUP4 PUSH2 0x1390 JUMP JUMPDEST SWAP2 POP PUSH2 0x1459 DUP3 PUSH2 0x1418 JUMP JUMPDEST PUSH1 0x11 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146F DUP3 PUSH2 0x13C4 JUMP JUMPDEST SWAP2 POP PUSH2 0x147B DUP3 DUP6 PUSH2 0x13E7 JUMP JUMPDEST SWAP2 POP PUSH2 0x1486 DUP3 PUSH2 0x1441 JUMP JUMPDEST SWAP2 POP PUSH2 0x1492 DUP3 DUP5 PUSH2 0x13E7 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x14B8 DUP2 DUP5 PUSH2 0xD16 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x14FA DUP3 PUSH2 0xC1B JUMP JUMPDEST SWAP2 POP PUSH2 0x1505 DUP4 PUSH2 0xC1B JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x1513 DUP2 PUSH2 0xC1B JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x152A JUMPI PUSH2 0x1529 PUSH2 0x14C0 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x153C DUP3 PUSH2 0xC1B JUMP JUMPDEST SWAP2 POP PUSH2 0x1547 DUP4 PUSH2 0xC1B JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x155F JUMPI PUSH2 0x155E PUSH2 0x14C0 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x159F DUP3 PUSH2 0xC1B JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 SUB PUSH2 0x15B2 JUMPI PUSH2 0x15B1 PUSH2 0x14C0 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15F3 PUSH1 0x20 DUP4 PUSH2 0xCCA JUMP JUMPDEST SWAP2 POP PUSH2 0x15FE DUP3 PUSH2 0x15BD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1622 DUP2 PUSH2 0x15E6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC9 DUP16 0xFC PUSH24 0x395C5B35A623C03136D6D45BB351A2483965D83F306F1B15 SIGNEXTEND BYTE 0xD1 GASPRICE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ",
"sourceMap": "123:723:7:-:0;;;379:123;;;;;;;;;;403:42;2072:4:0;414:18:7;;434:10;403;;;:42;;:::i;:::-;455:40;219:29;484:10;455;;;:40;;:::i;:::-;123:723;;7461:233:0;7544:22;7552:4;7558:7;7544;;;:22;;:::i;:::-;7539:149;;7614:4;7582:6;:12;7589:4;7582:12;;;;;;;;;;;:20;;:29;7603:7;7582:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7664:12;:10;;;:12;;:::i;:::-;7637:40;;7655:7;7637:40;;7649:4;7637:40;;;;;;;;;;7539:149;7461:233;;:::o;2895:145::-;2981:4;3004:6;:12;3011:4;3004:12;;;;;;;;;;;:20;;:29;3025:7;3004:29;;;;;;;;;;;;;;;;;;;;;;;;;2997:36;;2895:145;;;;:::o;640:96:2:-;693:7;719:10;712:17;;640:96;:::o;123:723:7:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@CONTRIBUTOR_ROLE_1496": {
"entryPoint": 1523,
"id": 1496,
"parameterSlots": 0,
"returnSlots": 0
},
"@DEFAULT_ADMIN_ROLE_27": {
"entryPoint": 1245,
"id": 27,
"parameterSlots": 0,
"returnSlots": 0
},
"@_checkRole_131": {
"entryPoint": 2142,
"id": 131,
"parameterSlots": 2,
"returnSlots": 0
},
"@_checkRole_92": {
"entryPoint": 1665,
"id": 92,
"parameterSlots": 1,
"returnSlots": 0
},
"@_grantRole_283": {
"entryPoint": 1685,
"id": 283,
"parameterSlots": 2,
"returnSlots": 0
},
"@_msgSender_400": {
"entryPoint": 1909,
"id": 400,
"parameterSlots": 0,
"returnSlots": 1
},
"@_revokeRole_314": {
"entryPoint": 1917,
"id": 314,
"parameterSlots": 2,
"returnSlots": 0
},
"@announce_1551": {
"entryPoint": 1285,
"id": 1551,
"parameterSlots": 1,
"returnSlots": 1
},
"@announcementCount_1560": {
"entryPoint": 1126,
"id": 1560,
"parameterSlots": 0,
"returnSlots": 1
},
"@announcements_1505": {
"entryPoint": 711,
"id": 1505,
"parameterSlots": 0,
"returnSlots": 0
},
"@getRoleAdmin_146": {
"entryPoint": 931,
"id": 146,
"parameterSlots": 1,
"returnSlots": 1
},
"@grantRole_166": {
"entryPoint": 962,
"id": 166,
"parameterSlots": 2,
"returnSlots": 0
},
"@hasRole_79": {
"entryPoint": 1139,
"id": 79,
"parameterSlots": 2,
"returnSlots": 1
},
"@renounceRole_209": {
"entryPoint": 995,
"id": 209,
"parameterSlots": 2,
"returnSlots": 0
},
"@revokeRole_186": {
"entryPoint": 1252,
"id": 186,
"parameterSlots": 2,
"returnSlots": 0
},
"@supportsInterface_60": {
"entryPoint": 589,
"id": 60,
"parameterSlots": 1,
"returnSlots": 1
},
"@supportsInterface_608": {
"entryPoint": 1559,
"id": 608,
"parameterSlots": 1,
"returnSlots": 1
},
"@toHexString_564": {
"entryPoint": 2320,
"id": 564,
"parameterSlots": 2,
"returnSlots": 1
},
"@toHexString_584": {
"entryPoint": 2275,
"id": 584,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_decode_available_length_t_string_memory_ptr": {
"entryPoint": 3943,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_address": {
"entryPoint": 3619,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes32": {
"entryPoint": 3488,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes4": {
"entryPoint": 2979,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_string_memory_ptr": {
"entryPoint": 4009,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 3132,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32": {
"entryPoint": 3509,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32t_address": {
"entryPoint": 3640,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_bytes4": {
"entryPoint": 3000,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_string_memory_ptr": {
"entryPoint": 4055,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 3153,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 3248,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bool_to_t_bool_fromStack": {
"entryPoint": 3057,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack": {
"entryPoint": 3554,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 3350,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 5095,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack": {
"entryPoint": 5606,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 5060,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 5185,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack": {
"entryPoint": 4303,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 3704,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 5220,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_string_memory_ptr__to_t_address_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 3407,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": 3072,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": 3569,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 5278,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 5641,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 4338,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 3719,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 3852,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": 2892,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_allocation_size_t_string_memory_ptr": {
"entryPoint": 3879,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_dataslot_t_string_storage": {
"entryPoint": 4370,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 3263,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 3274,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 5008,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 5425,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_mul_t_uint256": {
"entryPoint": 5359,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"clean_up_bytearray_end_slots_t_string_storage": {
"entryPoint": 4657,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"cleanup_t_address": {
"entryPoint": 3230,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 3045,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 3455,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes4": {
"entryPoint": 2912,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 3198,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 3099,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"clear_storage_range_t_bytes1": {
"entryPoint": 4622,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"convert_t_uint256_to_t_uint256": {
"entryPoint": 4512,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
"entryPoint": 4798,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"copy_calldata_to_memory_with_cleanup": {
"entryPoint": 3928,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 3291,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"decrement_t_uint256": {
"entryPoint": 5524,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"divide_by_32_ceil": {
"entryPoint": 4391,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_byte_array_length": {
"entryPoint": 4175,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_used_part_and_set_length_of_short_byte_array": {
"entryPoint": 4770,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"finalize_allocation": {
"entryPoint": 3803,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"identity": {
"entryPoint": 4502,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"mask_bytes_dynamic": {
"entryPoint": 4740,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 5312,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x22": {
"entryPoint": 4128,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 5477,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 3756,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"prepare_store_t_uint256": {
"entryPoint": 4546,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": {
"entryPoint": 3746,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae": {
"entryPoint": 3751,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": 2907,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 2902,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 3333,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"shift_left_dynamic": {
"entryPoint": 4407,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"shift_right_unsigned_dynamic": {
"entryPoint": 4727,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"storage_set_to_zero_t_uint256": {
"entryPoint": 4598,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2": {
"entryPoint": 5565,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874": {
"entryPoint": 5019,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69": {
"entryPoint": 5144,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b": {
"entryPoint": 4224,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"update_byte_slice_dynamic32": {
"entryPoint": 4420,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"update_storage_value_t_uint256_to_t_uint256": {
"entryPoint": 4556,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 3596,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes32": {
"entryPoint": 3465,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes4": {
"entryPoint": 2956,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 3109,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"zero_value_for_split_t_uint256": {
"entryPoint": 4593,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:19837:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "47:35:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "57:19:8",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "73:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "67:5:8"
},
"nodeType": "YulFunctionCall",
"src": "67:9:8"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "57:6:8"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "40:6:8",
"type": ""
}
],
"src": "7:75:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "177:28:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "194:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "197:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "187:6:8"
},
"nodeType": "YulFunctionCall",
"src": "187:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "187:12:8"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "88:117:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "300:28:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "317:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "310:6:8"
},
"nodeType": "YulFunctionCall",
"src": "310:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "310:12:8"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "211:117:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "378:105:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "388:89:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "403:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "410:66:8",
"type": "",
"value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "399:3:8"
},
"nodeType": "YulFunctionCall",
"src": "399:78:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "388:7:8"
}
]
}
]
},
"name": "cleanup_t_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "360:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "370:7:8",
"type": ""
}
],
"src": "334:149:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "531:78:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "587:16:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "596:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "599:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "589:6:8"
},
"nodeType": "YulFunctionCall",
"src": "589:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "589:12:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "554:5:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "578:5:8"
}
],
"functionName": {
"name": "cleanup_t_bytes4",
"nodeType": "YulIdentifier",
"src": "561:16:8"
},
"nodeType": "YulFunctionCall",
"src": "561:23:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "551:2:8"
},
"nodeType": "YulFunctionCall",
"src": "551:34:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "544:6:8"
},
"nodeType": "YulFunctionCall",
"src": "544:42:8"
},
"nodeType": "YulIf",
"src": "541:62:8"
}
]
},
"name": "validator_revert_t_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "524:5:8",
"type": ""
}
],
"src": "489:120:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "666:86:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "676:29:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "698:6:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "685:12:8"
},
"nodeType": "YulFunctionCall",
"src": "685:20:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "676:5:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "740:5:8"
}
],
"functionName": {
"name": "validator_revert_t_bytes4",
"nodeType": "YulIdentifier",
"src": "714:25:8"
},
"nodeType": "YulFunctionCall",
"src": "714:32:8"
},
"nodeType": "YulExpressionStatement",
"src": "714:32:8"
}
]
},
"name": "abi_decode_t_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "644:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "652:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "660:5:8",
"type": ""
}
],
"src": "615:137:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "823:262:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "869:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "871:77:8"
},
"nodeType": "YulFunctionCall",
"src": "871:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "871:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "844:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "853:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "840:3:8"
},
"nodeType": "YulFunctionCall",
"src": "840:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "865:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "836:3:8"
},
"nodeType": "YulFunctionCall",
"src": "836:32:8"
},
"nodeType": "YulIf",
"src": "833:119:8"
},
{
"nodeType": "YulBlock",
"src": "962:116:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "977:15:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "991:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "981:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1006:62:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1040:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1051:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1036:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1036:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1060:7:8"
}
],
"functionName": {
"name": "abi_decode_t_bytes4",
"nodeType": "YulIdentifier",
"src": "1016:19:8"
},
"nodeType": "YulFunctionCall",
"src": "1016:52:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1006:6:8"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "793:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "804:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "816:6:8",
"type": ""
}
],
"src": "758:327:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1133:48:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1143:32:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1168:5:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1161:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1161:13:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1154:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1154:21:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1143:7:8"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1115:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1125:7:8",
"type": ""
}
],
"src": "1091:90:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1246:50:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1263:3:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1283:5:8"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "1268:14:8"
},
"nodeType": "YulFunctionCall",
"src": "1268:21:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1256:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1256:34:8"
},
"nodeType": "YulExpressionStatement",
"src": "1256:34:8"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1234:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1241:3:8",
"type": ""
}
],
"src": "1187:109:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1394:118:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1404:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1416:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1427:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1412:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1412:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1404:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1478:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1491:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1502:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1487:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1487:17:8"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "1440:37:8"
},
"nodeType": "YulFunctionCall",
"src": "1440:65:8"
},
"nodeType": "YulExpressionStatement",
"src": "1440:65:8"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1366:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1378:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1389:4:8",
"type": ""
}
],
"src": "1302:210:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1563:32:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1573:16:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1584:5:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1573:7:8"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1545:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1555:7:8",
"type": ""
}
],
"src": "1518:77:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1644:79:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1701:16:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1710:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1713:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1703:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1703:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "1703:12:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1667:5:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1692:5:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1674:17:8"
},
"nodeType": "YulFunctionCall",
"src": "1674:24:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1664:2:8"
},
"nodeType": "YulFunctionCall",
"src": "1664:35:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1657:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1657:43:8"
},
"nodeType": "YulIf",
"src": "1654:63:8"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1637:5:8",
"type": ""
}
],
"src": "1601:122:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1781:87:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1791:29:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1813:6:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1800:12:8"
},
"nodeType": "YulFunctionCall",
"src": "1800:20:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1791:5:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1856:5:8"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "1829:26:8"
},
"nodeType": "YulFunctionCall",
"src": "1829:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "1829:33:8"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1759:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1767:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1775:5:8",
"type": ""
}
],
"src": "1729:139:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1940:263:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1986:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "1988:77:8"
},
"nodeType": "YulFunctionCall",
"src": "1988:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "1988:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1961:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1970:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1957:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1957:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1982:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1953:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1953:32:8"
},
"nodeType": "YulIf",
"src": "1950:119:8"
},
{
"nodeType": "YulBlock",
"src": "2079:117:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2094:15:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2108:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2098:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2123:63:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2158:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2169:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2154:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2154:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2178:7:8"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "2133:20:8"
},
"nodeType": "YulFunctionCall",
"src": "2133:53:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2123:6:8"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1910:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1921:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1933:6:8",
"type": ""
}
],
"src": "1874:329:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2254:81:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2264:65:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2279:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2286:42:8",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2275:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2275:54:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2264:7:8"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2236:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2246:7:8",
"type": ""
}
],
"src": "2209:126:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2386:51:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2396:35:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2425:5:8"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "2407:17:8"
},
"nodeType": "YulFunctionCall",
"src": "2407:24:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2396:7:8"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2368:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2378:7:8",
"type": ""
}
],
"src": "2341:96:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2508:53:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2525:3:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2548:5:8"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "2530:17:8"
},
"nodeType": "YulFunctionCall",
"src": "2530:24:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2518:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2518:37:8"
},
"nodeType": "YulExpressionStatement",
"src": "2518:37:8"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2496:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2503:3:8",
"type": ""
}
],
"src": "2443:118:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2626:40:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2637:22:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2653:5:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2647:5:8"
},
"nodeType": "YulFunctionCall",
"src": "2647:12:8"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2637:6:8"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2609:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2619:6:8",
"type": ""
}
],
"src": "2567:99:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2768:73:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2785:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2790:6:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2778:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2778:19:8"
},
"nodeType": "YulExpressionStatement",
"src": "2778:19:8"
},
{
"nodeType": "YulAssignment",
"src": "2806:29:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2825:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2830:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2821:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2821:14:8"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "2806:11:8"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2740:3:8",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2745:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "2756:11:8",
"type": ""
}
],
"src": "2672:169:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2909:184:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2919:10:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2928:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "2923:1:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2988:63:8",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "3013:3:8"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3018:1:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3009:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3009:11:8"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "3032:3:8"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3037:1:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3028:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3028:11:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "3022:5:8"
},
"nodeType": "YulFunctionCall",
"src": "3022:18:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3002:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3002:39:8"
},
"nodeType": "YulExpressionStatement",
"src": "3002:39:8"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2949:1:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2952:6:8"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2946:2:8"
},
"nodeType": "YulFunctionCall",
"src": "2946:13:8"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "2960:19:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2962:15:8",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2971:1:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2974:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2967:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2967:10:8"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2962:1:8"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "2942:3:8",
"statements": []
},
"src": "2938:113:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "3071:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3076:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3067:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3067:16:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3085:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3060:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3060:27:8"
},
"nodeType": "YulExpressionStatement",
"src": "3060:27:8"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "2891:3:8",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "2896:3:8",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2901:6:8",
"type": ""
}
],
"src": "2847:246:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3147:54:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3157:38:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3175:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3182:2:8",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3171:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3171:14:8"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3191:2:8",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "3187:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3187:7:8"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3167:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3167:28:8"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "3157:6:8"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3130:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "3140:6:8",
"type": ""
}
],
"src": "3099:102:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3299:285:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3309:53:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3356:5:8"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "3323:32:8"
},
"nodeType": "YulFunctionCall",
"src": "3323:39:8"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3313:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3371:78:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3437:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3442:6:8"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "3378:58:8"
},
"nodeType": "YulFunctionCall",
"src": "3378:71:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3371:3:8"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3497:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3504:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3493:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3493:16:8"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3511:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3516:6:8"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "3458:34:8"
},
"nodeType": "YulFunctionCall",
"src": "3458:65:8"
},
"nodeType": "YulExpressionStatement",
"src": "3458:65:8"
},
{
"nodeType": "YulAssignment",
"src": "3532:46:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3543:3:8"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3570:6:8"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "3548:21:8"
},
"nodeType": "YulFunctionCall",
"src": "3548:29:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3539:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3539:39:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3532:3:8"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3280:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3287:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3295:3:8",
"type": ""
}
],
"src": "3207:377:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3736:277:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3746:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3758:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3769:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3754:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3754:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3746:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3826:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3839:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3850:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3835:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3835:17:8"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "3782:43:8"
},
"nodeType": "YulFunctionCall",
"src": "3782:71:8"
},
"nodeType": "YulExpressionStatement",
"src": "3782:71:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3874:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3885:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3870:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3870:18:8"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3894:4:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3900:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3890:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3890:20:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3863:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3863:48:8"
},
"nodeType": "YulExpressionStatement",
"src": "3863:48:8"
},
{
"nodeType": "YulAssignment",
"src": "3920:86:8",
"value": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "3992:6:8"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4001:4:8"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "3928:63:8"
},
"nodeType": "YulFunctionCall",
"src": "3928:78:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3920:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_address_t_string_memory_ptr__to_t_address_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3700:9:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3712:6:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3720:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3731:4:8",
"type": ""
}
],
"src": "3590:423:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4064:32:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4074:16:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "4085:5:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4074:7:8"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4046:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4056:7:8",
"type": ""
}
],
"src": "4019:77:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4145:79:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4202:16:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4211:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4214:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "4204:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4204:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "4204:12:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4168:5:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4193:5:8"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "4175:17:8"
},
"nodeType": "YulFunctionCall",
"src": "4175:24:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "4165:2:8"
},
"nodeType": "YulFunctionCall",
"src": "4165:35:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "4158:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4158:43:8"
},
"nodeType": "YulIf",
"src": "4155:63:8"
}
]
},
"name": "validator_revert_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4138:5:8",
"type": ""
}
],
"src": "4102:122:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4282:87:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4292:29:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4314:6:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "4301:12:8"
},
"nodeType": "YulFunctionCall",
"src": "4301:20:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4292:5:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4357:5:8"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nodeType": "YulIdentifier",
"src": "4330:26:8"
},
"nodeType": "YulFunctionCall",
"src": "4330:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "4330:33:8"
}
]
},
"name": "abi_decode_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4260:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4268:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4276:5:8",
"type": ""
}
],
"src": "4230:139:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4441:263:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4487:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "4489:77:8"
},
"nodeType": "YulFunctionCall",
"src": "4489:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "4489:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4462:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4471:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4458:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4458:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4483:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "4454:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4454:32:8"
},
"nodeType": "YulIf",
"src": "4451:119:8"
},
{
"nodeType": "YulBlock",
"src": "4580:117:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4595:15:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4609:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4599:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4624:63:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4659:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4670:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4655:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4655:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4679:7:8"
}
],
"functionName": {
"name": "abi_decode_t_bytes32",
"nodeType": "YulIdentifier",
"src": "4634:20:8"
},
"nodeType": "YulFunctionCall",
"src": "4634:53:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4624:6:8"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4411:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "4422:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4434:6:8",
"type": ""
}
],
"src": "4375:329:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4775:53:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4792:3:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4815:5:8"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "4797:17:8"
},
"nodeType": "YulFunctionCall",
"src": "4797:24:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4785:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4785:37:8"
},
"nodeType": "YulExpressionStatement",
"src": "4785:37:8"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4763:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4770:3:8",
"type": ""
}
],
"src": "4710:118:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4932:124:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4942:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4954:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4965:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4950:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4950:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4942:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5022:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5035:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5046:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5031:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5031:17:8"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "4978:43:8"
},
"nodeType": "YulFunctionCall",
"src": "4978:71:8"
},
"nodeType": "YulExpressionStatement",
"src": "4978:71:8"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4904:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4916:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4927:4:8",
"type": ""
}
],
"src": "4834:222:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5105:79:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5162:16:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5171:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5174:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5164:6:8"
},
"nodeType": "YulFunctionCall",
"src": "5164:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "5164:12:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5128:5:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5153:5:8"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "5135:17:8"
},
"nodeType": "YulFunctionCall",
"src": "5135:24:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "5125:2:8"
},
"nodeType": "YulFunctionCall",
"src": "5125:35:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "5118:6:8"
},
"nodeType": "YulFunctionCall",
"src": "5118:43:8"
},
"nodeType": "YulIf",
"src": "5115:63:8"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5098:5:8",
"type": ""
}
],
"src": "5062:122:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5242:87:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5252:29:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5274:6:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "5261:12:8"
},
"nodeType": "YulFunctionCall",
"src": "5261:20:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5252:5:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5317:5:8"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "5290:26:8"
},
"nodeType": "YulFunctionCall",
"src": "5290:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "5290:33:8"
}
]
},
"name": "abi_decode_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5220:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5228:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5236:5:8",
"type": ""
}
],
"src": "5190:139:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5418:391:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5464:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "5466:77:8"
},
"nodeType": "YulFunctionCall",
"src": "5466:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "5466:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5439:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5448:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5435:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5435:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5460:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5431:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5431:32:8"
},
"nodeType": "YulIf",
"src": "5428:119:8"
},
{
"nodeType": "YulBlock",
"src": "5557:117:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5572:15:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5586:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5576:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5601:63:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5636:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5647:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5632:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5632:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5656:7:8"
}
],
"functionName": {
"name": "abi_decode_t_bytes32",
"nodeType": "YulIdentifier",
"src": "5611:20:8"
},
"nodeType": "YulFunctionCall",
"src": "5611:53:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5601:6:8"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "5684:118:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5699:16:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5713:2:8",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5703:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5729:63:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5764:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5775:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5760:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5760:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5784:7:8"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "5739:20:8"
},
"nodeType": "YulFunctionCall",
"src": "5739:53:8"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "5729:6:8"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5380:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5391:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5403:6:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "5411:6:8",
"type": ""
}
],
"src": "5335:474:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5880:53:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5897:3:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5920:5:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "5902:17:8"
},
"nodeType": "YulFunctionCall",
"src": "5902:24:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5890:6:8"
},
"nodeType": "YulFunctionCall",
"src": "5890:37:8"
},
"nodeType": "YulExpressionStatement",
"src": "5890:37:8"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5868:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5875:3:8",
"type": ""
}
],
"src": "5815:118:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6037:124:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6047:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6059:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6070:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6055:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6055:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6047:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6127:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6140:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6151:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6136:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6136:17:8"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "6083:43:8"
},
"nodeType": "YulFunctionCall",
"src": "6083:71:8"
},
"nodeType": "YulExpressionStatement",
"src": "6083:71:8"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6009:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6021:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6032:4:8",
"type": ""
}
],
"src": "5939:222:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6256:28:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6273:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6276:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6266:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6266:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "6266:12:8"
}
]
},
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulFunctionDefinition",
"src": "6167:117:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6379:28:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6396:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6399:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6389:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6389:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "6389:12:8"
}
]
},
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nodeType": "YulFunctionDefinition",
"src": "6290:117:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6441:152:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6458:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6461:77:8",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6451:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6451:88:8"
},
"nodeType": "YulExpressionStatement",
"src": "6451:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6555:1:8",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6558:4:8",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6548:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6548:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "6548:15:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6579:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6582:4:8",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6572:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6572:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "6572:15:8"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "6413:180:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6642:238:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6652:58:8",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6674:6:8"
},
{
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "6704:4:8"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "6682:21:8"
},
"nodeType": "YulFunctionCall",
"src": "6682:27:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6670:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6670:40:8"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "6656:10:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6821:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "6823:16:8"
},
"nodeType": "YulFunctionCall",
"src": "6823:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "6823:18:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "6764:10:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6776:18:8",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "6761:2:8"
},
"nodeType": "YulFunctionCall",
"src": "6761:34:8"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "6800:10:8"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6812:6:8"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "6797:2:8"
},
"nodeType": "YulFunctionCall",
"src": "6797:22:8"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "6758:2:8"
},
"nodeType": "YulFunctionCall",
"src": "6758:62:8"
},
"nodeType": "YulIf",
"src": "6755:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6859:2:8",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "6863:10:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6852:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6852:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "6852:22:8"
}
]
},
"name": "finalize_allocation",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "6628:6:8",
"type": ""
},
{
"name": "size",
"nodeType": "YulTypedName",
"src": "6636:4:8",
"type": ""
}
],
"src": "6599:281:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6927:88:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6937:30:8",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nodeType": "YulIdentifier",
"src": "6947:18:8"
},
"nodeType": "YulFunctionCall",
"src": "6947:20:8"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6937:6:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6996:6:8"
},
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "7004:4:8"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "6976:19:8"
},
"nodeType": "YulFunctionCall",
"src": "6976:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "6976:33:8"
}
]
},
"name": "allocate_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "6911:4:8",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "6920:6:8",
"type": ""
}
],
"src": "6886:129:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7088:241:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "7193:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "7195:16:8"
},
"nodeType": "YulFunctionCall",
"src": "7195:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "7195:18:8"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7165:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7173:18:8",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "7162:2:8"
},
"nodeType": "YulFunctionCall",
"src": "7162:30:8"
},
"nodeType": "YulIf",
"src": "7159:56:8"
},
{
"nodeType": "YulAssignment",
"src": "7225:37:8",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7255:6:8"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "7233:21:8"
},
"nodeType": "YulFunctionCall",
"src": "7233:29:8"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "7225:4:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7299:23:8",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "7311:4:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7317:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7307:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7307:15:8"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "7299:4:8"
}
]
}
]
},
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "7072:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "7083:4:8",
"type": ""
}
],
"src": "7021:308:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7399:82:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "7422:3:8"
},
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "7427:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7432:6:8"
}
],
"functionName": {
"name": "calldatacopy",
"nodeType": "YulIdentifier",
"src": "7409:12:8"
},
"nodeType": "YulFunctionCall",
"src": "7409:30:8"
},
"nodeType": "YulExpressionStatement",
"src": "7409:30:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "7459:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7464:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7455:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7455:16:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7473:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7448:6:8"
},
"nodeType": "YulFunctionCall",
"src": "7448:27:8"
},
"nodeType": "YulExpressionStatement",
"src": "7448:27:8"
}
]
},
"name": "copy_calldata_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "7381:3:8",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "7386:3:8",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "7391:6:8",
"type": ""
}
],
"src": "7335:146:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7571:341:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7581:75:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7648:6:8"
}
],
"functionName": {
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "7606:41:8"
},
"nodeType": "YulFunctionCall",
"src": "7606:49:8"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "7590:15:8"
},
"nodeType": "YulFunctionCall",
"src": "7590:66:8"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "7581:5:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "7672:5:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7679:6:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7665:6:8"
},
"nodeType": "YulFunctionCall",
"src": "7665:21:8"
},
"nodeType": "YulExpressionStatement",
"src": "7665:21:8"
},
{
"nodeType": "YulVariableDeclaration",
"src": "7695:27:8",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "7710:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7717:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7706:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7706:16:8"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "7699:3:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "7760:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nodeType": "YulIdentifier",
"src": "7762:77:8"
},
"nodeType": "YulFunctionCall",
"src": "7762:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "7762:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "7741:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7746:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7737:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7737:16:8"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "7755:3:8"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "7734:2:8"
},
"nodeType": "YulFunctionCall",
"src": "7734:25:8"
},
"nodeType": "YulIf",
"src": "7731:112:8"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "7889:3:8"
},
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "7894:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7899:6:8"
}
],
"functionName": {
"name": "copy_calldata_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "7852:36:8"
},
"nodeType": "YulFunctionCall",
"src": "7852:54:8"
},
"nodeType": "YulExpressionStatement",
"src": "7852:54:8"
}
]
},
"name": "abi_decode_available_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "7544:3:8",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "7549:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7557:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "7565:5:8",
"type": ""
}
],
"src": "7487:425:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7994:278:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "8043:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulIdentifier",
"src": "8045:77:8"
},
"nodeType": "YulFunctionCall",
"src": "8045:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "8045:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8022:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8030:4:8",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8018:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8018:17:8"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8037:3:8"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "8014:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8014:27:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "8007:6:8"
},
"nodeType": "YulFunctionCall",
"src": "8007:35:8"
},
"nodeType": "YulIf",
"src": "8004:122:8"
},
{
"nodeType": "YulVariableDeclaration",
"src": "8135:34:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8162:6:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "8149:12:8"
},
"nodeType": "YulFunctionCall",
"src": "8149:20:8"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "8139:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "8178:88:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8239:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8247:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8235:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8235:17:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8254:6:8"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8262:3:8"
}
],
"functionName": {
"name": "abi_decode_available_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "8187:47:8"
},
"nodeType": "YulFunctionCall",
"src": "8187:79:8"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "8178:5:8"
}
]
}
]
},
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "7972:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7980:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "7988:5:8",
"type": ""
}
],
"src": "7932:340:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8354:433:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "8400:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "8402:77:8"
},
"nodeType": "YulFunctionCall",
"src": "8402:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "8402:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8375:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8384:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "8371:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8371:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8396:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "8367:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8367:32:8"
},
"nodeType": "YulIf",
"src": "8364:119:8"
},
{
"nodeType": "YulBlock",
"src": "8493:287:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8508:45:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8539:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8550:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8535:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8535:17:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "8522:12:8"
},
"nodeType": "YulFunctionCall",
"src": "8522:31:8"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "8512:6:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "8600:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "8602:77:8"
},
"nodeType": "YulFunctionCall",
"src": "8602:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "8602:79:8"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8572:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8580:18:8",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "8569:2:8"
},
"nodeType": "YulFunctionCall",
"src": "8569:30:8"
},
"nodeType": "YulIf",
"src": "8566:117:8"
},
{
"nodeType": "YulAssignment",
"src": "8697:73:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8742:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8753:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8738:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8738:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8762:7:8"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "8707:30:8"
},
"nodeType": "YulFunctionCall",
"src": "8707:63:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8697:6:8"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8324:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "8335:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8347:6:8",
"type": ""
}
],
"src": "8278:509:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8821:152:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8838:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8841:77:8",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8831:6:8"
},
"nodeType": "YulFunctionCall",
"src": "8831:88:8"
},
"nodeType": "YulExpressionStatement",
"src": "8831:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8935:1:8",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8938:4:8",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8928:6:8"
},
"nodeType": "YulFunctionCall",
"src": "8928:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "8928:15:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8959:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8962:4:8",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "8952:6:8"
},
"nodeType": "YulFunctionCall",
"src": "8952:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "8952:15:8"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "8793:180:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9030:269:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9040:22:8",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "9054:4:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9060:1:8",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "9050:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9050:12:8"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "9040:6:8"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "9071:38:8",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "9101:4:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9107:1:8",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "9097:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9097:12:8"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "9075:18:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9148:51:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9162:27:8",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "9176:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9184:4:8",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "9172:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9172:17:8"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "9162:6:8"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "9128:18:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "9121:6:8"
},
"nodeType": "YulFunctionCall",
"src": "9121:26:8"
},
"nodeType": "YulIf",
"src": "9118:81:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9251:42:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "9265:16:8"
},
"nodeType": "YulFunctionCall",
"src": "9265:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "9265:18:8"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "9215:18:8"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "9238:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9246:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "9235:2:8"
},
"nodeType": "YulFunctionCall",
"src": "9235:14:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "9212:2:8"
},
"nodeType": "YulFunctionCall",
"src": "9212:38:8"
},
"nodeType": "YulIf",
"src": "9209:84:8"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "9014:4:8",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "9023:6:8",
"type": ""
}
],
"src": "8979:320:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9411:128:8",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "9433:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9441:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9429:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9429:14:8"
},
{
"hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365",
"kind": "string",
"nodeType": "YulLiteral",
"src": "9445:34:8",
"type": "",
"value": "AccessControl: can only renounce"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9422:6:8"
},
"nodeType": "YulFunctionCall",
"src": "9422:58:8"
},
"nodeType": "YulExpressionStatement",
"src": "9422:58:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "9501:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9509:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9497:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9497:15:8"
},
{
"hexValue": "20726f6c657320666f722073656c66",
"kind": "string",
"nodeType": "YulLiteral",
"src": "9514:17:8",
"type": "",
"value": " roles for self"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9490:6:8"
},
"nodeType": "YulFunctionCall",
"src": "9490:42:8"
},
"nodeType": "YulExpressionStatement",
"src": "9490:42:8"
}
]
},
"name": "store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "9403:6:8",
"type": ""
}
],
"src": "9305:234:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9691:220:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9701:74:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9767:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9772:2:8",
"type": "",
"value": "47"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "9708:58:8"
},
"nodeType": "YulFunctionCall",
"src": "9708:67:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9701:3:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9873:3:8"
}
],
"functionName": {
"name": "store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b",
"nodeType": "YulIdentifier",
"src": "9784:88:8"
},
"nodeType": "YulFunctionCall",
"src": "9784:93:8"
},
"nodeType": "YulExpressionStatement",
"src": "9784:93:8"
},
{
"nodeType": "YulAssignment",
"src": "9886:19:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9897:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9902:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9893:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9893:12:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "9886:3:8"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9679:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "9687:3:8",
"type": ""
}
],
"src": "9545:366:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10088:248:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10098:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10110:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10121:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10106:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10106:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10098:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10145:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10156:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10141:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10141:17:8"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10164:4:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10170:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "10160:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10160:20:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10134:6:8"
},
"nodeType": "YulFunctionCall",
"src": "10134:47:8"
},
"nodeType": "YulExpressionStatement",
"src": "10134:47:8"
},
{
"nodeType": "YulAssignment",
"src": "10190:139:8",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10324:4:8"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "10198:124:8"
},
"nodeType": "YulFunctionCall",
"src": "10198:131:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10190:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10068:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10083:4:8",
"type": ""
}
],
"src": "9917:419:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10396:87:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10406:11:8",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "10414:3:8"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "10406:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10434:1:8",
"type": "",
"value": "0"
},
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "10437:3:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10427:6:8"
},
"nodeType": "YulFunctionCall",
"src": "10427:14:8"
},
"nodeType": "YulExpressionStatement",
"src": "10427:14:8"
},
{
"nodeType": "YulAssignment",
"src": "10450:26:8",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10468:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10471:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "keccak256",
"nodeType": "YulIdentifier",
"src": "10458:9:8"
},
"nodeType": "YulFunctionCall",
"src": "10458:18:8"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "10450:4:8"
}
]
}
]
},
"name": "array_dataslot_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "10383:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "10391:4:8",
"type": ""
}
],
"src": "10342:141:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10533:49:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10543:33:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "10561:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10568:2:8",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10557:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10557:14:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10573:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "10553:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10553:23:8"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "10543:6:8"
}
]
}
]
},
"name": "divide_by_32_ceil",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "10516:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "10526:6:8",
"type": ""
}
],
"src": "10489:93:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10641:54:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10651:37:8",
"value": {
"arguments": [
{
"name": "bits",
"nodeType": "YulIdentifier",
"src": "10676:4:8"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "10682:5:8"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "10672:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10672:16:8"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "10651:8:8"
}
]
}
]
},
"name": "shift_left_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nodeType": "YulTypedName",
"src": "10616:4:8",
"type": ""
},
{
"name": "value",
"nodeType": "YulTypedName",
"src": "10622:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "10632:8:8",
"type": ""
}
],
"src": "10588:107:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10777:317:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "10787:35:8",
"value": {
"arguments": [
{
"name": "shiftBytes",
"nodeType": "YulIdentifier",
"src": "10808:10:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10820:1:8",
"type": "",
"value": "8"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "10804:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10804:18:8"
},
"variables": [
{
"name": "shiftBits",
"nodeType": "YulTypedName",
"src": "10791:9:8",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "10831:109:8",
"value": {
"arguments": [
{
"name": "shiftBits",
"nodeType": "YulIdentifier",
"src": "10862:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10873:66:8",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
"src": "10843:18:8"
},
"nodeType": "YulFunctionCall",
"src": "10843:97:8"
},
"variables": [
{
"name": "mask",
"nodeType": "YulTypedName",
"src": "10835:4:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "10949:51:8",
"value": {
"arguments": [
{
"name": "shiftBits",
"nodeType": "YulIdentifier",
"src": "10980:9:8"
},
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "10991:8:8"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
"src": "10961:18:8"
},
"nodeType": "YulFunctionCall",
"src": "10961:39:8"
},
"variableNames": [
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "10949:8:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11009:30:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11022:5:8"
},
{
"arguments": [
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "11033:4:8"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "11029:3:8"
},
"nodeType": "YulFunctionCall",
"src": "11029:9:8"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "11018:3:8"
},
"nodeType": "YulFunctionCall",
"src": "11018:21:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11009:5:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11048:40:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11061:5:8"
},
{
"arguments": [
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "11072:8:8"
},
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "11082:4:8"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "11068:3:8"
},
"nodeType": "YulFunctionCall",
"src": "11068:19:8"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "11058:2:8"
},
"nodeType": "YulFunctionCall",
"src": "11058:30:8"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "11048:6:8"
}
]
}
]
},
"name": "update_byte_slice_dynamic32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "10738:5:8",
"type": ""
},
{
"name": "shiftBytes",
"nodeType": "YulTypedName",
"src": "10745:10:8",
"type": ""
},
{
"name": "toInsert",
"nodeType": "YulTypedName",
"src": "10757:8:8",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "10770:6:8",
"type": ""
}
],
"src": "10701:393:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11132:28:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11142:12:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "11149:5:8"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "11142:3:8"
}
]
}
]
},
"name": "identity",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11118:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "11128:3:8",
"type": ""
}
],
"src": "11100:60:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11226:82:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11236:66:8",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11294:5:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "11276:17:8"
},
"nodeType": "YulFunctionCall",
"src": "11276:24:8"
}
],
"functionName": {
"name": "identity",
"nodeType": "YulIdentifier",
"src": "11267:8:8"
},
"nodeType": "YulFunctionCall",
"src": "11267:34:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "11249:17:8"
},
"nodeType": "YulFunctionCall",
"src": "11249:53:8"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "11236:9:8"
}
]
}
]
},
"name": "convert_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11206:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "11216:9:8",
"type": ""
}
],
"src": "11166:142:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11361:28:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11371:12:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "11378:5:8"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "11371:3:8"
}
]
}
]
},
"name": "prepare_store_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11347:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "11357:3:8",
"type": ""
}
],
"src": "11314:75:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11471:193:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "11481:63:8",
"value": {
"arguments": [
{
"name": "value_0",
"nodeType": "YulIdentifier",
"src": "11536:7:8"
}
],
"functionName": {
"name": "convert_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "11505:30:8"
},
"nodeType": "YulFunctionCall",
"src": "11505:39:8"
},
"variables": [
{
"name": "convertedValue_0",
"nodeType": "YulTypedName",
"src": "11485:16:8",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "11560:4:8"
},
{
"arguments": [
{
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "11600:4:8"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "11594:5:8"
},
"nodeType": "YulFunctionCall",
"src": "11594:11:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "11607:6:8"
},
{
"arguments": [
{
"name": "convertedValue_0",
"nodeType": "YulIdentifier",
"src": "11639:16:8"
}
],
"functionName": {
"name": "prepare_store_t_uint256",
"nodeType": "YulIdentifier",
"src": "11615:23:8"
},
"nodeType": "YulFunctionCall",
"src": "11615:41:8"
}
],
"functionName": {
"name": "update_byte_slice_dynamic32",
"nodeType": "YulIdentifier",
"src": "11566:27:8"
},
"nodeType": "YulFunctionCall",
"src": "11566:91:8"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "11553:6:8"
},
"nodeType": "YulFunctionCall",
"src": "11553:105:8"
},
"nodeType": "YulExpressionStatement",
"src": "11553:105:8"
}
]
},
"name": "update_storage_value_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "11448:4:8",
"type": ""
},
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "11454:6:8",
"type": ""
},
{
"name": "value_0",
"nodeType": "YulTypedName",
"src": "11462:7:8",
"type": ""
}
],
"src": "11395:269:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11719:24:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11729:8:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "11736:1:8",
"type": "",
"value": "0"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "11729:3:8"
}
]
}
]
},
"name": "zero_value_for_split_t_uint256",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "11715:3:8",
"type": ""
}
],
"src": "11670:73:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11802:136:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "11812:46:8",
"value": {
"arguments": [],
"functionName": {
"name": "zero_value_for_split_t_uint256",
"nodeType": "YulIdentifier",
"src": "11826:30:8"
},
"nodeType": "YulFunctionCall",
"src": "11826:32:8"
},
"variables": [
{
"name": "zero_0",
"nodeType": "YulTypedName",
"src": "11816:6:8",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "11911:4:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "11917:6:8"
},
{
"name": "zero_0",
"nodeType": "YulIdentifier",
"src": "11925:6:8"
}
],
"functionName": {
"name": "update_storage_value_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "11867:43:8"
},
"nodeType": "YulFunctionCall",
"src": "11867:65:8"
},
"nodeType": "YulExpressionStatement",
"src": "11867:65:8"
}
]
},
"name": "storage_set_to_zero_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "11788:4:8",
"type": ""
},
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "11794:6:8",
"type": ""
}
],
"src": "11749:189:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11994:136:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "12061:63:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "12105:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12112:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "storage_set_to_zero_t_uint256",
"nodeType": "YulIdentifier",
"src": "12075:29:8"
},
"nodeType": "YulFunctionCall",
"src": "12075:39:8"
},
"nodeType": "YulExpressionStatement",
"src": "12075:39:8"
}
]
},
"condition": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "12014:5:8"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "12021:3:8"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "12011:2:8"
},
"nodeType": "YulFunctionCall",
"src": "12011:14:8"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "12026:26:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12028:22:8",
"value": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "12041:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12048:1:8",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12037:3:8"
},
"nodeType": "YulFunctionCall",
"src": "12037:13:8"
},
"variableNames": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "12028:5:8"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "12008:2:8",
"statements": []
},
"src": "12004:120:8"
}
]
},
"name": "clear_storage_range_t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "start",
"nodeType": "YulTypedName",
"src": "11982:5:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "11989:3:8",
"type": ""
}
],
"src": "11944:186:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12215:464:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "12241:431:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "12255:54:8",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "12303:5:8"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "12271:31:8"
},
"nodeType": "YulFunctionCall",
"src": "12271:38:8"
},
"variables": [
{
"name": "dataArea",
"nodeType": "YulTypedName",
"src": "12259:8:8",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "12322:63:8",
"value": {
"arguments": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "12345:8:8"
},
{
"arguments": [
{
"name": "startIndex",
"nodeType": "YulIdentifier",
"src": "12373:10:8"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nodeType": "YulIdentifier",
"src": "12355:17:8"
},
"nodeType": "YulFunctionCall",
"src": "12355:29:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12341:3:8"
},
"nodeType": "YulFunctionCall",
"src": "12341:44:8"
},
"variables": [
{
"name": "deleteStart",
"nodeType": "YulTypedName",
"src": "12326:11:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "12542:27:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12544:23:8",
"value": {
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "12559:8:8"
},
"variableNames": [
{
"name": "deleteStart",
"nodeType": "YulIdentifier",
"src": "12544:11:8"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "startIndex",
"nodeType": "YulIdentifier",
"src": "12526:10:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12538:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "12523:2:8"
},
"nodeType": "YulFunctionCall",
"src": "12523:18:8"
},
"nodeType": "YulIf",
"src": "12520:49:8"
},
{
"expression": {
"arguments": [
{
"name": "deleteStart",
"nodeType": "YulIdentifier",
"src": "12611:11:8"
},
{
"arguments": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "12628:8:8"
},
{
"arguments": [
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "12656:3:8"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nodeType": "YulIdentifier",
"src": "12638:17:8"
},
"nodeType": "YulFunctionCall",
"src": "12638:22:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "12624:3:8"
},
"nodeType": "YulFunctionCall",
"src": "12624:37:8"
}
],
"functionName": {
"name": "clear_storage_range_t_bytes1",
"nodeType": "YulIdentifier",
"src": "12582:28:8"
},
"nodeType": "YulFunctionCall",
"src": "12582:80:8"
},
"nodeType": "YulExpressionStatement",
"src": "12582:80:8"
}
]
},
"condition": {
"arguments": [
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "12232:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12237:2:8",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "12229:2:8"
},
"nodeType": "YulFunctionCall",
"src": "12229:11:8"
},
"nodeType": "YulIf",
"src": "12226:446:8"
}
]
},
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "12191:5:8",
"type": ""
},
{
"name": "len",
"nodeType": "YulTypedName",
"src": "12198:3:8",
"type": ""
},
{
"name": "startIndex",
"nodeType": "YulTypedName",
"src": "12203:10:8",
"type": ""
}
],
"src": "12136:543:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12748:54:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "12758:37:8",
"value": {
"arguments": [
{
"name": "bits",
"nodeType": "YulIdentifier",
"src": "12783:4:8"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "12789:5:8"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "12779:3:8"
},
"nodeType": "YulFunctionCall",
"src": "12779:16:8"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "12758:8:8"
}
]
}
]
},
"name": "shift_right_unsigned_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nodeType": "YulTypedName",
"src": "12723:4:8",
"type": ""
},
{
"name": "value",
"nodeType": "YulTypedName",
"src": "12729:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "12739:8:8",
"type": ""
}
],
"src": "12685:117:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "12859:118:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "12869:68:8",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12918:1:8",
"type": "",
"value": "8"
},
{
"name": "bytes",
"nodeType": "YulIdentifier",
"src": "12921:5:8"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "12914:3:8"
},
"nodeType": "YulFunctionCall",
"src": "12914:13:8"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "12933:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "12929:3:8"
},
"nodeType": "YulFunctionCall",
"src": "12929:6:8"
}
],
"functionName": {
"name": "shift_right_unsigned_dynamic",
"nodeType": "YulIdentifier",
"src": "12885:28:8"
},
"nodeType": "YulFunctionCall",
"src": "12885:51:8"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "12881:3:8"
},
"nodeType": "YulFunctionCall",
"src": "12881:56:8"
},
"variables": [
{
"name": "mask",
"nodeType": "YulTypedName",
"src": "12873:4:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "12946:25:8",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "12960:4:8"
},
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "12966:4:8"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "12956:3:8"
},
"nodeType": "YulFunctionCall",
"src": "12956:15:8"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "12946:6:8"
}
]
}
]
},
"name": "mask_bytes_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "12836:4:8",
"type": ""
},
{
"name": "bytes",
"nodeType": "YulTypedName",
"src": "12842:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "12852:6:8",
"type": ""
}
],
"src": "12808:169:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13063:214:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13196:37:8",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "13223:4:8"
},
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "13229:3:8"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nodeType": "YulIdentifier",
"src": "13204:18:8"
},
"nodeType": "YulFunctionCall",
"src": "13204:29:8"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "13196:4:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "13242:29:8",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "13253:4:8"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13263:1:8",
"type": "",
"value": "2"
},
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "13266:3:8"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "13259:3:8"
},
"nodeType": "YulFunctionCall",
"src": "13259:11:8"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "13250:2:8"
},
"nodeType": "YulFunctionCall",
"src": "13250:21:8"
},
"variableNames": [
{
"name": "used",
"nodeType": "YulIdentifier",
"src": "13242:4:8"
}
]
}
]
},
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "13044:4:8",
"type": ""
},
{
"name": "len",
"nodeType": "YulTypedName",
"src": "13050:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "used",
"nodeType": "YulTypedName",
"src": "13058:4:8",
"type": ""
}
],
"src": "12982:295:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "13374:1303:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "13385:51:8",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "13432:3:8"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "13399:32:8"
},
"nodeType": "YulFunctionCall",
"src": "13399:37:8"
},
"variables": [
{
"name": "newLen",
"nodeType": "YulTypedName",
"src": "13389:6:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "13521:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "13523:16:8"
},
"nodeType": "YulFunctionCall",
"src": "13523:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "13523:18:8"
}
]
},
"condition": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "13493:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13501:18:8",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "13490:2:8"
},
"nodeType": "YulFunctionCall",
"src": "13490:30:8"
},
"nodeType": "YulIf",
"src": "13487:56:8"
},
{
"nodeType": "YulVariableDeclaration",
"src": "13553:52:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "13599:4:8"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "13593:5:8"
},
"nodeType": "YulFunctionCall",
"src": "13593:11:8"
}
],
"functionName": {
"name": "extract_byte_array_length",
"nodeType": "YulIdentifier",
"src": "13567:25:8"
},
"nodeType": "YulFunctionCall",
"src": "13567:38:8"
},
"variables": [
{
"name": "oldLen",
"nodeType": "YulTypedName",
"src": "13557:6:8",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "13698:4:8"
},
{
"name": "oldLen",
"nodeType": "YulIdentifier",
"src": "13704:6:8"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "13712:6:8"
}
],
"functionName": {
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nodeType": "YulIdentifier",
"src": "13652:45:8"
},
"nodeType": "YulFunctionCall",
"src": "13652:67:8"
},
"nodeType": "YulExpressionStatement",
"src": "13652:67:8"
},
{
"nodeType": "YulVariableDeclaration",
"src": "13729:18:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "13746:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "srcOffset",
"nodeType": "YulTypedName",
"src": "13733:9:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "13757:17:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "13770:4:8",
"type": "",
"value": "0x20"
},
"variableNames": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "13757:9:8"
}
]
},
{
"cases": [
{
"body": {
"nodeType": "YulBlock",
"src": "13821:611:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "13835:37:8",
"value": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "13854:6:8"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13866:4:8",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "13862:3:8"
},
"nodeType": "YulFunctionCall",
"src": "13862:9:8"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "13850:3:8"
},
"nodeType": "YulFunctionCall",
"src": "13850:22:8"
},
"variables": [
{
"name": "loopEnd",
"nodeType": "YulTypedName",
"src": "13839:7:8",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "13886:51:8",
"value": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "13932:4:8"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "13900:31:8"
},
"nodeType": "YulFunctionCall",
"src": "13900:37:8"
},
"variables": [
{
"name": "dstPtr",
"nodeType": "YulTypedName",
"src": "13890:6:8",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "13950:10:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "13959:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "13954:1:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "14018:163:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "14043:6:8"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "14061:3:8"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "14066:9:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14057:3:8"
},
"nodeType": "YulFunctionCall",
"src": "14057:19:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "14051:5:8"
},
"nodeType": "YulFunctionCall",
"src": "14051:26:8"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "14036:6:8"
},
"nodeType": "YulFunctionCall",
"src": "14036:42:8"
},
"nodeType": "YulExpressionStatement",
"src": "14036:42:8"
},
{
"nodeType": "YulAssignment",
"src": "14095:24:8",
"value": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "14109:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14117:1:8",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14105:3:8"
},
"nodeType": "YulFunctionCall",
"src": "14105:14:8"
},
"variableNames": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "14095:6:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "14136:31:8",
"value": {
"arguments": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "14153:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14164:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14149:3:8"
},
"nodeType": "YulFunctionCall",
"src": "14149:18:8"
},
"variableNames": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "14136:9:8"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "13984:1:8"
},
{
"name": "loopEnd",
"nodeType": "YulIdentifier",
"src": "13987:7:8"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "13981:2:8"
},
"nodeType": "YulFunctionCall",
"src": "13981:14:8"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "13996:21:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "13998:17:8",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "14007:1:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14010:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14003:3:8"
},
"nodeType": "YulFunctionCall",
"src": "14003:12:8"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "13998:1:8"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "13977:3:8",
"statements": []
},
"src": "13973:208:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14217:156:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "14235:43:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "14262:3:8"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "14267:9:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14258:3:8"
},
"nodeType": "YulFunctionCall",
"src": "14258:19:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "14252:5:8"
},
"nodeType": "YulFunctionCall",
"src": "14252:26:8"
},
"variables": [
{
"name": "lastValue",
"nodeType": "YulTypedName",
"src": "14239:9:8",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "14302:6:8"
},
{
"arguments": [
{
"name": "lastValue",
"nodeType": "YulIdentifier",
"src": "14329:9:8"
},
{
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "14344:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14352:4:8",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "14340:3:8"
},
"nodeType": "YulFunctionCall",
"src": "14340:17:8"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nodeType": "YulIdentifier",
"src": "14310:18:8"
},
"nodeType": "YulFunctionCall",
"src": "14310:48:8"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "14295:6:8"
},
"nodeType": "YulFunctionCall",
"src": "14295:64:8"
},
"nodeType": "YulExpressionStatement",
"src": "14295:64:8"
}
]
},
"condition": {
"arguments": [
{
"name": "loopEnd",
"nodeType": "YulIdentifier",
"src": "14200:7:8"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "14209:6:8"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "14197:2:8"
},
"nodeType": "YulFunctionCall",
"src": "14197:19:8"
},
"nodeType": "YulIf",
"src": "14194:179:8"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "14393:4:8"
},
{
"arguments": [
{
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "14407:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14415:1:8",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "14403:3:8"
},
"nodeType": "YulFunctionCall",
"src": "14403:14:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14419:1:8",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14399:3:8"
},
"nodeType": "YulFunctionCall",
"src": "14399:22:8"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "14386:6:8"
},
"nodeType": "YulFunctionCall",
"src": "14386:36:8"
},
"nodeType": "YulExpressionStatement",
"src": "14386:36:8"
}
]
},
"nodeType": "YulCase",
"src": "13814:618:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "13819:1:8",
"type": "",
"value": "1"
}
},
{
"body": {
"nodeType": "YulBlock",
"src": "14449:222:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "14463:14:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "14476:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "14467:5:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "14500:67:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14518:35:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "14537:3:8"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "14542:9:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14533:3:8"
},
"nodeType": "YulFunctionCall",
"src": "14533:19:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "14527:5:8"
},
"nodeType": "YulFunctionCall",
"src": "14527:26:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "14518:5:8"
}
]
}
]
},
"condition": {
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "14493:6:8"
},
"nodeType": "YulIf",
"src": "14490:77:8"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "14587:4:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "14646:5:8"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "14653:6:8"
}
],
"functionName": {
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nodeType": "YulIdentifier",
"src": "14593:52:8"
},
"nodeType": "YulFunctionCall",
"src": "14593:67:8"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "14580:6:8"
},
"nodeType": "YulFunctionCall",
"src": "14580:81:8"
},
"nodeType": "YulExpressionStatement",
"src": "14580:81:8"
}
]
},
"nodeType": "YulCase",
"src": "14441:230:8",
"value": "default"
}
],
"expression": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "13794:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "13802:2:8",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "13791:2:8"
},
"nodeType": "YulFunctionCall",
"src": "13791:14:8"
},
"nodeType": "YulSwitch",
"src": "13784:887:8"
}
]
},
"name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "13363:4:8",
"type": ""
},
{
"name": "src",
"nodeType": "YulTypedName",
"src": "13369:3:8",
"type": ""
}
],
"src": "13282:1395:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14797:34:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "14807:18:8",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "14822:3:8"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "14807:11:8"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "14769:3:8",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "14774:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "14785:11:8",
"type": ""
}
],
"src": "14683:148:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "14943:67:8",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "14965:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "14973:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "14961:3:8"
},
"nodeType": "YulFunctionCall",
"src": "14961:14:8"
},
{
"hexValue": "416363657373436f6e74726f6c3a206163636f756e7420",
"kind": "string",
"nodeType": "YulLiteral",
"src": "14977:25:8",
"type": "",
"value": "AccessControl: account "
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "14954:6:8"
},
"nodeType": "YulFunctionCall",
"src": "14954:49:8"
},
"nodeType": "YulExpressionStatement",
"src": "14954:49:8"
}
]
},
"name": "store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "14935:6:8",
"type": ""
}
],
"src": "14837:173:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15180:238:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "15190:92:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15274:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15279:2:8",
"type": "",
"value": "23"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "15197:76:8"
},
"nodeType": "YulFunctionCall",
"src": "15197:85:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15190:3:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15380:3:8"
}
],
"functionName": {
"name": "store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874",
"nodeType": "YulIdentifier",
"src": "15291:88:8"
},
"nodeType": "YulFunctionCall",
"src": "15291:93:8"
},
"nodeType": "YulExpressionStatement",
"src": "15291:93:8"
},
{
"nodeType": "YulAssignment",
"src": "15393:19:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15404:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15409:2:8",
"type": "",
"value": "23"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15400:3:8"
},
"nodeType": "YulFunctionCall",
"src": "15400:12:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "15393:3:8"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "15168:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "15176:3:8",
"type": ""
}
],
"src": "15016:402:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15534:280:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "15544:53:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "15591:5:8"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "15558:32:8"
},
"nodeType": "YulFunctionCall",
"src": "15558:39:8"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "15548:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "15606:96:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15690:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "15695:6:8"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "15613:76:8"
},
"nodeType": "YulFunctionCall",
"src": "15613:89:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15606:3:8"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "15750:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15757:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15746:3:8"
},
"nodeType": "YulFunctionCall",
"src": "15746:16:8"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15764:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "15769:6:8"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "15711:34:8"
},
"nodeType": "YulFunctionCall",
"src": "15711:65:8"
},
"nodeType": "YulExpressionStatement",
"src": "15711:65:8"
},
{
"nodeType": "YulAssignment",
"src": "15785:23:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "15796:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "15801:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15792:3:8"
},
"nodeType": "YulFunctionCall",
"src": "15792:16:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "15785:3:8"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "15515:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "15522:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "15530:3:8",
"type": ""
}
],
"src": "15424:390:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "15926:61:8",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "15948:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "15956:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "15944:3:8"
},
"nodeType": "YulFunctionCall",
"src": "15944:14:8"
},
{
"hexValue": "206973206d697373696e6720726f6c6520",
"kind": "string",
"nodeType": "YulLiteral",
"src": "15960:19:8",
"type": "",
"value": " is missing role "
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "15937:6:8"
},
"nodeType": "YulFunctionCall",
"src": "15937:43:8"
},
"nodeType": "YulExpressionStatement",
"src": "15937:43:8"
}
]
},
"name": "store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "15918:6:8",
"type": ""
}
],
"src": "15820:167:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16157:238:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "16167:92:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16251:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16256:2:8",
"type": "",
"value": "17"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "16174:76:8"
},
"nodeType": "YulFunctionCall",
"src": "16174:85:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16167:3:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16357:3:8"
}
],
"functionName": {
"name": "store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69",
"nodeType": "YulIdentifier",
"src": "16268:88:8"
},
"nodeType": "YulFunctionCall",
"src": "16268:93:8"
},
"nodeType": "YulExpressionStatement",
"src": "16268:93:8"
},
{
"nodeType": "YulAssignment",
"src": "16370:19:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16381:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "16386:2:8",
"type": "",
"value": "17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "16377:3:8"
},
"nodeType": "YulFunctionCall",
"src": "16377:12:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "16370:3:8"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "16145:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "16153:3:8",
"type": ""
}
],
"src": "15993:402:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "16787:581:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "16798:155:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16949:3:8"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "16805:142:8"
},
"nodeType": "YulFunctionCall",
"src": "16805:148:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16798:3:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "16963:102:8",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "17052:6:8"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17061:3:8"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "16970:81:8"
},
"nodeType": "YulFunctionCall",
"src": "16970:95:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "16963:3:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "17075:155:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17226:3:8"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "17082:142:8"
},
"nodeType": "YulFunctionCall",
"src": "17082:148:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17075:3:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "17240:102:8",
"value": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "17329:6:8"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17338:3:8"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "17247:81:8"
},
"nodeType": "YulFunctionCall",
"src": "17247:95:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17240:3:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "17352:10:8",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "17359:3:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "17352:3:8"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "16758:3:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "16764:6:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "16772:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "16783:3:8",
"type": ""
}
],
"src": "16401:967:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17492:195:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "17502:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17514:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17525:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17510:3:8"
},
"nodeType": "YulFunctionCall",
"src": "17510:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17502:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17549:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17560:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "17545:3:8"
},
"nodeType": "YulFunctionCall",
"src": "17545:17:8"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17568:4:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "17574:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "17564:3:8"
},
"nodeType": "YulFunctionCall",
"src": "17564:20:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17538:6:8"
},
"nodeType": "YulFunctionCall",
"src": "17538:47:8"
},
"nodeType": "YulExpressionStatement",
"src": "17538:47:8"
},
{
"nodeType": "YulAssignment",
"src": "17594:86:8",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "17666:6:8"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17675:4:8"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "17602:63:8"
},
"nodeType": "YulFunctionCall",
"src": "17602:78:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "17594:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "17464:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "17476:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "17487:4:8",
"type": ""
}
],
"src": "17374:313:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17721:152:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17738:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17741:77:8",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17731:6:8"
},
"nodeType": "YulFunctionCall",
"src": "17731:88:8"
},
"nodeType": "YulExpressionStatement",
"src": "17731:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17835:1:8",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17838:4:8",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "17828:6:8"
},
"nodeType": "YulFunctionCall",
"src": "17828:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "17828:15:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17859:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "17862:4:8",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "17852:6:8"
},
"nodeType": "YulFunctionCall",
"src": "17852:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "17852:15:8"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "17693:180:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "17927:362:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "17937:25:8",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "17960:1:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "17942:17:8"
},
"nodeType": "YulFunctionCall",
"src": "17942:20:8"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "17937:1:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "17971:25:8",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "17994:1:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "17976:17:8"
},
"nodeType": "YulFunctionCall",
"src": "17976:20:8"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "17971:1:8"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "18005:28:8",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "18028:1:8"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "18031:1:8"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "18024:3:8"
},
"nodeType": "YulFunctionCall",
"src": "18024:9:8"
},
"variables": [
{
"name": "product_raw",
"nodeType": "YulTypedName",
"src": "18009:11:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "18042:41:8",
"value": {
"arguments": [
{
"name": "product_raw",
"nodeType": "YulIdentifier",
"src": "18071:11:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "18053:17:8"
},
"nodeType": "YulFunctionCall",
"src": "18053:30:8"
},
"variableNames": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "18042:7:8"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "18260:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "18262:16:8"
},
"nodeType": "YulFunctionCall",
"src": "18262:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "18262:18:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "18193:1:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "18186:6:8"
},
"nodeType": "YulFunctionCall",
"src": "18186:9:8"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "18216:1:8"
},
{
"arguments": [
{
"name": "product",
"nodeType": "YulIdentifier",
"src": "18223:7:8"
},
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "18232:1:8"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "18219:3:8"
},
"nodeType": "YulFunctionCall",
"src": "18219:15:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "18213:2:8"
},
"nodeType": "YulFunctionCall",
"src": "18213:22:8"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "18166:2:8"
},
"nodeType": "YulFunctionCall",
"src": "18166:83:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "18146:6:8"
},
"nodeType": "YulFunctionCall",
"src": "18146:113:8"
},
"nodeType": "YulIf",
"src": "18143:139:8"
}
]
},
"name": "checked_mul_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "17910:1:8",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "17913:1:8",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nodeType": "YulTypedName",
"src": "17919:7:8",
"type": ""
}
],
"src": "17879:410:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18339:147:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "18349:25:8",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "18372:1:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "18354:17:8"
},
"nodeType": "YulFunctionCall",
"src": "18354:20:8"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "18349:1:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "18383:25:8",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "18406:1:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "18388:17:8"
},
"nodeType": "YulFunctionCall",
"src": "18388:20:8"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "18383:1:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "18417:16:8",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "18428:1:8"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "18431:1:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18424:3:8"
},
"nodeType": "YulFunctionCall",
"src": "18424:9:8"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "18417:3:8"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "18457:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "18459:16:8"
},
"nodeType": "YulFunctionCall",
"src": "18459:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "18459:18:8"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "18449:1:8"
},
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "18452:3:8"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "18446:2:8"
},
"nodeType": "YulFunctionCall",
"src": "18446:10:8"
},
"nodeType": "YulIf",
"src": "18443:36:8"
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "18326:1:8",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "18329:1:8",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "18335:3:8",
"type": ""
}
],
"src": "18295:191:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18520:152:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18537:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18540:77:8",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18530:6:8"
},
"nodeType": "YulFunctionCall",
"src": "18530:88:8"
},
"nodeType": "YulExpressionStatement",
"src": "18530:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18634:1:8",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18637:4:8",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18627:6:8"
},
"nodeType": "YulFunctionCall",
"src": "18627:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "18627:15:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18658:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18661:4:8",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "18651:6:8"
},
"nodeType": "YulFunctionCall",
"src": "18651:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "18651:15:8"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "18492:180:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18721:128:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "18731:33:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "18758:5:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "18740:17:8"
},
"nodeType": "YulFunctionCall",
"src": "18740:24:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "18731:5:8"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "18792:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "18794:16:8"
},
"nodeType": "YulFunctionCall",
"src": "18794:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "18794:18:8"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "18779:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18786:4:8",
"type": "",
"value": "0x00"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "18776:2:8"
},
"nodeType": "YulFunctionCall",
"src": "18776:15:8"
},
"nodeType": "YulIf",
"src": "18773:41:8"
},
{
"nodeType": "YulAssignment",
"src": "18823:20:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "18834:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18841:1:8",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "18830:3:8"
},
"nodeType": "YulFunctionCall",
"src": "18830:13:8"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "18823:3:8"
}
]
}
]
},
"name": "decrement_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "18707:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "18717:3:8",
"type": ""
}
],
"src": "18678:171:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "18961:76:8",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "18983:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "18991:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "18979:3:8"
},
"nodeType": "YulFunctionCall",
"src": "18979:14:8"
},
{
"hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74",
"kind": "string",
"nodeType": "YulLiteral",
"src": "18995:34:8",
"type": "",
"value": "Strings: hex length insufficient"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "18972:6:8"
},
"nodeType": "YulFunctionCall",
"src": "18972:58:8"
},
"nodeType": "YulExpressionStatement",
"src": "18972:58:8"
}
]
},
"name": "store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "18953:6:8",
"type": ""
}
],
"src": "18855:182:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19189:220:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19199:74:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19265:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19270:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "19206:58:8"
},
"nodeType": "YulFunctionCall",
"src": "19206:67:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19199:3:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19371:3:8"
}
],
"functionName": {
"name": "store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2",
"nodeType": "YulIdentifier",
"src": "19282:88:8"
},
"nodeType": "YulFunctionCall",
"src": "19282:93:8"
},
"nodeType": "YulExpressionStatement",
"src": "19282:93:8"
},
{
"nodeType": "YulAssignment",
"src": "19384:19:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "19395:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19400:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19391:3:8"
},
"nodeType": "YulFunctionCall",
"src": "19391:12:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "19384:3:8"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "19177:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "19185:3:8",
"type": ""
}
],
"src": "19043:366:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "19586:248:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "19596:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19608:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19619:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19604:3:8"
},
"nodeType": "YulFunctionCall",
"src": "19604:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19596:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19643:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "19654:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "19639:3:8"
},
"nodeType": "YulFunctionCall",
"src": "19639:17:8"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19662:4:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "19668:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "19658:3:8"
},
"nodeType": "YulFunctionCall",
"src": "19658:20:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "19632:6:8"
},
"nodeType": "YulFunctionCall",
"src": "19632:47:8"
},
"nodeType": "YulExpressionStatement",
"src": "19632:47:8"
},
{
"nodeType": "YulAssignment",
"src": "19688:139:8",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19822:4:8"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "19696:124:8"
},
"nodeType": "YulFunctionCall",
"src": "19696:131:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "19688:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "19566:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "19581:4:8",
"type": ""
}
],
"src": "19415:419:8"
}
]
},
"contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_address_t_string_memory_ptr__to_t_address_t_string_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\n\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_string_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory_with_cleanup(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_string_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: can only renounce\")\n\n mstore(add(memPtr, 32), \" roles for self\")\n\n }\n\n function abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 47)\n store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: account \")\n\n }\n\n function abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 23)\n store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(pos)\n end := add(pos, 23)\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(memPtr) {\n\n mstore(add(memPtr, 0), \" is missing role \")\n\n }\n\n function abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 17)\n store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(pos)\n end := add(pos, 17)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(memPtr) {\n\n mstore(add(memPtr, 0), \"Strings: hex length insufficient\")\n\n }\n\n function abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n",
"id": 8,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100a95760003560e01c80636fa8cf33116100715780636fa8cf331461017757806391d1485414610195578063a217fddf146101c5578063d547741f146101e3578063ea0a5237146101ff578063eafb79e21461022f576100a9565b806301ffc9a7146100ae5780631bcfbe31146100de578063248a9ca31461010f5780632f2ff15d1461013f57806336568abe1461015b575b600080fd5b6100c860048036038101906100c39190610bb8565b61024d565b6040516100d59190610c00565b60405180910390f35b6100f860048036038101906100f39190610c51565b6102c7565b604051610106929190610d4f565b60405180910390f35b61012960048036038101906101249190610db5565b6103a3565b6040516101369190610df1565b60405180910390f35b61015960048036038101906101549190610e38565b6103c2565b005b61017560048036038101906101709190610e38565b6103e3565b005b61017f610466565b60405161018c9190610e87565b60405180910390f35b6101af60048036038101906101aa9190610e38565b610473565b6040516101bc9190610c00565b60405180910390f35b6101cd6104dd565b6040516101da9190610df1565b60405180910390f35b6101fd60048036038101906101f89190610e38565b6104e4565b005b61021960048036038101906102149190610fd7565b610505565b6040516102269190610e87565b60405180910390f35b6102376105f3565b6040516102449190610df1565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102c057506102bf82610617565b5b9050919050565b600181815481106102d757600080fd5b90600052602060002090600202016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010180546103209061104f565b80601f016020809104026020016040519081016040528092919081815260200182805461034c9061104f565b80156103995780601f1061036e57610100808354040283529160200191610399565b820191906000526020600020905b81548152906001019060200180831161037c57829003601f168201915b5050505050905082565b6000806000838152602001908152602001600020600101549050919050565b6103cb826103a3565b6103d481610681565b6103de8383610695565b505050565b6103eb610775565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044f906110f2565b60405180910390fd5b610462828261077d565b5050565b6000600180549050905090565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b6104ed826103a3565b6104f681610681565b610500838361077d565b505050565b60006105317fe2889e7308860b3fe8df0daa86fccfea4d71e43776719a57be28cf90b6db81e933610473565b61053a57600080fd5b60405180604001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001838152506001808160018154018082558091505003906000526020600020906002020160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010190816105e091906112be565b509050506105ec610466565b9050919050565b7fe2889e7308860b3fe8df0daa86fccfea4d71e43776719a57be28cf90b6db81e981565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6106928161068d610775565b61085e565b50565b61069f8282610473565b61077157600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610716610775565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600033905090565b6107878282610473565b1561085a57600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506107ff610775565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6108688282610473565b6108df57610875816108e3565b6108838360001c6020610910565b604051602001610894929190611464565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d6919061149e565b60405180910390fd5b5050565b60606109098273ffffffffffffffffffffffffffffffffffffffff16601460ff16610910565b9050919050565b60606000600283600261092391906114ef565b61092d9190611531565b67ffffffffffffffff81111561094657610945610eac565b5b6040519080825280601f01601f1916602001820160405280156109785781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106109b0576109af611565565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610a1457610a13611565565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002610a5491906114ef565b610a5e9190611531565b90505b6001811115610afe577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110610aa057610a9f611565565b5b1a60f81b828281518110610ab757610ab6611565565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080610af790611594565b9050610a61565b5060008414610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990611609565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610b9581610b60565b8114610ba057600080fd5b50565b600081359050610bb281610b8c565b92915050565b600060208284031215610bce57610bcd610b56565b5b6000610bdc84828501610ba3565b91505092915050565b60008115159050919050565b610bfa81610be5565b82525050565b6000602082019050610c156000830184610bf1565b92915050565b6000819050919050565b610c2e81610c1b565b8114610c3957600080fd5b50565b600081359050610c4b81610c25565b92915050565b600060208284031215610c6757610c66610b56565b5b6000610c7584828501610c3c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ca982610c7e565b9050919050565b610cb981610c9e565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610cf9578082015181840152602081019050610cde565b60008484015250505050565b6000601f19601f8301169050919050565b6000610d2182610cbf565b610d2b8185610cca565b9350610d3b818560208601610cdb565b610d4481610d05565b840191505092915050565b6000604082019050610d646000830185610cb0565b8181036020830152610d768184610d16565b90509392505050565b6000819050919050565b610d9281610d7f565b8114610d9d57600080fd5b50565b600081359050610daf81610d89565b92915050565b600060208284031215610dcb57610dca610b56565b5b6000610dd984828501610da0565b91505092915050565b610deb81610d7f565b82525050565b6000602082019050610e066000830184610de2565b92915050565b610e1581610c9e565b8114610e2057600080fd5b50565b600081359050610e3281610e0c565b92915050565b60008060408385031215610e4f57610e4e610b56565b5b6000610e5d85828601610da0565b9250506020610e6e85828601610e23565b9150509250929050565b610e8181610c1b565b82525050565b6000602082019050610e9c6000830184610e78565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610ee482610d05565b810181811067ffffffffffffffff82111715610f0357610f02610eac565b5b80604052505050565b6000610f16610b4c565b9050610f228282610edb565b919050565b600067ffffffffffffffff821115610f4257610f41610eac565b5b610f4b82610d05565b9050602081019050919050565b82818337600083830152505050565b6000610f7a610f7584610f27565b610f0c565b905082815260208101848484011115610f9657610f95610ea7565b5b610fa1848285610f58565b509392505050565b600082601f830112610fbe57610fbd610ea2565b5b8135610fce848260208601610f67565b91505092915050565b600060208284031215610fed57610fec610b56565b5b600082013567ffffffffffffffff81111561100b5761100a610b5b565b5b61101784828501610fa9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061106757607f821691505b60208210810361107a57611079611020565b5b50919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b60006110dc602f83610cca565b91506110e782611080565b604082019050919050565b6000602082019050818103600083015261110b816110cf565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026111747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611137565b61117e8683611137565b95508019841693508086168417925050509392505050565b6000819050919050565b60006111bb6111b66111b184610c1b565b611196565b610c1b565b9050919050565b6000819050919050565b6111d5836111a0565b6111e96111e1826111c2565b848454611144565b825550505050565b600090565b6111fe6111f1565b6112098184846111cc565b505050565b5b8181101561122d576112226000826111f6565b60018101905061120f565b5050565b601f8211156112725761124381611112565b61124c84611127565b8101602085101561125b578190505b61126f61126785611127565b83018261120e565b50505b505050565b600082821c905092915050565b600061129560001984600802611277565b1980831691505092915050565b60006112ae8383611284565b9150826002028217905092915050565b6112c782610cbf565b67ffffffffffffffff8111156112e0576112df610eac565b5b6112ea825461104f565b6112f5828285611231565b600060209050601f8311600181146113285760008415611316578287015190505b61132085826112a2565b865550611388565b601f19841661133686611112565b60005b8281101561135e57848901518255600182019150602085019450602081019050611339565b8683101561137b5784890151611377601f891682611284565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006113d1601783611390565b91506113dc8261139b565b601782019050919050565b60006113f282610cbf565b6113fc8185611390565b935061140c818560208601610cdb565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061144e601183611390565b915061145982611418565b601182019050919050565b600061146f826113c4565b915061147b82856113e7565b915061148682611441565b915061149282846113e7565b91508190509392505050565b600060208201905081810360008301526114b88184610d16565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006114fa82610c1b565b915061150583610c1b565b925082820261151381610c1b565b9150828204841483151761152a576115296114c0565b5b5092915050565b600061153c82610c1b565b915061154783610c1b565b925082820190508082111561155f5761155e6114c0565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061159f82610c1b565b9150600082036115b2576115b16114c0565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006115f3602083610cca565b91506115fe826115bd565b602082019050919050565b60006020820190508181036000830152611622816115e6565b905091905056fea2646970667358221220c98ffc77395c5b35a623c03136d6d45bb351a2483965d83f306f1b150b1ad13a64736f6c63430008120033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FA8CF33 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x6FA8CF33 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0xEA0A5237 EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xEAFB79E2 EQ PUSH2 0x22F JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x1BCFBE31 EQ PUSH2 0xDE JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x15B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC3 SWAP2 SWAP1 PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x24D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP2 SWAP1 PUSH2 0xC00 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0xC51 JUMP JUMPDEST PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x106 SWAP3 SWAP2 SWAP1 PUSH2 0xD4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x124 SWAP2 SWAP1 PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x3A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x136 SWAP2 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x154 SWAP2 SWAP1 PUSH2 0xE38 JUMP JUMPDEST PUSH2 0x3C2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x175 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x170 SWAP2 SWAP1 PUSH2 0xE38 JUMP JUMPDEST PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x17F PUSH2 0x466 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1AA SWAP2 SWAP1 PUSH2 0xE38 JUMP JUMPDEST PUSH2 0x473 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BC SWAP2 SWAP1 PUSH2 0xC00 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1CD PUSH2 0x4DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DA SWAP2 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1F8 SWAP2 SWAP1 PUSH2 0xE38 JUMP JUMPDEST PUSH2 0x4E4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x219 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x214 SWAP2 SWAP1 PUSH2 0xFD7 JUMP JUMPDEST PUSH2 0x505 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x226 SWAP2 SWAP1 PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 PUSH2 0x5F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x244 SWAP2 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x2C0 JUMPI POP PUSH2 0x2BF DUP3 PUSH2 0x617 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH2 0x320 SWAP1 PUSH2 0x104F JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x34C SWAP1 PUSH2 0x104F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x399 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x36E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x399 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x37C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3CB DUP3 PUSH2 0x3A3 JUMP JUMPDEST PUSH2 0x3D4 DUP2 PUSH2 0x681 JUMP JUMPDEST PUSH2 0x3DE DUP4 DUP4 PUSH2 0x695 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x3EB PUSH2 0x775 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x44F SWAP1 PUSH2 0x10F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x462 DUP3 DUP3 PUSH2 0x77D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SHL DUP2 JUMP JUMPDEST PUSH2 0x4ED DUP3 PUSH2 0x3A3 JUMP JUMPDEST PUSH2 0x4F6 DUP2 PUSH2 0x681 JUMP JUMPDEST PUSH2 0x500 DUP4 DUP4 PUSH2 0x77D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x531 PUSH32 0xE2889E7308860B3FE8DF0DAA86FCCFEA4D71E43776719A57BE28CF90B6DB81E9 CALLER PUSH2 0x473 JUMP JUMPDEST PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x1 DUP1 DUP2 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP2 PUSH2 0x5E0 SWAP2 SWAP1 PUSH2 0x12BE JUMP JUMPDEST POP SWAP1 POP POP PUSH2 0x5EC PUSH2 0x466 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xE2889E7308860B3FE8DF0DAA86FCCFEA4D71E43776719A57BE28CF90B6DB81E9 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x692 DUP2 PUSH2 0x68D PUSH2 0x775 JUMP JUMPDEST PUSH2 0x85E JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x69F DUP3 DUP3 PUSH2 0x473 JUMP JUMPDEST PUSH2 0x771 JUMPI PUSH1 0x1 PUSH1 0x0 DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x716 PUSH2 0x775 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x787 DUP3 DUP3 PUSH2 0x473 JUMP JUMPDEST ISZERO PUSH2 0x85A JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x7FF PUSH2 0x775 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x868 DUP3 DUP3 PUSH2 0x473 JUMP JUMPDEST PUSH2 0x8DF JUMPI PUSH2 0x875 DUP2 PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x883 DUP4 PUSH1 0x0 SHR PUSH1 0x20 PUSH2 0x910 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x894 SWAP3 SWAP2 SWAP1 PUSH2 0x1464 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8D6 SWAP2 SWAP1 PUSH2 0x149E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x909 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH1 0xFF AND PUSH2 0x910 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 DUP4 PUSH1 0x2 PUSH2 0x923 SWAP2 SWAP1 PUSH2 0x14EF JUMP JUMPDEST PUSH2 0x92D SWAP2 SWAP1 PUSH2 0x1531 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x946 JUMPI PUSH2 0x945 PUSH2 0xEAC JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x978 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x9B0 JUMPI PUSH2 0x9AF PUSH2 0x1565 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xA14 JUMPI PUSH2 0xA13 PUSH2 0x1565 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x2 PUSH2 0xA54 SWAP2 SWAP1 PUSH2 0x14EF JUMP JUMPDEST PUSH2 0xA5E SWAP2 SWAP1 PUSH2 0x1531 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xAFE JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP7 AND PUSH1 0x10 DUP2 LT PUSH2 0xAA0 JUMPI PUSH2 0xA9F PUSH2 0x1565 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAB7 JUMPI PUSH2 0xAB6 PUSH2 0x1565 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 DUP6 SWAP1 SHR SWAP5 POP DUP1 PUSH2 0xAF7 SWAP1 PUSH2 0x1594 JUMP JUMPDEST SWAP1 POP PUSH2 0xA61 JUMP JUMPDEST POP PUSH1 0x0 DUP5 EQ PUSH2 0xB42 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB39 SWAP1 PUSH2 0x1609 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB95 DUP2 PUSH2 0xB60 JUMP JUMPDEST DUP2 EQ PUSH2 0xBA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xBB2 DUP2 PUSH2 0xB8C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBCE JUMPI PUSH2 0xBCD PUSH2 0xB56 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xBDC DUP5 DUP3 DUP6 ADD PUSH2 0xBA3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBFA DUP2 PUSH2 0xBE5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC15 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xBF1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC2E DUP2 PUSH2 0xC1B JUMP JUMPDEST DUP2 EQ PUSH2 0xC39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xC4B DUP2 PUSH2 0xC25 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC67 JUMPI PUSH2 0xC66 PUSH2 0xB56 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC75 DUP5 DUP3 DUP6 ADD PUSH2 0xC3C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCA9 DUP3 PUSH2 0xC7E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCB9 DUP2 PUSH2 0xC9E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCF9 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xCDE JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD21 DUP3 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0xD2B DUP2 DUP6 PUSH2 0xCCA JUMP JUMPDEST SWAP4 POP PUSH2 0xD3B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xCDB JUMP JUMPDEST PUSH2 0xD44 DUP2 PUSH2 0xD05 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xD64 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xCB0 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xD76 DUP2 DUP5 PUSH2 0xD16 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD92 DUP2 PUSH2 0xD7F JUMP JUMPDEST DUP2 EQ PUSH2 0xD9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xDAF DUP2 PUSH2 0xD89 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDCB JUMPI PUSH2 0xDCA PUSH2 0xB56 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xDD9 DUP5 DUP3 DUP6 ADD PUSH2 0xDA0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDEB DUP2 PUSH2 0xD7F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xE06 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xDE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE15 DUP2 PUSH2 0xC9E JUMP JUMPDEST DUP2 EQ PUSH2 0xE20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xE32 DUP2 PUSH2 0xE0C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE4F JUMPI PUSH2 0xE4E PUSH2 0xB56 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xE5D DUP6 DUP3 DUP7 ADD PUSH2 0xDA0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xE6E DUP6 DUP3 DUP7 ADD PUSH2 0xE23 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xE81 DUP2 PUSH2 0xC1B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xE9C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xEE4 DUP3 PUSH2 0xD05 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xF03 JUMPI PUSH2 0xF02 PUSH2 0xEAC JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF16 PUSH2 0xB4C JUMP JUMPDEST SWAP1 POP PUSH2 0xF22 DUP3 DUP3 PUSH2 0xEDB JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xF42 JUMPI PUSH2 0xF41 PUSH2 0xEAC JUMP JUMPDEST JUMPDEST PUSH2 0xF4B DUP3 PUSH2 0xD05 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF7A PUSH2 0xF75 DUP5 PUSH2 0xF27 JUMP JUMPDEST PUSH2 0xF0C JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0xF96 JUMPI PUSH2 0xF95 PUSH2 0xEA7 JUMP JUMPDEST JUMPDEST PUSH2 0xFA1 DUP5 DUP3 DUP6 PUSH2 0xF58 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xFBE JUMPI PUSH2 0xFBD PUSH2 0xEA2 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFCE DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0xF67 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFEC PUSH2 0xB56 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x100B JUMPI PUSH2 0x100A PUSH2 0xB5B JUMP JUMPDEST JUMPDEST PUSH2 0x1017 DUP5 DUP3 DUP6 ADD PUSH2 0xFA9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x1067 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x107A JUMPI PUSH2 0x1079 PUSH2 0x1020 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10DC PUSH1 0x2F DUP4 PUSH2 0xCCA JUMP JUMPDEST SWAP2 POP PUSH2 0x10E7 DUP3 PUSH2 0x1080 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x110B DUP2 PUSH2 0x10CF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x1174 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x1137 JUMP JUMPDEST PUSH2 0x117E DUP7 DUP4 PUSH2 0x1137 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11BB PUSH2 0x11B6 PUSH2 0x11B1 DUP5 PUSH2 0xC1B JUMP JUMPDEST PUSH2 0x1196 JUMP JUMPDEST PUSH2 0xC1B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x11D5 DUP4 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0x11E9 PUSH2 0x11E1 DUP3 PUSH2 0x11C2 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x1144 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x11FE PUSH2 0x11F1 JUMP JUMPDEST PUSH2 0x1209 DUP2 DUP5 DUP5 PUSH2 0x11CC JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x122D JUMPI PUSH2 0x1222 PUSH1 0x0 DUP3 PUSH2 0x11F6 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x120F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1272 JUMPI PUSH2 0x1243 DUP2 PUSH2 0x1112 JUMP JUMPDEST PUSH2 0x124C DUP5 PUSH2 0x1127 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x125B JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x126F PUSH2 0x1267 DUP6 PUSH2 0x1127 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x120E JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1295 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x1277 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12AE DUP4 DUP4 PUSH2 0x1284 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x12C7 DUP3 PUSH2 0xCBF JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12E0 JUMPI PUSH2 0x12DF PUSH2 0xEAC JUMP JUMPDEST JUMPDEST PUSH2 0x12EA DUP3 SLOAD PUSH2 0x104F JUMP JUMPDEST PUSH2 0x12F5 DUP3 DUP3 DUP6 PUSH2 0x1231 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x1328 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x1316 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x1320 DUP6 DUP3 PUSH2 0x12A2 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x1388 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x1336 DUP7 PUSH2 0x1112 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x135E JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1339 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x137B JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x1377 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x1284 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D1 PUSH1 0x17 DUP4 PUSH2 0x1390 JUMP JUMPDEST SWAP2 POP PUSH2 0x13DC DUP3 PUSH2 0x139B JUMP JUMPDEST PUSH1 0x17 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F2 DUP3 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0x13FC DUP2 DUP6 PUSH2 0x1390 JUMP JUMPDEST SWAP4 POP PUSH2 0x140C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xCDB JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x144E PUSH1 0x11 DUP4 PUSH2 0x1390 JUMP JUMPDEST SWAP2 POP PUSH2 0x1459 DUP3 PUSH2 0x1418 JUMP JUMPDEST PUSH1 0x11 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146F DUP3 PUSH2 0x13C4 JUMP JUMPDEST SWAP2 POP PUSH2 0x147B DUP3 DUP6 PUSH2 0x13E7 JUMP JUMPDEST SWAP2 POP PUSH2 0x1486 DUP3 PUSH2 0x1441 JUMP JUMPDEST SWAP2 POP PUSH2 0x1492 DUP3 DUP5 PUSH2 0x13E7 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x14B8 DUP2 DUP5 PUSH2 0xD16 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x14FA DUP3 PUSH2 0xC1B JUMP JUMPDEST SWAP2 POP PUSH2 0x1505 DUP4 PUSH2 0xC1B JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x1513 DUP2 PUSH2 0xC1B JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x152A JUMPI PUSH2 0x1529 PUSH2 0x14C0 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x153C DUP3 PUSH2 0xC1B JUMP JUMPDEST SWAP2 POP PUSH2 0x1547 DUP4 PUSH2 0xC1B JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x155F JUMPI PUSH2 0x155E PUSH2 0x14C0 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x159F DUP3 PUSH2 0xC1B JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 SUB PUSH2 0x15B2 JUMPI PUSH2 0x15B1 PUSH2 0x14C0 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15F3 PUSH1 0x20 DUP4 PUSH2 0xCCA JUMP JUMPDEST SWAP2 POP PUSH2 0x15FE DUP3 PUSH2 0x15BD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1622 DUP2 PUSH2 0x15E6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC9 DUP16 0xFC PUSH24 0x395C5B35A623C03136D6D45BB351A2483965D83F306F1B15 SIGNEXTEND BYTE 0xD1 GASPRICE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ",
"sourceMap": "123:723:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:202:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;337:35:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4378:129:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4803:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5912:214;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;744:100:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2895:145:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2027:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;508:230:7;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;176:72;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2606:202:0;2691:4;2729:32;2714:47;;;:11;:47;;;;:87;;;;2765:36;2789:11;2765:23;:36::i;:::-;2714:87;2707:94;;2606:202;;;:::o;337:35:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4378:129:0:-;4452:7;4478:6;:12;4485:4;4478:12;;;;;;;;;;;:22;;;4471:29;;4378:129;;;:::o;4803:145::-;4886:18;4899:4;4886:12;:18::i;:::-;2505:16;2516:4;2505:10;:16::i;:::-;4916:25:::1;4927:4;4933:7;4916:10;:25::i;:::-;4803:145:::0;;;:::o;5912:214::-;6018:12;:10;:12::i;:::-;6007:23;;:7;:23;;;5999:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;6093:26;6105:4;6111:7;6093:11;:26::i;:::-;5912:214;;:::o;744:100:7:-;794:4;817:13;:20;;;;810:27;;744:100;:::o;2895:145:0:-;2981:4;3004:6;:12;3011:4;3004:12;;;;;;;;;;;:20;;:29;3025:7;3004:29;;;;;;;;;;;;;;;;;;;;;;;;;2997:36;;2895:145;;;;:::o;2027:49::-;2072:4;2027:49;;;:::o;5228:147::-;5312:18;5325:4;5312:12;:18::i;:::-;2505:16;2516:4;2505:10;:16::i;:::-;5342:26:::1;5354:4;5360:7;5342:11;:26::i;:::-;5228:147:::0;;;:::o;508:230:7:-;565:4;589:37;219:29;615:10;589:7;:37::i;:::-;581:46;;;;;;661:33;;;;;;;;674:10;661:33;;;;;;686:7;661:33;;;638:13;:20;;;;;;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;712:19;:17;:19::i;:::-;705:26;;508:230;;;:::o;176:72::-;219:29;176:72;:::o;829:155:4:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;3334:103:0:-;3400:30;3411:4;3417:12;:10;:12::i;:::-;3400:10;:30::i;:::-;3334:103;:::o;7461:233::-;7544:22;7552:4;7558:7;7544;:22::i;:::-;7539:149;;7614:4;7582:6;:12;7589:4;7582:12;;;;;;;;;;;:20;;:29;7603:7;7582:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7664:12;:10;:12::i;:::-;7637:40;;7655:7;7637:40;;7649:4;7637:40;;;;;;;;;;7539:149;7461:233;;:::o;640:96:2:-;693:7;719:10;712:17;;640:96;:::o;7865:234:0:-;7948:22;7956:4;7962:7;7948;:22::i;:::-;7944:149;;;8018:5;7986:6;:12;7993:4;7986:12;;;;;;;;;;;:20;;:29;8007:7;7986:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;8069:12;:10;:12::i;:::-;8042:40;;8060:7;8042:40;;8054:4;8042:40;;;;;;;;;;7944:149;7865:234;;:::o;3718:479::-;3806:22;3814:4;3820:7;3806;:22::i;:::-;3801:390;;3989:28;4009:7;3989:19;:28::i;:::-;4088:38;4116:4;4108:13;;4123:2;4088:19;:38::i;:::-;3896:252;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3844:336;;;;;;;;;;;:::i;:::-;;;;;;;;3801:390;3718:479;;:::o;2102:149:3:-;2160:13;2192:52;2220:4;2204:22;;311:2;2192:52;;:11;:52::i;:::-;2185:59;;2102:149;;;:::o;1513:437::-;1588:13;1613:19;1658:1;1649:6;1645:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1635:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:47;;1670:15;:6;1677:1;1670:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1695;:6;1702:1;1695:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1725:9;1750:1;1741:6;1737:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1725:26;;1720:128;1757:1;1753;:5;1720:128;;;1791:8;1808:3;1800:5;:11;1791:21;;;;;;;:::i;:::-;;;;;1779:6;1786:1;1779:9;;;;;;;;:::i;:::-;;;;;:33;;;;;;;;;;;1836:1;1826:11;;;;;1760:3;;;;:::i;:::-;;;1720:128;;;;1874:1;1865:5;:10;1857:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;1936:6;1922:21;;;1513:437;;;;:::o;7:75:8:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:77::-;1555:7;1584:5;1573:16;;1518:77;;;:::o;1601:122::-;1674:24;1692:5;1674:24;:::i;:::-;1667:5;1664:35;1654:63;;1713:1;1710;1703:12;1654:63;1601:122;:::o;1729:139::-;1775:5;1813:6;1800:20;1791:29;;1829:33;1856:5;1829:33;:::i;:::-;1729:139;;;;:::o;1874:329::-;1933:6;1982:2;1970:9;1961:7;1957:23;1953:32;1950:119;;;1988:79;;:::i;:::-;1950:119;2108:1;2133:53;2178:7;2169:6;2158:9;2154:22;2133:53;:::i;:::-;2123:63;;2079:117;1874:329;;;;:::o;2209:126::-;2246:7;2286:42;2279:5;2275:54;2264:65;;2209:126;;;:::o;2341:96::-;2378:7;2407:24;2425:5;2407:24;:::i;:::-;2396:35;;2341:96;;;:::o;2443:118::-;2530:24;2548:5;2530:24;:::i;:::-;2525:3;2518:37;2443:118;;:::o;2567:99::-;2619:6;2653:5;2647:12;2637:22;;2567:99;;;:::o;2672:169::-;2756:11;2790:6;2785:3;2778:19;2830:4;2825:3;2821:14;2806:29;;2672:169;;;;:::o;2847:246::-;2928:1;2938:113;2952:6;2949:1;2946:13;2938:113;;;3037:1;3032:3;3028:11;3022:18;3018:1;3013:3;3009:11;3002:39;2974:2;2971:1;2967:10;2962:15;;2938:113;;;3085:1;3076:6;3071:3;3067:16;3060:27;2909:184;2847:246;;;:::o;3099:102::-;3140:6;3191:2;3187:7;3182:2;3175:5;3171:14;3167:28;3157:38;;3099:102;;;:::o;3207:377::-;3295:3;3323:39;3356:5;3323:39;:::i;:::-;3378:71;3442:6;3437:3;3378:71;:::i;:::-;3371:78;;3458:65;3516:6;3511:3;3504:4;3497:5;3493:16;3458:65;:::i;:::-;3548:29;3570:6;3548:29;:::i;:::-;3543:3;3539:39;3532:46;;3299:285;3207:377;;;;:::o;3590:423::-;3731:4;3769:2;3758:9;3754:18;3746:26;;3782:71;3850:1;3839:9;3835:17;3826:6;3782:71;:::i;:::-;3900:9;3894:4;3890:20;3885:2;3874:9;3870:18;3863:48;3928:78;4001:4;3992:6;3928:78;:::i;:::-;3920:86;;3590:423;;;;;:::o;4019:77::-;4056:7;4085:5;4074:16;;4019:77;;;:::o;4102:122::-;4175:24;4193:5;4175:24;:::i;:::-;4168:5;4165:35;4155:63;;4214:1;4211;4204:12;4155:63;4102:122;:::o;4230:139::-;4276:5;4314:6;4301:20;4292:29;;4330:33;4357:5;4330:33;:::i;:::-;4230:139;;;;:::o;4375:329::-;4434:6;4483:2;4471:9;4462:7;4458:23;4454:32;4451:119;;;4489:79;;:::i;:::-;4451:119;4609:1;4634:53;4679:7;4670:6;4659:9;4655:22;4634:53;:::i;:::-;4624:63;;4580:117;4375:329;;;;:::o;4710:118::-;4797:24;4815:5;4797:24;:::i;:::-;4792:3;4785:37;4710:118;;:::o;4834:222::-;4927:4;4965:2;4954:9;4950:18;4942:26;;4978:71;5046:1;5035:9;5031:17;5022:6;4978:71;:::i;:::-;4834:222;;;;:::o;5062:122::-;5135:24;5153:5;5135:24;:::i;:::-;5128:5;5125:35;5115:63;;5174:1;5171;5164:12;5115:63;5062:122;:::o;5190:139::-;5236:5;5274:6;5261:20;5252:29;;5290:33;5317:5;5290:33;:::i;:::-;5190:139;;;;:::o;5335:474::-;5403:6;5411;5460:2;5448:9;5439:7;5435:23;5431:32;5428:119;;;5466:79;;:::i;:::-;5428:119;5586:1;5611:53;5656:7;5647:6;5636:9;5632:22;5611:53;:::i;:::-;5601:63;;5557:117;5713:2;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5684:118;5335:474;;;;;:::o;5815:118::-;5902:24;5920:5;5902:24;:::i;:::-;5897:3;5890:37;5815:118;;:::o;5939:222::-;6032:4;6070:2;6059:9;6055:18;6047:26;;6083:71;6151:1;6140:9;6136:17;6127:6;6083:71;:::i;:::-;5939:222;;;;:::o;6167:117::-;6276:1;6273;6266:12;6290:117;6399:1;6396;6389:12;6413:180;6461:77;6458:1;6451:88;6558:4;6555:1;6548:15;6582:4;6579:1;6572:15;6599:281;6682:27;6704:4;6682:27;:::i;:::-;6674:6;6670:40;6812:6;6800:10;6797:22;6776:18;6764:10;6761:34;6758:62;6755:88;;;6823:18;;:::i;:::-;6755:88;6863:10;6859:2;6852:22;6642:238;6599:281;;:::o;6886:129::-;6920:6;6947:20;;:::i;:::-;6937:30;;6976:33;7004:4;6996:6;6976:33;:::i;:::-;6886:129;;;:::o;7021:308::-;7083:4;7173:18;7165:6;7162:30;7159:56;;;7195:18;;:::i;:::-;7159:56;7233:29;7255:6;7233:29;:::i;:::-;7225:37;;7317:4;7311;7307:15;7299:23;;7021:308;;;:::o;7335:146::-;7432:6;7427:3;7422;7409:30;7473:1;7464:6;7459:3;7455:16;7448:27;7335:146;;;:::o;7487:425::-;7565:5;7590:66;7606:49;7648:6;7606:49;:::i;:::-;7590:66;:::i;:::-;7581:75;;7679:6;7672:5;7665:21;7717:4;7710:5;7706:16;7755:3;7746:6;7741:3;7737:16;7734:25;7731:112;;;7762:79;;:::i;:::-;7731:112;7852:54;7899:6;7894:3;7889;7852:54;:::i;:::-;7571:341;7487:425;;;;;:::o;7932:340::-;7988:5;8037:3;8030:4;8022:6;8018:17;8014:27;8004:122;;8045:79;;:::i;:::-;8004:122;8162:6;8149:20;8187:79;8262:3;8254:6;8247:4;8239:6;8235:17;8187:79;:::i;:::-;8178:88;;7994:278;7932:340;;;;:::o;8278:509::-;8347:6;8396:2;8384:9;8375:7;8371:23;8367:32;8364:119;;;8402:79;;:::i;:::-;8364:119;8550:1;8539:9;8535:17;8522:31;8580:18;8572:6;8569:30;8566:117;;;8602:79;;:::i;:::-;8566:117;8707:63;8762:7;8753:6;8742:9;8738:22;8707:63;:::i;:::-;8697:73;;8493:287;8278:509;;;;:::o;8793:180::-;8841:77;8838:1;8831:88;8938:4;8935:1;8928:15;8962:4;8959:1;8952:15;8979:320;9023:6;9060:1;9054:4;9050:12;9040:22;;9107:1;9101:4;9097:12;9128:18;9118:81;;9184:4;9176:6;9172:17;9162:27;;9118:81;9246:2;9238:6;9235:14;9215:18;9212:38;9209:84;;9265:18;;:::i;:::-;9209:84;9030:269;8979:320;;;:::o;9305:234::-;9445:34;9441:1;9433:6;9429:14;9422:58;9514:17;9509:2;9501:6;9497:15;9490:42;9305:234;:::o;9545:366::-;9687:3;9708:67;9772:2;9767:3;9708:67;:::i;:::-;9701:74;;9784:93;9873:3;9784:93;:::i;:::-;9902:2;9897:3;9893:12;9886:19;;9545:366;;;:::o;9917:419::-;10083:4;10121:2;10110:9;10106:18;10098:26;;10170:9;10164:4;10160:20;10156:1;10145:9;10141:17;10134:47;10198:131;10324:4;10198:131;:::i;:::-;10190:139;;9917:419;;;:::o;10342:141::-;10391:4;10414:3;10406:11;;10437:3;10434:1;10427:14;10471:4;10468:1;10458:18;10450:26;;10342:141;;;:::o;10489:93::-;10526:6;10573:2;10568;10561:5;10557:14;10553:23;10543:33;;10489:93;;;:::o;10588:107::-;10632:8;10682:5;10676:4;10672:16;10651:37;;10588:107;;;;:::o;10701:393::-;10770:6;10820:1;10808:10;10804:18;10843:97;10873:66;10862:9;10843:97;:::i;:::-;10961:39;10991:8;10980:9;10961:39;:::i;:::-;10949:51;;11033:4;11029:9;11022:5;11018:21;11009:30;;11082:4;11072:8;11068:19;11061:5;11058:30;11048:40;;10777:317;;10701:393;;;;;:::o;11100:60::-;11128:3;11149:5;11142:12;;11100:60;;;:::o;11166:142::-;11216:9;11249:53;11267:34;11276:24;11294:5;11276:24;:::i;:::-;11267:34;:::i;:::-;11249:53;:::i;:::-;11236:66;;11166:142;;;:::o;11314:75::-;11357:3;11378:5;11371:12;;11314:75;;;:::o;11395:269::-;11505:39;11536:7;11505:39;:::i;:::-;11566:91;11615:41;11639:16;11615:41;:::i;:::-;11607:6;11600:4;11594:11;11566:91;:::i;:::-;11560:4;11553:105;11471:193;11395:269;;;:::o;11670:73::-;11715:3;11670:73;:::o;11749:189::-;11826:32;;:::i;:::-;11867:65;11925:6;11917;11911:4;11867:65;:::i;:::-;11802:136;11749:189;;:::o;11944:186::-;12004:120;12021:3;12014:5;12011:14;12004:120;;;12075:39;12112:1;12105:5;12075:39;:::i;:::-;12048:1;12041:5;12037:13;12028:22;;12004:120;;;11944:186;;:::o;12136:543::-;12237:2;12232:3;12229:11;12226:446;;;12271:38;12303:5;12271:38;:::i;:::-;12355:29;12373:10;12355:29;:::i;:::-;12345:8;12341:44;12538:2;12526:10;12523:18;12520:49;;;12559:8;12544:23;;12520:49;12582:80;12638:22;12656:3;12638:22;:::i;:::-;12628:8;12624:37;12611:11;12582:80;:::i;:::-;12241:431;;12226:446;12136:543;;;:::o;12685:117::-;12739:8;12789:5;12783:4;12779:16;12758:37;;12685:117;;;;:::o;12808:169::-;12852:6;12885:51;12933:1;12929:6;12921:5;12918:1;12914:13;12885:51;:::i;:::-;12881:56;12966:4;12960;12956:15;12946:25;;12859:118;12808:169;;;;:::o;12982:295::-;13058:4;13204:29;13229:3;13223:4;13204:29;:::i;:::-;13196:37;;13266:3;13263:1;13259:11;13253:4;13250:21;13242:29;;12982:295;;;;:::o;13282:1395::-;13399:37;13432:3;13399:37;:::i;:::-;13501:18;13493:6;13490:30;13487:56;;;13523:18;;:::i;:::-;13487:56;13567:38;13599:4;13593:11;13567:38;:::i;:::-;13652:67;13712:6;13704;13698:4;13652:67;:::i;:::-;13746:1;13770:4;13757:17;;13802:2;13794:6;13791:14;13819:1;13814:618;;;;14476:1;14493:6;14490:77;;;14542:9;14537:3;14533:19;14527:26;14518:35;;14490:77;14593:67;14653:6;14646:5;14593:67;:::i;:::-;14587:4;14580:81;14449:222;13784:887;;13814:618;13866:4;13862:9;13854:6;13850:22;13900:37;13932:4;13900:37;:::i;:::-;13959:1;13973:208;13987:7;13984:1;13981:14;13973:208;;;14066:9;14061:3;14057:19;14051:26;14043:6;14036:42;14117:1;14109:6;14105:14;14095:24;;14164:2;14153:9;14149:18;14136:31;;14010:4;14007:1;14003:12;13998:17;;13973:208;;;14209:6;14200:7;14197:19;14194:179;;;14267:9;14262:3;14258:19;14252:26;14310:48;14352:4;14344:6;14340:17;14329:9;14310:48;:::i;:::-;14302:6;14295:64;14217:156;14194:179;14419:1;14415;14407:6;14403:14;14399:22;14393:4;14386:36;13821:611;;;13784:887;;13374:1303;;;13282:1395;;:::o;14683:148::-;14785:11;14822:3;14807:18;;14683:148;;;;:::o;14837:173::-;14977:25;14973:1;14965:6;14961:14;14954:49;14837:173;:::o;15016:402::-;15176:3;15197:85;15279:2;15274:3;15197:85;:::i;:::-;15190:92;;15291:93;15380:3;15291:93;:::i;:::-;15409:2;15404:3;15400:12;15393:19;;15016:402;;;:::o;15424:390::-;15530:3;15558:39;15591:5;15558:39;:::i;:::-;15613:89;15695:6;15690:3;15613:89;:::i;:::-;15606:96;;15711:65;15769:6;15764:3;15757:4;15750:5;15746:16;15711:65;:::i;:::-;15801:6;15796:3;15792:16;15785:23;;15534:280;15424:390;;;;:::o;15820:167::-;15960:19;15956:1;15948:6;15944:14;15937:43;15820:167;:::o;15993:402::-;16153:3;16174:85;16256:2;16251:3;16174:85;:::i;:::-;16167:92;;16268:93;16357:3;16268:93;:::i;:::-;16386:2;16381:3;16377:12;16370:19;;15993:402;;;:::o;16401:967::-;16783:3;16805:148;16949:3;16805:148;:::i;:::-;16798:155;;16970:95;17061:3;17052:6;16970:95;:::i;:::-;16963:102;;17082:148;17226:3;17082:148;:::i;:::-;17075:155;;17247:95;17338:3;17329:6;17247:95;:::i;:::-;17240:102;;17359:3;17352:10;;16401:967;;;;;:::o;17374:313::-;17487:4;17525:2;17514:9;17510:18;17502:26;;17574:9;17568:4;17564:20;17560:1;17549:9;17545:17;17538:47;17602:78;17675:4;17666:6;17602:78;:::i;:::-;17594:86;;17374:313;;;;:::o;17693:180::-;17741:77;17738:1;17731:88;17838:4;17835:1;17828:15;17862:4;17859:1;17852:15;17879:410;17919:7;17942:20;17960:1;17942:20;:::i;:::-;17937:25;;17976:20;17994:1;17976:20;:::i;:::-;17971:25;;18031:1;18028;18024:9;18053:30;18071:11;18053:30;:::i;:::-;18042:41;;18232:1;18223:7;18219:15;18216:1;18213:22;18193:1;18186:9;18166:83;18143:139;;18262:18;;:::i;:::-;18143:139;17927:362;17879:410;;;;:::o;18295:191::-;18335:3;18354:20;18372:1;18354:20;:::i;:::-;18349:25;;18388:20;18406:1;18388:20;:::i;:::-;18383:25;;18431:1;18428;18424:9;18417:16;;18452:3;18449:1;18446:10;18443:36;;;18459:18;;:::i;:::-;18443:36;18295:191;;;;:::o;18492:180::-;18540:77;18537:1;18530:88;18637:4;18634:1;18627:15;18661:4;18658:1;18651:15;18678:171;18717:3;18740:24;18758:5;18740:24;:::i;:::-;18731:33;;18786:4;18779:5;18776:15;18773:41;;18794:18;;:::i;:::-;18773:41;18841:1;18834:5;18830:13;18823:20;;18678:171;;;:::o;18855:182::-;18995:34;18991:1;18983:6;18979:14;18972:58;18855:182;:::o;19043:366::-;19185:3;19206:67;19270:2;19265:3;19206:67;:::i;:::-;19199:74;;19282:93;19371:3;19282:93;:::i;:::-;19400:2;19395:3;19391:12;19384:19;;19043:366;;;:::o;19415:419::-;19581:4;19619:2;19608:9;19604:18;19596:26;;19668:9;19662:4;19658:20;19654:1;19643:9;19639:17;19632:47;19696:131;19822:4;19696:131;:::i;:::-;19688:139;;19415:419;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "1145400",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"CONTRIBUTOR_ROLE()": "439",
"DEFAULT_ADMIN_ROLE()": "379",
"announce(string)": "infinite",
"announcementCount()": "2445",
"announcements(uint256)": "infinite",
"getRoleAdmin(bytes32)": "infinite",
"grantRole(bytes32,address)": "infinite",
"hasRole(bytes32,address)": "3162",
"renounceRole(bytes32,address)": "infinite",
"revokeRole(bytes32,address)": "infinite",
"supportsInterface(bytes4)": "728"
}
},
"methodIdentifiers": {
"CONTRIBUTOR_ROLE()": "eafb79e2",
"DEFAULT_ADMIN_ROLE()": "a217fddf",
"announce(string)": "ea0a5237",
"announcementCount()": "6fa8cf33",
"announcements(uint256)": "1bcfbe31",
"getRoleAdmin(bytes32)": "248a9ca3",
"grantRole(bytes32,address)": "2f2ff15d",
"hasRole(bytes32,address)": "91d14854",
"renounceRole(bytes32,address)": "36568abe",
"revokeRole(bytes32,address)": "d547741f",
"supportsInterface(bytes4)": "01ffc9a7"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"inputs": [],
"name": "CONTRIBUTOR_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "message",
"type": "string"
}
],
"name": "announce",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "announcementCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "announcements",
"outputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "string",
"name": "message",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.18+commit.87f61d96"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"inputs": [],
"name": "CONTRIBUTOR_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "message",
"type": "string"
}
],
"name": "announce",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "announcementCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "announcements",
"outputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "string",
"name": "message",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"events": {
"RoleAdminChanged(bytes32,bytes32,bytes32)": {
"details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._"
},
"RoleGranted(bytes32,address,address)": {
"details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}."
},
"RoleRevoked(bytes32,address,address)": {
"details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"
}
},
"kind": "dev",
"methods": {
"getRoleAdmin(bytes32)": {
"details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
},
"grantRole(bytes32,address)": {
"details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."
},
"hasRole(bytes32,address)": {
"details": "Returns `true` if `account` has been granted `role`."
},
"renounceRole(bytes32,address)": {
"details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event."
},
"revokeRole(bytes32,address)": {
"details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."
},
"supportsInterface(bytes4)": {
"details": "See {IERC165-supportsInterface}."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"GoldskyAnnouncements.sol": "GoldskyAnnouncements"
},
"evmVersion": "paris",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"@openzeppelin/[email protected]/access/AccessControl.sol": {
"keccak256": "0x67e3daf189111d6d5b0464ed09cf9f0605a22c4b965a7fcecd707101faff008a",
"license": "MIT",
"urls": [
"bzz-raw://cbbb1a75e4064d564bf69e74970eef35064e51fcc09cbf3589aee7faa60d6afe",
"dweb:/ipfs/QmYfAtQwFSGmxomnyAV3tpBDbfDwiFXV61osWW2zzQVg5Q"
]
},
"@openzeppelin/[email protected]/access/IAccessControl.sol": {
"keccak256": "0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57",
"license": "MIT",
"urls": [
"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a",
"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh"
]
},
"@openzeppelin/[email protected]/utils/Context.sol": {
"keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7",
"license": "MIT",
"urls": [
"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92",
"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"
]
},
"@openzeppelin/[email protected]/utils/Strings.sol": {
"keccak256": "0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a",
"license": "MIT",
"urls": [
"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634",
"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb"
]
},
"@openzeppelin/[email protected]/utils/introspection/ERC165.sol": {
"keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b",
"license": "MIT",
"urls": [
"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d",
"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"
]
},
"@openzeppelin/[email protected]/utils/introspection/IERC165.sol": {
"keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1",
"license": "MIT",
"urls": [
"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f",
"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"
]
},
"@openzeppelin/[email protected]/utils/math/Math.sol": {
"keccak256": "0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6",
"license": "MIT",
"urls": [
"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b",
"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz"
]
},
"GoldskyAnnouncements.sol": {
"keccak256": "0x67034fca63e23b473ef2750e4bd3135a165c5403c584e646d1b75b8ab76c47ed",
"license": "MIT",
"urls": [
"bzz-raw://689630a81a050797113b1e9286e0479fb75795681e64a85d081c82d79c24ef83",
"dweb:/ipfs/QmckkEaLsStsax7Z8U2mMgoo8xzjwcnA4nNp6xnJu9qw3r"
]
}
},
"version": 1
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
import "@openzeppelin/[email protected]/access/AccessControl.sol";
contract GoldskyAnnouncements is AccessControl {
bytes32 public constant CONTRIBUTOR_ROLE = keccak256("CONTRIBUTOR_ROLE");
struct Announcement {
address account;
string message;
}
Announcement[] public announcements;
constructor() {
_grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
_grantRole(CONTRIBUTOR_ROLE, msg.sender);
}
function announce(string memory message) public returns (uint) {
require(hasRole(CONTRIBUTOR_ROLE, msg.sender));
announcements.push() = Announcement(msg.sender, message);
return announcementCount();
}
function announcementCount() public view returns (uint) {
return announcements.length;
}
}
This file has been truncated, but you can view the full file.
{
"id": "9164bc14daebb5d4cbc162dceb0e27c8",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.18",
"solcLongVersion": "0.8.18+commit.87f61d96",
"input": {
"language": "Solidity",
"sources": {
"GoldskyAnnouncements.sol": {
"content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"@openzeppelin/[email protected]/access/AccessControl.sol\";\n\ncontract GoldskyAnnouncements is AccessControl {\n bytes32 public constant CONTRIBUTOR_ROLE = keccak256(\"CONTRIBUTOR_ROLE\");\n\n struct Announcement {\n address account;\n string message;\n }\n\n Announcement[] public announcements;\n\n constructor() {\n _grantRole(DEFAULT_ADMIN_ROLE, msg.sender);\n _grantRole(CONTRIBUTOR_ROLE, msg.sender);\n }\n\n function announce(string memory message) public returns (uint) {\n require(hasRole(CONTRIBUTOR_ROLE, msg.sender));\n\n announcements.push() = Announcement(msg.sender, message);\n\n return announcementCount();\n }\n\n function announcementCount() public view returns (uint) {\n return announcements.length;\n }\n}\n"
},
"@openzeppelin/[email protected]/access/AccessControl.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IAccessControl.sol\";\nimport \"../utils/Context.sol\";\nimport \"../utils/Strings.sol\";\nimport \"../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it.\n */\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\n struct RoleData {\n mapping(address => bool) members;\n bytes32 adminRole;\n }\n\n mapping(bytes32 => RoleData) private _roles;\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with a standardized message including the required role.\n *\n * The format of the revert reason is given by the following regular expression:\n *\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n *\n * _Available since v4.1._\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role);\n _;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\n return _roles[role].members[account];\n }\n\n /**\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\n * Overriding this function changes the behavior of the {onlyRole} modifier.\n *\n * Format of the revert message is described in {_checkRole}.\n *\n * _Available since v4.6._\n */\n function _checkRole(bytes32 role) internal view virtual {\n _checkRole(role, _msgSender());\n }\n\n /**\n * @dev Revert with a standard message if `account` is missing `role`.\n *\n * The format of the revert reason is given by the following regular expression:\n *\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n */\n function _checkRole(bytes32 role, address account) internal view virtual {\n if (!hasRole(role, account)) {\n revert(\n string(\n abi.encodePacked(\n \"AccessControl: account \",\n Strings.toHexString(account),\n \" is missing role \",\n Strings.toHexString(uint256(role), 32)\n )\n )\n );\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\n return _roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleGranted} event.\n */\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleRevoked} event.\n */\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n *\n * May emit a {RoleRevoked} event.\n */\n function renounceRole(bytes32 role, address account) public virtual override {\n require(account == _msgSender(), \"AccessControl: can only renounce roles for self\");\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event. Note that unlike {grantRole}, this function doesn't perform any\n * checks on the calling account.\n *\n * May emit a {RoleGranted} event.\n *\n * [WARNING]\n * ====\n * This function should only be called from the constructor when setting\n * up the initial roles for the system.\n *\n * Using this function in any other way is effectively circumventing the admin\n * system imposed by {AccessControl}.\n * ====\n *\n * NOTE: This function is deprecated in favor of {_grantRole}.\n */\n function _setupRole(bytes32 role, address account) internal virtual {\n _grantRole(role, account);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n bytes32 previousAdminRole = getRoleAdmin(role);\n _roles[role].adminRole = adminRole;\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleGranted} event.\n */\n function _grantRole(bytes32 role, address account) internal virtual {\n if (!hasRole(role, account)) {\n _roles[role].members[account] = true;\n emit RoleGranted(role, account, _msgSender());\n }\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleRevoked} event.\n */\n function _revokeRole(bytes32 role, address account) internal virtual {\n if (hasRole(role, account)) {\n _roles[role].members[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n }\n }\n}\n"
},
"@openzeppelin/[email protected]/utils/introspection/ERC165.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"
},
"@openzeppelin/[email protected]/utils/Strings.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/Math.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n}\n"
},
"@openzeppelin/[email protected]/utils/Context.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n"
},
"@openzeppelin/[email protected]/access/IAccessControl.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) external;\n}\n"
},
"@openzeppelin/[email protected]/utils/introspection/IERC165.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"
},
"@openzeppelin/[email protected]/utils/math/Math.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(\n uint256 x,\n uint256 y,\n uint256 denominator\n ) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1);\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(\n uint256 x,\n uint256 y,\n uint256 denominator,\n Rounding rounding\n ) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10**64) {\n value /= 10**64;\n result += 64;\n }\n if (value >= 10**32) {\n value /= 10**32;\n result += 32;\n }\n if (value >= 10**16) {\n value /= 10**16;\n result += 16;\n }\n if (value >= 10**8) {\n value /= 10**8;\n result += 8;\n }\n if (value >= 10**4) {\n value /= 10**4;\n result += 4;\n }\n if (value >= 10**2) {\n value /= 10**2;\n result += 2;\n }\n if (value >= 10**1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\n }\n }\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
}
}
},
"output": {
"contracts": {
"@openzeppelin/[email protected]/access/AccessControl.sol": {
"AccessControl": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"details": "Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.",
"events": {
"RoleAdminChanged(bytes32,bytes32,bytes32)": {
"details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._"
},
"RoleGranted(bytes32,address,address)": {
"details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}."
},
"RoleRevoked(bytes32,address,address)": {
"details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"
}
},
"kind": "dev",
"methods": {
"getRoleAdmin(bytes32)": {
"details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
},
"grantRole(bytes32,address)": {
"details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."
},
"hasRole(bytes32,address)": {
"details": "Returns `true` if `account` has been granted `role`."
},
"renounceRole(bytes32,address)": {
"details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event."
},
"revokeRole(bytes32,address)": {
"details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."
},
"supportsInterface(bytes4)": {
"details": "See {IERC165-supportsInterface}."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"DEFAULT_ADMIN_ROLE()": "a217fddf",
"getRoleAdmin(bytes32)": "248a9ca3",
"grantRole(bytes32,address)": "2f2ff15d",
"hasRole(bytes32,address)": "91d14854",
"renounceRole(bytes32,address)": "36568abe",
"revokeRole(bytes32,address)": "d547741f",
"supportsInterface(bytes4)": "01ffc9a7"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.\",\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/[email protected]/access/AccessControl.sol\":\"AccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/[email protected]/access/AccessControl.sol\":{\"keccak256\":\"0x67e3daf189111d6d5b0464ed09cf9f0605a22c4b965a7fcecd707101faff008a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbbb1a75e4064d564bf69e74970eef35064e51fcc09cbf3589aee7faa60d6afe\",\"dweb:/ipfs/QmYfAtQwFSGmxomnyAV3tpBDbfDwiFXV61osWW2zzQVg5Q\"]},\"@openzeppelin/[email protected]/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/[email protected]/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/[email protected]/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/[email protected]/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/[email protected]/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/[email protected]/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]}},\"version\":1}",
"storageLayout": {
"storage": [
{
"astId": 24,
"contract": "@openzeppelin/[email protected]/access/AccessControl.sol:AccessControl",
"label": "_roles",
"offset": 0,
"slot": "0",
"type": "t_mapping(t_bytes32,t_struct(RoleData)19_storage)"
}
],
"types": {
"t_address": {
"encoding": "inplace",
"label": "address",
"numberOfBytes": "20"
},
"t_bool": {
"encoding": "inplace",
"label": "bool",
"numberOfBytes": "1"
},
"t_bytes32": {
"encoding": "inplace",
"label": "bytes32",
"numberOfBytes": "32"
},
"t_mapping(t_address,t_bool)": {
"encoding": "mapping",
"key": "t_address",
"label": "mapping(address => bool)",
"numberOfBytes": "32",
"value": "t_bool"
},
"t_mapping(t_bytes32,t_struct(RoleData)19_storage)": {
"encoding": "mapping",
"key": "t_bytes32",
"label": "mapping(bytes32 => struct AccessControl.RoleData)",
"numberOfBytes": "32",
"value": "t_struct(RoleData)19_storage"
},
"t_struct(RoleData)19_storage": {
"encoding": "inplace",
"label": "struct AccessControl.RoleData",
"members": [
{
"astId": 16,
"contract": "@openzeppelin/[email protected]/access/AccessControl.sol:AccessControl",
"label": "members",
"offset": 0,
"slot": "0",
"type": "t_mapping(t_address,t_bool)"
},
{
"astId": 18,
"contract": "@openzeppelin/[email protected]/access/AccessControl.sol:AccessControl",
"label": "adminRole",
"offset": 0,
"slot": "1",
"type": "t_bytes32"
}
],
"numberOfBytes": "64"
}
}
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/[email protected]/access/IAccessControl.sol": {
"IAccessControl": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "External interface of AccessControl declared to support ERC165 detection.",
"events": {
"RoleAdminChanged(bytes32,bytes32,bytes32)": {
"details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._"
},
"RoleGranted(bytes32,address,address)": {
"details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}."
},
"RoleRevoked(bytes32,address,address)": {
"details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"
}
},
"kind": "dev",
"methods": {
"getRoleAdmin(bytes32)": {
"details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}."
},
"grantRole(bytes32,address)": {
"details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."
},
"hasRole(bytes32,address)": {
"details": "Returns `true` if `account` has been granted `role`."
},
"renounceRole(bytes32,address)": {
"details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`."
},
"revokeRole(bytes32,address)": {
"details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"getRoleAdmin(bytes32)": "248a9ca3",
"grantRole(bytes32,address)": "2f2ff15d",
"hasRole(bytes32,address)": "91d14854",
"renounceRole(bytes32,address)": "36568abe",
"revokeRole(bytes32,address)": "d547741f"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC165 detection.\",\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/[email protected]/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/[email protected]/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/[email protected]/utils/Context.sol": {
"Context": {
"abi": [],
"devdoc": {
"details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.",
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/[email protected]/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/[email protected]/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/[email protected]/utils/Strings.sol": {
"Strings": {
"abi": [],
"devdoc": {
"details": "String operations.",
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"@openzeppelin/[email protected]/utils/Strings.sol\":188:2253 library Strings {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":188:2253 library Strings {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa2646970667358221220d014a318d1df8bc4997bdddadccdc5c543175950a0c3e626f98bf3668167277c64736f6c63430008120033\n}\n",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d014a318d1df8bc4997bdddadccdc5c543175950a0c3e626f98bf3668167277c64736f6c63430008120033",
"opcodes": "PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD0 EQ LOG3 XOR 0xD1 0xDF DUP12 0xC4 SWAP10 PUSH28 0xDDDADCCDC5C543175950A0C3E626F98BF3668167277C64736F6C6343 STOP ADDMOD SLT STOP CALLER ",
"sourceMap": "188:2065:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d014a318d1df8bc4997bdddadccdc5c543175950a0c3e626f98bf3668167277c64736f6c63430008120033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD0 EQ LOG3 XOR 0xD1 0xDF DUP12 0xC4 SWAP10 PUSH28 0xDDDADCCDC5C543175950A0C3E626F98BF3668167277C64736F6C6343 STOP ADDMOD SLT STOP CALLER ",
"sourceMap": "188:2065:3:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "97",
"totalCost": "17297"
},
"internal": {
"toHexString(address)": "infinite",
"toHexString(uint256)": "infinite",
"toHexString(uint256,uint256)": "infinite",
"toString(uint256)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 188,
"end": 2253,
"name": "PUSH #[$]",
"source": 3,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 188,
"end": 2253,
"name": "PUSH [$]",
"source": 3,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 188,
"end": 2253,
"name": "PUSH",
"source": 3,
"value": "B"
},
{
"begin": 188,
"end": 2253,
"name": "DUP3",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "DUP3",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "DUP3",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "CODECOPY",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "DUP1",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "MLOAD",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "PUSH",
"source": 3,
"value": "0"
},
{
"begin": 188,
"end": 2253,
"name": "BYTE",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "PUSH",
"source": 3,
"value": "73"
},
{
"begin": 188,
"end": 2253,
"name": "EQ",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "PUSH [tag]",
"source": 3,
"value": "1"
},
{
"begin": 188,
"end": 2253,
"name": "JUMPI",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "PUSH",
"source": 3,
"value": "4E487B7100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 188,
"end": 2253,
"name": "PUSH",
"source": 3,
"value": "0"
},
{
"begin": 188,
"end": 2253,
"name": "MSTORE",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "PUSH",
"source": 3,
"value": "0"
},
{
"begin": 188,
"end": 2253,
"name": "PUSH",
"source": 3,
"value": "4"
},
{
"begin": 188,
"end": 2253,
"name": "MSTORE",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "PUSH",
"source": 3,
"value": "24"
},
{
"begin": 188,
"end": 2253,
"name": "PUSH",
"source": 3,
"value": "0"
},
{
"begin": 188,
"end": 2253,
"name": "REVERT",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "tag",
"source": 3,
"value": "1"
},
{
"begin": 188,
"end": 2253,
"name": "JUMPDEST",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "ADDRESS",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "PUSH",
"source": 3,
"value": "0"
},
{
"begin": 188,
"end": 2253,
"name": "MSTORE",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "PUSH",
"source": 3,
"value": "73"
},
{
"begin": 188,
"end": 2253,
"name": "DUP2",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "MSTORE8",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "DUP3",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "DUP2",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "RETURN",
"source": 3
}
],
".data": {
"0": {
".auxdata": "a2646970667358221220d014a318d1df8bc4997bdddadccdc5c543175950a0c3e626f98bf3668167277c64736f6c63430008120033",
".code": [
{
"begin": 188,
"end": 2253,
"name": "PUSHDEPLOYADDRESS",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "ADDRESS",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "EQ",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "PUSH",
"source": 3,
"value": "80"
},
{
"begin": 188,
"end": 2253,
"name": "PUSH",
"source": 3,
"value": "40"
},
{
"begin": 188,
"end": 2253,
"name": "MSTORE",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "PUSH",
"source": 3,
"value": "0"
},
{
"begin": 188,
"end": 2253,
"name": "DUP1",
"source": 3
},
{
"begin": 188,
"end": 2253,
"name": "REVERT",
"source": 3
}
]
}
},
"sourceList": [
"@openzeppelin/[email protected]/access/AccessControl.sol",
"@openzeppelin/[email protected]/access/IAccessControl.sol",
"@openzeppelin/[email protected]/utils/Context.sol",
"@openzeppelin/[email protected]/utils/Strings.sol",
"@openzeppelin/[email protected]/utils/introspection/ERC165.sol",
"@openzeppelin/[email protected]/utils/introspection/IERC165.sol",
"@openzeppelin/[email protected]/utils/math/Math.sol",
"GoldskyAnnouncements.sol",
"#utility.yul"
]
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/[email protected]/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/[email protected]/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/[email protected]/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/[email protected]/utils/introspection/ERC165.sol": {
"ERC165": {
"abi": [
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"details": "Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.",
"kind": "dev",
"methods": {
"supportsInterface(bytes4)": {
"details": "See {IERC165-supportsInterface}."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"supportsInterface(bytes4)": "01ffc9a7"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/[email protected]/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/[email protected]/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/[email protected]/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/[email protected]/utils/introspection/IERC165.sol": {
"IERC165": {
"abi": [
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"details": "Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.",
"kind": "dev",
"methods": {
"supportsInterface(bytes4)": {
"details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"supportsInterface(bytes4)": "01ffc9a7"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/[email protected]/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/[email protected]/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/[email protected]/utils/math/Math.sol": {
"Math": {
"abi": [],
"devdoc": {
"details": "Standard math utilities missing in the Solidity language.",
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"@openzeppelin/[email protected]/utils/math/Math.sol\":202:12504 library Math {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"@openzeppelin/[email protected]/utils/math/Math.sol\":202:12504 library Math {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212206cd6991305696179c01c10d7599ef0dff1b8d214fdf5b9dd8fd0b94e5595cd1164736f6c63430008120033\n}\n",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206cd6991305696179c01c10d7599ef0dff1b8d214fdf5b9dd8fd0b94e5595cd1164736f6c63430008120033",
"opcodes": "PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH13 0xD6991305696179C01C10D7599E CREATE 0xDF CALL 0xB8 0xD2 EQ REVERT CREATE2 0xB9 0xDD DUP16 0xD0 0xB9 0x4E SSTORE SWAP6 0xCD GT PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ",
"sourceMap": "202:12302:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206cd6991305696179c01c10d7599ef0dff1b8d214fdf5b9dd8fd0b94e5595cd1164736f6c63430008120033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH13 0xD6991305696179C01C10D7599E CREATE 0xDF CALL 0xB8 0xD2 EQ REVERT CREATE2 0xB9 0xDD DUP16 0xD0 0xB9 0x4E SSTORE SWAP6 0xCD GT PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ",
"sourceMap": "202:12302:6:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "97",
"totalCost": "17297"
},
"internal": {
"average(uint256,uint256)": "infinite",
"ceilDiv(uint256,uint256)": "infinite",
"log10(uint256)": "infinite",
"log10(uint256,enum Math.Rounding)": "infinite",
"log2(uint256)": "infinite",
"log2(uint256,enum Math.Rounding)": "infinite",
"log256(uint256)": "infinite",
"log256(uint256,enum Math.Rounding)": "infinite",
"max(uint256,uint256)": "infinite",
"min(uint256,uint256)": "infinite",
"mulDiv(uint256,uint256,uint256)": "infinite",
"mulDiv(uint256,uint256,uint256,enum Math.Rounding)": "infinite",
"sqrt(uint256)": "infinite",
"sqrt(uint256,enum Math.Rounding)": "infinite"
}
},
"legacyAssembly": {
".code": [
{
"begin": 202,
"end": 12504,
"name": "PUSH #[$]",
"source": 6,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 202,
"end": 12504,
"name": "PUSH [$]",
"source": 6,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 202,
"end": 12504,
"name": "PUSH",
"source": 6,
"value": "B"
},
{
"begin": 202,
"end": 12504,
"name": "DUP3",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "DUP3",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "DUP3",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "CODECOPY",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "DUP1",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "MLOAD",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 202,
"end": 12504,
"name": "BYTE",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "PUSH",
"source": 6,
"value": "73"
},
{
"begin": 202,
"end": 12504,
"name": "EQ",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "PUSH [tag]",
"source": 6,
"value": "1"
},
{
"begin": 202,
"end": 12504,
"name": "JUMPI",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "PUSH",
"source": 6,
"value": "4E487B7100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 202,
"end": 12504,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 202,
"end": 12504,
"name": "MSTORE",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 202,
"end": 12504,
"name": "PUSH",
"source": 6,
"value": "4"
},
{
"begin": 202,
"end": 12504,
"name": "MSTORE",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "PUSH",
"source": 6,
"value": "24"
},
{
"begin": 202,
"end": 12504,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 202,
"end": 12504,
"name": "REVERT",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "tag",
"source": 6,
"value": "1"
},
{
"begin": 202,
"end": 12504,
"name": "JUMPDEST",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "ADDRESS",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 202,
"end": 12504,
"name": "MSTORE",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "PUSH",
"source": 6,
"value": "73"
},
{
"begin": 202,
"end": 12504,
"name": "DUP2",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "MSTORE8",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "DUP3",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "DUP2",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "RETURN",
"source": 6
}
],
".data": {
"0": {
".auxdata": "a26469706673582212206cd6991305696179c01c10d7599ef0dff1b8d214fdf5b9dd8fd0b94e5595cd1164736f6c63430008120033",
".code": [
{
"begin": 202,
"end": 12504,
"name": "PUSHDEPLOYADDRESS",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "ADDRESS",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "EQ",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "PUSH",
"source": 6,
"value": "80"
},
{
"begin": 202,
"end": 12504,
"name": "PUSH",
"source": 6,
"value": "40"
},
{
"begin": 202,
"end": 12504,
"name": "MSTORE",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "PUSH",
"source": 6,
"value": "0"
},
{
"begin": 202,
"end": 12504,
"name": "DUP1",
"source": 6
},
{
"begin": 202,
"end": 12504,
"name": "REVERT",
"source": 6
}
]
}
},
"sourceList": [
"@openzeppelin/[email protected]/access/AccessControl.sol",
"@openzeppelin/[email protected]/access/IAccessControl.sol",
"@openzeppelin/[email protected]/utils/Context.sol",
"@openzeppelin/[email protected]/utils/Strings.sol",
"@openzeppelin/[email protected]/utils/introspection/ERC165.sol",
"@openzeppelin/[email protected]/utils/introspection/IERC165.sol",
"@openzeppelin/[email protected]/utils/math/Math.sol",
"GoldskyAnnouncements.sol",
"#utility.yul"
]
},
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/[email protected]/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/[email protected]/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"GoldskyAnnouncements.sol": {
"GoldskyAnnouncements": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"inputs": [],
"name": "CONTRIBUTOR_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "message",
"type": "string"
}
],
"name": "announce",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "announcementCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "announcements",
"outputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "string",
"name": "message",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"events": {
"RoleAdminChanged(bytes32,bytes32,bytes32)": {
"details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._"
},
"RoleGranted(bytes32,address,address)": {
"details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}."
},
"RoleRevoked(bytes32,address,address)": {
"details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"
}
},
"kind": "dev",
"methods": {
"getRoleAdmin(bytes32)": {
"details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
},
"grantRole(bytes32,address)": {
"details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."
},
"hasRole(bytes32,address)": {
"details": "Returns `true` if `account` has been granted `role`."
},
"renounceRole(bytes32,address)": {
"details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event."
},
"revokeRole(bytes32,address)": {
"details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."
},
"supportsInterface(bytes4)": {
"details": "See {IERC165-supportsInterface}."
}
},
"version": 1
},
"evm": {
"assembly": " /* \"GoldskyAnnouncements.sol\":123:846 contract GoldskyAnnouncements is AccessControl {... */\n mstore(0x40, 0x80)\n /* \"GoldskyAnnouncements.sol\":379:502 constructor() {... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n /* \"GoldskyAnnouncements.sol\":403:445 _grantRole(DEFAULT_ADMIN_ROLE, msg.sender) */\n tag_4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2072:2076 0x00 */\n 0x00\n /* \"GoldskyAnnouncements.sol\":414:432 DEFAULT_ADMIN_ROLE */\n dup1\n shl\n /* \"GoldskyAnnouncements.sol\":434:444 msg.sender */\n caller\n /* \"GoldskyAnnouncements.sol\":403:413 _grantRole */\n shl(0x20, tag_5)\n /* \"GoldskyAnnouncements.sol\":403:445 _grantRole(DEFAULT_ADMIN_ROLE, msg.sender) */\n 0x20\n shr\n jump\t// in\ntag_4:\n /* \"GoldskyAnnouncements.sol\":455:495 _grantRole(CONTRIBUTOR_ROLE, msg.sender) */\n tag_6\n /* \"GoldskyAnnouncements.sol\":219:248 keccak256(\"CONTRIBUTOR_ROLE\") */\n 0xe2889e7308860b3fe8df0daa86fccfea4d71e43776719a57be28cf90b6db81e9\n /* \"GoldskyAnnouncements.sol\":484:494 msg.sender */\n caller\n /* \"GoldskyAnnouncements.sol\":455:465 _grantRole */\n shl(0x20, tag_5)\n /* \"GoldskyAnnouncements.sol\":455:495 _grantRole(CONTRIBUTOR_ROLE, msg.sender) */\n 0x20\n shr\n jump\t// in\ntag_6:\n /* \"GoldskyAnnouncements.sol\":123:846 contract GoldskyAnnouncements is AccessControl {... */\n jump(tag_7)\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7461:7694 function _grantRole(bytes32 role, address account) internal virtual {... */\ntag_5:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7544:7566 hasRole(role, account) */\n tag_9\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7552:7556 role */\n dup3\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7558:7565 account */\n dup3\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7544:7551 hasRole */\n shl(0x20, tag_10)\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7544:7566 hasRole(role, account) */\n 0x20\n shr\n jump\t// in\ntag_9:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7539:7688 if (!hasRole(role, account)) {... */\n tag_11\n jumpi\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7614:7618 true */\n 0x01\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7582:7588 _roles */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7582:7594 _roles[role] */\n dup1\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7589:7593 role */\n dup5\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7582:7594 _roles[role] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7582:7602 _roles[role].members */\n 0x00\n add\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7582:7611 _roles[role].members[account] */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7603:7610 account */\n dup4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7582:7611 _roles[role].members[account] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7582:7618 _roles[role].members[account] = true */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7664:7676 _msgSender() */\n tag_12\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7664:7674 _msgSender */\n shl(0x20, tag_13)\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7664:7676 _msgSender() */\n 0x20\n shr\n jump\t// in\ntag_12:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7637:7677 RoleGranted(role, account, _msgSender()) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7655:7662 account */\n dup2\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7637:7677 RoleGranted(role, account, _msgSender()) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7649:7653 role */\n dup4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7637:7677 RoleGranted(role, account, _msgSender()) */\n 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7539:7688 if (!hasRole(role, account)) {... */\ntag_11:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7461:7694 function _grantRole(bytes32 role, address account) internal virtual {... */\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2895:3040 function hasRole(bytes32 role, address account) public view virtual override returns (bool) {... */\ntag_10:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2981:2985 bool */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3004:3010 _roles */\n dup1\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3004:3016 _roles[role] */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3011:3015 role */\n dup5\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3004:3016 _roles[role] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3004:3024 _roles[role].members */\n 0x00\n add\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3004:3033 _roles[role].members[account] */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3025:3032 account */\n dup4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3004:3033 _roles[role].members[account] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2997:3033 return _roles[role].members[account] */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2895:3040 function hasRole(bytes32 role, address account) public view virtual override returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/utils/Context.sol\":640:736 function _msgSender() internal view virtual returns (address) {... */\ntag_13:\n /* \"@openzeppelin/[email protected]/utils/Context.sol\":693:700 address */\n 0x00\n /* \"@openzeppelin/[email protected]/utils/Context.sol\":719:729 msg.sender */\n caller\n /* \"@openzeppelin/[email protected]/utils/Context.sol\":712:729 return msg.sender */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/utils/Context.sol\":640:736 function _msgSender() internal view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"GoldskyAnnouncements.sol\":123:846 contract GoldskyAnnouncements is AccessControl {... */\ntag_7:\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"GoldskyAnnouncements.sol\":123:846 contract GoldskyAnnouncements is AccessControl {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x6fa8cf33\n gt\n tag_14\n jumpi\n dup1\n 0x6fa8cf33\n eq\n tag_8\n jumpi\n dup1\n 0x91d14854\n eq\n tag_9\n jumpi\n dup1\n 0xa217fddf\n eq\n tag_10\n jumpi\n dup1\n 0xd547741f\n eq\n tag_11\n jumpi\n dup1\n 0xea0a5237\n eq\n tag_12\n jumpi\n dup1\n 0xeafb79e2\n eq\n tag_13\n jumpi\n jump(tag_2)\n tag_14:\n dup1\n 0x01ffc9a7\n eq\n tag_3\n jumpi\n dup1\n 0x1bcfbe31\n eq\n tag_4\n jumpi\n dup1\n 0x248a9ca3\n eq\n tag_5\n jumpi\n dup1\n 0x2f2ff15d\n eq\n tag_6\n jumpi\n dup1\n 0x36568abe\n eq\n tag_7\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2606:2808 function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {... */\n tag_3:\n tag_15\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_16\n swap2\n swap1\n tag_17\n jump\t// in\n tag_16:\n tag_18\n jump\t// in\n tag_15:\n mload(0x40)\n tag_19\n swap2\n swap1\n tag_20\n jump\t// in\n tag_19:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"GoldskyAnnouncements.sol\":337:372 Announcement[] public announcements */\n tag_4:\n tag_21\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_22\n swap2\n swap1\n tag_23\n jump\t// in\n tag_22:\n tag_24\n jump\t// in\n tag_21:\n mload(0x40)\n tag_25\n swap3\n swap2\n swap1\n tag_26\n jump\t// in\n tag_25:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4378:4507 function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {... */\n tag_5:\n tag_27\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_28\n swap2\n swap1\n tag_29\n jump\t// in\n tag_28:\n tag_30\n jump\t// in\n tag_27:\n mload(0x40)\n tag_31\n swap2\n swap1\n tag_32\n jump\t// in\n tag_31:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4803:4948 function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {... */\n tag_6:\n tag_33\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_34\n swap2\n swap1\n tag_35\n jump\t// in\n tag_34:\n tag_36\n jump\t// in\n tag_33:\n stop\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5912:6126 function renounceRole(bytes32 role, address account) public virtual override {... */\n tag_7:\n tag_37\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_38\n swap2\n swap1\n tag_35\n jump\t// in\n tag_38:\n tag_39\n jump\t// in\n tag_37:\n stop\n /* \"GoldskyAnnouncements.sol\":744:844 function announcementCount() public view returns (uint) {... */\n tag_8:\n tag_40\n tag_41\n jump\t// in\n tag_40:\n mload(0x40)\n tag_42\n swap2\n swap1\n tag_43\n jump\t// in\n tag_42:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2895:3040 function hasRole(bytes32 role, address account) public view virtual override returns (bool) {... */\n tag_9:\n tag_44\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_45\n swap2\n swap1\n tag_35\n jump\t// in\n tag_45:\n tag_46\n jump\t// in\n tag_44:\n mload(0x40)\n tag_47\n swap2\n swap1\n tag_20\n jump\t// in\n tag_47:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2027:2076 bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00 */\n tag_10:\n tag_48\n tag_49\n jump\t// in\n tag_48:\n mload(0x40)\n tag_50\n swap2\n swap1\n tag_32\n jump\t// in\n tag_50:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5228:5375 function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {... */\n tag_11:\n tag_51\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_52\n swap2\n swap1\n tag_35\n jump\t// in\n tag_52:\n tag_53\n jump\t// in\n tag_51:\n stop\n /* \"GoldskyAnnouncements.sol\":508:738 function announce(string memory message) public returns (uint) {... */\n tag_12:\n tag_54\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_55\n swap2\n swap1\n tag_56\n jump\t// in\n tag_55:\n tag_57\n jump\t// in\n tag_54:\n mload(0x40)\n tag_58\n swap2\n swap1\n tag_43\n jump\t// in\n tag_58:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"GoldskyAnnouncements.sol\":176:248 bytes32 public constant CONTRIBUTOR_ROLE = keccak256(\"CONTRIBUTOR_ROLE\") */\n tag_13:\n tag_59\n tag_60\n jump\t// in\n tag_59:\n mload(0x40)\n tag_61\n swap2\n swap1\n tag_32\n jump\t// in\n tag_61:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2606:2808 function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {... */\n tag_18:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2691:2695 bool */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2729:2761 type(IAccessControl).interfaceId */\n 0x7965db0b00000000000000000000000000000000000000000000000000000000\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2714:2761 interfaceId == type(IAccessControl).interfaceId */\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2714:2725 interfaceId */\n dup3\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2714:2761 interfaceId == type(IAccessControl).interfaceId */\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n eq\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2714:2801 interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId) */\n dup1\n tag_63\n jumpi\n pop\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2765:2801 super.supportsInterface(interfaceId) */\n tag_64\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2789:2800 interfaceId */\n dup3\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2765:2788 super.supportsInterface */\n tag_65\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2765:2801 super.supportsInterface(interfaceId) */\n jump\t// in\n tag_64:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2714:2801 interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId) */\n tag_63:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2707:2801 return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId) */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2606:2808 function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"GoldskyAnnouncements.sol\":337:372 Announcement[] public announcements */\n tag_24:\n 0x01\n dup2\n dup2\n sload\n dup2\n lt\n tag_66\n jumpi\n 0x00\n dup1\n revert\n tag_66:\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n 0x02\n mul\n add\n 0x00\n swap2\n pop\n swap1\n pop\n dup1\n 0x00\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n swap1\n dup1\n 0x01\n add\n dup1\n sload\n tag_68\n swap1\n tag_69\n jump\t// in\n tag_68:\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n tag_70\n swap1\n tag_69\n jump\t// in\n tag_70:\n dup1\n iszero\n tag_71\n jumpi\n dup1\n 0x1f\n lt\n tag_72\n jumpi\n 0x0100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_71)\n tag_72:\n dup3\n add\n swap2\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n tag_73:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x01\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_73\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_71:\n pop\n pop\n pop\n pop\n pop\n swap1\n pop\n dup3\n jump\t// out\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4378:4507 function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {... */\n tag_30:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4452:4459 bytes32 */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4478:4484 _roles */\n dup1\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4478:4490 _roles[role] */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4485:4489 role */\n dup4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4478:4490 _roles[role] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4478:4500 _roles[role].adminRole */\n 0x01\n add\n sload\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4471:4500 return _roles[role].adminRole */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4378:4507 function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4803:4948 function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {... */\n tag_36:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4886:4904 getRoleAdmin(role) */\n tag_75\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4899:4903 role */\n dup3\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4886:4898 getRoleAdmin */\n tag_30\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4886:4904 getRoleAdmin(role) */\n jump\t// in\n tag_75:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2505:2521 _checkRole(role) */\n tag_77\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2516:2520 role */\n dup2\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2505:2515 _checkRole */\n tag_78\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2505:2521 _checkRole(role) */\n jump\t// in\n tag_77:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4916:4941 _grantRole(role, account) */\n tag_80\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4927:4931 role */\n dup4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4933:4940 account */\n dup4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4916:4926 _grantRole */\n tag_81\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4916:4941 _grantRole(role, account) */\n jump\t// in\n tag_80:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4803:4948 function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {... */\n pop\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5912:6126 function renounceRole(bytes32 role, address account) public virtual override {... */\n tag_39:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":6018:6030 _msgSender() */\n tag_83\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":6018:6028 _msgSender */\n tag_84\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":6018:6030 _msgSender() */\n jump\t// in\n tag_83:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":6007:6030 account == _msgSender() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":6007:6014 account */\n dup2\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":6007:6030 account == _msgSender() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5999:6082 require(account == _msgSender(), \"AccessControl: can only renounce roles for self\") */\n tag_85\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_86\n swap1\n tag_87\n jump\t// in\n tag_86:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_85:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":6093:6119 _revokeRole(role, account) */\n tag_88\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":6105:6109 role */\n dup3\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":6111:6118 account */\n dup3\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":6093:6104 _revokeRole */\n tag_89\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":6093:6119 _revokeRole(role, account) */\n jump\t// in\n tag_88:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5912:6126 function renounceRole(bytes32 role, address account) public virtual override {... */\n pop\n pop\n jump\t// out\n /* \"GoldskyAnnouncements.sol\":744:844 function announcementCount() public view returns (uint) {... */\n tag_41:\n /* \"GoldskyAnnouncements.sol\":794:798 uint */\n 0x00\n /* \"GoldskyAnnouncements.sol\":817:830 announcements */\n 0x01\n /* \"GoldskyAnnouncements.sol\":817:837 announcements.length */\n dup1\n sload\n swap1\n pop\n /* \"GoldskyAnnouncements.sol\":810:837 return announcements.length */\n swap1\n pop\n /* \"GoldskyAnnouncements.sol\":744:844 function announcementCount() public view returns (uint) {... */\n swap1\n jump\t// out\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2895:3040 function hasRole(bytes32 role, address account) public view virtual override returns (bool) {... */\n tag_46:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2981:2985 bool */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3004:3010 _roles */\n dup1\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3004:3016 _roles[role] */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3011:3015 role */\n dup5\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3004:3016 _roles[role] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3004:3024 _roles[role].members */\n 0x00\n add\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3004:3033 _roles[role].members[account] */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3025:3032 account */\n dup4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3004:3033 _roles[role].members[account] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2997:3033 return _roles[role].members[account] */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2895:3040 function hasRole(bytes32 role, address account) public view virtual override returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2027:2076 bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00 */\n tag_49:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2072:2076 0x00 */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2027:2076 bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00 */\n dup1\n shl\n dup2\n jump\t// out\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5228:5375 function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {... */\n tag_53:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5312:5330 getRoleAdmin(role) */\n tag_92\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5325:5329 role */\n dup3\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5312:5324 getRoleAdmin */\n tag_30\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5312:5330 getRoleAdmin(role) */\n jump\t// in\n tag_92:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2505:2521 _checkRole(role) */\n tag_94\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2516:2520 role */\n dup2\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2505:2515 _checkRole */\n tag_78\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":2505:2521 _checkRole(role) */\n jump\t// in\n tag_94:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5342:5368 _revokeRole(role, account) */\n tag_96\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5354:5358 role */\n dup4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5360:5367 account */\n dup4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5342:5353 _revokeRole */\n tag_89\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5342:5368 _revokeRole(role, account) */\n jump\t// in\n tag_96:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":5228:5375 function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {... */\n pop\n pop\n pop\n jump\t// out\n /* \"GoldskyAnnouncements.sol\":508:738 function announce(string memory message) public returns (uint) {... */\n tag_57:\n /* \"GoldskyAnnouncements.sol\":565:569 uint */\n 0x00\n /* \"GoldskyAnnouncements.sol\":589:626 hasRole(CONTRIBUTOR_ROLE, msg.sender) */\n tag_98\n /* \"GoldskyAnnouncements.sol\":219:248 keccak256(\"CONTRIBUTOR_ROLE\") */\n 0xe2889e7308860b3fe8df0daa86fccfea4d71e43776719a57be28cf90b6db81e9\n /* \"GoldskyAnnouncements.sol\":615:625 msg.sender */\n caller\n /* \"GoldskyAnnouncements.sol\":589:596 hasRole */\n tag_46\n /* \"GoldskyAnnouncements.sol\":589:626 hasRole(CONTRIBUTOR_ROLE, msg.sender) */\n jump\t// in\n tag_98:\n /* \"GoldskyAnnouncements.sol\":581:627 require(hasRole(CONTRIBUTOR_ROLE, msg.sender)) */\n tag_99\n jumpi\n 0x00\n dup1\n revert\n tag_99:\n /* \"GoldskyAnnouncements.sol\":661:694 Announcement(msg.sender, message) */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n /* \"GoldskyAnnouncements.sol\":674:684 msg.sender */\n caller\n /* \"GoldskyAnnouncements.sol\":661:694 Announcement(msg.sender, message) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n /* \"GoldskyAnnouncements.sol\":686:693 message */\n dup4\n /* \"GoldskyAnnouncements.sol\":661:694 Announcement(msg.sender, message) */\n dup2\n mstore\n pop\n /* \"GoldskyAnnouncements.sol\":638:651 announcements */\n 0x01\n /* \"GoldskyAnnouncements.sol\":638:658 announcements.push() */\n dup1\n dup2\n 0x01\n dup2\n sload\n add\n dup1\n dup3\n sstore\n dup1\n swap2\n pop\n pop\n sub\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n 0x02\n mul\n add\n /* \"GoldskyAnnouncements.sol\":638:694 announcements.push() = Announcement(msg.sender, message) */\n 0x00\n dup3\n add\n mload\n dup2\n 0x00\n add\n exp(0x0100, 0x00)\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n 0x20\n dup3\n add\n mload\n dup2\n 0x01\n add\n swap1\n dup2\n tag_101\n swap2\n swap1\n tag_102\n jump\t// in\n tag_101:\n pop\n swap1\n pop\n pop\n /* \"GoldskyAnnouncements.sol\":712:731 announcementCount() */\n tag_103\n /* \"GoldskyAnnouncements.sol\":712:729 announcementCount */\n tag_41\n /* \"GoldskyAnnouncements.sol\":712:731 announcementCount() */\n jump\t// in\n tag_103:\n /* \"GoldskyAnnouncements.sol\":705:731 return announcementCount() */\n swap1\n pop\n /* \"GoldskyAnnouncements.sol\":508:738 function announce(string memory message) public returns (uint) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"GoldskyAnnouncements.sol\":176:248 bytes32 public constant CONTRIBUTOR_ROLE = keccak256(\"CONTRIBUTOR_ROLE\") */\n tag_60:\n /* \"GoldskyAnnouncements.sol\":219:248 keccak256(\"CONTRIBUTOR_ROLE\") */\n 0xe2889e7308860b3fe8df0daa86fccfea4d71e43776719a57be28cf90b6db81e9\n /* \"GoldskyAnnouncements.sol\":176:248 bytes32 public constant CONTRIBUTOR_ROLE = keccak256(\"CONTRIBUTOR_ROLE\") */\n dup2\n jump\t// out\n /* \"@openzeppelin/[email protected]/utils/introspection/ERC165.sol\":829:984 function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {... */\n tag_65:\n /* \"@openzeppelin/[email protected]/utils/introspection/ERC165.sol\":914:918 bool */\n 0x00\n /* \"@openzeppelin/[email protected]/utils/introspection/ERC165.sol\":952:977 type(IERC165).interfaceId */\n 0x01ffc9a700000000000000000000000000000000000000000000000000000000\n /* \"@openzeppelin/[email protected]/utils/introspection/ERC165.sol\":937:977 interfaceId == type(IERC165).interfaceId */\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n /* \"@openzeppelin/[email protected]/utils/introspection/ERC165.sol\":937:948 interfaceId */\n dup3\n /* \"@openzeppelin/[email protected]/utils/introspection/ERC165.sol\":937:977 interfaceId == type(IERC165).interfaceId */\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n eq\n /* \"@openzeppelin/[email protected]/utils/introspection/ERC165.sol\":930:977 return interfaceId == type(IERC165).interfaceId */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/utils/introspection/ERC165.sol\":829:984 function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3334:3437 function _checkRole(bytes32 role) internal view virtual {... */\n tag_78:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3400:3430 _checkRole(role, _msgSender()) */\n tag_106\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3411:3415 role */\n dup2\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3417:3429 _msgSender() */\n tag_107\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3417:3427 _msgSender */\n tag_84\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3417:3429 _msgSender() */\n jump\t// in\n tag_107:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3400:3410 _checkRole */\n tag_108\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3400:3430 _checkRole(role, _msgSender()) */\n jump\t// in\n tag_106:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3334:3437 function _checkRole(bytes32 role) internal view virtual {... */\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7461:7694 function _grantRole(bytes32 role, address account) internal virtual {... */\n tag_81:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7544:7566 hasRole(role, account) */\n tag_110\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7552:7556 role */\n dup3\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7558:7565 account */\n dup3\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7544:7551 hasRole */\n tag_46\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7544:7566 hasRole(role, account) */\n jump\t// in\n tag_110:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7539:7688 if (!hasRole(role, account)) {... */\n tag_111\n jumpi\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7614:7618 true */\n 0x01\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7582:7588 _roles */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7582:7594 _roles[role] */\n dup1\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7589:7593 role */\n dup5\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7582:7594 _roles[role] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7582:7602 _roles[role].members */\n 0x00\n add\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7582:7611 _roles[role].members[account] */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7603:7610 account */\n dup4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7582:7611 _roles[role].members[account] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7582:7618 _roles[role].members[account] = true */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7664:7676 _msgSender() */\n tag_112\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7664:7674 _msgSender */\n tag_84\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7664:7676 _msgSender() */\n jump\t// in\n tag_112:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7637:7677 RoleGranted(role, account, _msgSender()) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7655:7662 account */\n dup2\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7637:7677 RoleGranted(role, account, _msgSender()) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7649:7653 role */\n dup4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7637:7677 RoleGranted(role, account, _msgSender()) */\n 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7539:7688 if (!hasRole(role, account)) {... */\n tag_111:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7461:7694 function _grantRole(bytes32 role, address account) internal virtual {... */\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/utils/Context.sol\":640:736 function _msgSender() internal view virtual returns (address) {... */\n tag_84:\n /* \"@openzeppelin/[email protected]/utils/Context.sol\":693:700 address */\n 0x00\n /* \"@openzeppelin/[email protected]/utils/Context.sol\":719:729 msg.sender */\n caller\n /* \"@openzeppelin/[email protected]/utils/Context.sol\":712:729 return msg.sender */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/utils/Context.sol\":640:736 function _msgSender() internal view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7865:8099 function _revokeRole(bytes32 role, address account) internal virtual {... */\n tag_89:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7948:7970 hasRole(role, account) */\n tag_115\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7956:7960 role */\n dup3\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7962:7969 account */\n dup3\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7948:7955 hasRole */\n tag_46\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7948:7970 hasRole(role, account) */\n jump\t// in\n tag_115:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7944:8093 if (hasRole(role, account)) {... */\n iszero\n tag_116\n jumpi\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":8018:8023 false */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7986:7992 _roles */\n dup1\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7986:7998 _roles[role] */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7993:7997 role */\n dup5\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7986:7998 _roles[role] */\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7986:8006 _roles[role].members */\n 0x00\n add\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7986:8015 _roles[role].members[account] */\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":8007:8014 account */\n dup4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7986:8015 _roles[role].members[account] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7986:8023 _roles[role].members[account] = false */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":8069:8081 _msgSender() */\n tag_117\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":8069:8079 _msgSender */\n tag_84\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":8069:8081 _msgSender() */\n jump\t// in\n tag_117:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":8042:8082 RoleRevoked(role, account, _msgSender()) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":8060:8067 account */\n dup2\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":8042:8082 RoleRevoked(role, account, _msgSender()) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":8054:8058 role */\n dup4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":8042:8082 RoleRevoked(role, account, _msgSender()) */\n 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7944:8093 if (hasRole(role, account)) {... */\n tag_116:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":7865:8099 function _revokeRole(bytes32 role, address account) internal virtual {... */\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3718:4197 function _checkRole(bytes32 role, address account) internal view virtual {... */\n tag_108:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3806:3828 hasRole(role, account) */\n tag_119\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3814:3818 role */\n dup3\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3820:3827 account */\n dup3\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3806:3813 hasRole */\n tag_46\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3806:3828 hasRole(role, account) */\n jump\t// in\n tag_119:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3801:4191 if (!hasRole(role, account)) {... */\n tag_120\n jumpi\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3989:4017 Strings.toHexString(account) */\n tag_121\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4009:4016 account */\n dup2\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3989:4008 Strings.toHexString */\n tag_122\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3989:4017 Strings.toHexString(account) */\n jump\t// in\n tag_121:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4088:4126 Strings.toHexString(uint256(role), 32) */\n tag_123\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4116:4120 role */\n dup4\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4108:4121 uint256(role) */\n 0x00\n shr\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4123:4125 32 */\n 0x20\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4088:4107 Strings.toHexString */\n tag_124\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":4088:4126 Strings.toHexString(uint256(role), 32) */\n jump\t// in\n tag_123:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3896:4148 abi.encodePacked(... */\n add(0x20, mload(0x40))\n tag_125\n swap3\n swap2\n swap1\n tag_126\n jump\t// in\n tag_125:\n mload(0x40)\n 0x20\n dup2\n dup4\n sub\n sub\n dup2\n mstore\n swap1\n 0x40\n mstore\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3844:4180 revert(... */\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_127\n swap2\n swap1\n tag_128\n jump\t// in\n tag_127:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3801:4191 if (!hasRole(role, account)) {... */\n tag_120:\n /* \"@openzeppelin/[email protected]/access/AccessControl.sol\":3718:4197 function _checkRole(bytes32 role, address account) internal view virtual {... */\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":2102:2251 function toHexString(address addr) internal pure returns (string memory) {... */\n tag_122:\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":2160:2173 string memory */\n 0x60\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":2192:2244 toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH) */\n tag_130\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":2220:2224 addr */\n dup3\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":2204:2226 uint256(uint160(addr)) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":311:313 20 */\n 0x14\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":2192:2244 toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH) */\n 0xff\n and\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":2192:2203 toHexString */\n tag_124\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":2192:2244 toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH) */\n jump\t// in\n tag_130:\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":2185:2244 return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH) */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":2102:2251 function toHexString(address addr) internal pure returns (string memory) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1513:1950 function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {... */\n tag_124:\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1588:1601 string memory */\n 0x60\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1613:1632 bytes memory buffer */\n 0x00\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1658:1659 2 */\n 0x02\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1649:1655 length */\n dup4\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1645:1646 2 */\n 0x02\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1645:1655 2 * length */\n tag_132\n swap2\n swap1\n tag_133\n jump\t// in\n tag_132:\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1645:1659 2 * length + 2 */\n tag_134\n swap2\n swap1\n tag_135\n jump\t// in\n tag_134:\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1635:1660 new bytes(2 * length + 2) */\n 0xffffffffffffffff\n dup2\n gt\n iszero\n tag_136\n jumpi\n tag_137\n tag_138\n jump\t// in\n tag_137:\n tag_136:\n mload(0x40)\n swap1\n dup1\n dup3\n mstore\n dup1\n 0x1f\n add\n not(0x1f)\n and\n 0x20\n add\n dup3\n add\n 0x40\n mstore\n dup1\n iszero\n tag_139\n jumpi\n dup2\n 0x20\n add\n 0x01\n dup3\n mul\n dup1\n calldatasize\n dup4\n calldatacopy\n dup1\n dup3\n add\n swap2\n pop\n pop\n swap1\n pop\n tag_139:\n pop\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1613:1660 bytes memory buffer = new bytes(2 * length + 2) */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1670:1685 buffer[0] = \"0\" */\n 0x3000000000000000000000000000000000000000000000000000000000000000\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1670:1676 buffer */\n dup2\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1677:1678 0 */\n 0x00\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1670:1679 buffer[0] */\n dup2\n mload\n dup2\n lt\n tag_140\n jumpi\n tag_141\n tag_142\n jump\t// in\n tag_141:\n tag_140:\n 0x20\n add\n add\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1670:1685 buffer[0] = \"0\" */\n swap1\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n swap1\n dup2\n 0x00\n byte\n swap1\n mstore8\n pop\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1695:1710 buffer[1] = \"x\" */\n 0x7800000000000000000000000000000000000000000000000000000000000000\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1695:1701 buffer */\n dup2\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1702:1703 1 */\n 0x01\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1695:1704 buffer[1] */\n dup2\n mload\n dup2\n lt\n tag_143\n jumpi\n tag_144\n tag_142\n jump\t// in\n tag_144:\n tag_143:\n 0x20\n add\n add\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1695:1710 buffer[1] = \"x\" */\n swap1\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n swap1\n dup2\n 0x00\n byte\n swap1\n mstore8\n pop\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1725:1734 uint256 i */\n 0x00\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1750:1751 1 */\n 0x01\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1741:1747 length */\n dup5\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1737:1738 2 */\n 0x02\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1737:1747 2 * length */\n tag_148\n swap2\n swap1\n tag_133\n jump\t// in\n tag_148:\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1737:1751 2 * length + 1 */\n tag_149\n swap2\n swap1\n tag_135\n jump\t// in\n tag_149:\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1725:1751 uint256 i = 2 * length + 1 */\n swap1\n pop\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1720:1848 for (uint256 i = 2 * length + 1; i > 1; --i) {... */\n tag_145:\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1757:1758 1 */\n 0x01\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1753:1754 i */\n dup2\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1753:1758 i > 1 */\n gt\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1720:1848 for (uint256 i = 2 * length + 1; i > 1; --i) {... */\n iszero\n tag_146\n jumpi\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1791:1799 _SYMBOLS */\n 0x3031323334353637383961626364656600000000000000000000000000000000\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1808:1811 0xf */\n 0x0f\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1800:1805 value */\n dup7\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1800:1811 value & 0xf */\n and\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1791:1812 _SYMBOLS[value & 0xf] */\n 0x10\n dup2\n lt\n tag_150\n jumpi\n tag_151\n tag_142\n jump\t// in\n tag_151:\n tag_150:\n byte\n 0xf8\n shl\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1779:1785 buffer */\n dup3\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1786:1787 i */\n dup3\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1779:1788 buffer[i] */\n dup2\n mload\n dup2\n lt\n tag_152\n jumpi\n tag_153\n tag_142\n jump\t// in\n tag_153:\n tag_152:\n 0x20\n add\n add\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1779:1812 buffer[i] = _SYMBOLS[value & 0xf] */\n swap1\n not(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n and\n swap1\n dup2\n 0x00\n byte\n swap1\n mstore8\n pop\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1836:1837 4 */\n 0x04\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1826:1837 value >>= 4 */\n dup6\n swap1\n shr\n swap5\n pop\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1760:1763 --i */\n dup1\n tag_154\n swap1\n tag_155\n jump\t// in\n tag_154:\n swap1\n pop\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1720:1848 for (uint256 i = 2 * length + 1; i > 1; --i) {... */\n jump(tag_145)\n tag_146:\n pop\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1874:1875 0 */\n 0x00\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1865:1870 value */\n dup5\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1865:1875 value == 0 */\n eq\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1857:1912 require(value == 0, \"Strings: hex length insufficient\") */\n tag_156\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_157\n swap1\n tag_158\n jump\t// in\n tag_157:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_156:\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1936:1942 buffer */\n dup1\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1922:1943 return string(buffer) */\n swap2\n pop\n pop\n /* \"@openzeppelin/[email protected]/utils/Strings.sol\":1513:1950 function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7:82 */\n tag_159:\n /* \"#utility.yul\":40:46 */\n 0x00\n /* \"#utility.yul\":73:75 */\n 0x40\n /* \"#utility.yul\":67:76 */\n mload\n /* \"#utility.yul\":57:76 */\n swap1\n pop\n /* \"#utility.yul\":7:82 */\n swap1\n jump\t// out\n /* \"#utility.yul\":88:205 */\n tag_160:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":211:328 */\n tag_161:\n /* \"#utility.yul\":320:321 */\n 0x00\n /* \"#utility.yul\":317:318 */\n dup1\n /* \"#utility.yul\":310:322 */\n revert\n /* \"#utility.yul\":334:483 */\n tag_162:\n /* \"#utility.yul\":370:377 */\n 0x00\n /* \"#utility.yul\":410:476 */\n 0xffffffff00000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":403:408 */\n dup3\n /* \"#utility.yul\":399:477 */\n and\n /* \"#utility.yul\":388:477 */\n swap1\n pop\n /* \"#utility.yul\":334:483 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":489:609 */\n tag_163:\n /* \"#utility.yul\":561:584 */\n tag_226\n /* \"#utility.yul\":578:583 */\n dup2\n /* \"#utility.yul\":561:584 */\n tag_162\n jump\t// in\n tag_226:\n /* \"#utility.yul\":554:559 */\n dup2\n /* \"#utility.yul\":551:585 */\n eq\n /* \"#utility.yul\":541:603 */\n tag_227\n jumpi\n /* \"#utility.yul\":599:600 */\n 0x00\n /* \"#utility.yul\":596:597 */\n dup1\n /* \"#utility.yul\":589:601 */\n revert\n /* \"#utility.yul\":541:603 */\n tag_227:\n /* \"#utility.yul\":489:609 */\n pop\n jump\t// out\n /* \"#utility.yul\":615:752 */\n tag_164:\n /* \"#utility.yul\":660:665 */\n 0x00\n /* \"#utility.yul\":698:704 */\n dup2\n /* \"#utility.yul\":685:705 */\n calldataload\n /* \"#utility.yul\":676:705 */\n swap1\n pop\n /* \"#utility.yul\":714:746 */\n tag_229\n /* \"#utility.yul\":740:745 */\n dup2\n /* \"#utility.yul\":714:746 */\n tag_163\n jump\t// in\n tag_229:\n /* \"#utility.yul\":615:752 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":758:1085 */\n tag_17:\n /* \"#utility.yul\":816:822 */\n 0x00\n /* \"#utility.yul\":865:867 */\n 0x20\n /* \"#utility.yul\":853:862 */\n dup3\n /* \"#utility.yul\":844:851 */\n dup5\n /* \"#utility.yul\":840:863 */\n sub\n /* \"#utility.yul\":836:868 */\n slt\n /* \"#utility.yul\":833:952 */\n iszero\n tag_231\n jumpi\n /* \"#utility.yul\":871:950 */\n tag_232\n tag_160\n jump\t// in\n tag_232:\n /* \"#utility.yul\":833:952 */\n tag_231:\n /* \"#utility.yul\":991:992 */\n 0x00\n /* \"#utility.yul\":1016:1068 */\n tag_233\n /* \"#utility.yul\":1060:1067 */\n dup5\n /* \"#utility.yul\":1051:1057 */\n dup3\n /* \"#utility.yul\":1040:1049 */\n dup6\n /* \"#utility.yul\":1036:1058 */\n add\n /* \"#utility.yul\":1016:1068 */\n tag_164\n jump\t// in\n tag_233:\n /* \"#utility.yul\":1006:1068 */\n swap2\n pop\n /* \"#utility.yul\":962:1078 */\n pop\n /* \"#utility.yul\":758:1085 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1091:1181 */\n tag_165:\n /* \"#utility.yul\":1125:1132 */\n 0x00\n /* \"#utility.yul\":1168:1173 */\n dup2\n /* \"#utility.yul\":1161:1174 */\n iszero\n /* \"#utility.yul\":1154:1175 */\n iszero\n /* \"#utility.yul\":1143:1175 */\n swap1\n pop\n /* \"#utility.yul\":1091:1181 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1187:1296 */\n tag_166:\n /* \"#utility.yul\":1268:1289 */\n tag_236\n /* \"#utility.yul\":1283:1288 */\n dup2\n /* \"#utility.yul\":1268:1289 */\n tag_165\n jump\t// in\n tag_236:\n /* \"#utility.yul\":1263:1266 */\n dup3\n /* \"#utility.yul\":1256:1290 */\n mstore\n /* \"#utility.yul\":1187:1296 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1302:1512 */\n tag_20:\n /* \"#utility.yul\":1389:1393 */\n 0x00\n /* \"#utility.yul\":1427:1429 */\n 0x20\n /* \"#utility.yul\":1416:1425 */\n dup3\n /* \"#utility.yul\":1412:1430 */\n add\n /* \"#utility.yul\":1404:1430 */\n swap1\n pop\n /* \"#utility.yul\":1440:1505 */\n tag_238\n /* \"#utility.yul\":1502:1503 */\n 0x00\n /* \"#utility.yul\":1491:1500 */\n dup4\n /* \"#utility.yul\":1487:1504 */\n add\n /* \"#utility.yul\":1478:1484 */\n dup5\n /* \"#utility.yul\":1440:1505 */\n tag_166\n jump\t// in\n tag_238:\n /* \"#utility.yul\":1302:1512 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1518:1595 */\n tag_167:\n /* \"#utility.yul\":1555:1562 */\n 0x00\n /* \"#utility.yul\":1584:1589 */\n dup2\n /* \"#utility.yul\":1573:1589 */\n swap1\n pop\n /* \"#utility.yul\":1518:1595 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1601:1723 */\n tag_168:\n /* \"#utility.yul\":1674:1698 */\n tag_241\n /* \"#utility.yul\":1692:1697 */\n dup2\n /* \"#utility.yul\":1674:1698 */\n tag_167\n jump\t// in\n tag_241:\n /* \"#utility.yul\":1667:1672 */\n dup2\n /* \"#utility.yul\":1664:1699 */\n eq\n /* \"#utility.yul\":1654:1717 */\n tag_242\n jumpi\n /* \"#utility.yul\":1713:1714 */\n 0x00\n /* \"#utility.yul\":1710:1711 */\n dup1\n /* \"#utility.yul\":1703:1715 */\n revert\n /* \"#utility.yul\":1654:1717 */\n tag_242:\n /* \"#utility.yul\":1601:1723 */\n pop\n jump\t// out\n /* \"#utility.yul\":1729:1868 */\n tag_169:\n /* \"#utility.yul\":1775:1780 */\n 0x00\n /* \"#utility.yul\":1813:1819 */\n dup2\n /* \"#utility.yul\":1800:1820 */\n calldataload\n /* \"#utility.yul\":1791:1820 */\n swap1\n pop\n /* \"#utility.yul\":1829:1862 */\n tag_244\n /* \"#utility.yul\":1856:1861 */\n dup2\n /* \"#utility.yul\":1829:1862 */\n tag_168\n jump\t// in\n tag_244:\n /* \"#utility.yul\":1729:1868 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1874:2203 */\n tag_23:\n /* \"#utility.yul\":1933:1939 */\n 0x00\n /* \"#utility.yul\":1982:1984 */\n 0x20\n /* \"#utility.yul\":1970:1979 */\n dup3\n /* \"#utility.yul\":1961:1968 */\n dup5\n /* \"#utility.yul\":1957:1980 */\n sub\n /* \"#utility.yul\":1953:1985 */\n slt\n /* \"#utility.yul\":1950:2069 */\n iszero\n tag_246\n jumpi\n /* \"#utility.yul\":1988:2067 */\n tag_247\n tag_160\n jump\t// in\n tag_247:\n /* \"#utility.yul\":1950:2069 */\n tag_246:\n /* \"#utility.yul\":2108:2109 */\n 0x00\n /* \"#utility.yul\":2133:2186 */\n tag_248\n /* \"#utility.yul\":2178:2185 */\n dup5\n /* \"#utility.yul\":2169:2175 */\n dup3\n /* \"#utility.yul\":2158:2167 */\n dup6\n /* \"#utility.yul\":2154:2176 */\n add\n /* \"#utility.yul\":2133:2186 */\n tag_169\n jump\t// in\n tag_248:\n /* \"#utility.yul\":2123:2186 */\n swap2\n pop\n /* \"#utility.yul\":2079:2196 */\n pop\n /* \"#utility.yul\":1874:2203 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2209:2335 */\n tag_170:\n /* \"#utility.yul\":2246:2253 */\n 0x00\n /* \"#utility.yul\":2286:2328 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":2279:2284 */\n dup3\n /* \"#utility.yul\":2275:2329 */\n and\n /* \"#utility.yul\":2264:2329 */\n swap1\n pop\n /* \"#utility.yul\":2209:2335 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2341:2437 */\n tag_171:\n /* \"#utility.yul\":2378:2385 */\n 0x00\n /* \"#utility.yul\":2407:2431 */\n tag_251\n /* \"#utility.yul\":2425:2430 */\n dup3\n /* \"#utility.yul\":2407:2431 */\n tag_170\n jump\t// in\n tag_251:\n /* \"#utility.yul\":2396:2431 */\n swap1\n pop\n /* \"#utility.yul\":2341:2437 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2443:2561 */\n tag_172:\n /* \"#utility.yul\":2530:2554 */\n tag_253\n /* \"#utility.yul\":2548:2553 */\n dup2\n /* \"#utility.yul\":2530:2554 */\n tag_171\n jump\t// in\n tag_253:\n /* \"#utility.yul\":2525:2528 */\n dup3\n /* \"#utility.yul\":2518:2555 */\n mstore\n /* \"#utility.yul\":2443:2561 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2567:2666 */\n tag_173:\n /* \"#utility.yul\":2619:2625 */\n 0x00\n /* \"#utility.yul\":2653:2658 */\n dup2\n /* \"#utility.yul\":2647:2659 */\n mload\n /* \"#utility.yul\":2637:2659 */\n swap1\n pop\n /* \"#utility.yul\":2567:2666 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2672:2841 */\n tag_174:\n /* \"#utility.yul\":2756:2767 */\n 0x00\n /* \"#utility.yul\":2790:2796 */\n dup3\n /* \"#utility.yul\":2785:2788 */\n dup3\n /* \"#utility.yul\":2778:2797 */\n mstore\n /* \"#utility.yul\":2830:2834 */\n 0x20\n /* \"#utility.yul\":2825:2828 */\n dup3\n /* \"#utility.yul\":2821:2835 */\n add\n /* \"#utility.yul\":2806:2835 */\n swap1\n pop\n /* \"#utility.yul\":2672:2841 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2847:3093 */\n tag_175:\n /* \"#utility.yul\":2928:2929 */\n 0x00\n /* \"#utility.yul\":2938:3051 */\n tag_257:\n /* \"#utility.yul\":2952:2958 */\n dup4\n /* \"#utility.yul\":2949:2950 */\n dup2\n /* \"#utility.yul\":2946:2959 */\n lt\n /* \"#utility.yul\":2938:3051 */\n iszero\n tag_259\n jumpi\n /* \"#utility.yul\":3037:3038 */\n dup1\n /* \"#utility.yul\":3032:3035 */\n dup3\n /* \"#utility.yul\":3028:3039 */\n add\n /* \"#utility.yul\":3022:3040 */\n mload\n /* \"#utility.yul\":3018:3019 */\n dup2\n /* \"#utility.yul\":3013:3016 */\n dup5\n /* \"#utility.yul\":3009:3020 */\n add\n /* \"#utility.yul\":3002:3041 */\n mstore\n /* \"#utility.yul\":2974:2976 */\n 0x20\n /* \"#utility.yul\":2971:2972 */\n dup2\n /* \"#utility.yul\":2967:2977 */\n add\n /* \"#utility.yul\":2962:2977 */\n swap1\n pop\n /* \"#utility.yul\":2938:3051 */\n jump(tag_257)\n tag_259:\n /* \"#utility.yul\":3085:3086 */\n 0x00\n /* \"#utility.yul\":3076:3082 */\n dup5\n /* \"#utility.yul\":3071:3074 */\n dup5\n /* \"#utility.yul\":3067:3083 */\n add\n /* \"#utility.yul\":3060:3087 */\n mstore\n /* \"#utility.yul\":2909:3093 */\n pop\n /* \"#utility.yul\":2847:3093 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3099:3201 */\n tag_176:\n /* \"#utility.yul\":3140:3146 */\n 0x00\n /* \"#utility.yul\":3191:3193 */\n 0x1f\n /* \"#utility.yul\":3187:3194 */\n not\n /* \"#utility.yul\":3182:3184 */\n 0x1f\n /* \"#utility.yul\":3175:3180 */\n dup4\n /* \"#utility.yul\":3171:3185 */\n add\n /* \"#utility.yul\":3167:3195 */\n and\n /* \"#utility.yul\":3157:3195 */\n swap1\n pop\n /* \"#utility.yul\":3099:3201 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3207:3584 */\n tag_177:\n /* \"#utility.yul\":3295:3298 */\n 0x00\n /* \"#utility.yul\":3323:3362 */\n tag_262\n /* \"#utility.yul\":3356:3361 */\n dup3\n /* \"#utility.yul\":3323:3362 */\n tag_173\n jump\t// in\n tag_262:\n /* \"#utility.yul\":3378:3449 */\n tag_263\n /* \"#utility.yul\":3442:3448 */\n dup2\n /* \"#utility.yul\":3437:3440 */\n dup6\n /* \"#utility.yul\":3378:3449 */\n tag_174\n jump\t// in\n tag_263:\n /* \"#utility.yul\":3371:3449 */\n swap4\n pop\n /* \"#utility.yul\":3458:3523 */\n tag_264\n /* \"#utility.yul\":3516:3522 */\n dup2\n /* \"#utility.yul\":3511:3514 */\n dup6\n /* \"#utility.yul\":3504:3508 */\n 0x20\n /* \"#utility.yul\":3497:3502 */\n dup7\n /* \"#utility.yul\":3493:3509 */\n add\n /* \"#utility.yul\":3458:3523 */\n tag_175\n jump\t// in\n tag_264:\n /* \"#utility.yul\":3548:3577 */\n tag_265\n /* \"#utility.yul\":3570:3576 */\n dup2\n /* \"#utility.yul\":3548:3577 */\n tag_176\n jump\t// in\n tag_265:\n /* \"#utility.yul\":3543:3546 */\n dup5\n /* \"#utility.yul\":3539:3578 */\n add\n /* \"#utility.yul\":3532:3578 */\n swap2\n pop\n /* \"#utility.yul\":3299:3584 */\n pop\n /* \"#utility.yul\":3207:3584 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3590:4013 */\n tag_26:\n /* \"#utility.yul\":3731:3735 */\n 0x00\n /* \"#utility.yul\":3769:3771 */\n 0x40\n /* \"#utility.yul\":3758:3767 */\n dup3\n /* \"#utility.yul\":3754:3772 */\n add\n /* \"#utility.yul\":3746:3772 */\n swap1\n pop\n /* \"#utility.yul\":3782:3853 */\n tag_267\n /* \"#utility.yul\":3850:3851 */\n 0x00\n /* \"#utility.yul\":3839:3848 */\n dup4\n /* \"#utility.yul\":3835:3852 */\n add\n /* \"#utility.yul\":3826:3832 */\n dup6\n /* \"#utility.yul\":3782:3853 */\n tag_172\n jump\t// in\n tag_267:\n /* \"#utility.yul\":3900:3909 */\n dup2\n /* \"#utility.yul\":3894:3898 */\n dup2\n /* \"#utility.yul\":3890:3910 */\n sub\n /* \"#utility.yul\":3885:3887 */\n 0x20\n /* \"#utility.yul\":3874:3883 */\n dup4\n /* \"#utility.yul\":3870:3888 */\n add\n /* \"#utility.yul\":3863:3911 */\n mstore\n /* \"#utility.yul\":3928:4006 */\n tag_268\n /* \"#utility.yul\":4001:4005 */\n dup2\n /* \"#utility.yul\":3992:3998 */\n dup5\n /* \"#utility.yul\":3928:4006 */\n tag_177\n jump\t// in\n tag_268:\n /* \"#utility.yul\":3920:4006 */\n swap1\n pop\n /* \"#utility.yul\":3590:4013 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4019:4096 */\n tag_178:\n /* \"#utility.yul\":4056:4063 */\n 0x00\n /* \"#utility.yul\":4085:4090 */\n dup2\n /* \"#utility.yul\":4074:4090 */\n swap1\n pop\n /* \"#utility.yul\":4019:4096 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4102:4224 */\n tag_179:\n /* \"#utility.yul\":4175:4199 */\n tag_271\n /* \"#utility.yul\":4193:4198 */\n dup2\n /* \"#utility.yul\":4175:4199 */\n tag_178\n jump\t// in\n tag_271:\n /* \"#utility.yul\":4168:4173 */\n dup2\n /* \"#utility.yul\":4165:4200 */\n eq\n /* \"#utility.yul\":4155:4218 */\n tag_272\n jumpi\n /* \"#utility.yul\":4214:4215 */\n 0x00\n /* \"#utility.yul\":4211:4212 */\n dup1\n /* \"#utility.yul\":4204:4216 */\n revert\n /* \"#utility.yul\":4155:4218 */\n tag_272:\n /* \"#utility.yul\":4102:4224 */\n pop\n jump\t// out\n /* \"#utility.yul\":4230:4369 */\n tag_180:\n /* \"#utility.yul\":4276:4281 */\n 0x00\n /* \"#utility.yul\":4314:4320 */\n dup2\n /* \"#utility.yul\":4301:4321 */\n calldataload\n /* \"#utility.yul\":4292:4321 */\n swap1\n pop\n /* \"#utility.yul\":4330:4363 */\n tag_274\n /* \"#utility.yul\":4357:4362 */\n dup2\n /* \"#utility.yul\":4330:4363 */\n tag_179\n jump\t// in\n tag_274:\n /* \"#utility.yul\":4230:4369 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4375:4704 */\n tag_29:\n /* \"#utility.yul\":4434:4440 */\n 0x00\n /* \"#utility.yul\":4483:4485 */\n 0x20\n /* \"#utility.yul\":4471:4480 */\n dup3\n /* \"#utility.yul\":4462:4469 */\n dup5\n /* \"#utility.yul\":4458:4481 */\n sub\n /* \"#utility.yul\":4454:4486 */\n slt\n /* \"#utility.yul\":4451:4570 */\n iszero\n tag_276\n jumpi\n /* \"#utility.yul\":4489:4568 */\n tag_277\n tag_160\n jump\t// in\n tag_277:\n /* \"#utility.yul\":4451:4570 */\n tag_276:\n /* \"#utility.yul\":4609:4610 */\n 0x00\n /* \"#utility.yul\":4634:4687 */\n tag_278\n /* \"#utility.yul\":4679:4686 */\n dup5\n /* \"#utility.yul\":4670:4676 */\n dup3\n /* \"#utility.yul\":4659:4668 */\n dup6\n /* \"#utility.yul\":4655:4677 */\n add\n /* \"#utility.yul\":4634:4687 */\n tag_180\n jump\t// in\n tag_278:\n /* \"#utility.yul\":4624:4687 */\n swap2\n pop\n /* \"#utility.yul\":4580:4697 */\n pop\n /* \"#utility.yul\":4375:4704 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4710:4828 */\n tag_181:\n /* \"#utility.yul\":4797:4821 */\n tag_280\n /* \"#utility.yul\":4815:4820 */\n dup2\n /* \"#utility.yul\":4797:4821 */\n tag_178\n jump\t// in\n tag_280:\n /* \"#utility.yul\":4792:4795 */\n dup3\n /* \"#utility.yul\":4785:4822 */\n mstore\n /* \"#utility.yul\":4710:4828 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4834:5056 */\n tag_32:\n /* \"#utility.yul\":4927:4931 */\n 0x00\n /* \"#utility.yul\":4965:4967 */\n 0x20\n /* \"#utility.yul\":4954:4963 */\n dup3\n /* \"#utility.yul\":4950:4968 */\n add\n /* \"#utility.yul\":4942:4968 */\n swap1\n pop\n /* \"#utility.yul\":4978:5049 */\n tag_282\n /* \"#utility.yul\":5046:5047 */\n 0x00\n /* \"#utility.yul\":5035:5044 */\n dup4\n /* \"#utility.yul\":5031:5048 */\n add\n /* \"#utility.yul\":5022:5028 */\n dup5\n /* \"#utility.yul\":4978:5049 */\n tag_181\n jump\t// in\n tag_282:\n /* \"#utility.yul\":4834:5056 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5062:5184 */\n tag_182:\n /* \"#utility.yul\":5135:5159 */\n tag_284\n /* \"#utility.yul\":5153:5158 */\n dup2\n /* \"#utility.yul\":5135:5159 */\n tag_171\n jump\t// in\n tag_284:\n /* \"#utility.yul\":5128:5133 */\n dup2\n /* \"#utility.yul\":5125:5160 */\n eq\n /* \"#utility.yul\":5115:5178 */\n tag_285\n jumpi\n /* \"#utility.yul\":5174:5175 */\n 0x00\n /* \"#utility.yul\":5171:5172 */\n dup1\n /* \"#utility.yul\":5164:5176 */\n revert\n /* \"#utility.yul\":5115:5178 */\n tag_285:\n /* \"#utility.yul\":5062:5184 */\n pop\n jump\t// out\n /* \"#utility.yul\":5190:5329 */\n tag_183:\n /* \"#utility.yul\":5236:5241 */\n 0x00\n /* \"#utility.yul\":5274:5280 */\n dup2\n /* \"#utility.yul\":5261:5281 */\n calldataload\n /* \"#utility.yul\":5252:5281 */\n swap1\n pop\n /* \"#utility.yul\":5290:5323 */\n tag_287\n /* \"#utility.yul\":5317:5322 */\n dup2\n /* \"#utility.yul\":5290:5323 */\n tag_182\n jump\t// in\n tag_287:\n /* \"#utility.yul\":5190:5329 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5335:5809 */\n tag_35:\n /* \"#utility.yul\":5403:5409 */\n 0x00\n /* \"#utility.yul\":5411:5417 */\n dup1\n /* \"#utility.yul\":5460:5462 */\n 0x40\n /* \"#utility.yul\":5448:5457 */\n dup4\n /* \"#utility.yul\":5439:5446 */\n dup6\n /* \"#utility.yul\":5435:5458 */\n sub\n /* \"#utility.yul\":5431:5463 */\n slt\n /* \"#utility.yul\":5428:5547 */\n iszero\n tag_289\n jumpi\n /* \"#utility.yul\":5466:5545 */\n tag_290\n tag_160\n jump\t// in\n tag_290:\n /* \"#utility.yul\":5428:5547 */\n tag_289:\n /* \"#utility.yul\":5586:5587 */\n 0x00\n /* \"#utility.yul\":5611:5664 */\n tag_291\n /* \"#utility.yul\":5656:5663 */\n dup6\n /* \"#utility.yul\":5647:5653 */\n dup3\n /* \"#utility.yul\":5636:5645 */\n dup7\n /* \"#utility.yul\":5632:5654 */\n add\n /* \"#utility.yul\":5611:5664 */\n tag_180\n jump\t// in\n tag_291:\n /* \"#utility.yul\":5601:5664 */\n swap3\n pop\n /* \"#utility.yul\":5557:5674 */\n pop\n /* \"#utility.yul\":5713:5715 */\n 0x20\n /* \"#utility.yul\":5739:5792 */\n tag_292\n /* \"#utility.yul\":5784:5791 */\n dup6\n /* \"#utility.yul\":5775:5781 */\n dup3\n /* \"#utility.yul\":5764:5773 */\n dup7\n /* \"#utility.yul\":5760:5782 */\n add\n /* \"#utility.yul\":5739:5792 */\n tag_183\n jump\t// in\n tag_292:\n /* \"#utility.yul\":5729:5792 */\n swap2\n pop\n /* \"#utility.yul\":5684:5802 */\n pop\n /* \"#utility.yul\":5335:5809 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5815:5933 */\n tag_184:\n /* \"#utility.yul\":5902:5926 */\n tag_294\n /* \"#utility.yul\":5920:5925 */\n dup2\n /* \"#utility.yul\":5902:5926 */\n tag_167\n jump\t// in\n tag_294:\n /* \"#utility.yul\":5897:5900 */\n dup3\n /* \"#utility.yul\":5890:5927 */\n mstore\n /* \"#utility.yul\":5815:5933 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5939:6161 */\n tag_43:\n /* \"#utility.yul\":6032:6036 */\n 0x00\n /* \"#utility.yul\":6070:6072 */\n 0x20\n /* \"#utility.yul\":6059:6068 */\n dup3\n /* \"#utility.yul\":6055:6073 */\n add\n /* \"#utility.yul\":6047:6073 */\n swap1\n pop\n /* \"#utility.yul\":6083:6154 */\n tag_296\n /* \"#utility.yul\":6151:6152 */\n 0x00\n /* \"#utility.yul\":6140:6149 */\n dup4\n /* \"#utility.yul\":6136:6153 */\n add\n /* \"#utility.yul\":6127:6133 */\n dup5\n /* \"#utility.yul\":6083:6154 */\n tag_184\n jump\t// in\n tag_296:\n /* \"#utility.yul\":5939:6161 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6167:6284 */\n tag_185:\n /* \"#utility.yul\":6276:6277 */\n 0x00\n /* \"#utility.yul\":6273:6274 */\n dup1\n /* \"#utility.yul\":6266:6278 */\n revert\n /* \"#utility.yul\":6290:6407 */\n tag_186:\n /* \"#utility.yul\":6399:6400 */\n 0x00\n /* \"#utility.yul\":6396:6397 */\n dup1\n /* \"#utility.yul\":6389:6401 */\n revert\n /* \"#utility.yul\":6413:6593 */\n tag_138:\n /* \"#utility.yul\":6461:6538 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":6458:6459 */\n 0x00\n /* \"#utility.yul\":6451:6539 */\n mstore\n /* \"#utility.yul\":6558:6562 */\n 0x41\n /* \"#utility.yul\":6555:6556 */\n 0x04\n /* \"#utility.yul\":6548:6563 */\n mstore\n /* \"#utility.yul\":6582:6586 */\n 0x24\n /* \"#utility.yul\":6579:6580 */\n 0x00\n /* \"#utility.yul\":6572:6587 */\n revert\n /* \"#utility.yul\":6599:6880 */\n tag_187:\n /* \"#utility.yul\":6682:6709 */\n tag_301\n /* \"#utility.yul\":6704:6708 */\n dup3\n /* \"#utility.yul\":6682:6709 */\n tag_176\n jump\t// in\n tag_301:\n /* \"#utility.yul\":6674:6680 */\n dup2\n /* \"#utility.yul\":6670:6710 */\n add\n /* \"#utility.yul\":6812:6818 */\n dup2\n /* \"#utility.yul\":6800:6810 */\n dup2\n /* \"#utility.yul\":6797:6819 */\n lt\n /* \"#utility.yul\":6776:6794 */\n 0xffffffffffffffff\n /* \"#utility.yul\":6764:6774 */\n dup3\n /* \"#utility.yul\":6761:6795 */\n gt\n /* \"#utility.yul\":6758:6820 */\n or\n /* \"#utility.yul\":6755:6843 */\n iszero\n tag_302\n jumpi\n /* \"#utility.yul\":6823:6841 */\n tag_303\n tag_138\n jump\t// in\n tag_303:\n /* \"#utility.yul\":6755:6843 */\n tag_302:\n /* \"#utility.yul\":6863:6873 */\n dup1\n /* \"#utility.yul\":6859:6861 */\n 0x40\n /* \"#utility.yul\":6852:6874 */\n mstore\n /* \"#utility.yul\":6642:6880 */\n pop\n /* \"#utility.yul\":6599:6880 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6886:7015 */\n tag_188:\n /* \"#utility.yul\":6920:6926 */\n 0x00\n /* \"#utility.yul\":6947:6967 */\n tag_305\n tag_159\n jump\t// in\n tag_305:\n /* \"#utility.yul\":6937:6967 */\n swap1\n pop\n /* \"#utility.yul\":6976:7009 */\n tag_306\n /* \"#utility.yul\":7004:7008 */\n dup3\n /* \"#utility.yul\":6996:7002 */\n dup3\n /* \"#utility.yul\":6976:7009 */\n tag_187\n jump\t// in\n tag_306:\n /* \"#utility.yul\":6886:7015 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":7021:7329 */\n tag_189:\n /* \"#utility.yul\":7083:7087 */\n 0x00\n /* \"#utility.yul\":7173:7191 */\n 0xffffffffffffffff\n /* \"#utility.yul\":7165:7171 */\n dup3\n /* \"#utility.yul\":7162:7192 */\n gt\n /* \"#utility.yul\":7159:7215 */\n iszero\n tag_308\n jumpi\n /* \"#utility.yul\":7195:7213 */\n tag_309\n tag_138\n jump\t// in\n tag_309:\n /* \"#utility.yul\":7159:7215 */\n tag_308:\n /* \"#utility.yul\":7233:7262 */\n tag_310\n /* \"#utility.yul\":7255:7261 */\n dup3\n /* \"#utility.yul\":7233:7262 */\n tag_176\n jump\t// in\n tag_310:\n /* \"#utility.yul\":7225:7262 */\n swap1\n pop\n /* \"#utility.yul\":7317:7321 */\n 0x20\n /* \"#utility.yul\":7311:7315 */\n dup2\n /* \"#utility.yul\":7307:7322 */\n add\n /* \"#utility.yul\":7299:7322 */\n swap1\n pop\n /* \"#utility.yul\":7021:7329 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":7335:7481 */\n tag_190:\n /* \"#utility.yul\":7432:7438 */\n dup3\n /* \"#utility.yul\":7427:7430 */\n dup2\n /* \"#utility.yul\":7422:7425 */\n dup4\n /* \"#utility.yul\":7409:7439 */\n calldatacopy\n /* \"#utility.yul\":7473:7474 */\n 0x00\n /* \"#utility.yul\":7464:7470 */\n dup4\n /* \"#utility.yul\":7459:7462 */\n dup4\n /* \"#utility.yul\":7455:7471 */\n add\n /* \"#utility.yul\":7448:7475 */\n mstore\n /* \"#utility.yul\":7335:7481 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7487:7912 */\n tag_191:\n /* \"#utility.yul\":7565:7570 */\n 0x00\n /* \"#utility.yul\":7590:7656 */\n tag_313\n /* \"#utility.yul\":7606:7655 */\n tag_314\n /* \"#utility.yul\":7648:7654 */\n dup5\n /* \"#utility.yul\":7606:7655 */\n tag_189\n jump\t// in\n tag_314:\n /* \"#utility.yul\":7590:7656 */\n tag_188\n jump\t// in\n tag_313:\n /* \"#utility.yul\":7581:7656 */\n swap1\n pop\n /* \"#utility.yul\":7679:7685 */\n dup3\n /* \"#utility.yul\":7672:7677 */\n dup2\n /* \"#utility.yul\":7665:7686 */\n mstore\n /* \"#utility.yul\":7717:7721 */\n 0x20\n /* \"#utility.yul\":7710:7715 */\n dup2\n /* \"#utility.yul\":7706:7722 */\n add\n /* \"#utility.yul\":7755:7758 */\n dup5\n /* \"#utility.yul\":7746:7752 */\n dup5\n /* \"#utility.yul\":7741:7744 */\n dup5\n /* \"#utility.yul\":7737:7753 */\n add\n /* \"#utility.yul\":7734:7759 */\n gt\n /* \"#utility.yul\":7731:7843 */\n iszero\n tag_315\n jumpi\n /* \"#utility.yul\":7762:7841 */\n tag_316\n tag_186\n jump\t// in\n tag_316:\n /* \"#utility.yul\":7731:7843 */\n tag_315:\n /* \"#utility.yul\":7852:7906 */\n tag_317\n /* \"#utility.yul\":7899:7905 */\n dup5\n /* \"#utility.yul\":7894:7897 */\n dup3\n /* \"#utility.yul\":7889:7892 */\n dup6\n /* \"#utility.yul\":7852:7906 */\n tag_190\n jump\t// in\n tag_317:\n /* \"#utility.yul\":7571:7912 */\n pop\n /* \"#utility.yul\":7487:7912 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7932:8272 */\n tag_192:\n /* \"#utility.yul\":7988:7993 */\n 0x00\n /* \"#utility.yul\":8037:8040 */\n dup3\n /* \"#utility.yul\":8030:8034 */\n 0x1f\n /* \"#utility.yul\":8022:8028 */\n dup4\n /* \"#utility.yul\":8018:8035 */\n add\n /* \"#utility.yul\":8014:8041 */\n slt\n /* \"#utility.yul\":8004:8126 */\n tag_319\n jumpi\n /* \"#utility.yul\":8045:8124 */\n tag_320\n tag_185\n jump\t// in\n tag_320:\n /* \"#utility.yul\":8004:8126 */\n tag_319:\n /* \"#utility.yul\":8162:8168 */\n dup2\n /* \"#utility.yul\":8149:8169 */\n calldataload\n /* \"#utility.yul\":8187:8266 */\n tag_321\n /* \"#utility.yul\":8262:8265 */\n dup5\n /* \"#utility.yul\":8254:8260 */\n dup3\n /* \"#utility.yul\":8247:8251 */\n 0x20\n /* \"#utility.yul\":8239:8245 */\n dup7\n /* \"#utility.yul\":8235:8252 */\n add\n /* \"#utility.yul\":8187:8266 */\n tag_191\n jump\t// in\n tag_321:\n /* \"#utility.yul\":8178:8266 */\n swap2\n pop\n /* \"#utility.yul\":7994:8272 */\n pop\n /* \"#utility.yul\":7932:8272 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":8278:8787 */\n tag_56:\n /* \"#utility.yul\":8347:8353 */\n 0x00\n /* \"#utility.yul\":8396:8398 */\n 0x20\n /* \"#utility.yul\":8384:8393 */\n dup3\n /* \"#utility.yul\":8375:8382 */\n dup5\n /* \"#utility.yul\":8371:8394 */\n sub\n /* \"#utility.yul\":8367:8399 */\n slt\n /* \"#utility.yul\":8364:8483 */\n iszero\n tag_323\n jumpi\n /* \"#utility.yul\":8402:8481 */\n tag_324\n tag_160\n jump\t// in\n tag_324:\n /* \"#utility.yul\":8364:8483 */\n tag_323:\n /* \"#utility.yul\":8550:8551 */\n 0x00\n /* \"#utility.yul\":8539:8548 */\n dup3\n /* \"#utility.yul\":8535:8552 */\n add\n /* \"#utility.yul\":8522:8553 */\n calldataload\n /* \"#utility.yul\":8580:8598 */\n 0xffffffffffffffff\n /* \"#utility.yul\":8572:8578 */\n dup2\n /* \"#utility.yul\":8569:8599 */\n gt\n /* \"#utility.yul\":8566:8683 */\n iszero\n tag_325\n jumpi\n /* \"#utility.yul\":8602:8681 */\n tag_326\n tag_161\n jump\t// in\n tag_326:\n /* \"#utility.yul\":8566:8683 */\n tag_325:\n /* \"#utility.yul\":8707:8770 */\n tag_327\n /* \"#utility.yul\":8762:8769 */\n dup5\n /* \"#utility.yul\":8753:8759 */\n dup3\n /* \"#utility.yul\":8742:8751 */\n dup6\n /* \"#utility.yul\":8738:8760 */\n add\n /* \"#utility.yul\":8707:8770 */\n tag_192\n jump\t// in\n tag_327:\n /* \"#utility.yul\":8697:8770 */\n swap2\n pop\n /* \"#utility.yul\":8493:8780 */\n pop\n /* \"#utility.yul\":8278:8787 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":8793:8973 */\n tag_193:\n /* \"#utility.yul\":8841:8918 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":8838:8839 */\n 0x00\n /* \"#utility.yul\":8831:8919 */\n mstore\n /* \"#utility.yul\":8938:8942 */\n 0x22\n /* \"#utility.yul\":8935:8936 */\n 0x04\n /* \"#utility.yul\":8928:8943 */\n mstore\n /* \"#utility.yul\":8962:8966 */\n 0x24\n /* \"#utility.yul\":8959:8960 */\n 0x00\n /* \"#utility.yul\":8952:8967 */\n revert\n /* \"#utility.yul\":8979:9299 */\n tag_69:\n /* \"#utility.yul\":9023:9029 */\n 0x00\n /* \"#utility.yul\":9060:9061 */\n 0x02\n /* \"#utility.yul\":9054:9058 */\n dup3\n /* \"#utility.yul\":9050:9062 */\n div\n /* \"#utility.yul\":9040:9062 */\n swap1\n pop\n /* \"#utility.yul\":9107:9108 */\n 0x01\n /* \"#utility.yul\":9101:9105 */\n dup3\n /* \"#utility.yul\":9097:9109 */\n and\n /* \"#utility.yul\":9128:9146 */\n dup1\n /* \"#utility.yul\":9118:9199 */\n tag_330\n jumpi\n /* \"#utility.yul\":9184:9188 */\n 0x7f\n /* \"#utility.yul\":9176:9182 */\n dup3\n /* \"#utility.yul\":9172:9189 */\n and\n /* \"#utility.yul\":9162:9189 */\n swap2\n pop\n /* \"#utility.yul\":9118:9199 */\n tag_330:\n /* \"#utility.yul\":9246:9248 */\n 0x20\n /* \"#utility.yul\":9238:9244 */\n dup3\n /* \"#utility.yul\":9235:9249 */\n lt\n /* \"#utility.yul\":9215:9233 */\n dup2\n /* \"#utility.yul\":9212:9250 */\n sub\n /* \"#utility.yul\":9209:9293 */\n tag_331\n jumpi\n /* \"#utility.yul\":9265:9283 */\n tag_332\n tag_193\n jump\t// in\n tag_332:\n /* \"#utility.yul\":9209:9293 */\n tag_331:\n /* \"#utility.yul\":9030:9299 */\n pop\n /* \"#utility.yul\":8979:9299 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":9305:9539 */\n tag_194:\n /* \"#utility.yul\":9445:9479 */\n 0x416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365\n /* \"#utility.yul\":9441:9442 */\n 0x00\n /* \"#utility.yul\":9433:9439 */\n dup3\n /* \"#utility.yul\":9429:9443 */\n add\n /* \"#utility.yul\":9422:9480 */\n mstore\n /* \"#utility.yul\":9514:9531 */\n 0x20726f6c657320666f722073656c660000000000000000000000000000000000\n /* \"#utility.yul\":9509:9511 */\n 0x20\n /* \"#utility.yul\":9501:9507 */\n dup3\n /* \"#utility.yul\":9497:9512 */\n add\n /* \"#utility.yul\":9490:9532 */\n mstore\n /* \"#utility.yul\":9305:9539 */\n pop\n jump\t// out\n /* \"#utility.yul\":9545:9911 */\n tag_195:\n /* \"#utility.yul\":9687:9690 */\n 0x00\n /* \"#utility.yul\":9708:9775 */\n tag_335\n /* \"#utility.yul\":9772:9774 */\n 0x2f\n /* \"#utility.yul\":9767:9770 */\n dup4\n /* \"#utility.yul\":9708:9775 */\n tag_174\n jump\t// in\n tag_335:\n /* \"#utility.yul\":9701:9775 */\n swap2\n pop\n /* \"#utility.yul\":9784:9877 */\n tag_336\n /* \"#utility.yul\":9873:9876 */\n dup3\n /* \"#utility.yul\":9784:9877 */\n tag_194\n jump\t// in\n tag_336:\n /* \"#utility.yul\":9902:9904 */\n 0x40\n /* \"#utility.yul\":9897:9900 */\n dup3\n /* \"#utility.yul\":9893:9905 */\n add\n /* \"#utility.yul\":9886:9905 */\n swap1\n pop\n /* \"#utility.yul\":9545:9911 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":9917:10336 */\n tag_87:\n /* \"#utility.yul\":10083:10087 */\n 0x00\n /* \"#utility.yul\":10121:10123 */\n 0x20\n /* \"#utility.yul\":10110:10119 */\n dup3\n /* \"#utility.yul\":10106:10124 */\n add\n /* \"#utility.yul\":10098:10124 */\n swap1\n pop\n /* \"#utility.yul\":10170:10179 */\n dup2\n /* \"#utility.yul\":10164:10168 */\n dup2\n /* \"#utility.yul\":10160:10180 */\n sub\n /* \"#utility.yul\":10156:10157 */\n 0x00\n /* \"#utility.yul\":10145:10154 */\n dup4\n /* \"#utility.yul\":10141:10158 */\n add\n /* \"#utility.yul\":10134:10181 */\n mstore\n /* \"#utility.yul\":10198:10329 */\n tag_338\n /* \"#utility.yul\":10324:10328 */\n dup2\n /* \"#utility.yul\":10198:10329 */\n tag_195\n jump\t// in\n tag_338:\n /* \"#utility.yul\":10190:10329 */\n swap1\n pop\n /* \"#utility.yul\":9917:10336 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":10342:10483 */\n tag_196:\n /* \"#utility.yul\":10391:10395 */\n 0x00\n /* \"#utility.yul\":10414:10417 */\n dup2\n /* \"#utility.yul\":10406:10417 */\n swap1\n pop\n /* \"#utility.yul\":10437:10440 */\n dup2\n /* \"#utility.yul\":10434:10435 */\n 0x00\n /* \"#utility.yul\":10427:10441 */\n mstore\n /* \"#utility.yul\":10471:10475 */\n 0x20\n /* \"#utility.yul\":10468:10469 */\n 0x00\n /* \"#utility.yul\":10458:10476 */\n keccak256\n /* \"#utility.yul\":10450:10476 */\n swap1\n pop\n /* \"#utility.yul\":10342:10483 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":10489:10582 */\n tag_197:\n /* \"#utility.yul\":10526:10532 */\n 0x00\n /* \"#utility.yul\":10573:10575 */\n 0x20\n /* \"#utility.yul\":10568:10570 */\n 0x1f\n /* \"#utility.yul\":10561:10566 */\n dup4\n /* \"#utility.yul\":10557:10571 */\n add\n /* \"#utility.yul\":10553:10576 */\n div\n /* \"#utility.yul\":10543:10576 */\n swap1\n pop\n /* \"#utility.yul\":10489:10582 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":10588:10695 */\n tag_198:\n /* \"#utility.yul\":10632:10640 */\n 0x00\n /* \"#utility.yul\":10682:10687 */\n dup3\n /* \"#utility.yul\":10676:10680 */\n dup3\n /* \"#utility.yul\":10672:10688 */\n shl\n /* \"#utility.yul\":10651:10688 */\n swap1\n pop\n /* \"#utility.yul\":10588:10695 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":10701:11094 */\n tag_199:\n /* \"#utility.yul\":10770:10776 */\n 0x00\n /* \"#utility.yul\":10820:10821 */\n 0x08\n /* \"#utility.yul\":10808:10818 */\n dup4\n /* \"#utility.yul\":10804:10822 */\n mul\n /* \"#utility.yul\":10843:10940 */\n tag_343\n /* \"#utility.yul\":10873:10939 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":10862:10871 */\n dup3\n /* \"#utility.yul\":10843:10940 */\n tag_198\n jump\t// in\n tag_343:\n /* \"#utility.yul\":10961:11000 */\n tag_344\n /* \"#utility.yul\":10991:10999 */\n dup7\n /* \"#utility.yul\":10980:10989 */\n dup4\n /* \"#utility.yul\":10961:11000 */\n tag_198\n jump\t// in\n tag_344:\n /* \"#utility.yul\":10949:11000 */\n swap6\n pop\n /* \"#utility.yul\":11033:11037 */\n dup1\n /* \"#utility.yul\":11029:11038 */\n not\n /* \"#utility.yul\":11022:11027 */\n dup5\n /* \"#utility.yul\":11018:11039 */\n and\n /* \"#utility.yul\":11009:11039 */\n swap4\n pop\n /* \"#utility.yul\":11082:11086 */\n dup1\n /* \"#utility.yul\":11072:11080 */\n dup7\n /* \"#utility.yul\":11068:11087 */\n and\n /* \"#utility.yul\":11061:11066 */\n dup5\n /* \"#utility.yul\":11058:11088 */\n or\n /* \"#utility.yul\":11048:11088 */\n swap3\n pop\n /* \"#utility.yul\":10777:11094 */\n pop\n pop\n /* \"#utility.yul\":10701:11094 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":11100:11160 */\n tag_200:\n /* \"#utility.yul\":11128:11131 */\n 0x00\n /* \"#utility.yul\":11149:11154 */\n dup2\n /* \"#utility.yul\":11142:11154 */\n swap1\n pop\n /* \"#utility.yul\":11100:11160 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":11166:11308 */\n tag_201:\n /* \"#utility.yul\":11216:11225 */\n 0x00\n /* \"#utility.yul\":11249:11302 */\n tag_347\n /* \"#utility.yul\":11267:11301 */\n tag_348\n /* \"#utility.yul\":11276:11300 */\n tag_349\n /* \"#utility.yul\":11294:11299 */\n dup5\n /* \"#utility.yul\":11276:11300 */\n tag_167\n jump\t// in\n tag_349:\n /* \"#utility.yul\":11267:11301 */\n tag_200\n jump\t// in\n tag_348:\n /* \"#utility.yul\":11249:11302 */\n tag_167\n jump\t// in\n tag_347:\n /* \"#utility.yul\":11236:11302 */\n swap1\n pop\n /* \"#utility.yul\":11166:11308 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":11314:11389 */\n tag_202:\n /* \"#utility.yul\":11357:11360 */\n 0x00\n /* \"#utility.yul\":11378:11383 */\n dup2\n /* \"#utility.yul\":11371:11383 */\n swap1\n pop\n /* \"#utility.yul\":11314:11389 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":11395:11664 */\n tag_203:\n /* \"#utility.yul\":11505:11544 */\n tag_352\n /* \"#utility.yul\":11536:11543 */\n dup4\n /* \"#utility.yul\":11505:11544 */\n tag_201\n jump\t// in\n tag_352:\n /* \"#utility.yul\":11566:11657 */\n tag_353\n /* \"#utility.yul\":11615:11656 */\n tag_354\n /* \"#utility.yul\":11639:11655 */\n dup3\n /* \"#utility.yul\":11615:11656 */\n tag_202\n jump\t// in\n tag_354:\n /* \"#utility.yul\":11607:11613 */\n dup5\n /* \"#utility.yul\":11600:11604 */\n dup5\n /* \"#utility.yul\":11594:11605 */\n sload\n /* \"#utility.yul\":11566:11657 */\n tag_199\n jump\t// in\n tag_353:\n /* \"#utility.yul\":11560:11564 */\n dup3\n /* \"#utility.yul\":11553:11658 */\n sstore\n /* \"#utility.yul\":11471:11664 */\n pop\n /* \"#utility.yul\":11395:11664 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":11670:11743 */\n tag_204:\n /* \"#utility.yul\":11715:11718 */\n 0x00\n /* \"#utility.yul\":11670:11743 */\n swap1\n jump\t// out\n /* \"#utility.yul\":11749:11938 */\n tag_205:\n /* \"#utility.yul\":11826:11858 */\n tag_357\n tag_204\n jump\t// in\n tag_357:\n /* \"#utility.yul\":11867:11932 */\n tag_358\n /* \"#utility.yul\":11925:11931 */\n dup2\n /* \"#utility.yul\":11917:11923 */\n dup5\n /* \"#utility.yul\":11911:11915 */\n dup5\n /* \"#utility.yul\":11867:11932 */\n tag_203\n jump\t// in\n tag_358:\n /* \"#utility.yul\":11802:11938 */\n pop\n /* \"#utility.yul\":11749:11938 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":11944:12130 */\n tag_206:\n /* \"#utility.yul\":12004:12124 */\n tag_360:\n /* \"#utility.yul\":12021:12024 */\n dup2\n /* \"#utility.yul\":12014:12019 */\n dup2\n /* \"#utility.yul\":12011:12025 */\n lt\n /* \"#utility.yul\":12004:12124 */\n iszero\n tag_362\n jumpi\n /* \"#utility.yul\":12075:12114 */\n tag_363\n /* \"#utility.yul\":12112:12113 */\n 0x00\n /* \"#utility.yul\":12105:12110 */\n dup3\n /* \"#utility.yul\":12075:12114 */\n tag_205\n jump\t// in\n tag_363:\n /* \"#utility.yul\":12048:12049 */\n 0x01\n /* \"#utility.yul\":12041:12046 */\n dup2\n /* \"#utility.yul\":12037:12050 */\n add\n /* \"#utility.yul\":12028:12050 */\n swap1\n pop\n /* \"#utility.yul\":12004:12124 */\n jump(tag_360)\n tag_362:\n /* \"#utility.yul\":11944:12130 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":12136:12679 */\n tag_207:\n /* \"#utility.yul\":12237:12239 */\n 0x1f\n /* \"#utility.yul\":12232:12235 */\n dup3\n /* \"#utility.yul\":12229:12240 */\n gt\n /* \"#utility.yul\":12226:12672 */\n iszero\n tag_365\n jumpi\n /* \"#utility.yul\":12271:12309 */\n tag_366\n /* \"#utility.yul\":12303:12308 */\n dup2\n /* \"#utility.yul\":12271:12309 */\n tag_196\n jump\t// in\n tag_366:\n /* \"#utility.yul\":12355:12384 */\n tag_367\n /* \"#utility.yul\":12373:12383 */\n dup5\n /* \"#utility.yul\":12355:12384 */\n tag_197\n jump\t// in\n tag_367:\n /* \"#utility.yul\":12345:12353 */\n dup2\n /* \"#utility.yul\":12341:12385 */\n add\n /* \"#utility.yul\":12538:12540 */\n 0x20\n /* \"#utility.yul\":12526:12536 */\n dup6\n /* \"#utility.yul\":12523:12541 */\n lt\n /* \"#utility.yul\":12520:12569 */\n iszero\n tag_368\n jumpi\n /* \"#utility.yul\":12559:12567 */\n dup2\n /* \"#utility.yul\":12544:12567 */\n swap1\n pop\n /* \"#utility.yul\":12520:12569 */\n tag_368:\n /* \"#utility.yul\":12582:12662 */\n tag_369\n /* \"#utility.yul\":12638:12660 */\n tag_370\n /* \"#utility.yul\":12656:12659 */\n dup6\n /* \"#utility.yul\":12638:12660 */\n tag_197\n jump\t// in\n tag_370:\n /* \"#utility.yul\":12628:12636 */\n dup4\n /* \"#utility.yul\":12624:12661 */\n add\n /* \"#utility.yul\":12611:12622 */\n dup3\n /* \"#utility.yul\":12582:12662 */\n tag_206\n jump\t// in\n tag_369:\n /* \"#utility.yul\":12241:12672 */\n pop\n pop\n /* \"#utility.yul\":12226:12672 */\n tag_365:\n /* \"#utility.yul\":12136:12679 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":12685:12802 */\n tag_208:\n /* \"#utility.yul\":12739:12747 */\n 0x00\n /* \"#utility.yul\":12789:12794 */\n dup3\n /* \"#utility.yul\":12783:12787 */\n dup3\n /* \"#utility.yul\":12779:12795 */\n shr\n /* \"#utility.yul\":12758:12795 */\n swap1\n pop\n /* \"#utility.yul\":12685:12802 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":12808:12977 */\n tag_209:\n /* \"#utility.yul\":12852:12858 */\n 0x00\n /* \"#utility.yul\":12885:12936 */\n tag_373\n /* \"#utility.yul\":12933:12934 */\n 0x00\n /* \"#utility.yul\":12929:12935 */\n not\n /* \"#utility.yul\":12921:12926 */\n dup5\n /* \"#utility.yul\":12918:12919 */\n 0x08\n /* \"#utility.yul\":12914:12927 */\n mul\n /* \"#utility.yul\":12885:12936 */\n tag_208\n jump\t// in\n tag_373:\n /* \"#utility.yul\":12881:12937 */\n not\n /* \"#utility.yul\":12966:12970 */\n dup1\n /* \"#utility.yul\":12960:12964 */\n dup4\n /* \"#utility.yul\":12956:12971 */\n and\n /* \"#utility.yul\":12946:12971 */\n swap2\n pop\n /* \"#utility.yul\":12859:12977 */\n pop\n /* \"#utility.yul\":12808:12977 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":12982:13277 */\n tag_210:\n /* \"#utility.yul\":13058:13062 */\n 0x00\n /* \"#utility.yul\":13204:13233 */\n tag_375\n /* \"#utility.yul\":13229:13232 */\n dup4\n /* \"#utility.yul\":13223:13227 */\n dup4\n /* \"#utility.yul\":13204:13233 */\n tag_209\n jump\t// in\n tag_375:\n /* \"#utility.yul\":13196:13233 */\n swap2\n pop\n /* \"#utility.yul\":13266:13269 */\n dup3\n /* \"#utility.yul\":13263:13264 */\n 0x02\n /* \"#utility.yul\":13259:13270 */\n mul\n /* \"#utility.yul\":13253:13257 */\n dup3\n /* \"#utility.yul\":13250:13271 */\n or\n /* \"#utility.yul\":13242:13271 */\n swap1\n pop\n /* \"#utility.yul\":12982:13277 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":13282:14677 */\n tag_102:\n /* \"#utility.yul\":13399:13436 */\n tag_377\n /* \"#utility.yul\":13432:13435 */\n dup3\n /* \"#utility.yul\":13399:13436 */\n tag_173\n jump\t// in\n tag_377:\n /* \"#utility.yul\":13501:13519 */\n 0xffffffffffffffff\n /* \"#utility.yul\":13493:13499 */\n dup2\n /* \"#utility.yul\":13490:13520 */\n gt\n /* \"#utility.yul\":13487:13543 */\n iszero\n tag_378\n jumpi\n /* \"#utility.yul\":13523:13541 */\n tag_379\n tag_138\n jump\t// in\n tag_379:\n /* \"#utility.yul\":13487:13543 */\n tag_378:\n /* \"#utility.yul\":13567:13605 */\n tag_380\n /* \"#utility.yul\":13599:13603 */\n dup3\n /* \"#utility.yul\":13593:13604 */\n sload\n /* \"#utility.yul\":13567:13605 */\n tag_69\n jump\t// in\n tag_380:\n /* \"#utility.yul\":13652:13719 */\n tag_381\n /* \"#utility.yul\":13712:13718 */\n dup3\n /* \"#utility.yul\":13704:13710 */\n dup3\n /* \"#utility.yul\":13698:13702 */\n dup6\n /* \"#utility.yul\":13652:13719 */\n tag_207\n jump\t// in\n tag_381:\n /* \"#utility.yul\":13746:13747 */\n 0x00\n /* \"#utility.yul\":13770:13774 */\n 0x20\n /* \"#utility.yul\":13757:13774 */\n swap1\n pop\n /* \"#utility.yul\":13802:13804 */\n 0x1f\n /* \"#utility.yul\":13794:13800 */\n dup4\n /* \"#utility.yul\":13791:13805 */\n gt\n /* \"#utility.yul\":13819:13820 */\n 0x01\n /* \"#utility.yul\":13814:14432 */\n dup2\n eq\n tag_383\n jumpi\n /* \"#utility.yul\":14476:14477 */\n 0x00\n /* \"#utility.yul\":14493:14499 */\n dup5\n /* \"#utility.yul\":14490:14567 */\n iszero\n tag_384\n jumpi\n /* \"#utility.yul\":14542:14551 */\n dup3\n /* \"#utility.yul\":14537:14540 */\n dup8\n /* \"#utility.yul\":14533:14552 */\n add\n /* \"#utility.yul\":14527:14553 */\n mload\n /* \"#utility.yul\":14518:14553 */\n swap1\n pop\n /* \"#utility.yul\":14490:14567 */\n tag_384:\n /* \"#utility.yul\":14593:14660 */\n tag_385\n /* \"#utility.yul\":14653:14659 */\n dup6\n /* \"#utility.yul\":14646:14651 */\n dup3\n /* \"#utility.yul\":14593:14660 */\n tag_210\n jump\t// in\n tag_385:\n /* \"#utility.yul\":14587:14591 */\n dup7\n /* \"#utility.yul\":14580:14661 */\n sstore\n /* \"#utility.yul\":14449:14671 */\n pop\n /* \"#utility.yul\":13784:14671 */\n jump(tag_382)\n /* \"#utility.yul\":13814:14432 */\n tag_383:\n /* \"#utility.yul\":13866:13870 */\n 0x1f\n /* \"#utility.yul\":13862:13871 */\n not\n /* \"#utility.yul\":13854:13860 */\n dup5\n /* \"#utility.yul\":13850:13872 */\n and\n /* \"#utility.yul\":13900:13937 */\n tag_386\n /* \"#utility.yul\":13932:13936 */\n dup7\n /* \"#utility.yul\":13900:13937 */\n tag_196\n jump\t// in\n tag_386:\n /* \"#utility.yul\":13959:13960 */\n 0x00\n /* \"#utility.yul\":13973:14181 */\n tag_387:\n /* \"#utility.yul\":13987:13994 */\n dup3\n /* \"#utility.yul\":13984:13985 */\n dup2\n /* \"#utility.yul\":13981:13995 */\n lt\n /* \"#utility.yul\":13973:14181 */\n iszero\n tag_389\n jumpi\n /* \"#utility.yul\":14066:14075 */\n dup5\n /* \"#utility.yul\":14061:14064 */\n dup10\n /* \"#utility.yul\":14057:14076 */\n add\n /* \"#utility.yul\":14051:14077 */\n mload\n /* \"#utility.yul\":14043:14049 */\n dup3\n /* \"#utility.yul\":14036:14078 */\n sstore\n /* \"#utility.yul\":14117:14118 */\n 0x01\n /* \"#utility.yul\":14109:14115 */\n dup3\n /* \"#utility.yul\":14105:14119 */\n add\n /* \"#utility.yul\":14095:14119 */\n swap2\n pop\n /* \"#utility.yul\":14164:14166 */\n 0x20\n /* \"#utility.yul\":14153:14162 */\n dup6\n /* \"#utility.yul\":14149:14167 */\n add\n /* \"#utility.yul\":14136:14167 */\n swap5\n pop\n /* \"#utility.yul\":14010:14014 */\n 0x20\n /* \"#utility.yul\":14007:14008 */\n dup2\n /* \"#utility.yul\":14003:14015 */\n add\n /* \"#utility.yul\":13998:14015 */\n swap1\n pop\n /* \"#utility.yul\":13973:14181 */\n jump(tag_387)\n tag_389:\n /* \"#utility.yul\":14209:14215 */\n dup7\n /* \"#utility.yul\":14200:14207 */\n dup4\n /* \"#utility.yul\":14197:14216 */\n lt\n /* \"#utility.yul\":14194:14373 */\n iszero\n tag_390\n jumpi\n /* \"#utility.yul\":14267:14276 */\n dup5\n /* \"#utility.yul\":14262:14265 */\n dup10\n /* \"#utility.yul\":14258:14277 */\n add\n /* \"#utility.yul\":14252:14278 */\n mload\n /* \"#utility.yul\":14310:14358 */\n tag_391\n /* \"#utility.yul\":14352:14356 */\n 0x1f\n /* \"#utility.yul\":14344:14350 */\n dup10\n /* \"#utility.yul\":14340:14357 */\n and\n /* \"#utility.yul\":14329:14338 */\n dup3\n /* \"#utility.yul\":14310:14358 */\n tag_209\n jump\t// in\n tag_391:\n /* \"#utility.yul\":14302:14308 */\n dup4\n /* \"#utility.yul\":14295:14359 */\n sstore\n /* \"#utility.yul\":14217:14373 */\n pop\n /* \"#utility.yul\":14194:14373 */\n tag_390:\n /* \"#utility.yul\":14419:14420 */\n 0x01\n /* \"#utility.yul\":14415:14416 */\n 0x02\n /* \"#utility.yul\":14407:14413 */\n dup9\n /* \"#utility.yul\":14403:14417 */\n mul\n /* \"#utility.yul\":14399:14421 */\n add\n /* \"#utility.yul\":14393:14397 */\n dup9\n /* \"#utility.yul\":14386:14422 */\n sstore\n /* \"#utility.yul\":13821:14432 */\n pop\n pop\n pop\n /* \"#utility.yul\":13784:14671 */\n tag_382:\n pop\n /* \"#utility.yul\":13374:14677 */\n pop\n pop\n pop\n /* \"#utility.yul\":13282:14677 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":14683:14831 */\n tag_211:\n /* \"#utility.yul\":14785:14796 */\n 0x00\n /* \"#utility.yul\":14822:14825 */\n dup2\n /* \"#utility.yul\":14807:14825 */\n swap1\n pop\n /* \"#utility.yul\":14683:14831 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":14837:15010 */\n tag_212:\n /* \"#utility.yul\":14977:15002 */\n 0x416363657373436f6e74726f6c3a206163636f756e7420000000000000000000\n /* \"#utility.yul\":14973:14974 */\n 0x00\n /* \"#utility.yul\":14965:14971 */\n dup3\n /* \"#utility.yul\":14961:14975 */\n add\n /* \"#utility.yul\":14954:15003 */\n mstore\n /* \"#utility.yul\":14837:15010 */\n pop\n jump\t// out\n /* \"#utility.yul\":15016:15418 */\n tag_213:\n /* \"#utility.yul\":15176:15179 */\n 0x00\n /* \"#utility.yul\":15197:15282 */\n tag_395\n /* \"#utility.yul\":15279:15281 */\n 0x17\n /* \"#utility.yul\":15274:15277 */\n dup4\n /* \"#utility.yul\":15197:15282 */\n tag_211\n jump\t// in\n tag_395:\n /* \"#utility.yul\":15190:15282 */\n swap2\n pop\n /* \"#utility.yul\":15291:15384 */\n tag_396\n /* \"#utility.yul\":15380:15383 */\n dup3\n /* \"#utility.yul\":15291:15384 */\n tag_212\n jump\t// in\n tag_396:\n /* \"#utility.yul\":15409:15411 */\n 0x17\n /* \"#utility.yul\":15404:15407 */\n dup3\n /* \"#utility.yul\":15400:15412 */\n add\n /* \"#utility.yul\":15393:15412 */\n swap1\n pop\n /* \"#utility.yul\":15016:15418 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":15424:15814 */\n tag_214:\n /* \"#utility.yul\":15530:15533 */\n 0x00\n /* \"#utility.yul\":15558:15597 */\n tag_398\n /* \"#utility.yul\":15591:15596 */\n dup3\n /* \"#utility.yul\":15558:15597 */\n tag_173\n jump\t// in\n tag_398:\n /* \"#utility.yul\":15613:15702 */\n tag_399\n /* \"#utility.yul\":15695:15701 */\n dup2\n /* \"#utility.yul\":15690:15693 */\n dup6\n /* \"#utility.yul\":15613:15702 */\n tag_211\n jump\t// in\n tag_399:\n /* \"#utility.yul\":15606:15702 */\n swap4\n pop\n /* \"#utility.yul\":15711:15776 */\n tag_400\n /* \"#utility.yul\":15769:15775 */\n dup2\n /* \"#utility.yul\":15764:15767 */\n dup6\n /* \"#utility.yul\":15757:15761 */\n 0x20\n /* \"#utility.yul\":15750:15755 */\n dup7\n /* \"#utility.yul\":15746:15762 */\n add\n /* \"#utility.yul\":15711:15776 */\n tag_175\n jump\t// in\n tag_400:\n /* \"#utility.yul\":15801:15807 */\n dup1\n /* \"#utility.yul\":15796:15799 */\n dup5\n /* \"#utility.yul\":15792:15808 */\n add\n /* \"#utility.yul\":15785:15808 */\n swap2\n pop\n /* \"#utility.yul\":15534:15814 */\n pop\n /* \"#utility.yul\":15424:15814 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":15820:15987 */\n tag_215:\n /* \"#utility.yul\":15960:15979 */\n 0x206973206d697373696e6720726f6c6520000000000000000000000000000000\n /* \"#utility.yul\":15956:15957 */\n 0x00\n /* \"#utility.yul\":15948:15954 */\n dup3\n /* \"#utility.yul\":15944:15958 */\n add\n /* \"#utility.yul\":15937:15980 */\n mstore\n /* \"#utility.yul\":15820:15987 */\n pop\n jump\t// out\n /* \"#utility.yul\":15993:16395 */\n tag_216:\n /* \"#utility.yul\":16153:16156 */\n 0x00\n /* \"#utility.yul\":16174:16259 */\n tag_403\n /* \"#utility.yul\":16256:16258 */\n 0x11\n /* \"#utility.yul\":16251:16254 */\n dup4\n /* \"#utility.yul\":16174:16259 */\n tag_211\n jump\t// in\n tag_403:\n /* \"#utility.yul\":16167:16259 */\n swap2\n pop\n /* \"#utility.yul\":16268:16361 */\n tag_404\n /* \"#utility.yul\":16357:16360 */\n dup3\n /* \"#utility.yul\":16268:16361 */\n tag_215\n jump\t// in\n tag_404:\n /* \"#utility.yul\":16386:16388 */\n 0x11\n /* \"#utility.yul\":16381:16384 */\n dup3\n /* \"#utility.yul\":16377:16389 */\n add\n /* \"#utility.yul\":16370:16389 */\n swap1\n pop\n /* \"#utility.yul\":15993:16395 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":16401:17368 */\n tag_126:\n /* \"#utility.yul\":16783:16786 */\n 0x00\n /* \"#utility.yul\":16805:16953 */\n tag_406\n /* \"#utility.yul\":16949:16952 */\n dup3\n /* \"#utility.yul\":16805:16953 */\n tag_213\n jump\t// in\n tag_406:\n /* \"#utility.yul\":16798:16953 */\n swap2\n pop\n /* \"#utility.yul\":16970:17065 */\n tag_407\n /* \"#utility.yul\":17061:17064 */\n dup3\n /* \"#utility.yul\":17052:17058 */\n dup6\n /* \"#utility.yul\":16970:17065 */\n tag_214\n jump\t// in\n tag_407:\n /* \"#utility.yul\":16963:17065 */\n swap2\n pop\n /* \"#utility.yul\":17082:17230 */\n tag_408\n /* \"#utility.yul\":17226:17229 */\n dup3\n /* \"#utility.yul\":17082:17230 */\n tag_216\n jump\t// in\n tag_408:\n /* \"#utility.yul\":17075:17230 */\n swap2\n pop\n /* \"#utility.yul\":17247:17342 */\n tag_409\n /* \"#utility.yul\":17338:17341 */\n dup3\n /* \"#utility.yul\":17329:17335 */\n dup5\n /* \"#utility.yul\":17247:17342 */\n tag_214\n jump\t// in\n tag_409:\n /* \"#utility.yul\":17240:17342 */\n swap2\n pop\n /* \"#utility.yul\":17359:17362 */\n dup2\n /* \"#utility.yul\":17352:17362 */\n swap1\n pop\n /* \"#utility.yul\":16401:17368 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":17374:17687 */\n tag_128:\n /* \"#utility.yul\":17487:17491 */\n 0x00\n /* \"#utility.yul\":17525:17527 */\n 0x20\n /* \"#utility.yul\":17514:17523 */\n dup3\n /* \"#utility.yul\":17510:17528 */\n add\n /* \"#utility.yul\":17502:17528 */\n swap1\n pop\n /* \"#utility.yul\":17574:17583 */\n dup2\n /* \"#utility.yul\":17568:17572 */\n dup2\n /* \"#utility.yul\":17564:17584 */\n sub\n /* \"#utility.yul\":17560:17561 */\n 0x00\n /* \"#utility.yul\":17549:17558 */\n dup4\n /* \"#utility.yul\":17545:17562 */\n add\n /* \"#utility.yul\":17538:17585 */\n mstore\n /* \"#utility.yul\":17602:17680 */\n tag_411\n /* \"#utility.yul\":17675:17679 */\n dup2\n /* \"#utility.yul\":17666:17672 */\n dup5\n /* \"#utility.yul\":17602:17680 */\n tag_177\n jump\t// in\n tag_411:\n /* \"#utility.yul\":17594:17680 */\n swap1\n pop\n /* \"#utility.yul\":17374:17687 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":17693:17873 */\n tag_217:\n /* \"#utility.yul\":17741:17818 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":17738:17739 */\n 0x00\n /* \"#utility.yul\":17731:17819 */\n mstore\n /* \"#utility.yul\":17838:17842 */\n 0x11\n /* \"#utility.yul\":17835:17836 */\n 0x04\n /* \"#utility.yul\":17828:17843 */\n mstore\n /* \"#utility.yul\":17862:17866 */\n 0x24\n /* \"#utility.yul\":17859:17860 */\n 0x00\n /* \"#utility.yul\":17852:17867 */\n revert\n /* \"#utility.yul\":17879:18289 */\n tag_133:\n /* \"#utility.yul\":17919:17926 */\n 0x00\n /* \"#utility.yul\":17942:17962 */\n tag_414\n /* \"#utility.yul\":17960:17961 */\n dup3\n /* \"#utility.yul\":17942:17962 */\n tag_167\n jump\t// in\n tag_414:\n /* \"#utility.yul\":17937:17962 */\n swap2\n pop\n /* \"#utility.yul\":17976:17996 */\n tag_415\n /* \"#utility.yul\":17994:17995 */\n dup4\n /* \"#utility.yul\":17976:17996 */\n tag_167\n jump\t// in\n tag_415:\n /* \"#utility.yul\":17971:17996 */\n swap3\n pop\n /* \"#utility.yul\":18031:18032 */\n dup3\n /* \"#utility.yul\":18028:18029 */\n dup3\n /* \"#utility.yul\":18024:18033 */\n mul\n /* \"#utility.yul\":18053:18083 */\n tag_416\n /* \"#utility.yul\":18071:18082 */\n dup2\n /* \"#utility.yul\":18053:18083 */\n tag_167\n jump\t// in\n tag_416:\n /* \"#utility.yul\":18042:18083 */\n swap2\n pop\n /* \"#utility.yul\":18232:18233 */\n dup3\n /* \"#utility.yul\":18223:18230 */\n dup3\n /* \"#utility.yul\":18219:18234 */\n div\n /* \"#utility.yul\":18216:18217 */\n dup5\n /* \"#utility.yul\":18213:18235 */\n eq\n /* \"#utility.yul\":18193:18194 */\n dup4\n /* \"#utility.yul\":18186:18195 */\n iszero\n /* \"#utility.yul\":18166:18249 */\n or\n /* \"#utility.yul\":18143:18282 */\n tag_417\n jumpi\n /* \"#utility.yul\":18262:18280 */\n tag_418\n tag_217\n jump\t// in\n tag_418:\n /* \"#utility.yul\":18143:18282 */\n tag_417:\n /* \"#utility.yul\":17927:18289 */\n pop\n /* \"#utility.yul\":17879:18289 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":18295:18486 */\n tag_135:\n /* \"#utility.yul\":18335:18338 */\n 0x00\n /* \"#utility.yul\":18354:18374 */\n tag_420\n /* \"#utility.yul\":18372:18373 */\n dup3\n /* \"#utility.yul\":18354:18374 */\n tag_167\n jump\t// in\n tag_420:\n /* \"#utility.yul\":18349:18374 */\n swap2\n pop\n /* \"#utility.yul\":18388:18408 */\n tag_421\n /* \"#utility.yul\":18406:18407 */\n dup4\n /* \"#utility.yul\":18388:18408 */\n tag_167\n jump\t// in\n tag_421:\n /* \"#utility.yul\":18383:18408 */\n swap3\n pop\n /* \"#utility.yul\":18431:18432 */\n dup3\n /* \"#utility.yul\":18428:18429 */\n dup3\n /* \"#utility.yul\":18424:18433 */\n add\n /* \"#utility.yul\":18417:18433 */\n swap1\n pop\n /* \"#utility.yul\":18452:18455 */\n dup1\n /* \"#utility.yul\":18449:18450 */\n dup3\n /* \"#utility.yul\":18446:18456 */\n gt\n /* \"#utility.yul\":18443:18479 */\n iszero\n tag_422\n jumpi\n /* \"#utility.yul\":18459:18477 */\n tag_423\n tag_217\n jump\t// in\n tag_423:\n /* \"#utility.yul\":18443:18479 */\n tag_422:\n /* \"#utility.yul\":18295:18486 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":18492:18672 */\n tag_142:\n /* \"#utility.yul\":18540:18617 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":18537:18538 */\n 0x00\n /* \"#utility.yul\":18530:18618 */\n mstore\n /* \"#utility.yul\":18637:18641 */\n 0x32\n /* \"#utility.yul\":18634:18635 */\n 0x04\n /* \"#utility.yul\":18627:18642 */\n mstore\n /* \"#utility.yul\":18661:18665 */\n 0x24\n /* \"#utility.yul\":18658:18659 */\n 0x00\n /* \"#utility.yul\":18651:18666 */\n revert\n /* \"#utility.yul\":18678:18849 */\n tag_155:\n /* \"#utility.yul\":18717:18720 */\n 0x00\n /* \"#utility.yul\":18740:18764 */\n tag_426\n /* \"#utility.yul\":18758:18763 */\n dup3\n /* \"#utility.yul\":18740:18764 */\n tag_167\n jump\t// in\n tag_426:\n /* \"#utility.yul\":18731:18764 */\n swap2\n pop\n /* \"#utility.yul\":18786:18790 */\n 0x00\n /* \"#utility.yul\":18779:18784 */\n dup3\n /* \"#utility.yul\":18776:18791 */\n sub\n /* \"#utility.yul\":18773:18814 */\n tag_427\n jumpi\n /* \"#utility.yul\":18794:18812 */\n tag_428\n tag_217\n jump\t// in\n tag_428:\n /* \"#utility.yul\":18773:18814 */\n tag_427:\n /* \"#utility.yul\":18841:18842 */\n 0x01\n /* \"#utility.yul\":18834:18839 */\n dup3\n /* \"#utility.yul\":18830:18843 */\n sub\n /* \"#utility.yul\":18823:18843 */\n swap1\n pop\n /* \"#utility.yul\":18678:18849 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":18855:19037 */\n tag_218:\n /* \"#utility.yul\":18995:19029 */\n 0x537472696e67733a20686578206c656e67746820696e73756666696369656e74\n /* \"#utility.yul\":18991:18992 */\n 0x00\n /* \"#utility.yul\":18983:18989 */\n dup3\n /* \"#utility.yul\":18979:18993 */\n add\n /* \"#utility.yul\":18972:19030 */\n mstore\n /* \"#utility.yul\":18855:19037 */\n pop\n jump\t// out\n /* \"#utility.yul\":19043:19409 */\n tag_219:\n /* \"#utility.yul\":19185:19188 */\n 0x00\n /* \"#utility.yul\":19206:19273 */\n tag_431\n /* \"#utility.yul\":19270:19272 */\n 0x20\n /* \"#utility.yul\":19265:19268 */\n dup4\n /* \"#utility.yul\":19206:19273 */\n tag_174\n jump\t// in\n tag_431:\n /* \"#utility.yul\":19199:19273 */\n swap2\n pop\n /* \"#utility.yul\":19282:19375 */\n tag_432\n /* \"#utility.yul\":19371:19374 */\n dup3\n /* \"#utility.yul\":19282:19375 */\n tag_218\n jump\t// in\n tag_432:\n /* \"#utility.yul\":19400:19402 */\n 0x20\n /* \"#utility.yul\":19395:19398 */\n dup3\n /* \"#utility.yul\":19391:19403 */\n add\n /* \"#utility.yul\":19384:19403 */\n swap1\n pop\n /* \"#utility.yul\":19043:19409 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":19415:19834 */\n tag_158:\n /* \"#utility.yul\":19581:19585 */\n 0x00\n /* \"#utility.yul\":19619:19621 */\n 0x20\n /* \"#utility.yul\":19608:19617 */\n dup3\n /* \"#utility.yul\":19604:19622 */\n add\n /* \"#utility.yul\":19596:19622 */\n swap1\n pop\n /* \"#utility.yul\":19668:19677 */\n dup2\n /* \"#utility.yul\":19662:19666 */\n dup2\n /* \"#utility.yul\":19658:19678 */\n sub\n /* \"#utility.yul\":19654:19655 */\n 0x00\n /* \"#utility.yul\":19643:19652 */\n dup4\n /* \"#utility.yul\":19639:19656 */\n add\n /* \"#utility.yul\":19632:19679 */\n mstore\n /* \"#utility.yul\":19696:19827 */\n tag_434\n /* \"#utility.yul\":19822:19826 */\n dup2\n /* \"#utility.yul\":19696:19827 */\n tag_219\n jump\t// in\n tag_434:\n /* \"#utility.yul\":19688:19827 */\n swap1\n pop\n /* \"#utility.yul\":19415:19834 */\n swap2\n swap1\n pop\n jump\t// out\n\n auxdata: 0xa2646970667358221220c98ffc77395c5b35a623c03136d6d45bb351a2483965d83f306f1b150b1ad13a64736f6c63430008120033\n}\n",
"bytecode": {
"functionDebugData": {
"@_1521": {
"entryPoint": null,
"id": 1521,
"parameterSlots": 0,
"returnSlots": 0
},
"@_grantRole_283": {
"entryPoint": 95,
"id": 283,
"parameterSlots": 2,
"returnSlots": 0
},
"@_msgSender_400": {
"entryPoint": 442,
"id": 400,
"parameterSlots": 0,
"returnSlots": 1
},
"@hasRole_79": {
"entryPoint": 336,
"id": 79,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [],
"linkReferences": {},
"object": "60806040523480156200001157600080fd5b50620000276000801b336200005f60201b60201c565b620000597fe2889e7308860b3fe8df0daa86fccfea4d71e43776719a57be28cf90b6db81e9336200005f60201b60201c565b620001c2565b6200007182826200015060201b60201c565b6200014c57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620000f1620001ba60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b61165f80620001d26000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80636fa8cf33116100715780636fa8cf331461017757806391d1485414610195578063a217fddf146101c5578063d547741f146101e3578063ea0a5237146101ff578063eafb79e21461022f576100a9565b806301ffc9a7146100ae5780631bcfbe31146100de578063248a9ca31461010f5780632f2ff15d1461013f57806336568abe1461015b575b600080fd5b6100c860048036038101906100c39190610bb8565b61024d565b6040516100d59190610c00565b60405180910390f35b6100f860048036038101906100f39190610c51565b6102c7565b604051610106929190610d4f565b60405180910390f35b61012960048036038101906101249190610db5565b6103a3565b6040516101369190610df1565b60405180910390f35b61015960048036038101906101549190610e38565b6103c2565b005b61017560048036038101906101709190610e38565b6103e3565b005b61017f610466565b60405161018c9190610e87565b60405180910390f35b6101af60048036038101906101aa9190610e38565b610473565b6040516101bc9190610c00565b60405180910390f35b6101cd6104dd565b6040516101da9190610df1565b60405180910390f35b6101fd60048036038101906101f89190610e38565b6104e4565b005b61021960048036038101906102149190610fd7565b610505565b6040516102269190610e87565b60405180910390f35b6102376105f3565b6040516102449190610df1565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102c057506102bf82610617565b5b9050919050565b600181815481106102d757600080fd5b90600052602060002090600202016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010180546103209061104f565b80601f016020809104026020016040519081016040528092919081815260200182805461034c9061104f565b80156103995780601f1061036e57610100808354040283529160200191610399565b820191906000526020600020905b81548152906001019060200180831161037c57829003601f168201915b5050505050905082565b6000806000838152602001908152602001600020600101549050919050565b6103cb826103a3565b6103d481610681565b6103de8383610695565b505050565b6103eb610775565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044f906110f2565b60405180910390fd5b610462828261077d565b5050565b6000600180549050905090565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b6104ed826103a3565b6104f681610681565b610500838361077d565b505050565b60006105317fe2889e7308860b3fe8df0daa86fccfea4d71e43776719a57be28cf90b6db81e933610473565b61053a57600080fd5b60405180604001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001838152506001808160018154018082558091505003906000526020600020906002020160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010190816105e091906112be565b509050506105ec610466565b9050919050565b7fe2889e7308860b3fe8df0daa86fccfea4d71e43776719a57be28cf90b6db81e981565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6106928161068d610775565b61085e565b50565b61069f8282610473565b61077157600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610716610775565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600033905090565b6107878282610473565b1561085a57600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506107ff610775565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6108688282610473565b6108df57610875816108e3565b6108838360001c6020610910565b604051602001610894929190611464565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d6919061149e565b60405180910390fd5b5050565b60606109098273ffffffffffffffffffffffffffffffffffffffff16601460ff16610910565b9050919050565b60606000600283600261092391906114ef565b61092d9190611531565b67ffffffffffffffff81111561094657610945610eac565b5b6040519080825280601f01601f1916602001820160405280156109785781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106109b0576109af611565565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610a1457610a13611565565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002610a5491906114ef565b610a5e9190611531565b90505b6001811115610afe577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110610aa057610a9f611565565b5b1a60f81b828281518110610ab757610ab6611565565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080610af790611594565b9050610a61565b5060008414610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3990611609565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610b9581610b60565b8114610ba057600080fd5b50565b600081359050610bb281610b8c565b92915050565b600060208284031215610bce57610bcd610b56565b5b6000610bdc84828501610ba3565b91505092915050565b60008115159050919050565b610bfa81610be5565b82525050565b6000602082019050610c156000830184610bf1565b92915050565b6000819050919050565b610c2e81610c1b565b8114610c3957600080fd5b50565b600081359050610c4b81610c25565b92915050565b600060208284031215610c6757610c66610b56565b5b6000610c7584828501610c3c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ca982610c7e565b9050919050565b610cb981610c9e565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610cf9578082015181840152602081019050610cde565b60008484015250505050565b6000601f19601f8301169050919050565b6000610d2182610cbf565b610d2b8185610cca565b9350610d3b818560208601610cdb565b610d4481610d05565b840191505092915050565b6000604082019050610d646000830185610cb0565b8181036020830152610d768184610d16565b90509392505050565b6000819050919050565b610d9281610d7f565b8114610d9d57600080fd5b50565b600081359050610daf81610d89565b92915050565b600060208284031215610dcb57610dca610b56565b5b6000610dd984828501610da0565b91505092915050565b610deb81610d7f565b82525050565b6000602082019050610e066000830184610de2565b92915050565b610e1581610c9e565b8114610e2057600080fd5b50565b600081359050610e3281610e0c565b92915050565b60008060408385031215610e4f57610e4e610b56565b5b6000610e5d85828601610da0565b9250506020610e6e85828601610e23565b9150509250929050565b610e8181610c1b565b82525050565b6000602082019050610e9c6000830184610e78565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610ee482610d05565b810181811067ffffffffffffffff82111715610f0357610f02610eac565b5b80604052505050565b6000610f16610b4c565b9050610f228282610edb565b919050565b600067ffffffffffffffff821115610f4257610f41610eac565b5b610f4b82610d05565b9050602081019050919050565b82818337600083830152505050565b6000610f7a610f7584610f27565b610f0c565b905082815260208101848484011115610f9657610f95610ea7565b5b610fa1848285610f58565b509392505050565b600082601f830112610fbe57610fbd610ea2565b5b8135610fce848260208601610f67565b91505092915050565b600060208284031215610fed57610fec610b56565b5b600082013567ffffffffffffffff81111561100b5761100a610b5b565b5b61101784828501610fa9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061106757607f821691505b60208210810361107a57611079611020565b5b50919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b60006110dc602f83610cca565b91506110e782611080565b604082019050919050565b6000602082019050818103600083015261110b816110cf565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026111747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611137565b61117e8683611137565b95508019841693508086168417925050509392505050565b6000819050919050565b60006111bb6111b66111b184610c1b565b611196565b610c1b565b9050919050565b6000819050919050565b6111d5836111a0565b6111e96111e1826111c2565b848454611144565b825550505050565b600090565b6111fe6111f1565b6112098184846111cc565b505050565b5b8181101561122d576112226000826111f6565b60018101905061120f565b5050565b601f8211156112725761124381611112565b61124c84611127565b8101602085101561125b578190505b61126f61126785611127565b83018261120e565b50505b505050565b600082821c905092915050565b600061129560001984600802611277565b1980831691505092915050565b60006112ae8383611284565b9150826002028217905092915050565b6112c782610cbf565b67ffffffffffffffff8111156112e0576112df610eac565b5b6112ea825461104f565b6112f5828285611231565b600060209050601f8311600181146113285760008415611316578287015190505b61132085826112a2565b865550611388565b601f19841661133686611112565b60005b8281101561135e57848901518255600182019150602085019450602081019050611339565b8683101561137b5784890151611377601f891682611284565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006113d1601783611390565b91506113dc8261139b565b601782019050919050565b60006113f282610cbf565b6113fc8185611390565b935061140c818560208601610cdb565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061144e601183611390565b915061145982611418565b601182019050919050565b600061146f826113c4565b915061147b82856113e7565b915061148682611441565b915061149282846113e7565b91508190509392505050565b600060208201905081810360008301526114b88184610d16565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006114fa82610c1b565b915061150583610c1b565b925082820261151381610c1b565b9150828204841483151761152a576115296114c0565b5b5092915050565b600061153c82610c1b565b915061154783610c1b565b925082820190508082111561155f5761155e6114c0565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061159f82610c1b565b9150600082036115b2576115b16114c0565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006115f3602083610cca565b91506115fe826115bd565b602082019050919050565b60006020820190508181036000830152611622816115e6565b905091905056fea2646970667358221220c98ffc77395c5b35a623c03136d6d45bb351a2483965d83f306f1b150b1ad13a64736f6c63430008120033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x27 PUSH1 0x0 DUP1 SHL CALLER PUSH3 0x5F PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x59 PUSH32 0xE2889E7308860B3FE8DF0DAA86FCCFEA4D71E43776719A57BE28CF90B6DB81E9 CALLER PUSH3 0x5F PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1C2 JUMP JUMPDEST PUSH3 0x71 DUP3 DUP3 PUSH3 0x150 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x14C JUMPI PUSH1 0x1 PUSH1 0x0 DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH3 0xF1 PUSH3 0x1BA PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x165F DUP1 PUSH3 0x1D2 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FA8CF33 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x6FA8CF33 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0xEA0A5237 EQ PUSH2 0x1FF JUMPI DUP1 PUSH4 0xEAFB79E2 EQ PUSH2 0x22F JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x1BCFBE31 EQ PUSH2 0xDE JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x15B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC3 SWAP2 SWAP1 PUSH2 0xBB8 JUMP JUMPDEST PUSH2 0x24D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP2 SWAP1 PUSH2 0xC00 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0xC51 JUMP JUMPDEST PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x106 SWAP3 SWAP2 SWAP1 PUSH2 0xD4F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x129 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x124 SWAP2 SWAP1 PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x3A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x136 SWAP2 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x154 SWAP2 SWAP1 PUSH2 0xE38 JUMP JUMPDEST PUSH2 0x3C2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x175 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x170 SWAP2 SWAP1 PUSH2 0xE38 JUMP JUMPDEST PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x17F PUSH2 0x466 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1AA SWAP2 SWAP1 PUSH2 0xE38 JUMP JUMPDEST PUSH2 0x473 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BC SWAP2 SWAP1 PUSH2 0xC00 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1CD PUSH2 0x4DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DA SWAP2 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1F8 SWAP2 SWAP1 PUSH2 0xE38 JUMP JUMPDEST PUSH2 0x4E4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x219 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x214 SWAP2 SWAP1 PUSH2 0xFD7 JUMP JUMPDEST PUSH2 0x505 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x226 SWAP2 SWAP1 PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x237 PUSH2 0x5F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x244 SWAP2 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x2C0 JUMPI POP PUSH2 0x2BF DUP3 PUSH2 0x617 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH2 0x320 SWAP1 PUSH2 0x104F JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x34C SWAP1 PUSH2 0x104F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x399 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x36E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x399 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x37C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3CB DUP3 PUSH2 0x3A3 JUMP JUMPDEST PUSH2 0x3D4 DUP2 PUSH2 0x681 JUMP JUMPDEST PUSH2 0x3DE DUP4 DUP4 PUSH2 0x695 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x3EB PUSH2 0x775 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x458 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x44F SWAP1 PUSH2 0x10F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x462 DUP3 DUP3 PUSH2 0x77D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SHL DUP2 JUMP JUMPDEST PUSH2 0x4ED DUP3 PUSH2 0x3A3 JUMP JUMPDEST PUSH2 0x4F6 DUP2 PUSH2 0x681 JUMP JUMPDEST PUSH2 0x500 DUP4 DUP4 PUSH2 0x77D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x531 PUSH32 0xE2889E7308860B3FE8DF0DAA86FCCFEA4D71E43776719A57BE28CF90B6DB81E9 CALLER PUSH2 0x473 JUMP JUMPDEST PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP PUSH1 0x1 DUP1 DUP2 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP2 PUSH2 0x5E0 SWAP2 SWAP1 PUSH2 0x12BE JUMP JUMPDEST POP SWAP1 POP POP PUSH2 0x5EC PUSH2 0x466 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xE2889E7308860B3FE8DF0DAA86FCCFEA4D71E43776719A57BE28CF90B6DB81E9 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x692 DUP2 PUSH2 0x68D PUSH2 0x775 JUMP JUMPDEST PUSH2 0x85E JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x69F DUP3 DUP3 PUSH2 0x473 JUMP JUMPDEST PUSH2 0x771 JUMPI PUSH1 0x1 PUSH1 0x0 DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x716 PUSH2 0x775 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x787 DUP3 DUP3 PUSH2 0x473 JUMP JUMPDEST ISZERO PUSH2 0x85A JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x7FF PUSH2 0x775 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x868 DUP3 DUP3 PUSH2 0x473 JUMP JUMPDEST PUSH2 0x8DF JUMPI PUSH2 0x875 DUP2 PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x883 DUP4 PUSH1 0x0 SHR PUSH1 0x20 PUSH2 0x910 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x894 SWAP3 SWAP2 SWAP1 PUSH2 0x1464 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8D6 SWAP2 SWAP1 PUSH2 0x149E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x909 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH1 0xFF AND PUSH2 0x910 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 DUP4 PUSH1 0x2 PUSH2 0x923 SWAP2 SWAP1 PUSH2 0x14EF JUMP JUMPDEST PUSH2 0x92D SWAP2 SWAP1 PUSH2 0x1531 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x946 JUMPI PUSH2 0x945 PUSH2 0xEAC JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x978 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x9B0 JUMPI PUSH2 0x9AF PUSH2 0x1565 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xA14 JUMPI PUSH2 0xA13 PUSH2 0x1565 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x2 PUSH2 0xA54 SWAP2 SWAP1 PUSH2 0x14EF JUMP JUMPDEST PUSH2 0xA5E SWAP2 SWAP1 PUSH2 0x1531 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0xAFE JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP7 AND PUSH1 0x10 DUP2 LT PUSH2 0xAA0 JUMPI PUSH2 0xA9F PUSH2 0x1565 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAB7 JUMPI PUSH2 0xAB6 PUSH2 0x1565 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 DUP6 SWAP1 SHR SWAP5 POP DUP1 PUSH2 0xAF7 SWAP1 PUSH2 0x1594 JUMP JUMPDEST SWAP1 POP PUSH2 0xA61 JUMP JUMPDEST POP PUSH1 0x0 DUP5 EQ PUSH2 0xB42 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB39 SWAP1 PUSH2 0x1609 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB95 DUP2 PUSH2 0xB60 JUMP JUMPDEST DUP2 EQ PUSH2 0xBA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xBB2 DUP2 PUSH2 0xB8C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBCE JUMPI PUSH2 0xBCD PUSH2 0xB56 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xBDC DUP5 DUP3 DUP6 ADD PUSH2 0xBA3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBFA DUP2 PUSH2 0xBE5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xC15 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xBF1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC2E DUP2 PUSH2 0xC1B JUMP JUMPDEST DUP2 EQ PUSH2 0xC39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xC4B DUP2 PUSH2 0xC25 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC67 JUMPI PUSH2 0xC66 PUSH2 0xB56 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC75 DUP5 DUP3 DUP6 ADD PUSH2 0xC3C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCA9 DUP3 PUSH2 0xC7E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCB9 DUP2 PUSH2 0xC9E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCF9 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xCDE JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD21 DUP3 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0xD2B DUP2 DUP6 PUSH2 0xCCA JUMP JUMPDEST SWAP4 POP PUSH2 0xD3B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xCDB JUMP JUMPDEST PUSH2 0xD44 DUP2 PUSH2 0xD05 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0xD64 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0xCB0 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xD76 DUP2 DUP5 PUSH2 0xD16 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD92 DUP2 PUSH2 0xD7F JUMP JUMPDEST DUP2 EQ PUSH2 0xD9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xDAF DUP2 PUSH2 0xD89 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDCB JUMPI PUSH2 0xDCA PUSH2 0xB56 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xDD9 DUP5 DUP3 DUP6 ADD PUSH2 0xDA0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDEB DUP2 PUSH2 0xD7F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xE06 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xDE2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE15 DUP2 PUSH2 0xC9E JUMP JUMPDEST DUP2 EQ PUSH2 0xE20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xE32 DUP2 PUSH2 0xE0C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE4F JUMPI PUSH2 0xE4E PUSH2 0xB56 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xE5D DUP6 DUP3 DUP7 ADD PUSH2 0xDA0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xE6E DUP6 DUP3 DUP7 ADD PUSH2 0xE23 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0xE81 DUP2 PUSH2 0xC1B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xE9C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE78 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xEE4 DUP3 PUSH2 0xD05 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xF03 JUMPI PUSH2 0xF02 PUSH2 0xEAC JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF16 PUSH2 0xB4C JUMP JUMPDEST SWAP1 POP PUSH2 0xF22 DUP3 DUP3 PUSH2 0xEDB JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xF42 JUMPI PUSH2 0xF41 PUSH2 0xEAC JUMP JUMPDEST JUMPDEST PUSH2 0xF4B DUP3 PUSH2 0xD05 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF7A PUSH2 0xF75 DUP5 PUSH2 0xF27 JUMP JUMPDEST PUSH2 0xF0C JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0xF96 JUMPI PUSH2 0xF95 PUSH2 0xEA7 JUMP JUMPDEST JUMPDEST PUSH2 0xFA1 DUP5 DUP3 DUP6 PUSH2 0xF58 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xFBE JUMPI PUSH2 0xFBD PUSH2 0xEA2 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFCE DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0xF67 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFEC PUSH2 0xB56 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x100B JUMPI PUSH2 0x100A PUSH2 0xB5B JUMP JUMPDEST JUMPDEST PUSH2 0x1017 DUP5 DUP3 DUP6 ADD PUSH2 0xFA9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x1067 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x107A JUMPI PUSH2 0x1079 PUSH2 0x1020 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10DC PUSH1 0x2F DUP4 PUSH2 0xCCA JUMP JUMPDEST SWAP2 POP PUSH2 0x10E7 DUP3 PUSH2 0x1080 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x110B DUP2 PUSH2 0x10CF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x1174 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x1137 JUMP JUMPDEST PUSH2 0x117E DUP7 DUP4 PUSH2 0x1137 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11BB PUSH2 0x11B6 PUSH2 0x11B1 DUP5 PUSH2 0xC1B JUMP JUMPDEST PUSH2 0x1196 JUMP JUMPDEST PUSH2 0xC1B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x11D5 DUP4 PUSH2 0x11A0 JUMP JUMPDEST PUSH2 0x11E9 PUSH2 0x11E1 DUP3 PUSH2 0x11C2 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x1144 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x11FE PUSH2 0x11F1 JUMP JUMPDEST PUSH2 0x1209 DUP2 DUP5 DUP5 PUSH2 0x11CC JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x122D JUMPI PUSH2 0x1222 PUSH1 0x0 DUP3 PUSH2 0x11F6 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x120F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1272 JUMPI PUSH2 0x1243 DUP2 PUSH2 0x1112 JUMP JUMPDEST PUSH2 0x124C DUP5 PUSH2 0x1127 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x125B JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x126F PUSH2 0x1267 DUP6 PUSH2 0x1127 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x120E JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1295 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x1277 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12AE DUP4 DUP4 PUSH2 0x1284 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x12C7 DUP3 PUSH2 0xCBF JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12E0 JUMPI PUSH2 0x12DF PUSH2 0xEAC JUMP JUMPDEST JUMPDEST PUSH2 0x12EA DUP3 SLOAD PUSH2 0x104F JUMP JUMPDEST PUSH2 0x12F5 DUP3 DUP3 DUP6 PUSH2 0x1231 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x1328 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x1316 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x1320 DUP6 DUP3 PUSH2 0x12A2 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x1388 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x1336 DUP7 PUSH2 0x1112 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x135E JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1339 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x137B JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x1377 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x1284 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13D1 PUSH1 0x17 DUP4 PUSH2 0x1390 JUMP JUMPDEST SWAP2 POP PUSH2 0x13DC DUP3 PUSH2 0x139B JUMP JUMPDEST PUSH1 0x17 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x13F2 DUP3 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0x13FC DUP2 DUP6 PUSH2 0x1390 JUMP JUMPDEST SWAP4 POP PUSH2 0x140C DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xCDB JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x144E PUSH1 0x11 DUP4 PUSH2 0x1390 JUMP JUMPDEST SWAP2 POP PUSH2 0x1459 DUP3 PUSH2 0x1418 JUMP JUMPDEST PUSH1 0x11 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x146F DUP3 PUSH2 0x13C4 JUMP JUMPDEST SWAP2 POP PUSH2 0x147B DUP3 DUP6 PUSH2 0x13E7 JUMP JUMPDEST SWAP2 POP PUSH2 0x1486 DUP3 PUSH2 0x1441 JUMP JUMPDEST SWAP2 POP PUSH2 0x1492 DUP3 DUP5 PUSH2 0x13E7 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x14B8 DUP2 DUP5 PUSH2 0xD16 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x14FA DUP3 PUSH2 0xC1B JUMP JUMPDEST SWAP2 POP PUSH2 0x1505 DUP4 PUSH2 0xC1B JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x1513 DUP2 PUSH2 0xC1B JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x152A JUMPI PUSH2 0x1529 PUSH2 0x14C0 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x153C DUP3 PUSH2 0xC1B JUMP JUMPDEST SWAP2 POP PUSH2 0x1547 DUP4 PUSH2 0xC1B JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x155F JUMPI PUSH2 0x155E PUSH2 0x14C0 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x159F DUP3 PUSH2 0xC1B JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 SUB PUSH2 0x15B2 JUMPI PUSH2 0x15B1 PUSH2 0x14C0 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15F3 PUSH1 0x20 DUP4 PUSH2 0xCCA JUMP JUMPDEST SWAP2 POP PUSH2 0x15FE DUP3 PUSH2 0x15BD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1622 DUP2 PUSH2 0x15E6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC9 DUP16 0xFC PUSH24 0x395C5B35A623C03136D6D45BB351A2483965D83F306F1B15 SIGNEXTEND BYTE 0xD1 GASPRICE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ",
"sourceMap": "123:723:7:-:0;;;379:123;;;;;;;;;;403:42;2072:4:0;414:18:7;;434:10;403;;;:42;;:::i;:::-;455:40;219:29;484:10;455;;;:40;;:::i;:::-;123:723;;7461:233:0;7544:22;7552:4;7558:7;7544;;;:22;;:::i;:::-;7539:149;;7614:4;7582:6;:12;7589:4;7582:12;;;;;;;;;;;:20;;:29;7603:7;7582:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7664:12;:10;;;:12;;:::i;:::-;7637:40;;7655:7;7637:40;;7649:4;7637:40;;;;;;;;;;7539:149;7461:233;;:::o;2895:145::-;2981:4;3004:6;:12;3011:4;3004:12;;;;;;;;;;;:20;;:29;3025:7;3004:29;;;;;;;;;;;;;;;;;;;;;;;;;2997:36;;2895:145;;;;:::o;640:96:2:-;693:7;719:10;712:17;;640:96;:::o;123:723:7:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@CONTRIBUTOR_ROLE_1496": {
"entryPoint": 1523,
"id": 1496,
"parameterSlots": 0,
"returnSlots": 0
},
"@DEFAULT_ADMIN_ROLE_27": {
"entryPoint": 1245,
"id": 27,
"parameterSlots": 0,
"returnSlots": 0
},
"@_checkRole_131": {
"entryPoint": 2142,
"id": 131,
"parameterSlots": 2,
"returnSlots": 0
},
"@_checkRole_92": {
"entryPoint": 1665,
"id": 92,
"parameterSlots": 1,
"returnSlots": 0
},
"@_grantRole_283": {
"entryPoint": 1685,
"id": 283,
"parameterSlots": 2,
"returnSlots": 0
},
"@_msgSender_400": {
"entryPoint": 1909,
"id": 400,
"parameterSlots": 0,
"returnSlots": 1
},
"@_revokeRole_314": {
"entryPoint": 1917,
"id": 314,
"parameterSlots": 2,
"returnSlots": 0
},
"@announce_1551": {
"entryPoint": 1285,
"id": 1551,
"parameterSlots": 1,
"returnSlots": 1
},
"@announcementCount_1560": {
"entryPoint": 1126,
"id": 1560,
"parameterSlots": 0,
"returnSlots": 1
},
"@announcements_1505": {
"entryPoint": 711,
"id": 1505,
"parameterSlots": 0,
"returnSlots": 0
},
"@getRoleAdmin_146": {
"entryPoint": 931,
"id": 146,
"parameterSlots": 1,
"returnSlots": 1
},
"@grantRole_166": {
"entryPoint": 962,
"id": 166,
"parameterSlots": 2,
"returnSlots": 0
},
"@hasRole_79": {
"entryPoint": 1139,
"id": 79,
"parameterSlots": 2,
"returnSlots": 1
},
"@renounceRole_209": {
"entryPoint": 995,
"id": 209,
"parameterSlots": 2,
"returnSlots": 0
},
"@revokeRole_186": {
"entryPoint": 1252,
"id": 186,
"parameterSlots": 2,
"returnSlots": 0
},
"@supportsInterface_60": {
"entryPoint": 589,
"id": 60,
"parameterSlots": 1,
"returnSlots": 1
},
"@supportsInterface_608": {
"entryPoint": 1559,
"id": 608,
"parameterSlots": 1,
"returnSlots": 1
},
"@toHexString_564": {
"entryPoint": 2320,
"id": 564,
"parameterSlots": 2,
"returnSlots": 1
},
"@toHexString_584": {
"entryPoint": 2275,
"id": 584,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_decode_available_length_t_string_memory_ptr": {
"entryPoint": 3943,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_address": {
"entryPoint": 3619,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes32": {
"entryPoint": 3488,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes4": {
"entryPoint": 2979,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_string_memory_ptr": {
"entryPoint": 4009,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 3132,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32": {
"entryPoint": 3509,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32t_address": {
"entryPoint": 3640,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_bytes4": {
"entryPoint": 3000,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_string_memory_ptr": {
"entryPoint": 4055,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 3153,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 3248,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bool_to_t_bool_fromStack": {
"entryPoint": 3057,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack": {
"entryPoint": 3554,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 3350,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 5095,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack": {
"entryPoint": 5606,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 5060,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 5185,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack": {
"entryPoint": 4303,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 3704,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 5220,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_string_memory_ptr__to_t_address_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 3407,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": 3072,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": 3569,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 5278,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 5641,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 4338,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 3719,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 3852,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": 2892,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_allocation_size_t_string_memory_ptr": {
"entryPoint": 3879,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_dataslot_t_string_storage": {
"entryPoint": 4370,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 3263,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 3274,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 5008,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 5425,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_mul_t_uint256": {
"entryPoint": 5359,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"clean_up_bytearray_end_slots_t_string_storage": {
"entryPoint": 4657,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"cleanup_t_address": {
"entryPoint": 3230,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 3045,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 3455,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes4": {
"entryPoint": 2912,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 3198,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 3099,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"clear_storage_range_t_bytes1": {
"entryPoint": 4622,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"convert_t_uint256_to_t_uint256": {
"entryPoint": 4512,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
"entryPoint": 4798,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"copy_calldata_to_memory_with_cleanup": {
"entryPoint": 3928,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 3291,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"decrement_t_uint256": {
"entryPoint": 5524,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"divide_by_32_ceil": {
"entryPoint": 4391,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_byte_array_length": {
"entryPoint": 4175,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_used_part_and_set_length_of_short_byte_array": {
"entryPoint": 4770,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"finalize_allocation": {
"entryPoint": 3803,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"identity": {
"entryPoint": 4502,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"mask_bytes_dynamic": {
"entryPoint": 4740,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 5312,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x22": {
"entryPoint": 4128,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 5477,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 3756,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"prepare_store_t_uint256": {
"entryPoint": 4546,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": {
"entryPoint": 3746,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae": {
"entryPoint": 3751,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": 2907,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 2902,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 3333,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"shift_left_dynamic": {
"entryPoint": 4407,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"shift_right_unsigned_dynamic": {
"entryPoint": 4727,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"storage_set_to_zero_t_uint256": {
"entryPoint": 4598,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2": {
"entryPoint": 5565,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874": {
"entryPoint": 5019,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69": {
"entryPoint": 5144,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b": {
"entryPoint": 4224,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"update_byte_slice_dynamic32": {
"entryPoint": 4420,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"update_storage_value_t_uint256_to_t_uint256": {
"entryPoint": 4556,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 3596,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes32": {
"entryPoint": 3465,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes4": {
"entryPoint": 2956,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 3109,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"zero_value_for_split_t_uint256": {
"entryPoint": 4593,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:19837:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "47:35:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "57:19:8",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "73:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "67:5:8"
},
"nodeType": "YulFunctionCall",
"src": "67:9:8"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "57:6:8"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "40:6:8",
"type": ""
}
],
"src": "7:75:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "177:28:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "194:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "197:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "187:6:8"
},
"nodeType": "YulFunctionCall",
"src": "187:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "187:12:8"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "88:117:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "300:28:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "317:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "310:6:8"
},
"nodeType": "YulFunctionCall",
"src": "310:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "310:12:8"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "211:117:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "378:105:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "388:89:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "403:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "410:66:8",
"type": "",
"value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "399:3:8"
},
"nodeType": "YulFunctionCall",
"src": "399:78:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "388:7:8"
}
]
}
]
},
"name": "cleanup_t_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "360:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "370:7:8",
"type": ""
}
],
"src": "334:149:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "531:78:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "587:16:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "596:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "599:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "589:6:8"
},
"nodeType": "YulFunctionCall",
"src": "589:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "589:12:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "554:5:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "578:5:8"
}
],
"functionName": {
"name": "cleanup_t_bytes4",
"nodeType": "YulIdentifier",
"src": "561:16:8"
},
"nodeType": "YulFunctionCall",
"src": "561:23:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "551:2:8"
},
"nodeType": "YulFunctionCall",
"src": "551:34:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "544:6:8"
},
"nodeType": "YulFunctionCall",
"src": "544:42:8"
},
"nodeType": "YulIf",
"src": "541:62:8"
}
]
},
"name": "validator_revert_t_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "524:5:8",
"type": ""
}
],
"src": "489:120:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "666:86:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "676:29:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "698:6:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "685:12:8"
},
"nodeType": "YulFunctionCall",
"src": "685:20:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "676:5:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "740:5:8"
}
],
"functionName": {
"name": "validator_revert_t_bytes4",
"nodeType": "YulIdentifier",
"src": "714:25:8"
},
"nodeType": "YulFunctionCall",
"src": "714:32:8"
},
"nodeType": "YulExpressionStatement",
"src": "714:32:8"
}
]
},
"name": "abi_decode_t_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "644:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "652:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "660:5:8",
"type": ""
}
],
"src": "615:137:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "823:262:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "869:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "871:77:8"
},
"nodeType": "YulFunctionCall",
"src": "871:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "871:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "844:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "853:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "840:3:8"
},
"nodeType": "YulFunctionCall",
"src": "840:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "865:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "836:3:8"
},
"nodeType": "YulFunctionCall",
"src": "836:32:8"
},
"nodeType": "YulIf",
"src": "833:119:8"
},
{
"nodeType": "YulBlock",
"src": "962:116:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "977:15:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "991:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "981:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1006:62:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1040:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1051:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1036:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1036:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1060:7:8"
}
],
"functionName": {
"name": "abi_decode_t_bytes4",
"nodeType": "YulIdentifier",
"src": "1016:19:8"
},
"nodeType": "YulFunctionCall",
"src": "1016:52:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1006:6:8"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes4",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "793:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "804:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "816:6:8",
"type": ""
}
],
"src": "758:327:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1133:48:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1143:32:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1168:5:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1161:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1161:13:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1154:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1154:21:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1143:7:8"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1115:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1125:7:8",
"type": ""
}
],
"src": "1091:90:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1246:50:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1263:3:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1283:5:8"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "1268:14:8"
},
"nodeType": "YulFunctionCall",
"src": "1268:21:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1256:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1256:34:8"
},
"nodeType": "YulExpressionStatement",
"src": "1256:34:8"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1234:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1241:3:8",
"type": ""
}
],
"src": "1187:109:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1394:118:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1404:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1416:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1427:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1412:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1412:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1404:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1478:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1491:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1502:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1487:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1487:17:8"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "1440:37:8"
},
"nodeType": "YulFunctionCall",
"src": "1440:65:8"
},
"nodeType": "YulExpressionStatement",
"src": "1440:65:8"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1366:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1378:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1389:4:8",
"type": ""
}
],
"src": "1302:210:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1563:32:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1573:16:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1584:5:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1573:7:8"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1545:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1555:7:8",
"type": ""
}
],
"src": "1518:77:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1644:79:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1701:16:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1710:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1713:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1703:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1703:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "1703:12:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1667:5:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1692:5:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1674:17:8"
},
"nodeType": "YulFunctionCall",
"src": "1674:24:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1664:2:8"
},
"nodeType": "YulFunctionCall",
"src": "1664:35:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1657:6:8"
},
"nodeType": "YulFunctionCall",
"src": "1657:43:8"
},
"nodeType": "YulIf",
"src": "1654:63:8"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1637:5:8",
"type": ""
}
],
"src": "1601:122:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1781:87:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1791:29:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1813:6:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1800:12:8"
},
"nodeType": "YulFunctionCall",
"src": "1800:20:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1791:5:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1856:5:8"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "1829:26:8"
},
"nodeType": "YulFunctionCall",
"src": "1829:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "1829:33:8"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1759:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1767:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1775:5:8",
"type": ""
}
],
"src": "1729:139:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1940:263:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1986:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "1988:77:8"
},
"nodeType": "YulFunctionCall",
"src": "1988:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "1988:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1961:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1970:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1957:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1957:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1982:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1953:3:8"
},
"nodeType": "YulFunctionCall",
"src": "1953:32:8"
},
"nodeType": "YulIf",
"src": "1950:119:8"
},
{
"nodeType": "YulBlock",
"src": "2079:117:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2094:15:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2108:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2098:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2123:63:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2158:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2169:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2154:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2154:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2178:7:8"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "2133:20:8"
},
"nodeType": "YulFunctionCall",
"src": "2133:53:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2123:6:8"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1910:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1921:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1933:6:8",
"type": ""
}
],
"src": "1874:329:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2254:81:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2264:65:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2279:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2286:42:8",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2275:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2275:54:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2264:7:8"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2236:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2246:7:8",
"type": ""
}
],
"src": "2209:126:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2386:51:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2396:35:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2425:5:8"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "2407:17:8"
},
"nodeType": "YulFunctionCall",
"src": "2407:24:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2396:7:8"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2368:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2378:7:8",
"type": ""
}
],
"src": "2341:96:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2508:53:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2525:3:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2548:5:8"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "2530:17:8"
},
"nodeType": "YulFunctionCall",
"src": "2530:24:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2518:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2518:37:8"
},
"nodeType": "YulExpressionStatement",
"src": "2518:37:8"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2496:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2503:3:8",
"type": ""
}
],
"src": "2443:118:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2626:40:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2637:22:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2653:5:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2647:5:8"
},
"nodeType": "YulFunctionCall",
"src": "2647:12:8"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2637:6:8"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2609:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2619:6:8",
"type": ""
}
],
"src": "2567:99:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2768:73:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2785:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2790:6:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2778:6:8"
},
"nodeType": "YulFunctionCall",
"src": "2778:19:8"
},
"nodeType": "YulExpressionStatement",
"src": "2778:19:8"
},
{
"nodeType": "YulAssignment",
"src": "2806:29:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2825:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2830:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2821:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2821:14:8"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "2806:11:8"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2740:3:8",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2745:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "2756:11:8",
"type": ""
}
],
"src": "2672:169:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2909:184:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2919:10:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2928:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "2923:1:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2988:63:8",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "3013:3:8"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3018:1:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3009:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3009:11:8"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "3032:3:8"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3037:1:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3028:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3028:11:8"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "3022:5:8"
},
"nodeType": "YulFunctionCall",
"src": "3022:18:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3002:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3002:39:8"
},
"nodeType": "YulExpressionStatement",
"src": "3002:39:8"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2949:1:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2952:6:8"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2946:2:8"
},
"nodeType": "YulFunctionCall",
"src": "2946:13:8"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "2960:19:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2962:15:8",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2971:1:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2974:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2967:3:8"
},
"nodeType": "YulFunctionCall",
"src": "2967:10:8"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2962:1:8"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "2942:3:8",
"statements": []
},
"src": "2938:113:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "3071:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3076:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3067:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3067:16:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3085:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3060:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3060:27:8"
},
"nodeType": "YulExpressionStatement",
"src": "3060:27:8"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "2891:3:8",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "2896:3:8",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2901:6:8",
"type": ""
}
],
"src": "2847:246:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3147:54:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3157:38:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3175:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3182:2:8",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3171:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3171:14:8"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3191:2:8",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "3187:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3187:7:8"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3167:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3167:28:8"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "3157:6:8"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3130:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "3140:6:8",
"type": ""
}
],
"src": "3099:102:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3299:285:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3309:53:8",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3356:5:8"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "3323:32:8"
},
"nodeType": "YulFunctionCall",
"src": "3323:39:8"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3313:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "3371:78:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3437:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3442:6:8"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "3378:58:8"
},
"nodeType": "YulFunctionCall",
"src": "3378:71:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3371:3:8"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3497:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3504:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3493:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3493:16:8"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3511:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3516:6:8"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "3458:34:8"
},
"nodeType": "YulFunctionCall",
"src": "3458:65:8"
},
"nodeType": "YulExpressionStatement",
"src": "3458:65:8"
},
{
"nodeType": "YulAssignment",
"src": "3532:46:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3543:3:8"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3570:6:8"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "3548:21:8"
},
"nodeType": "YulFunctionCall",
"src": "3548:29:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3539:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3539:39:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3532:3:8"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3280:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3287:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3295:3:8",
"type": ""
}
],
"src": "3207:377:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3736:277:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3746:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3758:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3769:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3754:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3754:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3746:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3826:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3839:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3850:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3835:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3835:17:8"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "3782:43:8"
},
"nodeType": "YulFunctionCall",
"src": "3782:71:8"
},
"nodeType": "YulExpressionStatement",
"src": "3782:71:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3874:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3885:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3870:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3870:18:8"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3894:4:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3900:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3890:3:8"
},
"nodeType": "YulFunctionCall",
"src": "3890:20:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3863:6:8"
},
"nodeType": "YulFunctionCall",
"src": "3863:48:8"
},
"nodeType": "YulExpressionStatement",
"src": "3863:48:8"
},
{
"nodeType": "YulAssignment",
"src": "3920:86:8",
"value": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "3992:6:8"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4001:4:8"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "3928:63:8"
},
"nodeType": "YulFunctionCall",
"src": "3928:78:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3920:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_address_t_string_memory_ptr__to_t_address_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3700:9:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3712:6:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3720:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3731:4:8",
"type": ""
}
],
"src": "3590:423:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4064:32:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4074:16:8",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "4085:5:8"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4074:7:8"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4046:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4056:7:8",
"type": ""
}
],
"src": "4019:77:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4145:79:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4202:16:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4211:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4214:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "4204:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4204:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "4204:12:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4168:5:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4193:5:8"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "4175:17:8"
},
"nodeType": "YulFunctionCall",
"src": "4175:24:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "4165:2:8"
},
"nodeType": "YulFunctionCall",
"src": "4165:35:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "4158:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4158:43:8"
},
"nodeType": "YulIf",
"src": "4155:63:8"
}
]
},
"name": "validator_revert_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4138:5:8",
"type": ""
}
],
"src": "4102:122:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4282:87:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4292:29:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4314:6:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "4301:12:8"
},
"nodeType": "YulFunctionCall",
"src": "4301:20:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4292:5:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4357:5:8"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nodeType": "YulIdentifier",
"src": "4330:26:8"
},
"nodeType": "YulFunctionCall",
"src": "4330:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "4330:33:8"
}
]
},
"name": "abi_decode_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4260:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4268:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4276:5:8",
"type": ""
}
],
"src": "4230:139:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4441:263:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4487:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "4489:77:8"
},
"nodeType": "YulFunctionCall",
"src": "4489:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "4489:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4462:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4471:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4458:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4458:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4483:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "4454:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4454:32:8"
},
"nodeType": "YulIf",
"src": "4451:119:8"
},
{
"nodeType": "YulBlock",
"src": "4580:117:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4595:15:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4609:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4599:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4624:63:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4659:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4670:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4655:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4655:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4679:7:8"
}
],
"functionName": {
"name": "abi_decode_t_bytes32",
"nodeType": "YulIdentifier",
"src": "4634:20:8"
},
"nodeType": "YulFunctionCall",
"src": "4634:53:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4624:6:8"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4411:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "4422:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4434:6:8",
"type": ""
}
],
"src": "4375:329:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4775:53:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4792:3:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4815:5:8"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nodeType": "YulIdentifier",
"src": "4797:17:8"
},
"nodeType": "YulFunctionCall",
"src": "4797:24:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4785:6:8"
},
"nodeType": "YulFunctionCall",
"src": "4785:37:8"
},
"nodeType": "YulExpressionStatement",
"src": "4785:37:8"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4763:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4770:3:8",
"type": ""
}
],
"src": "4710:118:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4932:124:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4942:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4954:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4965:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4950:3:8"
},
"nodeType": "YulFunctionCall",
"src": "4950:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4942:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5022:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5035:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5046:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5031:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5031:17:8"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nodeType": "YulIdentifier",
"src": "4978:43:8"
},
"nodeType": "YulFunctionCall",
"src": "4978:71:8"
},
"nodeType": "YulExpressionStatement",
"src": "4978:71:8"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4904:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4916:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4927:4:8",
"type": ""
}
],
"src": "4834:222:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5105:79:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5162:16:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5171:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5174:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "5164:6:8"
},
"nodeType": "YulFunctionCall",
"src": "5164:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "5164:12:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5128:5:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5153:5:8"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "5135:17:8"
},
"nodeType": "YulFunctionCall",
"src": "5135:24:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "5125:2:8"
},
"nodeType": "YulFunctionCall",
"src": "5125:35:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "5118:6:8"
},
"nodeType": "YulFunctionCall",
"src": "5118:43:8"
},
"nodeType": "YulIf",
"src": "5115:63:8"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5098:5:8",
"type": ""
}
],
"src": "5062:122:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5242:87:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5252:29:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5274:6:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "5261:12:8"
},
"nodeType": "YulFunctionCall",
"src": "5261:20:8"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5252:5:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5317:5:8"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "5290:26:8"
},
"nodeType": "YulFunctionCall",
"src": "5290:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "5290:33:8"
}
]
},
"name": "abi_decode_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5220:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "5228:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5236:5:8",
"type": ""
}
],
"src": "5190:139:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5418:391:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5464:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "5466:77:8"
},
"nodeType": "YulFunctionCall",
"src": "5466:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "5466:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5439:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5448:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5435:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5435:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5460:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5431:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5431:32:8"
},
"nodeType": "YulIf",
"src": "5428:119:8"
},
{
"nodeType": "YulBlock",
"src": "5557:117:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5572:15:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5586:1:8",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5576:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5601:63:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5636:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5647:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5632:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5632:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5656:7:8"
}
],
"functionName": {
"name": "abi_decode_t_bytes32",
"nodeType": "YulIdentifier",
"src": "5611:20:8"
},
"nodeType": "YulFunctionCall",
"src": "5611:53:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5601:6:8"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "5684:118:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5699:16:8",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5713:2:8",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5703:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5729:63:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5764:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5775:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5760:3:8"
},
"nodeType": "YulFunctionCall",
"src": "5760:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5784:7:8"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "5739:20:8"
},
"nodeType": "YulFunctionCall",
"src": "5739:53:8"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "5729:6:8"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5380:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5391:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5403:6:8",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "5411:6:8",
"type": ""
}
],
"src": "5335:474:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5880:53:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5897:3:8"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5920:5:8"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "5902:17:8"
},
"nodeType": "YulFunctionCall",
"src": "5902:24:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5890:6:8"
},
"nodeType": "YulFunctionCall",
"src": "5890:37:8"
},
"nodeType": "YulExpressionStatement",
"src": "5890:37:8"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5868:5:8",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5875:3:8",
"type": ""
}
],
"src": "5815:118:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6037:124:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6047:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6059:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6070:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6055:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6055:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6047:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6127:6:8"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6140:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6151:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6136:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6136:17:8"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "6083:43:8"
},
"nodeType": "YulFunctionCall",
"src": "6083:71:8"
},
"nodeType": "YulExpressionStatement",
"src": "6083:71:8"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6009:9:8",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6021:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6032:4:8",
"type": ""
}
],
"src": "5939:222:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6256:28:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6273:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6276:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6266:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6266:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "6266:12:8"
}
]
},
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulFunctionDefinition",
"src": "6167:117:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6379:28:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6396:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6399:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6389:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6389:12:8"
},
"nodeType": "YulExpressionStatement",
"src": "6389:12:8"
}
]
},
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nodeType": "YulFunctionDefinition",
"src": "6290:117:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6441:152:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6458:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6461:77:8",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6451:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6451:88:8"
},
"nodeType": "YulExpressionStatement",
"src": "6451:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6555:1:8",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6558:4:8",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6548:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6548:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "6548:15:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6579:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6582:4:8",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6572:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6572:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "6572:15:8"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "6413:180:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6642:238:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6652:58:8",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6674:6:8"
},
{
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "6704:4:8"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "6682:21:8"
},
"nodeType": "YulFunctionCall",
"src": "6682:27:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6670:3:8"
},
"nodeType": "YulFunctionCall",
"src": "6670:40:8"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "6656:10:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6821:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "6823:16:8"
},
"nodeType": "YulFunctionCall",
"src": "6823:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "6823:18:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "6764:10:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6776:18:8",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "6761:2:8"
},
"nodeType": "YulFunctionCall",
"src": "6761:34:8"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "6800:10:8"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6812:6:8"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "6797:2:8"
},
"nodeType": "YulFunctionCall",
"src": "6797:22:8"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "6758:2:8"
},
"nodeType": "YulFunctionCall",
"src": "6758:62:8"
},
"nodeType": "YulIf",
"src": "6755:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6859:2:8",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "6863:10:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6852:6:8"
},
"nodeType": "YulFunctionCall",
"src": "6852:22:8"
},
"nodeType": "YulExpressionStatement",
"src": "6852:22:8"
}
]
},
"name": "finalize_allocation",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "6628:6:8",
"type": ""
},
{
"name": "size",
"nodeType": "YulTypedName",
"src": "6636:4:8",
"type": ""
}
],
"src": "6599:281:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6927:88:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6937:30:8",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nodeType": "YulIdentifier",
"src": "6947:18:8"
},
"nodeType": "YulFunctionCall",
"src": "6947:20:8"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6937:6:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "6996:6:8"
},
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "7004:4:8"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "6976:19:8"
},
"nodeType": "YulFunctionCall",
"src": "6976:33:8"
},
"nodeType": "YulExpressionStatement",
"src": "6976:33:8"
}
]
},
"name": "allocate_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "6911:4:8",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "6920:6:8",
"type": ""
}
],
"src": "6886:129:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7088:241:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "7193:22:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "7195:16:8"
},
"nodeType": "YulFunctionCall",
"src": "7195:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "7195:18:8"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7165:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7173:18:8",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "7162:2:8"
},
"nodeType": "YulFunctionCall",
"src": "7162:30:8"
},
"nodeType": "YulIf",
"src": "7159:56:8"
},
{
"nodeType": "YulAssignment",
"src": "7225:37:8",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7255:6:8"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "7233:21:8"
},
"nodeType": "YulFunctionCall",
"src": "7233:29:8"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "7225:4:8"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7299:23:8",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "7311:4:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7317:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7307:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7307:15:8"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "7299:4:8"
}
]
}
]
},
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "7072:6:8",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "7083:4:8",
"type": ""
}
],
"src": "7021:308:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7399:82:8",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "7422:3:8"
},
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "7427:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7432:6:8"
}
],
"functionName": {
"name": "calldatacopy",
"nodeType": "YulIdentifier",
"src": "7409:12:8"
},
"nodeType": "YulFunctionCall",
"src": "7409:30:8"
},
"nodeType": "YulExpressionStatement",
"src": "7409:30:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "7459:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7464:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7455:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7455:16:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7473:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7448:6:8"
},
"nodeType": "YulFunctionCall",
"src": "7448:27:8"
},
"nodeType": "YulExpressionStatement",
"src": "7448:27:8"
}
]
},
"name": "copy_calldata_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "7381:3:8",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "7386:3:8",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "7391:6:8",
"type": ""
}
],
"src": "7335:146:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7571:341:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7581:75:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7648:6:8"
}
],
"functionName": {
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "7606:41:8"
},
"nodeType": "YulFunctionCall",
"src": "7606:49:8"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "7590:15:8"
},
"nodeType": "YulFunctionCall",
"src": "7590:66:8"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "7581:5:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "7672:5:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7679:6:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7665:6:8"
},
"nodeType": "YulFunctionCall",
"src": "7665:21:8"
},
"nodeType": "YulExpressionStatement",
"src": "7665:21:8"
},
{
"nodeType": "YulVariableDeclaration",
"src": "7695:27:8",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "7710:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7717:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7706:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7706:16:8"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "7699:3:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "7760:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nodeType": "YulIdentifier",
"src": "7762:77:8"
},
"nodeType": "YulFunctionCall",
"src": "7762:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "7762:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "7741:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7746:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7737:3:8"
},
"nodeType": "YulFunctionCall",
"src": "7737:16:8"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "7755:3:8"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "7734:2:8"
},
"nodeType": "YulFunctionCall",
"src": "7734:25:8"
},
"nodeType": "YulIf",
"src": "7731:112:8"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "7889:3:8"
},
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "7894:3:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "7899:6:8"
}
],
"functionName": {
"name": "copy_calldata_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "7852:36:8"
},
"nodeType": "YulFunctionCall",
"src": "7852:54:8"
},
"nodeType": "YulExpressionStatement",
"src": "7852:54:8"
}
]
},
"name": "abi_decode_available_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "7544:3:8",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "7549:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7557:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "7565:5:8",
"type": ""
}
],
"src": "7487:425:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7994:278:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "8043:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulIdentifier",
"src": "8045:77:8"
},
"nodeType": "YulFunctionCall",
"src": "8045:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "8045:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8022:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8030:4:8",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8018:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8018:17:8"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8037:3:8"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "8014:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8014:27:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "8007:6:8"
},
"nodeType": "YulFunctionCall",
"src": "8007:35:8"
},
"nodeType": "YulIf",
"src": "8004:122:8"
},
{
"nodeType": "YulVariableDeclaration",
"src": "8135:34:8",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8162:6:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "8149:12:8"
},
"nodeType": "YulFunctionCall",
"src": "8149:20:8"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "8139:6:8",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "8178:88:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8239:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8247:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8235:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8235:17:8"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "8254:6:8"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8262:3:8"
}
],
"functionName": {
"name": "abi_decode_available_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "8187:47:8"
},
"nodeType": "YulFunctionCall",
"src": "8187:79:8"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "8178:5:8"
}
]
}
]
},
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "7972:6:8",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "7980:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "7988:5:8",
"type": ""
}
],
"src": "7932:340:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8354:433:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "8400:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "8402:77:8"
},
"nodeType": "YulFunctionCall",
"src": "8402:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "8402:79:8"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8375:7:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8384:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "8371:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8371:23:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8396:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "8367:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8367:32:8"
},
"nodeType": "YulIf",
"src": "8364:119:8"
},
{
"nodeType": "YulBlock",
"src": "8493:287:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8508:45:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8539:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8550:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8535:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8535:17:8"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "8522:12:8"
},
"nodeType": "YulFunctionCall",
"src": "8522:31:8"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "8512:6:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "8600:83:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "8602:77:8"
},
"nodeType": "YulFunctionCall",
"src": "8602:79:8"
},
"nodeType": "YulExpressionStatement",
"src": "8602:79:8"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8572:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8580:18:8",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "8569:2:8"
},
"nodeType": "YulFunctionCall",
"src": "8569:30:8"
},
"nodeType": "YulIf",
"src": "8566:117:8"
},
{
"nodeType": "YulAssignment",
"src": "8697:73:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8742:9:8"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8753:6:8"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8738:3:8"
},
"nodeType": "YulFunctionCall",
"src": "8738:22:8"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "8762:7:8"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "8707:30:8"
},
"nodeType": "YulFunctionCall",
"src": "8707:63:8"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "8697:6:8"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8324:9:8",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "8335:7:8",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "8347:6:8",
"type": ""
}
],
"src": "8278:509:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8821:152:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8838:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8841:77:8",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8831:6:8"
},
"nodeType": "YulFunctionCall",
"src": "8831:88:8"
},
"nodeType": "YulExpressionStatement",
"src": "8831:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8935:1:8",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8938:4:8",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8928:6:8"
},
"nodeType": "YulFunctionCall",
"src": "8928:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "8928:15:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8959:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8962:4:8",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "8952:6:8"
},
"nodeType": "YulFunctionCall",
"src": "8952:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "8952:15:8"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "8793:180:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9030:269:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9040:22:8",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "9054:4:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9060:1:8",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "9050:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9050:12:8"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "9040:6:8"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "9071:38:8",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "9101:4:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9107:1:8",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "9097:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9097:12:8"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "9075:18:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9148:51:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9162:27:8",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "9176:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9184:4:8",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "9172:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9172:17:8"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "9162:6:8"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "9128:18:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "9121:6:8"
},
"nodeType": "YulFunctionCall",
"src": "9121:26:8"
},
"nodeType": "YulIf",
"src": "9118:81:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9251:42:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "9265:16:8"
},
"nodeType": "YulFunctionCall",
"src": "9265:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "9265:18:8"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "9215:18:8"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "9238:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9246:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "9235:2:8"
},
"nodeType": "YulFunctionCall",
"src": "9235:14:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "9212:2:8"
},
"nodeType": "YulFunctionCall",
"src": "9212:38:8"
},
"nodeType": "YulIf",
"src": "9209:84:8"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "9014:4:8",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "9023:6:8",
"type": ""
}
],
"src": "8979:320:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9411:128:8",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "9433:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9441:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9429:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9429:14:8"
},
{
"hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365",
"kind": "string",
"nodeType": "YulLiteral",
"src": "9445:34:8",
"type": "",
"value": "AccessControl: can only renounce"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9422:6:8"
},
"nodeType": "YulFunctionCall",
"src": "9422:58:8"
},
"nodeType": "YulExpressionStatement",
"src": "9422:58:8"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "9501:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9509:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9497:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9497:15:8"
},
{
"hexValue": "20726f6c657320666f722073656c66",
"kind": "string",
"nodeType": "YulLiteral",
"src": "9514:17:8",
"type": "",
"value": " roles for self"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "9490:6:8"
},
"nodeType": "YulFunctionCall",
"src": "9490:42:8"
},
"nodeType": "YulExpressionStatement",
"src": "9490:42:8"
}
]
},
"name": "store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "9403:6:8",
"type": ""
}
],
"src": "9305:234:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9691:220:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9701:74:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9767:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9772:2:8",
"type": "",
"value": "47"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "9708:58:8"
},
"nodeType": "YulFunctionCall",
"src": "9708:67:8"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9701:3:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9873:3:8"
}
],
"functionName": {
"name": "store_literal_in_memory_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b",
"nodeType": "YulIdentifier",
"src": "9784:88:8"
},
"nodeType": "YulFunctionCall",
"src": "9784:93:8"
},
"nodeType": "YulExpressionStatement",
"src": "9784:93:8"
},
{
"nodeType": "YulAssignment",
"src": "9886:19:8",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "9897:3:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9902:2:8",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "9893:3:8"
},
"nodeType": "YulFunctionCall",
"src": "9893:12:8"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "9886:3:8"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "9679:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "9687:3:8",
"type": ""
}
],
"src": "9545:366:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10088:248:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10098:26:8",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10110:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10121:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10106:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10106:18:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10098:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10145:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10156:1:8",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10141:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10141:17:8"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10164:4:8"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "10170:9:8"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "10160:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10160:20:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10134:6:8"
},
"nodeType": "YulFunctionCall",
"src": "10134:47:8"
},
"nodeType": "YulExpressionStatement",
"src": "10134:47:8"
},
{
"nodeType": "YulAssignment",
"src": "10190:139:8",
"value": {
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10324:4:8"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "10198:124:8"
},
"nodeType": "YulFunctionCall",
"src": "10198:131:8"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "10190:4:8"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "10068:9:8",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "10083:4:8",
"type": ""
}
],
"src": "9917:419:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10396:87:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10406:11:8",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "10414:3:8"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "10406:4:8"
}
]
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10434:1:8",
"type": "",
"value": "0"
},
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "10437:3:8"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "10427:6:8"
},
"nodeType": "YulFunctionCall",
"src": "10427:14:8"
},
"nodeType": "YulExpressionStatement",
"src": "10427:14:8"
},
{
"nodeType": "YulAssignment",
"src": "10450:26:8",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10468:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10471:4:8",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "keccak256",
"nodeType": "YulIdentifier",
"src": "10458:9:8"
},
"nodeType": "YulFunctionCall",
"src": "10458:18:8"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "10450:4:8"
}
]
}
]
},
"name": "array_dataslot_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "10383:3:8",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "10391:4:8",
"type": ""
}
],
"src": "10342:141:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10533:49:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10543:33:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "10561:5:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10568:2:8",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10557:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10557:14:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10573:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "10553:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10553:23:8"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "10543:6:8"
}
]
}
]
},
"name": "divide_by_32_ceil",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "10516:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "10526:6:8",
"type": ""
}
],
"src": "10489:93:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10641:54:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10651:37:8",
"value": {
"arguments": [
{
"name": "bits",
"nodeType": "YulIdentifier",
"src": "10676:4:8"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "10682:5:8"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "10672:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10672:16:8"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "10651:8:8"
}
]
}
]
},
"name": "shift_left_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nodeType": "YulTypedName",
"src": "10616:4:8",
"type": ""
},
{
"name": "value",
"nodeType": "YulTypedName",
"src": "10622:5:8",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "10632:8:8",
"type": ""
}
],
"src": "10588:107:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10777:317:8",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "10787:35:8",
"value": {
"arguments": [
{
"name": "shiftBytes",
"nodeType": "YulIdentifier",
"src": "10808:10:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10820:1:8",
"type": "",
"value": "8"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "10804:3:8"
},
"nodeType": "YulFunctionCall",
"src": "10804:18:8"
},
"variables": [
{
"name": "shiftBits",
"nodeType": "YulTypedName",
"src": "10791:9:8",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "10831:109:8",
"value": {
"arguments": [
{
"name": "shiftBits",
"nodeType": "YulIdentifier",
"src": "10862:9:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10873:66:8",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment