Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save kabitcoin/5f43eddebdd96eebc9e6e5cabb17af0b to your computer and use it in GitHub Desktop.
Save kabitcoin/5f43eddebdd96eebc9e6e5cabb17af0b to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.30+commit.73712a01.js&optimize=false&runs=200&gist=
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.3.0) (access/AccessControl.sol)
pragma solidity ^0.8.20;
import {IAccessControl} from "@openzeppelin/contracts/access/IAccessControl.sol";
import {ContextUpgradeable} from "../utils/ContextUpgradeable.sol";
import {ERC165Upgradeable} from "../utils/introspection/ERC165Upgradeable.sol";
import {Initializable} from "../proxy/utils/Initializable.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:
*
* ```solidity
* 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}:
*
* ```solidity
* 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. We recommend using {AccessControlDefaultAdminRules}
* to enforce additional security measures for this role.
*/
abstract contract AccessControlUpgradeable is Initializable, ContextUpgradeable, IAccessControl, ERC165Upgradeable {
struct RoleData {
mapping(address account => bool) hasRole;
bytes32 adminRole;
}
bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;
/// @custom:storage-location erc7201:openzeppelin.storage.AccessControl
struct AccessControlStorage {
mapping(bytes32 role => RoleData) _roles;
}
// keccak256(abi.encode(uint256(keccak256("openzeppelin.storage.AccessControl")) - 1)) & ~bytes32(uint256(0xff))
bytes32 private constant AccessControlStorageLocation = 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800;
function _getAccessControlStorage() private pure returns (AccessControlStorage storage $) {
assembly {
$.slot := AccessControlStorageLocation
}
}
/**
* @dev Modifier that checks that an account has a specific role. Reverts
* with an {AccessControlUnauthorizedAccount} error including the required role.
*/
modifier onlyRole(bytes32 role) {
_checkRole(role);
_;
}
function __AccessControl_init() internal onlyInitializing {
}
function __AccessControl_init_unchained() internal onlyInitializing {
}
/**
* @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 returns (bool) {
AccessControlStorage storage $ = _getAccessControlStorage();
return $._roles[role].hasRole[account];
}
/**
* @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`
* is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.
*/
function _checkRole(bytes32 role) internal view virtual {
_checkRole(role, _msgSender());
}
/**
* @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`
* is missing `role`.
*/
function _checkRole(bytes32 role, address account) internal view virtual {
if (!hasRole(role, account)) {
revert AccessControlUnauthorizedAccount(account, role);
}
}
/**
* @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 returns (bytes32) {
AccessControlStorage storage $ = _getAccessControlStorage();
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 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 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 `callerConfirmation`.
*
* May emit a {RoleRevoked} event.
*/
function renounceRole(bytes32 role, address callerConfirmation) public virtual {
if (callerConfirmation != _msgSender()) {
revert AccessControlBadConfirmation();
}
_revokeRole(role, callerConfirmation);
}
/**
* @dev Sets `adminRole` as ``role``'s admin role.
*
* Emits a {RoleAdminChanged} event.
*/
function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
AccessControlStorage storage $ = _getAccessControlStorage();
bytes32 previousAdminRole = getRoleAdmin(role);
$._roles[role].adminRole = adminRole;
emit RoleAdminChanged(role, previousAdminRole, adminRole);
}
/**
* @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.
*
* Internal function without access restriction.
*
* May emit a {RoleGranted} event.
*/
function _grantRole(bytes32 role, address account) internal virtual returns (bool) {
AccessControlStorage storage $ = _getAccessControlStorage();
if (!hasRole(role, account)) {
$._roles[role].hasRole[account] = true;
emit RoleGranted(role, account, _msgSender());
return true;
} else {
return false;
}
}
/**
* @dev Attempts to revoke `role` from `account` and returns a boolean indicating if `role` was revoked.
*
* Internal function without access restriction.
*
* May emit a {RoleRevoked} event.
*/
function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {
AccessControlStorage storage $ = _getAccessControlStorage();
if (hasRole(role, account)) {
$._roles[role].hasRole[account] = false;
emit RoleRevoked(role, account, _msgSender());
return true;
} else {
return false;
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.3.0) (proxy/utils/Initializable.sol)
pragma solidity ^0.8.20;
/**
* @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed
* behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an
* external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer
* function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.
*
* The initialization functions use a version number. Once a version number is used, it is consumed and cannot be
* reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in
* case an upgrade adds a module that needs to be initialized.
*
* For example:
*
* [.hljs-theme-light.nopadding]
* ```solidity
* contract MyToken is ERC20Upgradeable {
* function initialize() initializer public {
* __ERC20_init("MyToken", "MTK");
* }
* }
*
* contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {
* function initializeV2() reinitializer(2) public {
* __ERC20Permit_init("MyToken");
* }
* }
* ```
*
* TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as
* possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.
*
* CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure
* that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.
*
* [CAUTION]
* ====
* Avoid leaving a contract uninitialized.
*
* An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation
* contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke
* the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:
*
* [.hljs-theme-light.nopadding]
* ```
* /// @custom:oz-upgrades-unsafe-allow constructor
* constructor() {
* _disableInitializers();
* }
* ```
* ====
*/
abstract contract Initializable {
/**
* @dev Storage of the initializable contract.
*
* It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions
* when using with upgradeable contracts.
*
* @custom:storage-location erc7201:openzeppelin.storage.Initializable
*/
struct InitializableStorage {
/**
* @dev Indicates that the contract has been initialized.
*/
uint64 _initialized;
/**
* @dev Indicates that the contract is in the process of being initialized.
*/
bool _initializing;
}
// keccak256(abi.encode(uint256(keccak256("openzeppelin.storage.Initializable")) - 1)) & ~bytes32(uint256(0xff))
bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;
/**
* @dev The contract is already initialized.
*/
error InvalidInitialization();
/**
* @dev The contract is not initializing.
*/
error NotInitializing();
/**
* @dev Triggered when the contract has been initialized or reinitialized.
*/
event Initialized(uint64 version);
/**
* @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,
* `onlyInitializing` functions can be used to initialize parent contracts.
*
* Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any
* number of times. This behavior in the constructor can be useful during testing and is not expected to be used in
* production.
*
* Emits an {Initialized} event.
*/
modifier initializer() {
// solhint-disable-next-line var-name-mixedcase
InitializableStorage storage $ = _getInitializableStorage();
// Cache values to avoid duplicated sloads
bool isTopLevelCall = !$._initializing;
uint64 initialized = $._initialized;
// Allowed calls:
// - initialSetup: the contract is not in the initializing state and no previous version was
// initialized
// - construction: the contract is initialized at version 1 (no reinitialization) and the
// current contract is just being deployed
bool initialSetup = initialized == 0 && isTopLevelCall;
bool construction = initialized == 1 && address(this).code.length == 0;
if (!initialSetup && !construction) {
revert InvalidInitialization();
}
$._initialized = 1;
if (isTopLevelCall) {
$._initializing = true;
}
_;
if (isTopLevelCall) {
$._initializing = false;
emit Initialized(1);
}
}
/**
* @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the
* contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be
* used to initialize parent contracts.
*
* A reinitializer may be used after the original initialization step. This is essential to configure modules that
* are added through upgrades and that require initialization.
*
* When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`
* cannot be nested. If one is invoked in the context of another, execution will revert.
*
* Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in
* a contract, executing them in the right order is up to the developer or operator.
*
* WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.
*
* Emits an {Initialized} event.
*/
modifier reinitializer(uint64 version) {
// solhint-disable-next-line var-name-mixedcase
InitializableStorage storage $ = _getInitializableStorage();
if ($._initializing || $._initialized >= version) {
revert InvalidInitialization();
}
$._initialized = version;
$._initializing = true;
_;
$._initializing = false;
emit Initialized(version);
}
/**
* @dev Modifier to protect an initialization function so that it can only be invoked by functions with the
* {initializer} and {reinitializer} modifiers, directly or indirectly.
*/
modifier onlyInitializing() {
_checkInitializing();
_;
}
/**
* @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.
*/
function _checkInitializing() internal view virtual {
if (!_isInitializing()) {
revert NotInitializing();
}
}
/**
* @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.
* Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized
* to any version. It is recommended to use this to lock implementation contracts that are designed to be called
* through proxies.
*
* Emits an {Initialized} event the first time it is successfully executed.
*/
function _disableInitializers() internal virtual {
// solhint-disable-next-line var-name-mixedcase
InitializableStorage storage $ = _getInitializableStorage();
if ($._initializing) {
revert InvalidInitialization();
}
if ($._initialized != type(uint64).max) {
$._initialized = type(uint64).max;
emit Initialized(type(uint64).max);
}
}
/**
* @dev Returns the highest version that has been initialized. See {reinitializer}.
*/
function _getInitializedVersion() internal view returns (uint64) {
return _getInitializableStorage()._initialized;
}
/**
* @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.
*/
function _isInitializing() internal view returns (bool) {
return _getInitializableStorage()._initializing;
}
/**
* @dev Pointer to storage slot. Allows integrators to override it with a custom storage location.
*
* NOTE: Consider following the ERC-7201 formula to derive storage locations.
*/
function _initializableStorageSlot() internal pure virtual returns (bytes32) {
return INITIALIZABLE_STORAGE;
}
/**
* @dev Returns a pointer to the storage namespace.
*/
// solhint-disable-next-line var-name-mixedcase
function _getInitializableStorage() private pure returns (InitializableStorage storage $) {
bytes32 slot = _initializableStorageSlot();
assembly {
$.slot := slot
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.3.0) (proxy/utils/UUPSUpgradeable.sol)
pragma solidity ^0.8.22;
import {IERC1822Proxiable} from "@openzeppelin/contracts/interfaces/draft-IERC1822.sol";
import {ERC1967Utils} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol";
import {Initializable} from "./Initializable.sol";
/**
* @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an
* {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.
*
* A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is
* reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing
* `UUPSUpgradeable` with a custom implementation of upgrades.
*
* The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.
*/
abstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {
/// @custom:oz-upgrades-unsafe-allow state-variable-immutable
address private immutable __self = address(this);
/**
* @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`
* and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,
* while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.
* If the getter returns `"5.0.0"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must
* be the empty byte string if no function should be called, making it impossible to invoke the `receive` function
* during an upgrade.
*/
string public constant UPGRADE_INTERFACE_VERSION = "5.0.0";
/**
* @dev The call is from an unauthorized context.
*/
error UUPSUnauthorizedCallContext();
/**
* @dev The storage `slot` is unsupported as a UUID.
*/
error UUPSUnsupportedProxiableUUID(bytes32 slot);
/**
* @dev Check that the execution is being performed through a delegatecall call and that the execution context is
* a proxy contract with an implementation (as defined in ERC-1967) pointing to self. This should only be the case
* for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a
* function through ERC-1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to
* fail.
*/
modifier onlyProxy() {
_checkProxy();
_;
}
/**
* @dev Check that the execution is not being performed through a delegate call. This allows a function to be
* callable on the implementing contract but not through proxies.
*/
modifier notDelegated() {
_checkNotDelegated();
_;
}
function __UUPSUpgradeable_init() internal onlyInitializing {
}
function __UUPSUpgradeable_init_unchained() internal onlyInitializing {
}
/**
* @dev Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the
* implementation. It is used to validate the implementation's compatibility when performing an upgrade.
*
* IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks
* bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this
* function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.
*/
function proxiableUUID() external view virtual notDelegated returns (bytes32) {
return ERC1967Utils.IMPLEMENTATION_SLOT;
}
/**
* @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call
* encoded in `data`.
*
* Calls {_authorizeUpgrade}.
*
* Emits an {Upgraded} event.
*
* @custom:oz-upgrades-unsafe-allow-reachable delegatecall
*/
function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {
_authorizeUpgrade(newImplementation);
_upgradeToAndCallUUPS(newImplementation, data);
}
/**
* @dev Reverts if the execution is not performed via delegatecall or the execution
* context is not of a proxy with an ERC-1967 compliant implementation pointing to self.
*/
function _checkProxy() internal view virtual {
if (
address(this) == __self || // Must be called through delegatecall
ERC1967Utils.getImplementation() != __self // Must be called through an active proxy
) {
revert UUPSUnauthorizedCallContext();
}
}
/**
* @dev Reverts if the execution is performed via delegatecall.
* See {notDelegated}.
*/
function _checkNotDelegated() internal view virtual {
if (address(this) != __self) {
// Must not be called through delegatecall
revert UUPSUnauthorizedCallContext();
}
}
/**
* @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by
* {upgradeToAndCall}.
*
* Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.
*
* ```solidity
* function _authorizeUpgrade(address) internal onlyOwner {}
* ```
*/
function _authorizeUpgrade(address newImplementation) internal virtual;
/**
* @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.
*
* As a security check, {proxiableUUID} is invoked in the new implementation, and the return value
* is expected to be the implementation slot in ERC-1967.
*
* Emits an {IERC1967-Upgraded} event.
*/
function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {
try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {
if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {
revert UUPSUnsupportedProxiableUUID(slot);
}
ERC1967Utils.upgradeToAndCall(newImplementation, data);
} catch {
// The implementation is not UUPS
revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)
pragma solidity ^0.8.0;
import "../utils/ContextUpgradeable.sol";
import {Initializable} from "../proxy/utils/Initializable.sol";
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract PausableUpgradeable is Initializable, ContextUpgradeable {
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
bool private _paused;
/**
* @dev Initializes the contract in unpaused state.
*/
function __Pausable_init() internal onlyInitializing {
__Pausable_init_unchained();
}
function __Pausable_init_unchained() internal onlyInitializing {
_paused = false;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
_requireNotPaused();
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
_requirePaused();
_;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Throws if the contract is paused.
*/
function _requireNotPaused() internal view virtual {
require(!paused(), "Pausable: paused");
}
/**
* @dev Throws if the contract is not paused.
*/
function _requirePaused() internal view virtual {
require(paused(), "Pausable: not paused");
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
/**
* @dev This empty reserved space is put in place to allow future versions to add new
* variables without shifting down storage in the inheritance chain.
* See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
*/
uint256[49] private __gap;
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.20;
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
import {ContextUpgradeable} from "../../utils/ContextUpgradeable.sol";
import {IERC20Errors} from "@openzeppelin/contracts/interfaces/draft-IERC6093.sol";
import {Initializable} from "../../proxy/utils/Initializable.sol";
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* The default value of {decimals} is 18. To change this, you should override
* this function so it returns a different value.
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC-20
* applications.
*/
abstract contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20, IERC20Metadata, IERC20Errors {
/// @custom:storage-location erc7201:openzeppelin.storage.ERC20
struct ERC20Storage {
mapping(address account => uint256) _balances;
mapping(address account => mapping(address spender => uint256)) _allowances;
uint256 _totalSupply;
string _name;
string _symbol;
}
// keccak256(abi.encode(uint256(keccak256("openzeppelin.storage.ERC20")) - 1)) & ~bytes32(uint256(0xff))
bytes32 private constant ERC20StorageLocation = 0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00;
function _getERC20Storage() private pure returns (ERC20Storage storage $) {
assembly {
$.slot := ERC20StorageLocation
}
}
/**
* @dev Sets the values for {name} and {symbol}.
*
* Both values are immutable: they can only be set once during construction.
*/
function __ERC20_init(string memory name_, string memory symbol_) internal onlyInitializing {
__ERC20_init_unchained(name_, symbol_);
}
function __ERC20_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {
ERC20Storage storage $ = _getERC20Storage();
$._name = name_;
$._symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual returns (string memory) {
ERC20Storage storage $ = _getERC20Storage();
return $._name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual returns (string memory) {
ERC20Storage storage $ = _getERC20Storage();
return $._symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the default value returned by this function, unless
* it's overridden.
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual returns (uint256) {
ERC20Storage storage $ = _getERC20Storage();
return $._totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual returns (uint256) {
ERC20Storage storage $ = _getERC20Storage();
return $._balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `value`.
*/
function transfer(address to, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_transfer(owner, to, value);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual returns (uint256) {
ERC20Storage storage $ = _getERC20Storage();
return $._allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `value` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, value);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Skips emitting an {Approval} event indicating an allowance update. This is not
* required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `value`.
* - the caller must have allowance for ``from``'s tokens of at least
* `value`.
*/
function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, value);
_transfer(from, to, value);
return true;
}
/**
* @dev Moves a `value` amount of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _transfer(address from, address to, uint256 value) internal {
if (from == address(0)) {
revert ERC20InvalidSender(address(0));
}
if (to == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(from, to, value);
}
/**
* @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
* (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
* this function.
*
* Emits a {Transfer} event.
*/
function _update(address from, address to, uint256 value) internal virtual {
ERC20Storage storage $ = _getERC20Storage();
if (from == address(0)) {
// Overflow check required: The rest of the code assumes that totalSupply never overflows
$._totalSupply += value;
} else {
uint256 fromBalance = $._balances[from];
if (fromBalance < value) {
revert ERC20InsufficientBalance(from, fromBalance, value);
}
unchecked {
// Overflow not possible: value <= fromBalance <= totalSupply.
$._balances[from] = fromBalance - value;
}
}
if (to == address(0)) {
unchecked {
// Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
$._totalSupply -= value;
}
} else {
unchecked {
// Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
$._balances[to] += value;
}
}
emit Transfer(from, to, value);
}
/**
* @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
* Relies on the `_update` mechanism
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _mint(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(address(0), account, value);
}
/**
* @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
* Relies on the `_update` mechanism.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead
*/
function _burn(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidSender(address(0));
}
_update(account, address(0), value);
}
/**
* @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*
* Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
*/
function _approve(address owner, address spender, uint256 value) internal {
_approve(owner, spender, value, true);
}
/**
* @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
*
* By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
* `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
* `Approval` event during `transferFrom` operations.
*
* Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
* true using the following override:
*
* ```solidity
* function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
* super._approve(owner, spender, value, true);
* }
* ```
*
* Requirements are the same as {_approve}.
*/
function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
ERC20Storage storage $ = _getERC20Storage();
if (owner == address(0)) {
revert ERC20InvalidApprover(address(0));
}
if (spender == address(0)) {
revert ERC20InvalidSpender(address(0));
}
$._allowances[owner][spender] = value;
if (emitEvent) {
emit Approval(owner, spender, value);
}
}
/**
* @dev Updates `owner`'s allowance for `spender` based on spent `value`.
*
* Does not update the allowance value in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Does not emit an {Approval} event.
*/
function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance < type(uint256).max) {
if (currentAllowance < value) {
revert ERC20InsufficientAllowance(spender, currentAllowance, value);
}
unchecked {
_approve(owner, spender, currentAllowance - value, false);
}
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
import {Initializable} from "../proxy/utils/Initializable.sol";
/**
* @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 ContextUpgradeable is Initializable {
function __Context_init() internal onlyInitializing {
}
function __Context_init_unchained() internal onlyInitializing {
}
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol)
pragma solidity ^0.8.20;
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
import {Initializable} from "../../proxy/utils/Initializable.sol";
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC-165 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);
* }
* ```
*/
abstract contract ERC165Upgradeable is Initializable, IERC165 {
function __ERC165_init() internal onlyInitializing {
}
function __ERC165_init_unchained() internal onlyInitializing {
}
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.3.0) (access/IAccessControl.sol)
pragma solidity ^0.8.20;
/**
* @dev External interface of AccessControl declared to support ERC-165 detection.
*/
interface IAccessControl {
/**
* @dev The `account` is missing a role.
*/
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
/**
* @dev The caller of a function is not the expected one.
*
* NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.
*/
error AccessControlBadConfirmation();
/**
* @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 to signal this.
*/
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. This account bears the admin role (for the granted role).
* Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.
*/
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 `callerConfirmation`.
*/
function renounceRole(bytes32 role, address callerConfirmation) external;
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC1822.sol)
pragma solidity ^0.8.20;
/**
* @dev ERC-1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified
* proxy whose upgrades are fully controlled by the current implementation.
*/
interface IERC1822Proxiable {
/**
* @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation
* address.
*
* IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks
* bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this
* function revert if invoked through a proxy.
*/
function proxiableUUID() external view returns (bytes32);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;
/**
* @dev Standard ERC-20 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.
*/
interface IERC20Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC20InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC20InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
* @param spender Address that may be allowed to operate on tokens without being their owner.
* @param allowance Amount of tokens a `spender` is allowed to operate with.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC20InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `spender` to be approved. Used in approvals.
* @param spender Address that may be allowed to operate on tokens without being their owner.
*/
error ERC20InvalidSpender(address spender);
}
/**
* @dev Standard ERC-721 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.
*/
interface IERC721Errors {
/**
* @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.
* Used in balance queries.
* @param owner Address of the current owner of a token.
*/
error ERC721InvalidOwner(address owner);
/**
* @dev Indicates a `tokenId` whose `owner` is the zero address.
* @param tokenId Identifier number of a token.
*/
error ERC721NonexistentToken(uint256 tokenId);
/**
* @dev Indicates an error related to the ownership over a particular token. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param tokenId Identifier number of a token.
* @param owner Address of the current owner of a token.
*/
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC721InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC721InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param tokenId Identifier number of a token.
*/
error ERC721InsufficientApproval(address operator, uint256 tokenId);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC721InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC721InvalidOperator(address operator);
}
/**
* @dev Standard ERC-1155 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.
*/
interface IERC1155Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
* @param tokenId Identifier number of a token.
*/
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC1155InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC1155InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param owner Address of the current owner of a token.
*/
error ERC1155MissingApprovalForAll(address operator, address owner);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC1155InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC1155InvalidOperator(address operator);
/**
* @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
* Used in batch transfers.
* @param idsLength Length of the array of token identifiers
* @param valuesLength Length of the array of token amounts
*/
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)
pragma solidity ^0.8.20;
/**
* @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.
*/
interface IERC1967 {
/**
* @dev Emitted when the implementation is upgraded.
*/
event Upgraded(address indexed implementation);
/**
* @dev Emitted when the admin account has changed.
*/
event AdminChanged(address previousAdmin, address newAdmin);
/**
* @dev Emitted when the beacon is changed.
*/
event BeaconUpgraded(address indexed beacon);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)
pragma solidity ^0.8.20;
/**
* @dev This is the interface that {BeaconProxy} expects of its beacon.
*/
interface IBeacon {
/**
* @dev Must return an address that can be used as a delegate call target.
*
* {UpgradeableBeacon} will check that this address is a contract.
*/
function implementation() external view returns (address);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Utils.sol)
pragma solidity ^0.8.22;
import {IBeacon} from "../beacon/IBeacon.sol";
import {IERC1967} from "../../interfaces/IERC1967.sol";
import {Address} from "../../utils/Address.sol";
import {StorageSlot} from "../../utils/StorageSlot.sol";
/**
* @dev This library provides getters and event emitting update functions for
* https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.
*/
library ERC1967Utils {
/**
* @dev Storage slot with the address of the current implementation.
* This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1.
*/
// solhint-disable-next-line private-vars-leading-underscore
bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
/**
* @dev The `implementation` of the proxy is invalid.
*/
error ERC1967InvalidImplementation(address implementation);
/**
* @dev The `admin` of the proxy is invalid.
*/
error ERC1967InvalidAdmin(address admin);
/**
* @dev The `beacon` of the proxy is invalid.
*/
error ERC1967InvalidBeacon(address beacon);
/**
* @dev An upgrade function sees `msg.value > 0` that may be lost.
*/
error ERC1967NonPayable();
/**
* @dev Returns the current implementation address.
*/
function getImplementation() internal view returns (address) {
return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;
}
/**
* @dev Stores a new address in the ERC-1967 implementation slot.
*/
function _setImplementation(address newImplementation) private {
if (newImplementation.code.length == 0) {
revert ERC1967InvalidImplementation(newImplementation);
}
StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;
}
/**
* @dev Performs implementation upgrade with additional setup call if data is nonempty.
* This function is payable only if the setup call is performed, otherwise `msg.value` is rejected
* to avoid stuck value in the contract.
*
* Emits an {IERC1967-Upgraded} event.
*/
function upgradeToAndCall(address newImplementation, bytes memory data) internal {
_setImplementation(newImplementation);
emit IERC1967.Upgraded(newImplementation);
if (data.length > 0) {
Address.functionDelegateCall(newImplementation, data);
} else {
_checkNonPayable();
}
}
/**
* @dev Storage slot with the admin of the contract.
* This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1.
*/
// solhint-disable-next-line private-vars-leading-underscore
bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;
/**
* @dev Returns the current admin.
*
* TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using
* the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
* `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`
*/
function getAdmin() internal view returns (address) {
return StorageSlot.getAddressSlot(ADMIN_SLOT).value;
}
/**
* @dev Stores a new address in the ERC-1967 admin slot.
*/
function _setAdmin(address newAdmin) private {
if (newAdmin == address(0)) {
revert ERC1967InvalidAdmin(address(0));
}
StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;
}
/**
* @dev Changes the admin of the proxy.
*
* Emits an {IERC1967-AdminChanged} event.
*/
function changeAdmin(address newAdmin) internal {
emit IERC1967.AdminChanged(getAdmin(), newAdmin);
_setAdmin(newAdmin);
}
/**
* @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.
* This is the keccak-256 hash of "eip1967.proxy.beacon" subtracted by 1.
*/
// solhint-disable-next-line private-vars-leading-underscore
bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;
/**
* @dev Returns the current beacon.
*/
function getBeacon() internal view returns (address) {
return StorageSlot.getAddressSlot(BEACON_SLOT).value;
}
/**
* @dev Stores a new beacon in the ERC-1967 beacon slot.
*/
function _setBeacon(address newBeacon) private {
if (newBeacon.code.length == 0) {
revert ERC1967InvalidBeacon(newBeacon);
}
StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;
address beaconImplementation = IBeacon(newBeacon).implementation();
if (beaconImplementation.code.length == 0) {
revert ERC1967InvalidImplementation(beaconImplementation);
}
}
/**
* @dev Change the beacon and trigger a setup call if data is nonempty.
* This function is payable only if the setup call is performed, otherwise `msg.value` is rejected
* to avoid stuck value in the contract.
*
* Emits an {IERC1967-BeaconUpgraded} event.
*
* CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since
* it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for
* efficiency.
*/
function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {
_setBeacon(newBeacon);
emit IERC1967.BeaconUpgraded(newBeacon);
if (data.length > 0) {
Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);
} else {
_checkNonPayable();
}
}
/**
* @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract
* if an upgrade doesn't perform an initialization call.
*/
function _checkNonPayable() private {
if (msg.value > 0) {
revert ERC1967NonPayable();
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.20;
import {IERC20} from "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC-20 standard.
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.2.0) (utils/Address.sol)
pragma solidity ^0.8.20;
import {Errors} from "./Errors.sol";
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev There's no code at `target` (it is not a contract).
*/
error AddressEmptyCode(address target);
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
if (address(this).balance < amount) {
revert Errors.InsufficientBalance(address(this).balance, amount);
}
(bool success, bytes memory returndata) = recipient.call{value: amount}("");
if (!success) {
_revert(returndata);
}
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason or custom error, it is bubbled
* up by this function (like regular Solidity function calls). However, if
* the call reverted with no returned reason, this function reverts with a
* {Errors.FailedCall} error.
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
if (address(this).balance < value) {
revert Errors.InsufficientBalance(address(this).balance, value);
}
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata);
}
/**
* @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target
* was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case
* of an unsuccessful call.
*/
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata
) internal view returns (bytes memory) {
if (!success) {
_revert(returndata);
} else {
// only check if target is a contract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
if (returndata.length == 0 && target.code.length == 0) {
revert AddressEmptyCode(target);
}
return returndata;
}
}
/**
* @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the
* revert reason or with a default {Errors.FailedCall} error.
*/
function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {
if (!success) {
_revert(returndata);
} else {
return returndata;
}
}
/**
* @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}.
*/
function _revert(bytes memory returndata) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
assembly ("memory-safe") {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert Errors.FailedCall();
}
}
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)
pragma solidity ^0.8.20;
/**
* @dev Collection of common custom errors used in multiple contracts
*
* IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.
* It is recommended to avoid relying on the error API for critical functionality.
*
* _Available since v5.1._
*/
library Errors {
/**
* @dev The ETH balance of the account is not enough to perform the operation.
*/
error InsufficientBalance(uint256 balance, uint256 needed);
/**
* @dev A call to an address target failed. The target may have reverted.
*/
error FailedCall();
/**
* @dev The deployment failed.
*/
error FailedDeployment();
/**
* @dev A necessary precompile is missing.
*/
error MissingPrecompile(address);
}
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[ERC].
*
* 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[ERC 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 v5.1.0) (utils/StorageSlot.sol)
// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.
pragma solidity ^0.8.20;
/**
* @dev Library for reading and writing primitive types to specific storage slots.
*
* Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.
* This library helps with reading and writing to such slots without the need for inline assembly.
*
* The functions in this library return Slot structs that contain a `value` member that can be used to read or write.
*
* Example usage to set ERC-1967 implementation slot:
* ```solidity
* contract ERC1967 {
* // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.
* bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
*
* function _getImplementation() internal view returns (address) {
* return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
* }
*
* function _setImplementation(address newImplementation) internal {
* require(newImplementation.code.length > 0);
* StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
* }
* }
* ```
*
* TIP: Consider using this library along with {SlotDerivation}.
*/
library StorageSlot {
struct AddressSlot {
address value;
}
struct BooleanSlot {
bool value;
}
struct Bytes32Slot {
bytes32 value;
}
struct Uint256Slot {
uint256 value;
}
struct Int256Slot {
int256 value;
}
struct StringSlot {
string value;
}
struct BytesSlot {
bytes value;
}
/**
* @dev Returns an `AddressSlot` with member `value` located at `slot`.
*/
function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
assembly ("memory-safe") {
r.slot := slot
}
}
/**
* @dev Returns a `BooleanSlot` with member `value` located at `slot`.
*/
function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
assembly ("memory-safe") {
r.slot := slot
}
}
/**
* @dev Returns a `Bytes32Slot` with member `value` located at `slot`.
*/
function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
assembly ("memory-safe") {
r.slot := slot
}
}
/**
* @dev Returns a `Uint256Slot` with member `value` located at `slot`.
*/
function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
assembly ("memory-safe") {
r.slot := slot
}
}
/**
* @dev Returns a `Int256Slot` with member `value` located at `slot`.
*/
function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {
assembly ("memory-safe") {
r.slot := slot
}
}
/**
* @dev Returns a `StringSlot` with member `value` located at `slot`.
*/
function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {
assembly ("memory-safe") {
r.slot := slot
}
}
/**
* @dev Returns an `StringSlot` representation of the string storage pointer `store`.
*/
function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {
assembly ("memory-safe") {
r.slot := store.slot
}
}
/**
* @dev Returns a `BytesSlot` with member `value` located at `slot`.
*/
function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {
assembly ("memory-safe") {
r.slot := slot
}
}
/**
* @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.
*/
function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {
assembly ("memory-safe") {
r.slot := store.slot
}
}
}
// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;
library console {
address constant CONSOLE_ADDRESS =
0x000000000000000000636F6e736F6c652e6c6f67;
function _sendLogPayloadImplementation(bytes memory payload) internal view {
address consoleAddress = CONSOLE_ADDRESS;
/// @solidity memory-safe-assembly
assembly {
pop(
staticcall(
gas(),
consoleAddress,
add(payload, 32),
mload(payload),
0,
0
)
)
}
}
function _castToPure(
function(bytes memory) internal view fnIn
) internal pure returns (function(bytes memory) pure fnOut) {
assembly {
fnOut := fnIn
}
}
function _sendLogPayload(bytes memory payload) internal pure {
_castToPure(_sendLogPayloadImplementation)(payload);
}
function log() internal pure {
_sendLogPayload(abi.encodeWithSignature("log()"));
}
function logInt(int256 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(int256)", p0));
}
function logUint(uint256 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256)", p0));
}
function logString(string memory p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function logBool(bool p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function logAddress(address p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function logBytes(bytes memory p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes)", p0));
}
function logBytes1(bytes1 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0));
}
function logBytes2(bytes2 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0));
}
function logBytes3(bytes3 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0));
}
function logBytes4(bytes4 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0));
}
function logBytes5(bytes5 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0));
}
function logBytes6(bytes6 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0));
}
function logBytes7(bytes7 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0));
}
function logBytes8(bytes8 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0));
}
function logBytes9(bytes9 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0));
}
function logBytes10(bytes10 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0));
}
function logBytes11(bytes11 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0));
}
function logBytes12(bytes12 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0));
}
function logBytes13(bytes13 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0));
}
function logBytes14(bytes14 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0));
}
function logBytes15(bytes15 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0));
}
function logBytes16(bytes16 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0));
}
function logBytes17(bytes17 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0));
}
function logBytes18(bytes18 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0));
}
function logBytes19(bytes19 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0));
}
function logBytes20(bytes20 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0));
}
function logBytes21(bytes21 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0));
}
function logBytes22(bytes22 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0));
}
function logBytes23(bytes23 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0));
}
function logBytes24(bytes24 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0));
}
function logBytes25(bytes25 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0));
}
function logBytes26(bytes26 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0));
}
function logBytes27(bytes27 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0));
}
function logBytes28(bytes28 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0));
}
function logBytes29(bytes29 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0));
}
function logBytes30(bytes30 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0));
}
function logBytes31(bytes31 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0));
}
function logBytes32(bytes32 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0));
}
function log(uint256 p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256)", p0));
}
function log(string memory p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function log(bool p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function log(address p0) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function log(uint256 p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256)", p0, p1));
}
function log(uint256 p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string)", p0, p1));
}
function log(uint256 p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool)", p0, p1));
}
function log(uint256 p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address)", p0, p1));
}
function log(string memory p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1));
}
function log(string memory p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1));
}
function log(string memory p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1));
}
function log(string memory p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1));
}
function log(bool p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256)", p0, p1));
}
function log(bool p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1));
}
function log(bool p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1));
}
function log(bool p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1));
}
function log(address p0, uint256 p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256)", p0, p1));
}
function log(address p0, string memory p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1));
}
function log(address p0, bool p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1));
}
function log(address p0, address p1) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1));
}
function log(uint256 p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool)", p0, p1, p2));
}
function log(uint256 p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address)", p0, p1, p2));
}
function log(uint256 p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256)", p0, p1, p2));
}
function log(uint256 p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string)", p0, p1, p2));
}
function log(uint256 p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool)", p0, p1, p2));
}
function log(uint256 p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address)", p0, p1, p2));
}
function log(uint256 p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256)", p0, p1, p2));
}
function log(uint256 p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string)", p0, p1, p2));
}
function log(uint256 p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool)", p0, p1, p2));
}
function log(uint256 p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool)", p0, p1, p2));
}
function log(string memory p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address)", p0, p1, p2));
}
function log(string memory p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256)", p0, p1, p2));
}
function log(string memory p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2));
}
function log(string memory p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2));
}
function log(string memory p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2));
}
function log(string memory p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256)", p0, p1, p2));
}
function log(string memory p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2));
}
function log(string memory p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2));
}
function log(string memory p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2));
}
function log(string memory p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256)", p0, p1, p2));
}
function log(string memory p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2));
}
function log(string memory p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2));
}
function log(string memory p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2));
}
function log(bool p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256)", p0, p1, p2));
}
function log(bool p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string)", p0, p1, p2));
}
function log(bool p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool)", p0, p1, p2));
}
function log(bool p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address)", p0, p1, p2));
}
function log(bool p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256)", p0, p1, p2));
}
function log(bool p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2));
}
function log(bool p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2));
}
function log(bool p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2));
}
function log(bool p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256)", p0, p1, p2));
}
function log(bool p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2));
}
function log(bool p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2));
}
function log(bool p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2));
}
function log(bool p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256)", p0, p1, p2));
}
function log(bool p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2));
}
function log(bool p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2));
}
function log(bool p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2));
}
function log(address p0, uint256 p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256)", p0, p1, p2));
}
function log(address p0, uint256 p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string)", p0, p1, p2));
}
function log(address p0, uint256 p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool)", p0, p1, p2));
}
function log(address p0, uint256 p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address)", p0, p1, p2));
}
function log(address p0, string memory p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256)", p0, p1, p2));
}
function log(address p0, string memory p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2));
}
function log(address p0, string memory p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2));
}
function log(address p0, string memory p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2));
}
function log(address p0, bool p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256)", p0, p1, p2));
}
function log(address p0, bool p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2));
}
function log(address p0, bool p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2));
}
function log(address p0, bool p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2));
}
function log(address p0, address p1, uint256 p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256)", p0, p1, p2));
}
function log(address p0, address p1, string memory p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2));
}
function log(address p0, address p1, bool p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2));
}
function log(address p0, address p1, address p2) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2));
}
function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,address)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,uint256)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,string)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,bool)", p0, p1, p2, p3));
}
function log(uint256 p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint256)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,string)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint256)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,address)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,string)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,bool)", p0, p1, p2, p3));
}
function log(address p0, uint256 p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint256 p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, uint256 p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint256)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, string memory p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, bool p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, address p3) internal pure {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3));
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.22 <0.9.0;
library TestsAccounts {
function getAccount(uint index) pure public returns (address) {
address[15] memory accounts;
accounts[0] = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;
accounts[1] = 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2;
accounts[2] = 0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db;
accounts[3] = 0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB;
accounts[4] = 0x617F2E2fD72FD9D5503197092aC168c91465E7f2;
accounts[5] = 0x17F6AD8Ef982297579C203069C1DbfFE4348c372;
accounts[6] = 0x5c6B0f7Bf3E7ce046039Bd8FABdfD3f9F5021678;
accounts[7] = 0x03C6FcED478cBbC9a4FAB34eF9f40767739D1Ff7;
accounts[8] = 0x1aE0EA34a72D944a8C7603FfB3eC30a6669E454C;
accounts[9] = 0x0A098Eda01Ce92ff4A4CCb7A4fFFb5A43EBC70DC;
accounts[10] = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;
accounts[11] = 0x14723A09ACff6D2A60DcdF7aA4AFf308FDDC160C;
accounts[12] = 0x4B0897b0513fdC7C541B6d9D7E929C4e5364D2dB;
accounts[13] = 0x583031D1113aD414F02576BD6afaBfb302140225;
accounts[14] = 0xdD870fA1b7C4700F2BD7f44238821C26f7392148;
return accounts[index];
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.22 <0.9.0;
library Assert {
event AssertionEvent(
bool passed,
string message,
string methodName
);
event AssertionEventUint(
bool passed,
string message,
string methodName,
uint256 returned,
uint256 expected
);
event AssertionEventInt(
bool passed,
string message,
string methodName,
int256 returned,
int256 expected
);
event AssertionEventBool(
bool passed,
string message,
string methodName,
bool returned,
bool expected
);
event AssertionEventAddress(
bool passed,
string message,
string methodName,
address returned,
address expected
);
event AssertionEventBytes32(
bool passed,
string message,
string methodName,
bytes32 returned,
bytes32 expected
);
event AssertionEventString(
bool passed,
string message,
string methodName,
string returned,
string expected
);
event AssertionEventUintInt(
bool passed,
string message,
string methodName,
uint256 returned,
int256 expected
);
event AssertionEventIntUint(
bool passed,
string message,
string methodName,
int256 returned,
uint256 expected
);
function ok(bool a, string memory message) public returns (bool result) {
result = a;
emit AssertionEvent(result, message, "ok");
}
function equal(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventUint(result, message, "equal", a, b);
}
function equal(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventInt(result, message, "equal", a, b);
}
function equal(bool a, bool b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventBool(result, message, "equal", a, b);
}
// TODO: only for certain versions of solc
//function equal(fixed a, fixed b, string message) public returns (bool result) {
// result = (a == b);
// emit AssertionEvent(result, message);
//}
// TODO: only for certain versions of solc
//function equal(ufixed a, ufixed b, string message) public returns (bool result) {
// result = (a == b);
// emit AssertionEvent(result, message);
//}
function equal(address a, address b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventAddress(result, message, "equal", a, b);
}
function equal(bytes32 a, bytes32 b, string memory message) public returns (bool result) {
result = (a == b);
emit AssertionEventBytes32(result, message, "equal", a, b);
}
function equal(string memory a, string memory b, string memory message) public returns (bool result) {
result = (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b)));
emit AssertionEventString(result, message, "equal", a, b);
}
function notEqual(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventUint(result, message, "notEqual", a, b);
}
function notEqual(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventInt(result, message, "notEqual", a, b);
}
function notEqual(bool a, bool b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventBool(result, message, "notEqual", a, b);
}
// TODO: only for certain versions of solc
//function notEqual(fixed a, fixed b, string message) public returns (bool result) {
// result = (a != b);
// emit AssertionEvent(result, message);
//}
// TODO: only for certain versions of solc
//function notEqual(ufixed a, ufixed b, string message) public returns (bool result) {
// result = (a != b);
// emit AssertionEvent(result, message);
//}
function notEqual(address a, address b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventAddress(result, message, "notEqual", a, b);
}
function notEqual(bytes32 a, bytes32 b, string memory message) public returns (bool result) {
result = (a != b);
emit AssertionEventBytes32(result, message, "notEqual", a, b);
}
function notEqual(string memory a, string memory b, string memory message) public returns (bool result) {
result = (keccak256(abi.encodePacked(a)) != keccak256(abi.encodePacked(b)));
emit AssertionEventString(result, message, "notEqual", a, b);
}
/*----------------- Greater than --------------------*/
function greaterThan(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a > b);
emit AssertionEventUint(result, message, "greaterThan", a, b);
}
function greaterThan(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a > b);
emit AssertionEventInt(result, message, "greaterThan", a, b);
}
// TODO: safely compare between uint and int
function greaterThan(uint256 a, int256 b, string memory message) public returns (bool result) {
if(b < int(0)) {
// int is negative uint "a" always greater
result = true;
} else {
result = (a > uint(b));
}
emit AssertionEventUintInt(result, message, "greaterThan", a, b);
}
function greaterThan(int256 a, uint256 b, string memory message) public returns (bool result) {
if(a < int(0)) {
// int is negative uint "b" always greater
result = false;
} else {
result = (uint(a) > b);
}
emit AssertionEventIntUint(result, message, "greaterThan", a, b);
}
/*----------------- Lesser than --------------------*/
function lesserThan(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a < b);
emit AssertionEventUint(result, message, "lesserThan", a, b);
}
function lesserThan(int256 a, int256 b, string memory message) public returns (bool result) {
result = (a < b);
emit AssertionEventInt(result, message, "lesserThan", a, b);
}
// TODO: safely compare between uint and int
function lesserThan(uint256 a, int256 b, string memory message) public returns (bool result) {
if(b < int(0)) {
// int is negative int "b" always lesser
result = false;
} else {
result = (a < uint(b));
}
emit AssertionEventUintInt(result, message, "lesserThan", a, b);
}
function lesserThan(int256 a, uint256 b, string memory message) public returns (bool result) {
if(a < int(0)) {
// int is negative int "a" always lesser
result = true;
} else {
result = (uint(a) < b);
}
emit AssertionEventIntUint(result, message, "lesserThan", a, b);
}
}
{
"overrides": [
{
"files": "*.sol",
"options": {
"printWidth": 80,
"tabWidth": 4,
"useTabs": false,
"singleQuote": false,
"bracketSpacing": false
}
},
{
"files": "*.yml",
"options": {}
},
{
"files": "*.yaml",
"options": {}
},
{
"files": "*.toml",
"options": {}
},
{
"files": "*.json",
"options": {}
},
{
"files": "*.js",
"options": {}
},
{
"files": "*.ts",
"options": {}
}
]
}
REMIX DEFAULT WORKSPACE
Remix default workspace is present when:
i. Remix loads for the very first time
ii. A new workspace is created with 'Default' template
iii. There are no files existing in the File Explorer
This workspace contains 3 directories:
1. 'contracts': Holds three contracts with increasing levels of complexity.
2. 'scripts': Contains four typescript files to deploy a contract. It is explained below.
3. 'tests': Contains one Solidity test file for 'Ballot' contract & one JS test file for 'Storage' contract.
SCRIPTS
The 'scripts' folder has four typescript files which help to deploy the 'Storage' contract using 'web3.js' and 'ethers.js' libraries.
For the deployment of any other contract, just update the contract name from 'Storage' to the desired contract and provide constructor arguments accordingly
in the file `deploy_with_ethers.ts` or `deploy_with_web3.ts`
In the 'tests' folder there is a script containing Mocha-Chai unit tests for 'Storage' contract.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
Please note, require/import is supported in a limited manner for Remix supported modules.
For now, modules supported by Remix are ethers, web3, swarmgw, chai, multihashes, remix and hardhat only for hardhat.ethers object/plugin.
For unsupported modules, an error like this will be thrown: '<module_name> module require is not supported by Remix IDE' will be shown.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";
import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
contract Kabitcoin is Initializable, ERC20Upgradeable, PausableUpgradeable, AccessControlUpgradeable, UUPSUpgradeable {
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
uint256 public cap;
event Burn(address indexed from, uint256 value);
event Mint(address indexed to, uint256 value);
event CapUpdated(uint256 newCap);
/// @custom:oz-upgrades-unsafe-allow constructor
constructor() {
_disableInitializers();
}
function initialize(string memory name, string memory symbol, uint256 initialSupply, uint256 _cap) public initializer {
__ERC20_init(name, symbol);
__Pausable_init();
__AccessControl_init();
__UUPSUpgradeable_init();
_grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
_grantRole(MINTER_ROLE, msg.sender);
require(_cap > 0, "Cap must be greater than 0");
cap = _cap * 10 ** decimals();
require(initialSupply <= _cap, "Initial supply exceeds cap");
_mint(msg.sender, initialSupply * 10 ** decimals());
}
function transfer(address to, uint256 value) public virtual override whenNotPaused returns (bool) {
return super.transfer(to, value);
}
function transferFrom(address from, address to, uint256 value) public virtual override whenNotPaused returns (bool) {
return super.transferFrom(from, to, value);
}
function approve(address spender, uint256 value) public virtual override whenNotPaused returns (bool) {
return super.approve(spender, value);
}
function burn(uint256 value) public whenNotPaused returns (bool) {
require(balanceOf(msg.sender) >= value, "Insufficient balance");
_burn(msg.sender, value);
emit Burn(msg.sender, value);
return true;
}
function mint(address to, uint256 value) public onlyRole(MINTER_ROLE) returns (bool) {
require(to != address(0), "Invalid address");
require(totalSupply() + value <= cap, "Exceeds cap");
_mint(to, value);
emit Mint(to, value);
return true;
}
function pause() public onlyRole(DEFAULT_ADMIN_ROLE) {
_pause();
}
function unpause() public onlyRole(DEFAULT_ADMIN_ROLE) {
_unpause();
}
function updateCap(uint256 newCap) public onlyRole(DEFAULT_ADMIN_ROLE) {
require(newCap > totalSupply() / 10 ** decimals(), "New cap must be greater than current supply");
cap = newCap * 10 ** decimals();
emit CapUpdated(newCap);
}
function _authorizeUpgrade(address newImplementation) internal override onlyRole(DEFAULT_ADMIN_ROLE) {}
}
View raw

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

This file has been truncated, but you can view the full file.
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_2768": {
"entryPoint": null,
"id": 2768,
"parameterSlots": 0,
"returnSlots": 0
},
"@_disableInitializers_584": {
"entryPoint": 86,
"id": 584,
"parameterSlots": 0,
"returnSlots": 0
},
"@_getInitializableStorage_629": {
"entryPoint": 340,
"id": 629,
"parameterSlots": 0,
"returnSlots": 1
},
"@_initializableStorageSlot_615": {
"entryPoint": 365,
"id": 615,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_encode_t_uint64_to_t_uint64_fromStack": {
"entryPoint": 425,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
"entryPoint": 440,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_uint64": {
"entryPoint": 406,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nativeSrc": "0:456:20",
"nodeType": "YulBlock",
"src": "0:456:20",
"statements": [
{
"body": {
"nativeSrc": "51:57:20",
"nodeType": "YulBlock",
"src": "51:57:20",
"statements": [
{
"nativeSrc": "61:41:20",
"nodeType": "YulAssignment",
"src": "61:41:20",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "76:5:20",
"nodeType": "YulIdentifier",
"src": "76:5:20"
},
{
"kind": "number",
"nativeSrc": "83:18:20",
"nodeType": "YulLiteral",
"src": "83:18:20",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nativeSrc": "72:3:20",
"nodeType": "YulIdentifier",
"src": "72:3:20"
},
"nativeSrc": "72:30:20",
"nodeType": "YulFunctionCall",
"src": "72:30:20"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "61:7:20",
"nodeType": "YulIdentifier",
"src": "61:7:20"
}
]
}
]
},
"name": "cleanup_t_uint64",
"nativeSrc": "7:101:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "33:5:20",
"nodeType": "YulTypedName",
"src": "33:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "43:7:20",
"nodeType": "YulTypedName",
"src": "43:7:20",
"type": ""
}
],
"src": "7:101:20"
},
{
"body": {
"nativeSrc": "177:52:20",
"nodeType": "YulBlock",
"src": "177:52:20",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "194:3:20",
"nodeType": "YulIdentifier",
"src": "194:3:20"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "216:5:20",
"nodeType": "YulIdentifier",
"src": "216:5:20"
}
],
"functionName": {
"name": "cleanup_t_uint64",
"nativeSrc": "199:16:20",
"nodeType": "YulIdentifier",
"src": "199:16:20"
},
"nativeSrc": "199:23:20",
"nodeType": "YulFunctionCall",
"src": "199:23:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "187:6:20",
"nodeType": "YulIdentifier",
"src": "187:6:20"
},
"nativeSrc": "187:36:20",
"nodeType": "YulFunctionCall",
"src": "187:36:20"
},
"nativeSrc": "187:36:20",
"nodeType": "YulExpressionStatement",
"src": "187:36:20"
}
]
},
"name": "abi_encode_t_uint64_to_t_uint64_fromStack",
"nativeSrc": "114:115:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "165:5:20",
"nodeType": "YulTypedName",
"src": "165:5:20",
"type": ""
},
{
"name": "pos",
"nativeSrc": "172:3:20",
"nodeType": "YulTypedName",
"src": "172:3:20",
"type": ""
}
],
"src": "114:115:20"
},
{
"body": {
"nativeSrc": "331:122:20",
"nodeType": "YulBlock",
"src": "331:122:20",
"statements": [
{
"nativeSrc": "341:26:20",
"nodeType": "YulAssignment",
"src": "341:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "353:9:20",
"nodeType": "YulIdentifier",
"src": "353:9:20"
},
{
"kind": "number",
"nativeSrc": "364:2:20",
"nodeType": "YulLiteral",
"src": "364:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "349:3:20",
"nodeType": "YulIdentifier",
"src": "349:3:20"
},
"nativeSrc": "349:18:20",
"nodeType": "YulFunctionCall",
"src": "349:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "341:4:20",
"nodeType": "YulIdentifier",
"src": "341:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "419:6:20",
"nodeType": "YulIdentifier",
"src": "419:6:20"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "432:9:20",
"nodeType": "YulIdentifier",
"src": "432:9:20"
},
{
"kind": "number",
"nativeSrc": "443:1:20",
"nodeType": "YulLiteral",
"src": "443:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "428:3:20",
"nodeType": "YulIdentifier",
"src": "428:3:20"
},
"nativeSrc": "428:17:20",
"nodeType": "YulFunctionCall",
"src": "428:17:20"
}
],
"functionName": {
"name": "abi_encode_t_uint64_to_t_uint64_fromStack",
"nativeSrc": "377:41:20",
"nodeType": "YulIdentifier",
"src": "377:41:20"
},
"nativeSrc": "377:69:20",
"nodeType": "YulFunctionCall",
"src": "377:69:20"
},
"nativeSrc": "377:69:20",
"nodeType": "YulExpressionStatement",
"src": "377:69:20"
}
]
},
"name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
"nativeSrc": "235:218:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "303:9:20",
"nodeType": "YulTypedName",
"src": "303:9:20",
"type": ""
},
{
"name": "value0",
"nativeSrc": "315:6:20",
"nodeType": "YulTypedName",
"src": "315:6:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "326:4:20",
"nodeType": "YulTypedName",
"src": "326:4:20",
"type": ""
}
],
"src": "235:218:20"
}
]
},
"contents": "{\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function abi_encode_t_uint64_to_t_uint64_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint64(value))\n }\n\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint64_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n",
"id": 20,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250348015610042575f5ffd5b5061005161005660201b60201c565b6101d1565b5f61006561015460201b60201c565b9050805f0160089054906101000a900460ff16156100af576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16146101515767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff60405161014891906101b8565b60405180910390a15b50565b5f5f61016461016d60201b60201c565b90508091505090565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005f1b905090565b5f67ffffffffffffffff82169050919050565b6101b281610196565b82525050565b5f6020820190506101cb5f8301846101a9565b92915050565b6080516135566101f75f395f8181611663015281816116b8015261187701526135565ff3fe6080604052600436106101b6575f3560e01c806352d1902d116100eb578063a217fddf11610089578063ad3cb1cc11610063578063ad3cb1cc1461060e578063d539139314610638578063d547741f14610662578063dd62ed3e1461068a576101b6565b8063a217fddf14610580578063a7d68896146105aa578063a9059cbb146105d2576101b6565b806370a08231116100c557806370a08231146104c85780638456cb591461050457806391d148541461051a57806395d89b4114610556576101b6565b806352d1902d1461044c5780635c975abb146104765780636fe0e395146104a0576101b6565b8063313ce567116101585780633f4ba83a116101325780633f4ba83a146103a257806340c10f19146103b857806342966c68146103f45780634f1ef28614610430576101b6565b8063313ce56714610326578063355274ea1461035057806336568abe1461037a576101b6565b806318160ddd1161019457806318160ddd1461025c57806323b872dd14610286578063248a9ca3146102c25780632f2ff15d146102fe576101b6565b806301ffc9a7146101ba57806306fdde03146101f6578063095ea7b314610220575b5f5ffd5b3480156101c5575f5ffd5b506101e060048036038101906101db9190612478565b6106c6565b6040516101ed91906124bd565b60405180910390f35b348015610201575f5ffd5b5061020a61073f565b6040516102179190612546565b60405180910390f35b34801561022b575f5ffd5b50610246600480360381019061024191906125f3565b6107dd565b60405161025391906124bd565b60405180910390f35b348015610267575f5ffd5b506102706107f8565b60405161027d9190612640565b60405180910390f35b348015610291575f5ffd5b506102ac60048036038101906102a79190612659565b61080f565b6040516102b991906124bd565b60405180910390f35b3480156102cd575f5ffd5b506102e860048036038101906102e391906126dc565b61082c565b6040516102f59190612716565b60405180910390f35b348015610309575f5ffd5b50610324600480360381019061031f919061272f565b610856565b005b348015610331575f5ffd5b5061033a610878565b6040516103479190612788565b60405180910390f35b34801561035b575f5ffd5b50610364610880565b6040516103719190612640565b60405180910390f35b348015610385575f5ffd5b506103a0600480360381019061039b919061272f565b610886565b005b3480156103ad575f5ffd5b506103b6610901565b005b3480156103c3575f5ffd5b506103de60048036038101906103d991906125f3565b610918565b6040516103eb91906124bd565b60405180910390f35b3480156103ff575f5ffd5b5061041a600480360381019061041591906127a1565b610a6b565b60405161042791906124bd565b60405180910390f35b61044a600480360381019061044591906128f8565b610b20565b005b348015610457575f5ffd5b50610460610b3f565b60405161046d9190612716565b60405180910390f35b348015610481575f5ffd5b5061048a610b70565b60405161049791906124bd565b60405180910390f35b3480156104ab575f5ffd5b506104c660048036038101906104c191906129f0565b610b84565b005b3480156104d3575f5ffd5b506104ee60048036038101906104e99190612a8c565b610e2b565b6040516104fb9190612640565b60405180910390f35b34801561050f575f5ffd5b50610518610e7e565b005b348015610525575f5ffd5b50610540600480360381019061053b919061272f565b610e95565b60405161054d91906124bd565b60405180910390f35b348015610561575f5ffd5b5061056a610f06565b6040516105779190612546565b60405180910390f35b34801561058b575f5ffd5b50610594610fa4565b6040516105a19190612716565b60405180910390f35b3480156105b5575f5ffd5b506105d060048036038101906105cb91906127a1565b610faa565b005b3480156105dd575f5ffd5b506105f860048036038101906105f391906125f3565b61107d565b60405161060591906124bd565b60405180910390f35b348015610619575f5ffd5b50610622611098565b60405161062f9190612546565b60405180910390f35b348015610643575f5ffd5b5061064c6110d1565b6040516106599190612716565b60405180910390f35b34801561066d575f5ffd5b506106886004803603810190610683919061272f565b6110f5565b005b348015610695575f5ffd5b506106b060048036038101906106ab9190612ab7565b611117565b6040516106bd9190612640565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107385750610737826111a7565b5b9050919050565b60605f61074a611210565b905080600301805461075b90612b22565b80601f016020809104026020016040519081016040528092919081815260200182805461078790612b22565b80156107d25780601f106107a9576101008083540402835291602001916107d2565b820191905f5260205f20905b8154815290600101906020018083116107b557829003601f168201915b505050505091505090565b5f6107e6611237565b6107f08383611281565b905092915050565b5f5f610802611210565b9050806002015491505090565b5f610818611237565b6108238484846112a3565b90509392505050565b5f5f6108366112d1565b9050805f015f8481526020019081526020015f2060010154915050919050565b61085f8261082c565b610868816112f8565b610872838361130c565b50505050565b5f6012905090565b60325481565b61088e611404565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108f2576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108fc828261140b565b505050565b5f5f1b61090d816112f8565b610915611503565b50565b5f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610943816112f8565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a890612b9c565b60405180910390fd5b603254836109bd6107f8565b6109c79190612be7565b1115610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff90612c64565b60405180910390fd5b610a128484611563565b8373ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688584604051610a589190612640565b60405180910390a2600191505092915050565b5f610a74611237565b81610a7e33610e2b565b1015610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab690612ccc565b60405180910390fd5b610ac933836115e2565b3373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca583604051610b0f9190612640565b60405180910390a260019050919050565b610b28611661565b610b3182611747565b610b3b8282611757565b5050565b5f610b48611875565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b905090565b5f5f5f9054906101000a900460ff16905090565b5f610b8d6118fc565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f5f8267ffffffffffffffff16148015610bd55750825b90505f60018367ffffffffffffffff16148015610c0857505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610c16575080155b15610c4d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610c9a576001855f0160086101000a81548160ff0219169083151502179055505b610ca4898961190f565b610cac611925565b610cb4611937565b610cbc611941565b610cc85f5f1b3361130c565b50610cf37f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361130c565b505f8611610d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2d90612d34565b60405180910390fd5b610d3e610878565b600a610d4a9190612e81565b86610d559190612ecb565b60328190555085871115610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9590612f56565b60405180910390fd5b610dc633610daa610878565b600a610db69190612e81565b89610dc19190612ecb565b611563565b8315610e20575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610e179190612fc9565b60405180910390a15b505050505050505050565b5f5f610e35611210565b9050805f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054915050919050565b5f5f1b610e8a816112f8565b610e9261194b565b50565b5f5f610e9f6112d1565b9050805f015f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b60605f610f11611210565b9050806004018054610f2290612b22565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4e90612b22565b8015610f995780601f10610f7057610100808354040283529160200191610f99565b820191905f5260205f20905b815481529060010190602001808311610f7c57829003601f168201915b505050505091505090565b5f5f1b81565b5f5f1b610fb6816112f8565b610fbe610878565b600a610fca9190612e81565b610fd26107f8565b610fdc919061300f565b821161101d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611014906130af565b60405180910390fd5b611025610878565b600a6110319190612e81565b8261103c9190612ecb565b6032819055507f3c8eb7c49d332f4c1e4d92a27cda93c31cc9452f7a408e0c6109fcddbc9946ea826040516110719190612640565b60405180910390a15050565b5f611086611237565b61109083836119ac565b905092915050565b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6110fe8261082c565b611107816112f8565b611111838361140b565b50505050565b5f5f611121611210565b9050806001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205491505092915050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00905090565b61123f610b70565b1561127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690613117565b60405180910390fd5b565b5f5f61128b611404565b90506112988185856119ce565b600191505092915050565b5f5f6112ad611404565b90506112ba8582856119e0565b6112c5858585611a73565b60019150509392505050565b5f7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b61130981611304611404565b611b63565b50565b5f5f6113166112d1565b90506113228484610e95565b6113f9576001815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611395611404565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506113fe565b5f9150505b92915050565b5f33905090565b5f5f6114156112d1565b90506114218484610e95565b156114f8575f815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611494611404565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019150506114fd565b5f9150505b92915050565b61150b611bb4565b5f5f5f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61154c611404565b6040516115599190613144565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115d3575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016115ca9190613144565b60405180910390fd5b6115de5f8383611bfd565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611652575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016116499190613144565b60405180910390fd5b61165d825f83611bfd565b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148061170e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116f5611e2c565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611745576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f5f1b611753816112f8565b5050565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117bf57506040513d601f19601f820116820180604052508101906117bc9190613171565b60015b61180057816040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016117f79190613144565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b811461186657806040517faa1d49a400000000000000000000000000000000000000000000000000000000815260040161185d9190612716565b60405180910390fd5b6118708383611e7f565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16146118fa576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f5f611906611ef1565b90508091505090565b611917611f1a565b6119218282611f5a565b5050565b61192d611f1a565b611935611f96565b565b61193f611f1a565b565b611949611f1a565b565b611953611237565b60015f5f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611995611404565b6040516119a29190613144565b60405180910390a1565b5f5f6119b6611404565b90506119c3818585611a73565b600191505092915050565b6119db8383836001611fb8565b505050565b5f6119eb8484611117565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015611a6d5781811015611a5e578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611a559392919061319c565b60405180910390fd5b611a6c84848484035f611fb8565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ae3575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611ada9190613144565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b53575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611b4a9190613144565b60405180910390fd5b611b5e838383611bfd565b505050565b611b6d8282610e95565b611bb05780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611ba79291906131d1565b60405180910390fd5b5050565b611bbc610b70565b611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf290613242565b60405180910390fd5b565b5f611c06611210565b90505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c5a5781816002015f828254611c4e9190612be7565b92505081905550611d2c565b5f815f015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611ce5578481846040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611cdc9392919061319c565b60405180910390fd5b828103825f015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d755781816002015f8282540392505081905550611dc1565b81815f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e1e9190612640565b60405180910390a350505050565b5f611e587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b612195565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611e888261219e565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25f81511115611ee457611ede8282612267565b50611eed565b611eec6122e7565b5b5050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005f1b905090565b611f22612323565b611f58576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611f62611f1a565b5f611f6b611210565b905082816003019081611f7e91906133f7565b5081816004019081611f9091906133f7565b50505050565b611f9e611f1a565b5f5f5f6101000a81548160ff021916908315150217905550565b5f611fc1611210565b90505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612033575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161202a9190613144565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036120a3575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161209a9190613144565b60405180910390fd5b82816001015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550811561218e578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516121859190612640565b60405180910390a35b5050505050565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036121f957806040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016121f09190613144565b60405180910390fd5b806122257f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b612195565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f5f8473ffffffffffffffffffffffffffffffffffffffff1684604051612290919061350a565b5f60405180830381855af49150503d805f81146122c8576040519150601f19603f3d011682016040523d82523d5f602084013e6122cd565b606091505b50915091506122dd858383612341565b9250505092915050565b5f341115612321576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f61232c6118fc565b5f0160089054906101000a900460ff16905090565b60608261235657612351826123ce565b6123c6565b5f825114801561237c57505f8473ffffffffffffffffffffffffffffffffffffffff163b145b156123be57836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016123b59190613144565b60405180910390fd5b8190506123c7565b5b9392505050565b5f815111156123e05780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61245781612423565b8114612461575f5ffd5b50565b5f813590506124728161244e565b92915050565b5f6020828403121561248d5761248c61241b565b5b5f61249a84828501612464565b91505092915050565b5f8115159050919050565b6124b7816124a3565b82525050565b5f6020820190506124d05f8301846124ae565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612518826124d6565b61252281856124e0565b93506125328185602086016124f0565b61253b816124fe565b840191505092915050565b5f6020820190508181035f83015261255e818461250e565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61258f82612566565b9050919050565b61259f81612585565b81146125a9575f5ffd5b50565b5f813590506125ba81612596565b92915050565b5f819050919050565b6125d2816125c0565b81146125dc575f5ffd5b50565b5f813590506125ed816125c9565b92915050565b5f5f604083850312156126095761260861241b565b5b5f612616858286016125ac565b9250506020612627858286016125df565b9150509250929050565b61263a816125c0565b82525050565b5f6020820190506126535f830184612631565b92915050565b5f5f5f606084860312156126705761266f61241b565b5b5f61267d868287016125ac565b935050602061268e868287016125ac565b925050604061269f868287016125df565b9150509250925092565b5f819050919050565b6126bb816126a9565b81146126c5575f5ffd5b50565b5f813590506126d6816126b2565b92915050565b5f602082840312156126f1576126f061241b565b5b5f6126fe848285016126c8565b91505092915050565b612710816126a9565b82525050565b5f6020820190506127295f830184612707565b92915050565b5f5f604083850312156127455761274461241b565b5b5f612752858286016126c8565b9250506020612763858286016125ac565b9150509250929050565b5f60ff82169050919050565b6127828161276d565b82525050565b5f60208201905061279b5f830184612779565b92915050565b5f602082840312156127b6576127b561241b565b5b5f6127c3848285016125df565b91505092915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61280a826124fe565b810181811067ffffffffffffffff82111715612829576128286127d4565b5b80604052505050565b5f61283b612412565b90506128478282612801565b919050565b5f67ffffffffffffffff821115612866576128656127d4565b5b61286f826124fe565b9050602081019050919050565b828183375f83830152505050565b5f61289c6128978461284c565b612832565b9050828152602081018484840111156128b8576128b76127d0565b5b6128c384828561287c565b509392505050565b5f82601f8301126128df576128de6127cc565b5b81356128ef84826020860161288a565b91505092915050565b5f5f6040838503121561290e5761290d61241b565b5b5f61291b858286016125ac565b925050602083013567ffffffffffffffff81111561293c5761293b61241f565b5b612948858286016128cb565b9150509250929050565b5f67ffffffffffffffff82111561296c5761296b6127d4565b5b612975826124fe565b9050602081019050919050565b5f61299461298f84612952565b612832565b9050828152602081018484840111156129b0576129af6127d0565b5b6129bb84828561287c565b509392505050565b5f82601f8301126129d7576129d66127cc565b5b81356129e7848260208601612982565b91505092915050565b5f5f5f5f60808587031215612a0857612a0761241b565b5b5f85013567ffffffffffffffff811115612a2557612a2461241f565b5b612a31878288016129c3565b945050602085013567ffffffffffffffff811115612a5257612a5161241f565b5b612a5e878288016129c3565b9350506040612a6f878288016125df565b9250506060612a80878288016125df565b91505092959194509250565b5f60208284031215612aa157612aa061241b565b5b5f612aae848285016125ac565b91505092915050565b5f5f60408385031215612acd57612acc61241b565b5b5f612ada858286016125ac565b9250506020612aeb858286016125ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b3957607f821691505b602082108103612b4c57612b4b612af5565b5b50919050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f612b86600f836124e0565b9150612b9182612b52565b602082019050919050565b5f6020820190508181035f830152612bb381612b7a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bf1826125c0565b9150612bfc836125c0565b9250828201905080821115612c1457612c13612bba565b5b92915050565b7f45786365656473206361700000000000000000000000000000000000000000005f82015250565b5f612c4e600b836124e0565b9150612c5982612c1a565b602082019050919050565b5f6020820190508181035f830152612c7b81612c42565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f612cb66014836124e0565b9150612cc182612c82565b602082019050919050565b5f6020820190508181035f830152612ce381612caa565b9050919050565b7f436170206d7573742062652067726561746572207468616e20300000000000005f82015250565b5f612d1e601a836124e0565b9150612d2982612cea565b602082019050919050565b5f6020820190508181035f830152612d4b81612d12565b9050919050565b5f8160011c9050919050565b5f5f8291508390505b6001851115612da757808604811115612d8357612d82612bba565b5b6001851615612d925780820291505b8081029050612da085612d52565b9450612d67565b94509492505050565b5f82612dbf5760019050612e7a565b81612dcc575f9050612e7a565b8160018114612de25760028114612dec57612e1b565b6001915050612e7a565b60ff841115612dfe57612dfd612bba565b5b8360020a915084821115612e1557612e14612bba565b5b50612e7a565b5060208310610133831016604e8410600b8410161715612e505782820a905083811115612e4b57612e4a612bba565b5b612e7a565b612e5d8484846001612d5e565b92509050818404811115612e7457612e73612bba565b5b81810290505b9392505050565b5f612e8b826125c0565b9150612e968361276d565b9250612ec37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612db0565b905092915050565b5f612ed5826125c0565b9150612ee0836125c0565b9250828202612eee816125c0565b91508282048414831517612f0557612f04612bba565b5b5092915050565b7f496e697469616c20737570706c792065786365656473206361700000000000005f82015250565b5f612f40601a836124e0565b9150612f4b82612f0c565b602082019050919050565b5f6020820190508181035f830152612f6d81612f34565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f612fb3612fae612fa984612f74565b612f90565b612f7d565b9050919050565b612fc381612f99565b82525050565b5f602082019050612fdc5f830184612fba565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613019826125c0565b9150613024836125c0565b92508261303457613033612fe2565b5b828204905092915050565b7f4e657720636170206d7573742062652067726561746572207468616e206375725f8201527f72656e7420737570706c79000000000000000000000000000000000000000000602082015250565b5f613099602b836124e0565b91506130a48261303f565b604082019050919050565b5f6020820190508181035f8301526130c68161308d565b9050919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f6131016010836124e0565b915061310c826130cd565b602082019050919050565b5f6020820190508181035f83015261312e816130f5565b9050919050565b61313e81612585565b82525050565b5f6020820190506131575f830184613135565b92915050565b5f8151905061316b816126b2565b92915050565b5f602082840312156131865761318561241b565b5b5f6131938482850161315d565b91505092915050565b5f6060820190506131af5f830186613135565b6131bc6020830185612631565b6131c96040830184612631565b949350505050565b5f6040820190506131e45f830185613135565b6131f16020830184612707565b9392505050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f61322c6014836124e0565b9150613237826131f8565b602082019050919050565b5f6020820190508181035f83015261325981613220565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026132bc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613281565b6132c68683613281565b95508019841693508086168417925050509392505050565b5f6132f86132f36132ee846125c0565b612f90565b6125c0565b9050919050565b5f819050919050565b613311836132de565b61332561331d826132ff565b84845461328d565b825550505050565b5f5f905090565b61333c61332d565b613347818484613308565b505050565b5b8181101561336a5761335f5f82613334565b60018101905061334d565b5050565b601f8211156133af5761338081613260565b61338984613272565b81016020851015613398578190505b6133ac6133a485613272565b83018261334c565b50505b505050565b5f82821c905092915050565b5f6133cf5f19846008026133b4565b1980831691505092915050565b5f6133e783836133c0565b9150826002028217905092915050565b613400826124d6565b67ffffffffffffffff811115613419576134186127d4565b5b6134238254612b22565b61342e82828561336e565b5f60209050601f83116001811461345f575f841561344d578287015190505b61345785826133dc565b8655506134be565b601f19841661346d86613260565b5f5b828110156134945784890151825560018201915060208501945060208101905061346f565b868310156134b157848901516134ad601f8916826133c0565b8355505b6001600288020188555050505b505050505050565b5f81519050919050565b5f81905092915050565b5f6134e4826134c6565b6134ee81856134d0565b93506134fe8185602086016124f0565b80840191505092915050565b5f61351582846134da565b91508190509291505056fea2646970667358221220272a22c50e4097fa8c644bf54d91ca916d86accdac56663ea40c6b03d823cc3164736f6c634300081e0033",
"opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP CALLVALUE DUP1 ISZERO PUSH2 0x42 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x51 PUSH2 0x56 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x1D1 JUMP JUMPDEST PUSH0 PUSH2 0x65 PUSH2 0x154 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xAF JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP1 AND DUP2 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ PUSH2 0x151 JUMPI PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 MLOAD PUSH2 0x148 SWAP2 SWAP1 PUSH2 0x1B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x164 PUSH2 0x16D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 PUSH0 SHL SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1B2 DUP2 PUSH2 0x196 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1CB PUSH0 DUP4 ADD DUP5 PUSH2 0x1A9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x3556 PUSH2 0x1F7 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x1663 ADD MSTORE DUP2 DUP2 PUSH2 0x16B8 ADD MSTORE PUSH2 0x1877 ADD MSTORE PUSH2 0x3556 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B6 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0xEB JUMPI DUP1 PUSH4 0xA217FDDF GT PUSH2 0x89 JUMPI DUP1 PUSH4 0xAD3CB1CC GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x60E JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x638 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x662 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x68A JUMPI PUSH2 0x1B6 JUMP JUMPDEST DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0xA7D68896 EQ PUSH2 0x5AA JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5D2 JUMPI PUSH2 0x1B6 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 GT PUSH2 0xC5 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4C8 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x504 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x556 JUMPI PUSH2 0x1B6 JUMP JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x476 JUMPI DUP1 PUSH4 0x6FE0E395 EQ PUSH2 0x4A0 JUMPI PUSH2 0x1B6 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x158 JUMPI DUP1 PUSH4 0x3F4BA83A GT PUSH2 0x132 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3B8 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x3F4 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x430 JUMPI PUSH2 0x1B6 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x326 JUMPI DUP1 PUSH4 0x355274EA EQ PUSH2 0x350 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x37A JUMPI PUSH2 0x1B6 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x194 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x286 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x2FE JUMPI PUSH2 0x1B6 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1BA JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x220 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1DB SWAP2 SWAP1 PUSH2 0x2478 JUMP JUMPDEST PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1ED SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x201 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x20A PUSH2 0x73F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x217 SWAP2 SWAP1 PUSH2 0x2546 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x246 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x241 SWAP2 SWAP1 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x7DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x253 SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x270 PUSH2 0x7F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x27D SWAP2 SWAP1 PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x2659 JUMP JUMPDEST PUSH2 0x80F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2E3 SWAP2 SWAP1 PUSH2 0x26DC JUMP JUMPDEST PUSH2 0x82C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F5 SWAP2 SWAP1 PUSH2 0x2716 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x309 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x31F SWAP2 SWAP1 PUSH2 0x272F JUMP JUMPDEST PUSH2 0x856 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x331 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x33A PUSH2 0x878 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x347 SWAP2 SWAP1 PUSH2 0x2788 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x364 PUSH2 0x880 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x371 SWAP2 SWAP1 PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x385 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x39B SWAP2 SWAP1 PUSH2 0x272F JUMP JUMPDEST PUSH2 0x886 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3B6 PUSH2 0x901 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3D9 SWAP2 SWAP1 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x918 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3EB SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x41A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x27A1 JUMP JUMPDEST PUSH2 0xA6B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x427 SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x44A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x445 SWAP2 SWAP1 PUSH2 0x28F8 JUMP JUMPDEST PUSH2 0xB20 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x457 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x460 PUSH2 0xB3F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x46D SWAP2 SWAP1 PUSH2 0x2716 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x481 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x48A PUSH2 0xB70 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x497 SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4C1 SWAP2 SWAP1 PUSH2 0x29F0 JUMP JUMPDEST PUSH2 0xB84 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4EE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E9 SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH2 0xE2B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4FB SWAP2 SWAP1 PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x518 PUSH2 0xE7E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x525 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x540 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x53B SWAP2 SWAP1 PUSH2 0x272F JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x54D SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x561 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x56A PUSH2 0xF06 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x577 SWAP2 SWAP1 PUSH2 0x2546 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x594 PUSH2 0xFA4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A1 SWAP2 SWAP1 PUSH2 0x2716 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5CB SWAP2 SWAP1 PUSH2 0x27A1 JUMP JUMPDEST PUSH2 0xFAA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5F3 SWAP2 SWAP1 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x107D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x605 SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x619 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x622 PUSH2 0x1098 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x62F SWAP2 SWAP1 PUSH2 0x2546 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x643 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x64C PUSH2 0x10D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x659 SWAP2 SWAP1 PUSH2 0x2716 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x688 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x683 SWAP2 SWAP1 PUSH2 0x272F JUMP JUMPDEST PUSH2 0x10F5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x695 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x6B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6AB SWAP2 SWAP1 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x1117 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6BD SWAP2 SWAP1 PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x738 JUMPI POP PUSH2 0x737 DUP3 PUSH2 0x11A7 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x74A PUSH2 0x1210 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x3 ADD DUP1 SLOAD PUSH2 0x75B SWAP1 PUSH2 0x2B22 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 0x787 SWAP1 PUSH2 0x2B22 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7D2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7A9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7D2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7B5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x7E6 PUSH2 0x1237 JUMP JUMPDEST PUSH2 0x7F0 DUP4 DUP4 PUSH2 0x1281 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x802 PUSH2 0x1210 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x818 PUSH2 0x1237 JUMP JUMPDEST PUSH2 0x823 DUP5 DUP5 DUP5 PUSH2 0x12A3 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x836 PUSH2 0x12D1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x85F DUP3 PUSH2 0x82C JUMP JUMPDEST PUSH2 0x868 DUP2 PUSH2 0x12F8 JUMP JUMPDEST PUSH2 0x872 DUP4 DUP4 PUSH2 0x130C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x32 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x88E PUSH2 0x1404 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6697B23200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8FC DUP3 DUP3 PUSH2 0x140B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH0 SHL PUSH2 0x90D DUP2 PUSH2 0x12F8 JUMP JUMPDEST PUSH2 0x915 PUSH2 0x1503 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0x943 DUP2 PUSH2 0x12F8 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x9B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A8 SWAP1 PUSH2 0x2B9C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x32 SLOAD DUP4 PUSH2 0x9BD PUSH2 0x7F8 JUMP JUMPDEST PUSH2 0x9C7 SWAP2 SWAP1 PUSH2 0x2BE7 JUMP JUMPDEST GT ISZERO PUSH2 0xA08 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9FF SWAP1 PUSH2 0x2C64 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA12 DUP5 DUP5 PUSH2 0x1563 JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF6798A560793A54C3BCFE86A93CDE1E73087D944C0EA20544137D4121396885 DUP5 PUSH1 0x40 MLOAD PUSH2 0xA58 SWAP2 SWAP1 PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA74 PUSH2 0x1237 JUMP JUMPDEST DUP2 PUSH2 0xA7E CALLER PUSH2 0xE2B JUMP JUMPDEST LT ISZERO PUSH2 0xABF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAB6 SWAP1 PUSH2 0x2CCC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAC9 CALLER DUP4 PUSH2 0x15E2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCC16F5DBB4873280815C1EE09DBD06736CFFCC184412CF7A71A0FDB75D397CA5 DUP4 PUSH1 0x40 MLOAD PUSH2 0xB0F SWAP2 SWAP1 PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB28 PUSH2 0x1661 JUMP JUMPDEST PUSH2 0xB31 DUP3 PUSH2 0x1747 JUMP JUMPDEST PUSH2 0xB3B DUP3 DUP3 PUSH2 0x1757 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0xB48 PUSH2 0x1875 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH0 SHL SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xB8D PUSH2 0x18FC JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP PUSH0 DUP3 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH0 PUSH0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0xBD5 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0xC08 JUMPI POP PUSH0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xC16 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xC4D JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 ISZERO PUSH2 0xC9A JUMPI PUSH1 0x1 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH2 0xCA4 DUP10 DUP10 PUSH2 0x190F JUMP JUMPDEST PUSH2 0xCAC PUSH2 0x1925 JUMP JUMPDEST PUSH2 0xCB4 PUSH2 0x1937 JUMP JUMPDEST PUSH2 0xCBC PUSH2 0x1941 JUMP JUMPDEST PUSH2 0xCC8 PUSH0 PUSH0 SHL CALLER PUSH2 0x130C JUMP JUMPDEST POP PUSH2 0xCF3 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 CALLER PUSH2 0x130C JUMP JUMPDEST POP PUSH0 DUP7 GT PUSH2 0xD36 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD2D SWAP1 PUSH2 0x2D34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD3E PUSH2 0x878 JUMP JUMPDEST PUSH1 0xA PUSH2 0xD4A SWAP2 SWAP1 PUSH2 0x2E81 JUMP JUMPDEST DUP7 PUSH2 0xD55 SWAP2 SWAP1 PUSH2 0x2ECB JUMP JUMPDEST PUSH1 0x32 DUP2 SWAP1 SSTORE POP DUP6 DUP8 GT ISZERO PUSH2 0xD9E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD95 SWAP1 PUSH2 0x2F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDC6 CALLER PUSH2 0xDAA PUSH2 0x878 JUMP JUMPDEST PUSH1 0xA PUSH2 0xDB6 SWAP2 SWAP1 PUSH2 0x2E81 JUMP JUMPDEST DUP10 PUSH2 0xDC1 SWAP2 SWAP1 PUSH2 0x2ECB JUMP JUMPDEST PUSH2 0x1563 JUMP JUMPDEST DUP4 ISZERO PUSH2 0xE20 JUMPI PUSH0 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xE17 SWAP2 SWAP1 PUSH2 0x2FC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xE35 PUSH2 0x1210 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 SHL PUSH2 0xE8A DUP2 PUSH2 0x12F8 JUMP JUMPDEST PUSH2 0xE92 PUSH2 0x194B JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xE9F PUSH2 0x12D1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0xF11 PUSH2 0x1210 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x4 ADD DUP1 SLOAD PUSH2 0xF22 SWAP1 PUSH2 0x2B22 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 0xF4E SWAP1 PUSH2 0x2B22 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF99 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xF70 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF99 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xF7C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 SHL DUP2 JUMP JUMPDEST PUSH0 PUSH0 SHL PUSH2 0xFB6 DUP2 PUSH2 0x12F8 JUMP JUMPDEST PUSH2 0xFBE PUSH2 0x878 JUMP JUMPDEST PUSH1 0xA PUSH2 0xFCA SWAP2 SWAP1 PUSH2 0x2E81 JUMP JUMPDEST PUSH2 0xFD2 PUSH2 0x7F8 JUMP JUMPDEST PUSH2 0xFDC SWAP2 SWAP1 PUSH2 0x300F JUMP JUMPDEST DUP3 GT PUSH2 0x101D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1014 SWAP1 PUSH2 0x30AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1025 PUSH2 0x878 JUMP JUMPDEST PUSH1 0xA PUSH2 0x1031 SWAP2 SWAP1 PUSH2 0x2E81 JUMP JUMPDEST DUP3 PUSH2 0x103C SWAP2 SWAP1 PUSH2 0x2ECB JUMP JUMPDEST PUSH1 0x32 DUP2 SWAP1 SSTORE POP PUSH32 0x3C8EB7C49D332F4C1E4D92A27CDA93C31CC9452F7A408E0C6109FCDDBC9946EA DUP3 PUSH1 0x40 MLOAD PUSH2 0x1071 SWAP2 SWAP1 PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1086 PUSH2 0x1237 JUMP JUMPDEST PUSH2 0x1090 DUP4 DUP4 PUSH2 0x19AC JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH2 0x10FE DUP3 PUSH2 0x82C JUMP JUMPDEST PUSH2 0x1107 DUP2 PUSH2 0x12F8 JUMP JUMPDEST PUSH2 0x1111 DUP4 DUP4 PUSH2 0x140B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1121 PUSH2 0x1210 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x123F PUSH2 0xB70 JUMP JUMPDEST ISZERO PUSH2 0x127F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1276 SWAP1 PUSH2 0x3117 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x128B PUSH2 0x1404 JUMP JUMPDEST SWAP1 POP PUSH2 0x1298 DUP2 DUP6 DUP6 PUSH2 0x19CE JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x12AD PUSH2 0x1404 JUMP JUMPDEST SWAP1 POP PUSH2 0x12BA DUP6 DUP3 DUP6 PUSH2 0x19E0 JUMP JUMPDEST PUSH2 0x12C5 DUP6 DUP6 DUP6 PUSH2 0x1A73 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1309 DUP2 PUSH2 0x1304 PUSH2 0x1404 JUMP JUMPDEST PUSH2 0x1B63 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1316 PUSH2 0x12D1 JUMP JUMPDEST SWAP1 POP PUSH2 0x1322 DUP5 DUP5 PUSH2 0xE95 JUMP JUMPDEST PUSH2 0x13F9 JUMPI PUSH1 0x1 DUP2 PUSH0 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x1395 PUSH2 0x1404 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x13FE JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1415 PUSH2 0x12D1 JUMP JUMPDEST SWAP1 POP PUSH2 0x1421 DUP5 DUP5 PUSH2 0xE95 JUMP JUMPDEST ISZERO PUSH2 0x14F8 JUMPI PUSH0 DUP2 PUSH0 ADD PUSH0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 ADD PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x1494 PUSH2 0x1404 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x14FD JUMP JUMPDEST PUSH0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x150B PUSH2 0x1BB4 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA PUSH2 0x154C PUSH2 0x1404 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1559 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x15D3 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15CA SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x15DE PUSH0 DUP4 DUP4 PUSH2 0x1BFD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1652 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1649 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x165D DUP3 PUSH0 DUP4 PUSH2 0x1BFD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x170E JUMPI POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x16F5 PUSH2 0x1E2C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1745 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH0 SHL PUSH2 0x1753 DUP2 PUSH2 0x12F8 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x17BF JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17BC SWAP2 SWAP1 PUSH2 0x3171 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1800 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17F7 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH0 SHL DUP2 EQ PUSH2 0x1866 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x185D SWAP2 SWAP1 PUSH2 0x2716 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1870 DUP4 DUP4 PUSH2 0x1E7F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x18FA JUMPI PUSH1 0x40 MLOAD PUSH32 0xE07C8DBA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1906 PUSH2 0x1EF1 JUMP JUMPDEST SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x1917 PUSH2 0x1F1A JUMP JUMPDEST PUSH2 0x1921 DUP3 DUP3 PUSH2 0x1F5A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x192D PUSH2 0x1F1A JUMP JUMPDEST PUSH2 0x1935 PUSH2 0x1F96 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x193F PUSH2 0x1F1A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1949 PUSH2 0x1F1A JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1953 PUSH2 0x1237 JUMP JUMPDEST PUSH1 0x1 PUSH0 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x1995 PUSH2 0x1404 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x19A2 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x19B6 PUSH2 0x1404 JUMP JUMPDEST SWAP1 POP PUSH2 0x19C3 DUP2 DUP6 DUP6 PUSH2 0x1A73 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x19DB DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1FB8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x19EB DUP5 DUP5 PUSH2 0x1117 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x1A6D JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x1A5E JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A55 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x319C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1A6C DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x1FB8 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1AE3 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1ADA SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1B53 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B4A SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1B5E DUP4 DUP4 DUP4 PUSH2 0x1BFD JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1B6D DUP3 DUP3 PUSH2 0xE95 JUMP JUMPDEST PUSH2 0x1BB0 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH32 0xE2517D3F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BA7 SWAP3 SWAP2 SWAP1 PUSH2 0x31D1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1BBC PUSH2 0xB70 JUMP JUMPDEST PUSH2 0x1BFB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1BF2 SWAP1 PUSH2 0x3242 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0x1C06 PUSH2 0x1210 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1C5A JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x1C4E SWAP2 SWAP1 PUSH2 0x2BE7 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x1D2C JUMP JUMPDEST PUSH0 DUP2 PUSH0 ADD PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x1CE5 JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1CDC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x319C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 SUB DUP3 PUSH0 ADD PUSH0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1D75 JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0x1DC1 JUMP JUMPDEST DUP2 DUP2 PUSH0 ADD PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x1E1E SWAP2 SWAP1 PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x1E58 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH0 SHL PUSH2 0x2195 JUMP JUMPDEST PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1E88 DUP3 PUSH2 0x219E JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH0 DUP2 MLOAD GT ISZERO PUSH2 0x1EE4 JUMPI PUSH2 0x1EDE DUP3 DUP3 PUSH2 0x2267 JUMP JUMPDEST POP PUSH2 0x1EED JUMP JUMPDEST PUSH2 0x1EEC PUSH2 0x22E7 JUMP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 PUSH0 SHL SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x1F22 PUSH2 0x2323 JUMP JUMPDEST PUSH2 0x1F58 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH2 0x1F62 PUSH2 0x1F1A JUMP JUMPDEST PUSH0 PUSH2 0x1F6B PUSH2 0x1210 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 PUSH1 0x3 ADD SWAP1 DUP2 PUSH2 0x1F7E SWAP2 SWAP1 PUSH2 0x33F7 JUMP JUMPDEST POP DUP2 DUP2 PUSH1 0x4 ADD SWAP1 DUP2 PUSH2 0x1F90 SWAP2 SWAP1 PUSH2 0x33F7 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1F9E PUSH2 0x1F1A JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x1FC1 PUSH2 0x1210 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2033 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x202A SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x20A3 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x209A SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 PUSH1 0x1 ADD PUSH0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 ISZERO PUSH2 0x218E JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2185 SWAP2 SWAP1 PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE SUB PUSH2 0x21F9 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH32 0x4C9C8CE300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21F0 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x2225 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH0 SHL PUSH2 0x2195 JUMP JUMPDEST PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2290 SWAP2 SWAP1 PUSH2 0x350A JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x22C8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x22CD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x22DD DUP6 DUP4 DUP4 PUSH2 0x2341 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLVALUE GT ISZERO PUSH2 0x2321 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0x232C PUSH2 0x18FC JUMP JUMPDEST PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x2356 JUMPI PUSH2 0x2351 DUP3 PUSH2 0x23CE JUMP JUMPDEST PUSH2 0x23C6 JUMP JUMPDEST PUSH0 DUP3 MLOAD EQ DUP1 ISZERO PUSH2 0x237C JUMPI POP PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST ISZERO PUSH2 0x23BE JUMPI DUP4 PUSH1 0x40 MLOAD PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23B5 SWAP2 SWAP1 PUSH2 0x3144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 SWAP1 POP PUSH2 0x23C7 JUMP JUMPDEST JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD GT ISZERO PUSH2 0x23E0 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD6BDA27500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2457 DUP2 PUSH2 0x2423 JUMP JUMPDEST DUP2 EQ PUSH2 0x2461 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2472 DUP2 PUSH2 0x244E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x248D JUMPI PUSH2 0x248C PUSH2 0x241B JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x249A DUP5 DUP3 DUP6 ADD PUSH2 0x2464 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x24B7 DUP2 PUSH2 0x24A3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x24D0 PUSH0 DUP4 ADD DUP5 PUSH2 0x24AE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 DUP4 MCOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2518 DUP3 PUSH2 0x24D6 JUMP JUMPDEST PUSH2 0x2522 DUP2 DUP6 PUSH2 0x24E0 JUMP JUMPDEST SWAP4 POP PUSH2 0x2532 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x24F0 JUMP JUMPDEST PUSH2 0x253B DUP2 PUSH2 0x24FE JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x255E DUP2 DUP5 PUSH2 0x250E JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x258F DUP3 PUSH2 0x2566 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x259F DUP2 PUSH2 0x2585 JUMP JUMPDEST DUP2 EQ PUSH2 0x25A9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x25BA DUP2 PUSH2 0x2596 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x25D2 DUP2 PUSH2 0x25C0 JUMP JUMPDEST DUP2 EQ PUSH2 0x25DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x25ED DUP2 PUSH2 0x25C9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2609 JUMPI PUSH2 0x2608 PUSH2 0x241B JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2616 DUP6 DUP3 DUP7 ADD PUSH2 0x25AC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2627 DUP6 DUP3 DUP7 ADD PUSH2 0x25DF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x263A DUP2 PUSH2 0x25C0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2653 PUSH0 DUP4 ADD DUP5 PUSH2 0x2631 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2670 JUMPI PUSH2 0x266F PUSH2 0x241B JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x267D DUP7 DUP3 DUP8 ADD PUSH2 0x25AC JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x268E DUP7 DUP3 DUP8 ADD PUSH2 0x25AC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x269F DUP7 DUP3 DUP8 ADD PUSH2 0x25DF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26BB DUP2 PUSH2 0x26A9 JUMP JUMPDEST DUP2 EQ PUSH2 0x26C5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x26D6 DUP2 PUSH2 0x26B2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26F1 JUMPI PUSH2 0x26F0 PUSH2 0x241B JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x26FE DUP5 DUP3 DUP6 ADD PUSH2 0x26C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2710 DUP2 PUSH2 0x26A9 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2729 PUSH0 DUP4 ADD DUP5 PUSH2 0x2707 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2745 JUMPI PUSH2 0x2744 PUSH2 0x241B JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2752 DUP6 DUP3 DUP7 ADD PUSH2 0x26C8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2763 DUP6 DUP3 DUP7 ADD PUSH2 0x25AC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2782 DUP2 PUSH2 0x276D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x279B PUSH0 DUP4 ADD DUP5 PUSH2 0x2779 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27B6 JUMPI PUSH2 0x27B5 PUSH2 0x241B JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x27C3 DUP5 DUP3 DUP6 ADD PUSH2 0x25DF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x280A DUP3 PUSH2 0x24FE JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2829 JUMPI PUSH2 0x2828 PUSH2 0x27D4 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x283B PUSH2 0x2412 JUMP JUMPDEST SWAP1 POP PUSH2 0x2847 DUP3 DUP3 PUSH2 0x2801 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2866 JUMPI PUSH2 0x2865 PUSH2 0x27D4 JUMP JUMPDEST JUMPDEST PUSH2 0x286F DUP3 PUSH2 0x24FE JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x289C PUSH2 0x2897 DUP5 PUSH2 0x284C JUMP JUMPDEST PUSH2 0x2832 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x28B8 JUMPI PUSH2 0x28B7 PUSH2 0x27D0 JUMP JUMPDEST JUMPDEST PUSH2 0x28C3 DUP5 DUP3 DUP6 PUSH2 0x287C JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28DF JUMPI PUSH2 0x28DE PUSH2 0x27CC JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x28EF DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x288A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x290E JUMPI PUSH2 0x290D PUSH2 0x241B JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x291B DUP6 DUP3 DUP7 ADD PUSH2 0x25AC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x293C JUMPI PUSH2 0x293B PUSH2 0x241F JUMP JUMPDEST JUMPDEST PUSH2 0x2948 DUP6 DUP3 DUP7 ADD PUSH2 0x28CB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x296C JUMPI PUSH2 0x296B PUSH2 0x27D4 JUMP JUMPDEST JUMPDEST PUSH2 0x2975 DUP3 PUSH2 0x24FE JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2994 PUSH2 0x298F DUP5 PUSH2 0x2952 JUMP JUMPDEST PUSH2 0x2832 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x29B0 JUMPI PUSH2 0x29AF PUSH2 0x27D0 JUMP JUMPDEST JUMPDEST PUSH2 0x29BB DUP5 DUP3 DUP6 PUSH2 0x287C JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29D7 JUMPI PUSH2 0x29D6 PUSH2 0x27CC JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x29E7 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2982 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2A08 JUMPI PUSH2 0x2A07 PUSH2 0x241B JUMP JUMPDEST JUMPDEST PUSH0 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A25 JUMPI PUSH2 0x2A24 PUSH2 0x241F JUMP JUMPDEST JUMPDEST PUSH2 0x2A31 DUP8 DUP3 DUP9 ADD PUSH2 0x29C3 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A52 JUMPI PUSH2 0x2A51 PUSH2 0x241F JUMP JUMPDEST JUMPDEST PUSH2 0x2A5E DUP8 DUP3 DUP9 ADD PUSH2 0x29C3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x2A6F DUP8 DUP3 DUP9 ADD PUSH2 0x25DF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x2A80 DUP8 DUP3 DUP9 ADD PUSH2 0x25DF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AA1 JUMPI PUSH2 0x2AA0 PUSH2 0x241B JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2AAE DUP5 DUP3 DUP6 ADD PUSH2 0x25AC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2ACD JUMPI PUSH2 0x2ACC PUSH2 0x241B JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x2ADA DUP6 DUP3 DUP7 ADD PUSH2 0x25AC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2AEB DUP6 DUP3 DUP7 ADD PUSH2 0x25AC JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x2B39 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2B4C JUMPI PUSH2 0x2B4B PUSH2 0x2AF5 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E76616C696420616464726573730000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2B86 PUSH1 0xF DUP4 PUSH2 0x24E0 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B91 DUP3 PUSH2 0x2B52 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2BB3 DUP2 PUSH2 0x2B7A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x2BF1 DUP3 PUSH2 0x25C0 JUMP JUMPDEST SWAP2 POP PUSH2 0x2BFC DUP4 PUSH2 0x25C0 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2C14 JUMPI PUSH2 0x2C13 PUSH2 0x2BBA JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4578636565647320636170000000000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2C4E PUSH1 0xB DUP4 PUSH2 0x24E0 JUMP JUMPDEST SWAP2 POP PUSH2 0x2C59 DUP3 PUSH2 0x2C1A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2C7B DUP2 PUSH2 0x2C42 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x496E73756666696369656E742062616C616E6365000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2CB6 PUSH1 0x14 DUP4 PUSH2 0x24E0 JUMP JUMPDEST SWAP2 POP PUSH2 0x2CC1 DUP3 PUSH2 0x2C82 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2CE3 DUP2 PUSH2 0x2CAA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x436170206D7573742062652067726561746572207468616E2030000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2D1E PUSH1 0x1A DUP4 PUSH2 0x24E0 JUMP JUMPDEST SWAP2 POP PUSH2 0x2D29 DUP3 PUSH2 0x2CEA JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2D4B DUP2 PUSH2 0x2D12 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x1 SHR SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 DUP3 SWAP2 POP DUP4 SWAP1 POP JUMPDEST PUSH1 0x1 DUP6 GT ISZERO PUSH2 0x2DA7 JUMPI DUP1 DUP7 DIV DUP2 GT ISZERO PUSH2 0x2D83 JUMPI PUSH2 0x2D82 PUSH2 0x2BBA JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x2D92 JUMPI DUP1 DUP3 MUL SWAP2 POP JUMPDEST DUP1 DUP2 MUL SWAP1 POP PUSH2 0x2DA0 DUP6 PUSH2 0x2D52 JUMP JUMPDEST SWAP5 POP PUSH2 0x2D67 JUMP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x2DBF JUMPI PUSH1 0x1 SWAP1 POP PUSH2 0x2E7A JUMP JUMPDEST DUP2 PUSH2 0x2DCC JUMPI PUSH0 SWAP1 POP PUSH2 0x2E7A JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x2DE2 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x2DEC JUMPI PUSH2 0x2E1B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x2E7A JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x2DFE JUMPI PUSH2 0x2DFD PUSH2 0x2BBA JUMP JUMPDEST JUMPDEST DUP4 PUSH1 0x2 EXP SWAP2 POP DUP5 DUP3 GT ISZERO PUSH2 0x2E15 JUMPI PUSH2 0x2E14 PUSH2 0x2BBA JUMP JUMPDEST JUMPDEST POP PUSH2 0x2E7A JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x2E50 JUMPI DUP3 DUP3 EXP SWAP1 POP DUP4 DUP2 GT ISZERO PUSH2 0x2E4B JUMPI PUSH2 0x2E4A PUSH2 0x2BBA JUMP JUMPDEST JUMPDEST PUSH2 0x2E7A JUMP JUMPDEST PUSH2 0x2E5D DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x2D5E JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP2 DUP5 DIV DUP2 GT ISZERO PUSH2 0x2E74 JUMPI PUSH2 0x2E73 PUSH2 0x2BBA JUMP JUMPDEST JUMPDEST DUP2 DUP2 MUL SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2E8B DUP3 PUSH2 0x25C0 JUMP JUMPDEST SWAP2 POP PUSH2 0x2E96 DUP4 PUSH2 0x276D JUMP JUMPDEST SWAP3 POP PUSH2 0x2EC3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP5 PUSH2 0x2DB0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2ED5 DUP3 PUSH2 0x25C0 JUMP JUMPDEST SWAP2 POP PUSH2 0x2EE0 DUP4 PUSH2 0x25C0 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x2EEE DUP2 PUSH2 0x25C0 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x2F05 JUMPI PUSH2 0x2F04 PUSH2 0x2BBA JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x496E697469616C20737570706C79206578636565647320636170000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2F40 PUSH1 0x1A DUP4 PUSH2 0x24E0 JUMP JUMPDEST SWAP2 POP PUSH2 0x2F4B DUP3 PUSH2 0x2F0C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x2F6D DUP2 PUSH2 0x2F34 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x2FB3 PUSH2 0x2FAE PUSH2 0x2FA9 DUP5 PUSH2 0x2F74 JUMP JUMPDEST PUSH2 0x2F90 JUMP JUMPDEST PUSH2 0x2F7D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2FC3 DUP2 PUSH2 0x2F99 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2FDC PUSH0 DUP4 ADD DUP5 PUSH2 0x2FBA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x3019 DUP3 PUSH2 0x25C0 JUMP JUMPDEST SWAP2 POP PUSH2 0x3024 DUP4 PUSH2 0x25C0 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x3034 JUMPI PUSH2 0x3033 PUSH2 0x2FE2 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E657720636170206D7573742062652067726561746572207468616E20637572 PUSH0 DUP3 ADD MSTORE PUSH32 0x72656E7420737570706C79000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x3099 PUSH1 0x2B DUP4 PUSH2 0x24E0 JUMP JUMPDEST SWAP2 POP PUSH2 0x30A4 DUP3 PUSH2 0x303F JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x30C6 DUP2 PUSH2 0x308D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x3101 PUSH1 0x10 DUP4 PUSH2 0x24E0 JUMP JUMPDEST SWAP2 POP PUSH2 0x310C DUP3 PUSH2 0x30CD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x312E DUP2 PUSH2 0x30F5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x313E DUP2 PUSH2 0x2585 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3157 PUSH0 DUP4 ADD DUP5 PUSH2 0x3135 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH2 0x316B DUP2 PUSH2 0x26B2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3186 JUMPI PUSH2 0x3185 PUSH2 0x241B JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0x3193 DUP5 DUP3 DUP6 ADD PUSH2 0x315D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x31AF PUSH0 DUP4 ADD DUP7 PUSH2 0x3135 JUMP JUMPDEST PUSH2 0x31BC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2631 JUMP JUMPDEST PUSH2 0x31C9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2631 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x31E4 PUSH0 DUP4 ADD DUP6 PUSH2 0x3135 JUMP JUMPDEST PUSH2 0x31F1 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2707 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x5061757361626C653A206E6F7420706175736564000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x322C PUSH1 0x14 DUP4 PUSH2 0x24E0 JUMP JUMPDEST SWAP2 POP PUSH2 0x3237 DUP3 PUSH2 0x31F8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH0 DUP4 ADD MSTORE PUSH2 0x3259 DUP2 PUSH2 0x3220 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP DUP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x8 DUP4 MUL PUSH2 0x32BC PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x3281 JUMP JUMPDEST PUSH2 0x32C6 DUP7 DUP4 PUSH2 0x3281 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 PUSH0 PUSH2 0x32F8 PUSH2 0x32F3 PUSH2 0x32EE DUP5 PUSH2 0x25C0 JUMP JUMPDEST PUSH2 0x2F90 JUMP JUMPDEST PUSH2 0x25C0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3311 DUP4 PUSH2 0x32DE JUMP JUMPDEST PUSH2 0x3325 PUSH2 0x331D DUP3 PUSH2 0x32FF JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x328D JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x333C PUSH2 0x332D JUMP JUMPDEST PUSH2 0x3347 DUP2 DUP5 DUP5 PUSH2 0x3308 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x336A JUMPI PUSH2 0x335F PUSH0 DUP3 PUSH2 0x3334 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x334D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x33AF JUMPI PUSH2 0x3380 DUP2 PUSH2 0x3260 JUMP JUMPDEST PUSH2 0x3389 DUP5 PUSH2 0x3272 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x3398 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x33AC PUSH2 0x33A4 DUP6 PUSH2 0x3272 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x334C JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x33CF PUSH0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x33B4 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x33E7 DUP4 DUP4 PUSH2 0x33C0 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3400 DUP3 PUSH2 0x24D6 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3419 JUMPI PUSH2 0x3418 PUSH2 0x27D4 JUMP JUMPDEST JUMPDEST PUSH2 0x3423 DUP3 SLOAD PUSH2 0x2B22 JUMP JUMPDEST PUSH2 0x342E DUP3 DUP3 DUP6 PUSH2 0x336E JUMP JUMPDEST PUSH0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x345F JUMPI PUSH0 DUP5 ISZERO PUSH2 0x344D JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x3457 DUP6 DUP3 PUSH2 0x33DC JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x34BE JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x346D DUP7 PUSH2 0x3260 JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3494 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 0x346F JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x34B1 JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x34AD PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x33C0 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 PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x34E4 DUP3 PUSH2 0x34C6 JUMP JUMPDEST PUSH2 0x34EE DUP2 DUP6 PUSH2 0x34D0 JUMP JUMPDEST SWAP4 POP PUSH2 0x34FE DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x24F0 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x3515 DUP3 DUP5 PUSH2 0x34DA JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x27 0x2A 0x22 0xC5 0xE BLOCKHASH SWAP8 STATICCALL DUP13 PUSH5 0x4BF54D91CA SWAP2 PUSH14 0x86ACCDAC56663EA40C6B03D823CC BALANCE PUSH5 0x736F6C6343 STOP ADDMOD 0x1E STOP CALLER ",
"sourceMap": "452:2630:19:-:0;;;1171:4:2;1128:48;;;;;;;;;865:53:19;;;;;;;;;;889:22;:20;;;:22;;:::i;:::-;452:2630;;7709:422:1;7824:30;7857:26;:24;;;:26;;:::i;:::-;7824:59;;7898:1;:15;;;;;;;;;;;;7894:76;;;7936:23;;;;;;;;;;;;;;7894:76;8001:16;7983:34;;:1;:14;;;;;;;;;;;;:34;;;7979:146;;8050:16;8033:1;:14;;;:33;;;;;;;;;;;;;;;;;;8085:29;8097:16;8085:29;;;;;;:::i;:::-;;;;;;;;7979:146;7758:373;7709:422::o;9071:205::-;9129:30;9171:12;9186:27;:25;;;:27;;:::i;:::-;9171:42;;9256:4;9246:14;;9232:38;9071:205;:::o;8819:122::-;8887:7;3147:66;8913:21;;8906:28;;8819:122;:::o;7:101:20:-;43:7;83:18;76:5;72:30;61:41;;7:101;;;:::o;114:115::-;199:23;216:5;199:23;:::i;:::-;194:3;187:36;114:115;;:::o;235:218::-;326:4;364:2;353:9;349:18;341:26;;377:69;443:1;432:9;428:17;419:6;377:69;:::i;:::-;235:218;;;;:::o;452:2630:19:-;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@DEFAULT_ADMIN_ROLE_28": {
"entryPoint": 4004,
"id": 28,
"parameterSlots": 0,
"returnSlots": 0
},
"@MINTER_ROLE_2742": {
"entryPoint": 4305,
"id": 2742,
"parameterSlots": 0,
"returnSlots": 0
},
"@UPGRADE_INTERFACE_VERSION_654": {
"entryPoint": 4248,
"id": 654,
"parameterSlots": 0,
"returnSlots": 0
},
"@__AccessControl_init_63": {
"entryPoint": 6455,
"id": 63,
"parameterSlots": 0,
"returnSlots": 0
},
"@__ERC20_init_1008": {
"entryPoint": 6415,
"id": 1008,
"parameterSlots": 2,
"returnSlots": 0
},
"@__ERC20_init_unchained_1036": {
"entryPoint": 8026,
"id": 1036,
"parameterSlots": 2,
"returnSlots": 0
},
"@__Pausable_init_844": {
"entryPoint": 6437,
"id": 844,
"parameterSlots": 0,
"returnSlots": 0
},
"@__Pausable_init_unchained_854": {
"entryPoint": 8086,
"id": 854,
"parameterSlots": 0,
"returnSlots": 0
},
"@__UUPSUpgradeable_init_684": {
"entryPoint": 6465,
"id": 684,
"parameterSlots": 0,
"returnSlots": 0
},
"@_approve_1440": {
"entryPoint": 6606,
"id": 1440,
"parameterSlots": 3,
"returnSlots": 0
},
"@_approve_1508": {
"entryPoint": 8120,
"id": 1508,
"parameterSlots": 4,
"returnSlots": 0
},
"@_authorizeUpgrade_3046": {
"entryPoint": 5959,
"id": 3046,
"parameterSlots": 1,
"returnSlots": 0
},
"@_burn_1422": {
"entryPoint": 5602,
"id": 1422,
"parameterSlots": 2,
"returnSlots": 0
},
"@_checkInitializing_538": {
"entryPoint": 7962,
"id": 538,
"parameterSlots": 0,
"returnSlots": 0
},
"@_checkNonPayable_2187": {
"entryPoint": 8935,
"id": 2187,
"parameterSlots": 0,
"returnSlots": 0
},
"@_checkNotDelegated_760": {
"entryPoint": 6261,
"id": 760,
"parameterSlots": 0,
"returnSlots": 0
},
"@_checkProxy_744": {
"entryPoint": 5729,
"id": 744,
"parameterSlots": 0,
"returnSlots": 0
},
"@_checkRole_129": {
"entryPoint": 4856,
"id": 129,
"parameterSlots": 1,
"returnSlots": 0
},
"@_checkRole_150": {
"entryPoint": 7011,
"id": 150,
"parameterSlots": 2,
"returnSlots": 0
},
"@_getAccessControlStorage_46": {
"entryPoint": 4817,
"id": 46,
"parameterSlots": 0,
"returnSlots": 1
},
"@_getERC20Storage_992": {
"entryPoint": 4624,
"id": 992,
"parameterSlots": 0,
"returnSlots": 1
},
"@_getInitializableStorage_629": {
"entryPoint": 6396,
"id": 629,
"parameterSlots": 0,
"returnSlots": 1
},
"@_grantRole_315": {
"entryPoint": 4876,
"id": 315,
"parameterSlots": 2,
"returnSlots": 1
},
"@_initializableStorageSlot_615": {
"entryPoint": 7921,
"id": 615,
"parameterSlots": 0,
"returnSlots": 1
},
"@_isInitializing_606": {
"entryPoint": 8995,
"id": 606,
"parameterSlots": 0,
"returnSlots": 1
},
"@_mint_1389": {
"entryPoint": 5475,
"id": 1389,
"parameterSlots": 2,
"returnSlots": 0
},
"@_msgSender_1585": {
"entryPoint": 5124,
"id": 1585,
"parameterSlots": 0,
"returnSlots": 1
},
"@_pause_918": {
"entryPoint": 6475,
"id": 918,
"parameterSlots": 0,
"returnSlots": 0
},
"@_requireNotPaused_891": {
"entryPoint": 4663,
"id": 891,
"parameterSlots": 0,
"returnSlots": 0
},
"@_requirePaused_902": {
"entryPoint": 7092,
"id": 902,
"parameterSlots": 0,
"returnSlots": 0
},
"@_revert_2561": {
"entryPoint": 9166,
"id": 2561,
"parameterSlots": 1,
"returnSlots": 0
},
"@_revokeRole_361": {
"entryPoint": 5131,
"id": 361,
"parameterSlots": 2,
"returnSlots": 1
},
"@_setImplementation_1967": {
"entryPoint": 8606,
"id": 1967,
"parameterSlots": 1,
"returnSlots": 0
},
"@_spendAllowance_1556": {
"entryPoint": 6624,
"id": 1556,
"parameterSlots": 3,
"returnSlots": 0
},
"@_transfer_1264": {
"entryPoint": 6771,
"id": 1264,
"parameterSlots": 3,
"returnSlots": 0
},
"@_unpause_934": {
"entryPoint": 5379,
"id": 934,
"parameterSlots": 0,
"returnSlots": 0
},
"@_update_1356": {
"entryPoint": 7165,
"id": 1356,
"parameterSlots": 3,
"returnSlots": 0
},
"@_upgradeToAndCallUUPS_811": {
"entryPoint": 5975,
"id": 811,
"parameterSlots": 2,
"returnSlots": 0
},
"@allowance_1161": {
"entryPoint": 4375,
"id": 1161,
"parameterSlots": 2,
"returnSlots": 1
},
"@approve_1185": {
"entryPoint": 4737,
"id": 1185,
"parameterSlots": 2,
"returnSlots": 1
},
"@approve_2902": {
"entryPoint": 2013,
"id": 2902,
"parameterSlots": 2,
"returnSlots": 1
},
"@balanceOf_1113": {
"entryPoint": 3627,
"id": 1113,
"parameterSlots": 1,
"returnSlots": 1
},
"@burn_2936": {
"entryPoint": 2667,
"id": 2936,
"parameterSlots": 1,
"returnSlots": 1
},
"@cap_2744": {
"entryPoint": 2176,
"id": 2744,
"parameterSlots": 0,
"returnSlots": 0
},
"@decimals_1077": {
"entryPoint": 2168,
"id": 1077,
"parameterSlots": 0,
"returnSlots": 1
},
"@functionDelegateCall_2479": {
"entryPoint": 8807,
"id": 2479,
"parameterSlots": 2,
"returnSlots": 1
},
"@getAddressSlot_2619": {
"entryPoint": 8597,
"id": 2619,
"parameterSlots": 1,
"returnSlots": 1
},
"@getImplementation_1940": {
"entryPoint": 7724,
"id": 1940,
"parameterSlots": 0,
"returnSlots": 1
},
"@getRoleAdmin_171": {
"entryPoint": 2092,
"id": 171,
"parameterSlots": 1,
"returnSlots": 1
},
"@grantRole_190": {
"entryPoint": 2134,
"id": 190,
"parameterSlots": 2,
"returnSlots": 0
},
"@hasRole_116": {
"entryPoint": 3733,
"id": 116,
"parameterSlots": 2,
"returnSlots": 1
},
"@initialize_2842": {
"entryPoint": 2948,
"id": 2842,
"parameterSlots": 4,
"returnSlots": 0
},
"@mint_2981": {
"entryPoint": 2328,
"id": 2981,
"parameterSlots": 2,
"returnSlots": 1
},
"@name_1052": {
"entryPoint": 1855,
"id": 1052,
"parameterSlots": 0,
"returnSlots": 1
},
"@pause_2991": {
"entryPoint": 3710,
"id": 2991,
"parameterSlots": 0,
"returnSlots": 0
},
"@paused_879": {
"entryPoint": 2928,
"id": 879,
"parameterSlots": 0,
"returnSlots": 1
},
"@proxiableUUID_702": {
"entryPoint": 2879,
"id": 702,
"parameterSlots": 0,
"returnSlots": 1
},
"@renounceRole_232": {
"entryPoint": 2182,
"id": 232,
"parameterSlots": 2,
"returnSlots": 0
},
"@revokeRole_209": {
"entryPoint": 4341,
"id": 209,
"parameterSlots": 2,
"returnSlots": 0
},
"@supportsInterface_1642": {
"entryPoint": 4519,
"id": 1642,
"parameterSlots": 1,
"returnSlots": 1
},
"@supportsInterface_91": {
"entryPoint": 1734,
"id": 91,
"parameterSlots": 1,
"returnSlots": 1
},
"@symbol_1068": {
"entryPoint": 3846,
"id": 1068,
"parameterSlots": 0,
"returnSlots": 1
},
"@totalSupply_1093": {
"entryPoint": 2040,
"id": 1093,
"parameterSlots": 0,
"returnSlots": 1
},
"@transferFrom_1217": {
"entryPoint": 4771,
"id": 1217,
"parameterSlots": 3,
"returnSlots": 1
},
"@transferFrom_2883": {
"entryPoint": 2063,
"id": 2883,
"parameterSlots": 3,
"returnSlots": 1
},
"@transfer_1137": {
"entryPoint": 6572,
"id": 1137,
"parameterSlots": 2,
"returnSlots": 1
},
"@transfer_2861": {
"entryPoint": 4221,
"id": 2861,
"parameterSlots": 2,
"returnSlots": 1
},
"@unpause_3001": {
"entryPoint": 2305,
"id": 3001,
"parameterSlots": 0,
"returnSlots": 0
},
"@updateCap_3036": {
"entryPoint": 4010,
"id": 3036,
"parameterSlots": 1,
"returnSlots": 0
},
"@upgradeToAndCall_2003": {
"entryPoint": 7807,
"id": 2003,
"parameterSlots": 2,
"returnSlots": 0
},
"@upgradeToAndCall_722": {
"entryPoint": 2848,
"id": 722,
"parameterSlots": 2,
"returnSlots": 0
},
"@verifyCallResultFromTarget_2519": {
"entryPoint": 9025,
"id": 2519,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_available_length_t_bytes_memory_ptr": {
"entryPoint": 10378,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_available_length_t_string_memory_ptr": {
"entryPoint": 10626,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_address": {
"entryPoint": 9644,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes32": {
"entryPoint": 9928,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes32_fromMemory": {
"entryPoint": 12637,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes4": {
"entryPoint": 9316,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_bytes_memory_ptr": {
"entryPoint": 10443,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_string_memory_ptr": {
"entryPoint": 10691,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 9695,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address": {
"entryPoint": 10892,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_address": {
"entryPoint": 10935,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_addresst_addresst_uint256": {
"entryPoint": 9817,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_addresst_bytes_memory_ptr": {
"entryPoint": 10488,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_addresst_uint256": {
"entryPoint": 9715,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_bytes32": {
"entryPoint": 9948,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32_fromMemory": {
"entryPoint": 12657,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_bytes32t_address": {
"entryPoint": 10031,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_bytes4": {
"entryPoint": 9336,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint256t_uint256": {
"entryPoint": 10736,
"id": null,
"parameterSlots": 2,
"returnSlots": 4
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 10145,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 12597,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bool_to_t_bool_fromStack": {
"entryPoint": 9390,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes32_to_t_bytes32_fromStack": {
"entryPoint": 9991,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 13530,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_rational_1_by_1_to_t_uint64_fromStack": {
"entryPoint": 12218,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 9486,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a_to_t_string_memory_ptr_fromStack": {
"entryPoint": 12832,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226_to_t_string_memory_ptr_fromStack": {
"entryPoint": 11130,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_46d970fa77b82baee60098ee14b8367afc87d548358ef8e79dc0221f8c0e0002_to_t_string_memory_ptr_fromStack": {
"entryPoint": 12429,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5_to_t_string_memory_ptr_fromStack": {
"entryPoint": 11434,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_5e183aa048a71e5e23fea18f2a2522958a8400e3c1ab664f1955f1a074c38645_to_t_string_memory_ptr_fromStack": {
"entryPoint": 11538,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a_to_t_string_memory_ptr_fromStack": {
"entryPoint": 12533,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_7b5b5c33ebdb097d93e26e4cac29620b03bf03ccffd90e216f088d94f6f3716d_to_t_string_memory_ptr_fromStack": {
"entryPoint": 12084,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_stringliteral_b8b6f5cda2cdd2ae9d4a84fa9f23426c906d73b31e79e02f654665fe4d569d8f_to_t_string_memory_ptr_fromStack": {
"entryPoint": 11330,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 9777,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint8_to_t_uint8_fromStack": {
"entryPoint": 10105,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 13578,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 12612,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": {
"entryPoint": 12753,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": {
"entryPoint": 12700,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": 9405,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": 10006,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed": {
"entryPoint": 12233,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 9542,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 12866,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 11164,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_46d970fa77b82baee60098ee14b8367afc87d548358ef8e79dc0221f8c0e0002__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 12463,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 11468,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_5e183aa048a71e5e23fea18f2a2522958a8400e3c1ab664f1955f1a074c38645__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 11572,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 12567,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_7b5b5c33ebdb097d93e26e4cac29620b03bf03ccffd90e216f088d94f6f3716d__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 12118,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_b8b6f5cda2cdd2ae9d4a84fa9f23426c906d73b31e79e02f654665fe4d569d8f__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 11364,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 9792,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
"entryPoint": 10120,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 10290,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": 9234,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_allocation_size_t_bytes_memory_ptr": {
"entryPoint": 10316,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_allocation_size_t_string_memory_ptr": {
"entryPoint": 10578,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_dataslot_t_string_storage": {
"entryPoint": 12896,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_bytes_memory_ptr": {
"entryPoint": 13510,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 9430,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 13520,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 9440,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 11239,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_div_t_uint256": {
"entryPoint": 12303,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_exp_helper": {
"entryPoint": 11614,
"id": null,
"parameterSlots": 4,
"returnSlots": 2
},
"checked_exp_t_uint256_t_uint8": {
"entryPoint": 11905,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_exp_unsigned": {
"entryPoint": 11696,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"checked_mul_t_uint256": {
"entryPoint": 11979,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"clean_up_bytearray_end_slots_t_string_storage": {
"entryPoint": 13166,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"cleanup_t_address": {
"entryPoint": 9605,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 9379,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes32": {
"entryPoint": 9897,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bytes4": {
"entryPoint": 9251,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_rational_1_by_1": {
"entryPoint": 12148,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 9574,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 9664,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint64": {
"entryPoint": 12157,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint8": {
"entryPoint": 10093,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"clear_storage_range_t_bytes1": {
"entryPoint": 13132,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"convert_t_rational_1_by_1_to_t_uint64": {
"entryPoint": 12185,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"convert_t_uint256_to_t_uint256": {
"entryPoint": 13022,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
"entryPoint": 13303,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"copy_calldata_to_memory_with_cleanup": {
"entryPoint": 10364,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 9456,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"divide_by_32_ceil": {
"entryPoint": 12914,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_byte_array_length": {
"entryPoint": 11042,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_used_part_and_set_length_of_short_byte_array": {
"entryPoint": 13276,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"finalize_allocation": {
"entryPoint": 10241,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"identity": {
"entryPoint": 12176,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"mask_bytes_dynamic": {
"entryPoint": 13248,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 11194,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x12": {
"entryPoint": 12258,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x22": {
"entryPoint": 10997,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 10196,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"prepare_store_t_uint256": {
"entryPoint": 13055,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": {
"entryPoint": 10188,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae": {
"entryPoint": 10192,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": 9247,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 9243,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 9470,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"shift_left_dynamic": {
"entryPoint": 12929,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"shift_right_1_unsigned": {
"entryPoint": 11602,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"shift_right_unsigned_dynamic": {
"entryPoint": 13236,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"storage_set_to_zero_t_uint256": {
"entryPoint": 13108,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"store_literal_in_memory_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a": {
"entryPoint": 12792,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226": {
"entryPoint": 11090,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_46d970fa77b82baee60098ee14b8367afc87d548358ef8e79dc0221f8c0e0002": {
"entryPoint": 12351,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5": {
"entryPoint": 11394,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_5e183aa048a71e5e23fea18f2a2522958a8400e3c1ab664f1955f1a074c38645": {
"entryPoint": 11498,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a": {
"entryPoint": 12493,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_7b5b5c33ebdb097d93e26e4cac29620b03bf03ccffd90e216f088d94f6f3716d": {
"entryPoint": 12044,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"store_literal_in_memory_b8b6f5cda2cdd2ae9d4a84fa9f23426c906d73b31e79e02f654665fe4d569d8f": {
"entryPoint": 11290,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"update_byte_slice_dynamic32": {
"entryPoint": 12941,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"update_storage_value_t_uint256_to_t_uint256": {
"entryPoint": 13064,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"validator_revert_t_address": {
"entryPoint": 9622,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes32": {
"entryPoint": 9906,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_bytes4": {
"entryPoint": 9294,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 9673,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"zero_value_for_split_t_uint256": {
"entryPoint": 13101,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nativeSrc": "0:32692:20",
"nodeType": "YulBlock",
"src": "0:32692:20",
"statements": [
{
"body": {
"nativeSrc": "47:35:20",
"nodeType": "YulBlock",
"src": "47:35:20",
"statements": [
{
"nativeSrc": "57:19:20",
"nodeType": "YulAssignment",
"src": "57:19:20",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "73:2:20",
"nodeType": "YulLiteral",
"src": "73:2:20",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "67:5:20",
"nodeType": "YulIdentifier",
"src": "67:5:20"
},
"nativeSrc": "67:9:20",
"nodeType": "YulFunctionCall",
"src": "67:9:20"
},
"variableNames": [
{
"name": "memPtr",
"nativeSrc": "57:6:20",
"nodeType": "YulIdentifier",
"src": "57:6:20"
}
]
}
]
},
"name": "allocate_unbounded",
"nativeSrc": "7:75:20",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nativeSrc": "40:6:20",
"nodeType": "YulTypedName",
"src": "40:6:20",
"type": ""
}
],
"src": "7:75:20"
},
{
"body": {
"nativeSrc": "177:28:20",
"nodeType": "YulBlock",
"src": "177:28:20",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "194:1:20",
"nodeType": "YulLiteral",
"src": "194:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "197:1:20",
"nodeType": "YulLiteral",
"src": "197:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "187:6:20",
"nodeType": "YulIdentifier",
"src": "187:6:20"
},
"nativeSrc": "187:12:20",
"nodeType": "YulFunctionCall",
"src": "187:12:20"
},
"nativeSrc": "187:12:20",
"nodeType": "YulExpressionStatement",
"src": "187:12:20"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "88:117:20",
"nodeType": "YulFunctionDefinition",
"src": "88:117:20"
},
{
"body": {
"nativeSrc": "300:28:20",
"nodeType": "YulBlock",
"src": "300:28:20",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "317:1:20",
"nodeType": "YulLiteral",
"src": "317:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "320:1:20",
"nodeType": "YulLiteral",
"src": "320:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "310:6:20",
"nodeType": "YulIdentifier",
"src": "310:6:20"
},
"nativeSrc": "310:12:20",
"nodeType": "YulFunctionCall",
"src": "310:12:20"
},
"nativeSrc": "310:12:20",
"nodeType": "YulExpressionStatement",
"src": "310:12:20"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nativeSrc": "211:117:20",
"nodeType": "YulFunctionDefinition",
"src": "211:117:20"
},
{
"body": {
"nativeSrc": "378:105:20",
"nodeType": "YulBlock",
"src": "378:105:20",
"statements": [
{
"nativeSrc": "388:89:20",
"nodeType": "YulAssignment",
"src": "388:89:20",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "403:5:20",
"nodeType": "YulIdentifier",
"src": "403:5:20"
},
{
"kind": "number",
"nativeSrc": "410:66:20",
"nodeType": "YulLiteral",
"src": "410:66:20",
"type": "",
"value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
}
],
"functionName": {
"name": "and",
"nativeSrc": "399:3:20",
"nodeType": "YulIdentifier",
"src": "399:3:20"
},
"nativeSrc": "399:78:20",
"nodeType": "YulFunctionCall",
"src": "399:78:20"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "388:7:20",
"nodeType": "YulIdentifier",
"src": "388:7:20"
}
]
}
]
},
"name": "cleanup_t_bytes4",
"nativeSrc": "334:149:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "360:5:20",
"nodeType": "YulTypedName",
"src": "360:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "370:7:20",
"nodeType": "YulTypedName",
"src": "370:7:20",
"type": ""
}
],
"src": "334:149:20"
},
{
"body": {
"nativeSrc": "531:78:20",
"nodeType": "YulBlock",
"src": "531:78:20",
"statements": [
{
"body": {
"nativeSrc": "587:16:20",
"nodeType": "YulBlock",
"src": "587:16:20",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "596:1:20",
"nodeType": "YulLiteral",
"src": "596:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "599:1:20",
"nodeType": "YulLiteral",
"src": "599:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "589:6:20",
"nodeType": "YulIdentifier",
"src": "589:6:20"
},
"nativeSrc": "589:12:20",
"nodeType": "YulFunctionCall",
"src": "589:12:20"
},
"nativeSrc": "589:12:20",
"nodeType": "YulExpressionStatement",
"src": "589:12:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "554:5:20",
"nodeType": "YulIdentifier",
"src": "554:5:20"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "578:5:20",
"nodeType": "YulIdentifier",
"src": "578:5:20"
}
],
"functionName": {
"name": "cleanup_t_bytes4",
"nativeSrc": "561:16:20",
"nodeType": "YulIdentifier",
"src": "561:16:20"
},
"nativeSrc": "561:23:20",
"nodeType": "YulFunctionCall",
"src": "561:23:20"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "551:2:20",
"nodeType": "YulIdentifier",
"src": "551:2:20"
},
"nativeSrc": "551:34:20",
"nodeType": "YulFunctionCall",
"src": "551:34:20"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "544:6:20",
"nodeType": "YulIdentifier",
"src": "544:6:20"
},
"nativeSrc": "544:42:20",
"nodeType": "YulFunctionCall",
"src": "544:42:20"
},
"nativeSrc": "541:62:20",
"nodeType": "YulIf",
"src": "541:62:20"
}
]
},
"name": "validator_revert_t_bytes4",
"nativeSrc": "489:120:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "524:5:20",
"nodeType": "YulTypedName",
"src": "524:5:20",
"type": ""
}
],
"src": "489:120:20"
},
{
"body": {
"nativeSrc": "666:86:20",
"nodeType": "YulBlock",
"src": "666:86:20",
"statements": [
{
"nativeSrc": "676:29:20",
"nodeType": "YulAssignment",
"src": "676:29:20",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "698:6:20",
"nodeType": "YulIdentifier",
"src": "698:6:20"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "685:12:20",
"nodeType": "YulIdentifier",
"src": "685:12:20"
},
"nativeSrc": "685:20:20",
"nodeType": "YulFunctionCall",
"src": "685:20:20"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "676:5:20",
"nodeType": "YulIdentifier",
"src": "676:5:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nativeSrc": "740:5:20",
"nodeType": "YulIdentifier",
"src": "740:5:20"
}
],
"functionName": {
"name": "validator_revert_t_bytes4",
"nativeSrc": "714:25:20",
"nodeType": "YulIdentifier",
"src": "714:25:20"
},
"nativeSrc": "714:32:20",
"nodeType": "YulFunctionCall",
"src": "714:32:20"
},
"nativeSrc": "714:32:20",
"nodeType": "YulExpressionStatement",
"src": "714:32:20"
}
]
},
"name": "abi_decode_t_bytes4",
"nativeSrc": "615:137:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "644:6:20",
"nodeType": "YulTypedName",
"src": "644:6:20",
"type": ""
},
{
"name": "end",
"nativeSrc": "652:3:20",
"nodeType": "YulTypedName",
"src": "652:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nativeSrc": "660:5:20",
"nodeType": "YulTypedName",
"src": "660:5:20",
"type": ""
}
],
"src": "615:137:20"
},
{
"body": {
"nativeSrc": "823:262:20",
"nodeType": "YulBlock",
"src": "823:262:20",
"statements": [
{
"body": {
"nativeSrc": "869:83:20",
"nodeType": "YulBlock",
"src": "869:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "871:77:20",
"nodeType": "YulIdentifier",
"src": "871:77:20"
},
"nativeSrc": "871:79:20",
"nodeType": "YulFunctionCall",
"src": "871:79:20"
},
"nativeSrc": "871:79:20",
"nodeType": "YulExpressionStatement",
"src": "871:79:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "844:7:20",
"nodeType": "YulIdentifier",
"src": "844:7:20"
},
{
"name": "headStart",
"nativeSrc": "853:9:20",
"nodeType": "YulIdentifier",
"src": "853:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "840:3:20",
"nodeType": "YulIdentifier",
"src": "840:3:20"
},
"nativeSrc": "840:23:20",
"nodeType": "YulFunctionCall",
"src": "840:23:20"
},
{
"kind": "number",
"nativeSrc": "865:2:20",
"nodeType": "YulLiteral",
"src": "865:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "836:3:20",
"nodeType": "YulIdentifier",
"src": "836:3:20"
},
"nativeSrc": "836:32:20",
"nodeType": "YulFunctionCall",
"src": "836:32:20"
},
"nativeSrc": "833:119:20",
"nodeType": "YulIf",
"src": "833:119:20"
},
{
"nativeSrc": "962:116:20",
"nodeType": "YulBlock",
"src": "962:116:20",
"statements": [
{
"nativeSrc": "977:15:20",
"nodeType": "YulVariableDeclaration",
"src": "977:15:20",
"value": {
"kind": "number",
"nativeSrc": "991:1:20",
"nodeType": "YulLiteral",
"src": "991:1:20",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "981:6:20",
"nodeType": "YulTypedName",
"src": "981:6:20",
"type": ""
}
]
},
{
"nativeSrc": "1006:62:20",
"nodeType": "YulAssignment",
"src": "1006:62:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "1040:9:20",
"nodeType": "YulIdentifier",
"src": "1040:9:20"
},
{
"name": "offset",
"nativeSrc": "1051:6:20",
"nodeType": "YulIdentifier",
"src": "1051:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1036:3:20",
"nodeType": "YulIdentifier",
"src": "1036:3:20"
},
"nativeSrc": "1036:22:20",
"nodeType": "YulFunctionCall",
"src": "1036:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "1060:7:20",
"nodeType": "YulIdentifier",
"src": "1060:7:20"
}
],
"functionName": {
"name": "abi_decode_t_bytes4",
"nativeSrc": "1016:19:20",
"nodeType": "YulIdentifier",
"src": "1016:19:20"
},
"nativeSrc": "1016:52:20",
"nodeType": "YulFunctionCall",
"src": "1016:52:20"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "1006:6:20",
"nodeType": "YulIdentifier",
"src": "1006:6:20"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes4",
"nativeSrc": "758:327:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "793:9:20",
"nodeType": "YulTypedName",
"src": "793:9:20",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "804:7:20",
"nodeType": "YulTypedName",
"src": "804:7:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "816:6:20",
"nodeType": "YulTypedName",
"src": "816:6:20",
"type": ""
}
],
"src": "758:327:20"
},
{
"body": {
"nativeSrc": "1133:48:20",
"nodeType": "YulBlock",
"src": "1133:48:20",
"statements": [
{
"nativeSrc": "1143:32:20",
"nodeType": "YulAssignment",
"src": "1143:32:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "1168:5:20",
"nodeType": "YulIdentifier",
"src": "1168:5:20"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "1161:6:20",
"nodeType": "YulIdentifier",
"src": "1161:6:20"
},
"nativeSrc": "1161:13:20",
"nodeType": "YulFunctionCall",
"src": "1161:13:20"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "1154:6:20",
"nodeType": "YulIdentifier",
"src": "1154:6:20"
},
"nativeSrc": "1154:21:20",
"nodeType": "YulFunctionCall",
"src": "1154:21:20"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "1143:7:20",
"nodeType": "YulIdentifier",
"src": "1143:7:20"
}
]
}
]
},
"name": "cleanup_t_bool",
"nativeSrc": "1091:90:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "1115:5:20",
"nodeType": "YulTypedName",
"src": "1115:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "1125:7:20",
"nodeType": "YulTypedName",
"src": "1125:7:20",
"type": ""
}
],
"src": "1091:90:20"
},
{
"body": {
"nativeSrc": "1246:50:20",
"nodeType": "YulBlock",
"src": "1246:50:20",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "1263:3:20",
"nodeType": "YulIdentifier",
"src": "1263:3:20"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "1283:5:20",
"nodeType": "YulIdentifier",
"src": "1283:5:20"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nativeSrc": "1268:14:20",
"nodeType": "YulIdentifier",
"src": "1268:14:20"
},
"nativeSrc": "1268:21:20",
"nodeType": "YulFunctionCall",
"src": "1268:21:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1256:6:20",
"nodeType": "YulIdentifier",
"src": "1256:6:20"
},
"nativeSrc": "1256:34:20",
"nodeType": "YulFunctionCall",
"src": "1256:34:20"
},
"nativeSrc": "1256:34:20",
"nodeType": "YulExpressionStatement",
"src": "1256:34:20"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nativeSrc": "1187:109:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "1234:5:20",
"nodeType": "YulTypedName",
"src": "1234:5:20",
"type": ""
},
{
"name": "pos",
"nativeSrc": "1241:3:20",
"nodeType": "YulTypedName",
"src": "1241:3:20",
"type": ""
}
],
"src": "1187:109:20"
},
{
"body": {
"nativeSrc": "1394:118:20",
"nodeType": "YulBlock",
"src": "1394:118:20",
"statements": [
{
"nativeSrc": "1404:26:20",
"nodeType": "YulAssignment",
"src": "1404:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "1416:9:20",
"nodeType": "YulIdentifier",
"src": "1416:9:20"
},
{
"kind": "number",
"nativeSrc": "1427:2:20",
"nodeType": "YulLiteral",
"src": "1427:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1412:3:20",
"nodeType": "YulIdentifier",
"src": "1412:3:20"
},
"nativeSrc": "1412:18:20",
"nodeType": "YulFunctionCall",
"src": "1412:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "1404:4:20",
"nodeType": "YulIdentifier",
"src": "1404:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "1478:6:20",
"nodeType": "YulIdentifier",
"src": "1478:6:20"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "1491:9:20",
"nodeType": "YulIdentifier",
"src": "1491:9:20"
},
{
"kind": "number",
"nativeSrc": "1502:1:20",
"nodeType": "YulLiteral",
"src": "1502:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1487:3:20",
"nodeType": "YulIdentifier",
"src": "1487:3:20"
},
"nativeSrc": "1487:17:20",
"nodeType": "YulFunctionCall",
"src": "1487:17:20"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nativeSrc": "1440:37:20",
"nodeType": "YulIdentifier",
"src": "1440:37:20"
},
"nativeSrc": "1440:65:20",
"nodeType": "YulFunctionCall",
"src": "1440:65:20"
},
"nativeSrc": "1440:65:20",
"nodeType": "YulExpressionStatement",
"src": "1440:65:20"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nativeSrc": "1302:210:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "1366:9:20",
"nodeType": "YulTypedName",
"src": "1366:9:20",
"type": ""
},
{
"name": "value0",
"nativeSrc": "1378:6:20",
"nodeType": "YulTypedName",
"src": "1378:6:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "1389:4:20",
"nodeType": "YulTypedName",
"src": "1389:4:20",
"type": ""
}
],
"src": "1302:210:20"
},
{
"body": {
"nativeSrc": "1577:40:20",
"nodeType": "YulBlock",
"src": "1577:40:20",
"statements": [
{
"nativeSrc": "1588:22:20",
"nodeType": "YulAssignment",
"src": "1588:22:20",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "1604:5:20",
"nodeType": "YulIdentifier",
"src": "1604:5:20"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "1598:5:20",
"nodeType": "YulIdentifier",
"src": "1598:5:20"
},
"nativeSrc": "1598:12:20",
"nodeType": "YulFunctionCall",
"src": "1598:12:20"
},
"variableNames": [
{
"name": "length",
"nativeSrc": "1588:6:20",
"nodeType": "YulIdentifier",
"src": "1588:6:20"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nativeSrc": "1518:99:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "1560:5:20",
"nodeType": "YulTypedName",
"src": "1560:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nativeSrc": "1570:6:20",
"nodeType": "YulTypedName",
"src": "1570:6:20",
"type": ""
}
],
"src": "1518:99:20"
},
{
"body": {
"nativeSrc": "1719:73:20",
"nodeType": "YulBlock",
"src": "1719:73:20",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "1736:3:20",
"nodeType": "YulIdentifier",
"src": "1736:3:20"
},
{
"name": "length",
"nativeSrc": "1741:6:20",
"nodeType": "YulIdentifier",
"src": "1741:6:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1729:6:20",
"nodeType": "YulIdentifier",
"src": "1729:6:20"
},
"nativeSrc": "1729:19:20",
"nodeType": "YulFunctionCall",
"src": "1729:19:20"
},
"nativeSrc": "1729:19:20",
"nodeType": "YulExpressionStatement",
"src": "1729:19:20"
},
{
"nativeSrc": "1757:29:20",
"nodeType": "YulAssignment",
"src": "1757:29:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "1776:3:20",
"nodeType": "YulIdentifier",
"src": "1776:3:20"
},
{
"kind": "number",
"nativeSrc": "1781:4:20",
"nodeType": "YulLiteral",
"src": "1781:4:20",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1772:3:20",
"nodeType": "YulIdentifier",
"src": "1772:3:20"
},
"nativeSrc": "1772:14:20",
"nodeType": "YulFunctionCall",
"src": "1772:14:20"
},
"variableNames": [
{
"name": "updated_pos",
"nativeSrc": "1757:11:20",
"nodeType": "YulIdentifier",
"src": "1757:11:20"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "1623:169:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "1691:3:20",
"nodeType": "YulTypedName",
"src": "1691:3:20",
"type": ""
},
{
"name": "length",
"nativeSrc": "1696:6:20",
"nodeType": "YulTypedName",
"src": "1696:6:20",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nativeSrc": "1707:11:20",
"nodeType": "YulTypedName",
"src": "1707:11:20",
"type": ""
}
],
"src": "1623:169:20"
},
{
"body": {
"nativeSrc": "1860:77:20",
"nodeType": "YulBlock",
"src": "1860:77:20",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nativeSrc": "1877:3:20",
"nodeType": "YulIdentifier",
"src": "1877:3:20"
},
{
"name": "src",
"nativeSrc": "1882:3:20",
"nodeType": "YulIdentifier",
"src": "1882:3:20"
},
{
"name": "length",
"nativeSrc": "1887:6:20",
"nodeType": "YulIdentifier",
"src": "1887:6:20"
}
],
"functionName": {
"name": "mcopy",
"nativeSrc": "1871:5:20",
"nodeType": "YulIdentifier",
"src": "1871:5:20"
},
"nativeSrc": "1871:23:20",
"nodeType": "YulFunctionCall",
"src": "1871:23:20"
},
"nativeSrc": "1871:23:20",
"nodeType": "YulExpressionStatement",
"src": "1871:23:20"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nativeSrc": "1914:3:20",
"nodeType": "YulIdentifier",
"src": "1914:3:20"
},
{
"name": "length",
"nativeSrc": "1919:6:20",
"nodeType": "YulIdentifier",
"src": "1919:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "1910:3:20",
"nodeType": "YulIdentifier",
"src": "1910:3:20"
},
"nativeSrc": "1910:16:20",
"nodeType": "YulFunctionCall",
"src": "1910:16:20"
},
{
"kind": "number",
"nativeSrc": "1928:1:20",
"nodeType": "YulLiteral",
"src": "1928:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "1903:6:20",
"nodeType": "YulIdentifier",
"src": "1903:6:20"
},
"nativeSrc": "1903:27:20",
"nodeType": "YulFunctionCall",
"src": "1903:27:20"
},
"nativeSrc": "1903:27:20",
"nodeType": "YulExpressionStatement",
"src": "1903:27:20"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nativeSrc": "1798:139:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nativeSrc": "1842:3:20",
"nodeType": "YulTypedName",
"src": "1842:3:20",
"type": ""
},
{
"name": "dst",
"nativeSrc": "1847:3:20",
"nodeType": "YulTypedName",
"src": "1847:3:20",
"type": ""
},
{
"name": "length",
"nativeSrc": "1852:6:20",
"nodeType": "YulTypedName",
"src": "1852:6:20",
"type": ""
}
],
"src": "1798:139:20"
},
{
"body": {
"nativeSrc": "1991:54:20",
"nodeType": "YulBlock",
"src": "1991:54:20",
"statements": [
{
"nativeSrc": "2001:38:20",
"nodeType": "YulAssignment",
"src": "2001:38:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "2019:5:20",
"nodeType": "YulIdentifier",
"src": "2019:5:20"
},
{
"kind": "number",
"nativeSrc": "2026:2:20",
"nodeType": "YulLiteral",
"src": "2026:2:20",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2015:3:20",
"nodeType": "YulIdentifier",
"src": "2015:3:20"
},
"nativeSrc": "2015:14:20",
"nodeType": "YulFunctionCall",
"src": "2015:14:20"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "2035:2:20",
"nodeType": "YulLiteral",
"src": "2035:2:20",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nativeSrc": "2031:3:20",
"nodeType": "YulIdentifier",
"src": "2031:3:20"
},
"nativeSrc": "2031:7:20",
"nodeType": "YulFunctionCall",
"src": "2031:7:20"
}
],
"functionName": {
"name": "and",
"nativeSrc": "2011:3:20",
"nodeType": "YulIdentifier",
"src": "2011:3:20"
},
"nativeSrc": "2011:28:20",
"nodeType": "YulFunctionCall",
"src": "2011:28:20"
},
"variableNames": [
{
"name": "result",
"nativeSrc": "2001:6:20",
"nodeType": "YulIdentifier",
"src": "2001:6:20"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nativeSrc": "1943:102:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "1974:5:20",
"nodeType": "YulTypedName",
"src": "1974:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nativeSrc": "1984:6:20",
"nodeType": "YulTypedName",
"src": "1984:6:20",
"type": ""
}
],
"src": "1943:102:20"
},
{
"body": {
"nativeSrc": "2143:285:20",
"nodeType": "YulBlock",
"src": "2143:285:20",
"statements": [
{
"nativeSrc": "2153:53:20",
"nodeType": "YulVariableDeclaration",
"src": "2153:53:20",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "2200:5:20",
"nodeType": "YulIdentifier",
"src": "2200:5:20"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nativeSrc": "2167:32:20",
"nodeType": "YulIdentifier",
"src": "2167:32:20"
},
"nativeSrc": "2167:39:20",
"nodeType": "YulFunctionCall",
"src": "2167:39:20"
},
"variables": [
{
"name": "length",
"nativeSrc": "2157:6:20",
"nodeType": "YulTypedName",
"src": "2157:6:20",
"type": ""
}
]
},
{
"nativeSrc": "2215:78:20",
"nodeType": "YulAssignment",
"src": "2215:78:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "2281:3:20",
"nodeType": "YulIdentifier",
"src": "2281:3:20"
},
{
"name": "length",
"nativeSrc": "2286:6:20",
"nodeType": "YulIdentifier",
"src": "2286:6:20"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "2222:58:20",
"nodeType": "YulIdentifier",
"src": "2222:58:20"
},
"nativeSrc": "2222:71:20",
"nodeType": "YulFunctionCall",
"src": "2222:71:20"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "2215:3:20",
"nodeType": "YulIdentifier",
"src": "2215:3:20"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "2341:5:20",
"nodeType": "YulIdentifier",
"src": "2341:5:20"
},
{
"kind": "number",
"nativeSrc": "2348:4:20",
"nodeType": "YulLiteral",
"src": "2348:4:20",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2337:3:20",
"nodeType": "YulIdentifier",
"src": "2337:3:20"
},
"nativeSrc": "2337:16:20",
"nodeType": "YulFunctionCall",
"src": "2337:16:20"
},
{
"name": "pos",
"nativeSrc": "2355:3:20",
"nodeType": "YulIdentifier",
"src": "2355:3:20"
},
{
"name": "length",
"nativeSrc": "2360:6:20",
"nodeType": "YulIdentifier",
"src": "2360:6:20"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nativeSrc": "2302:34:20",
"nodeType": "YulIdentifier",
"src": "2302:34:20"
},
"nativeSrc": "2302:65:20",
"nodeType": "YulFunctionCall",
"src": "2302:65:20"
},
"nativeSrc": "2302:65:20",
"nodeType": "YulExpressionStatement",
"src": "2302:65:20"
},
{
"nativeSrc": "2376:46:20",
"nodeType": "YulAssignment",
"src": "2376:46:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "2387:3:20",
"nodeType": "YulIdentifier",
"src": "2387:3:20"
},
{
"arguments": [
{
"name": "length",
"nativeSrc": "2414:6:20",
"nodeType": "YulIdentifier",
"src": "2414:6:20"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nativeSrc": "2392:21:20",
"nodeType": "YulIdentifier",
"src": "2392:21:20"
},
"nativeSrc": "2392:29:20",
"nodeType": "YulFunctionCall",
"src": "2392:29:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2383:3:20",
"nodeType": "YulIdentifier",
"src": "2383:3:20"
},
"nativeSrc": "2383:39:20",
"nodeType": "YulFunctionCall",
"src": "2383:39:20"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "2376:3:20",
"nodeType": "YulIdentifier",
"src": "2376:3:20"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nativeSrc": "2051:377:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "2124:5:20",
"nodeType": "YulTypedName",
"src": "2124:5:20",
"type": ""
},
{
"name": "pos",
"nativeSrc": "2131:3:20",
"nodeType": "YulTypedName",
"src": "2131:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "2139:3:20",
"nodeType": "YulTypedName",
"src": "2139:3:20",
"type": ""
}
],
"src": "2051:377:20"
},
{
"body": {
"nativeSrc": "2552:195:20",
"nodeType": "YulBlock",
"src": "2552:195:20",
"statements": [
{
"nativeSrc": "2562:26:20",
"nodeType": "YulAssignment",
"src": "2562:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "2574:9:20",
"nodeType": "YulIdentifier",
"src": "2574:9:20"
},
{
"kind": "number",
"nativeSrc": "2585:2:20",
"nodeType": "YulLiteral",
"src": "2585:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2570:3:20",
"nodeType": "YulIdentifier",
"src": "2570:3:20"
},
"nativeSrc": "2570:18:20",
"nodeType": "YulFunctionCall",
"src": "2570:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "2562:4:20",
"nodeType": "YulIdentifier",
"src": "2562:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "2609:9:20",
"nodeType": "YulIdentifier",
"src": "2609:9:20"
},
{
"kind": "number",
"nativeSrc": "2620:1:20",
"nodeType": "YulLiteral",
"src": "2620:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "2605:3:20",
"nodeType": "YulIdentifier",
"src": "2605:3:20"
},
"nativeSrc": "2605:17:20",
"nodeType": "YulFunctionCall",
"src": "2605:17:20"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "2628:4:20",
"nodeType": "YulIdentifier",
"src": "2628:4:20"
},
{
"name": "headStart",
"nativeSrc": "2634:9:20",
"nodeType": "YulIdentifier",
"src": "2634:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "2624:3:20",
"nodeType": "YulIdentifier",
"src": "2624:3:20"
},
"nativeSrc": "2624:20:20",
"nodeType": "YulFunctionCall",
"src": "2624:20:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "2598:6:20",
"nodeType": "YulIdentifier",
"src": "2598:6:20"
},
"nativeSrc": "2598:47:20",
"nodeType": "YulFunctionCall",
"src": "2598:47:20"
},
"nativeSrc": "2598:47:20",
"nodeType": "YulExpressionStatement",
"src": "2598:47:20"
},
{
"nativeSrc": "2654:86:20",
"nodeType": "YulAssignment",
"src": "2654:86:20",
"value": {
"arguments": [
{
"name": "value0",
"nativeSrc": "2726:6:20",
"nodeType": "YulIdentifier",
"src": "2726:6:20"
},
{
"name": "tail",
"nativeSrc": "2735:4:20",
"nodeType": "YulIdentifier",
"src": "2735:4:20"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nativeSrc": "2662:63:20",
"nodeType": "YulIdentifier",
"src": "2662:63:20"
},
"nativeSrc": "2662:78:20",
"nodeType": "YulFunctionCall",
"src": "2662:78:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "2654:4:20",
"nodeType": "YulIdentifier",
"src": "2654:4:20"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "2434:313:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "2524:9:20",
"nodeType": "YulTypedName",
"src": "2524:9:20",
"type": ""
},
{
"name": "value0",
"nativeSrc": "2536:6:20",
"nodeType": "YulTypedName",
"src": "2536:6:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "2547:4:20",
"nodeType": "YulTypedName",
"src": "2547:4:20",
"type": ""
}
],
"src": "2434:313:20"
},
{
"body": {
"nativeSrc": "2798:81:20",
"nodeType": "YulBlock",
"src": "2798:81:20",
"statements": [
{
"nativeSrc": "2808:65:20",
"nodeType": "YulAssignment",
"src": "2808:65:20",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "2823:5:20",
"nodeType": "YulIdentifier",
"src": "2823:5:20"
},
{
"kind": "number",
"nativeSrc": "2830:42:20",
"nodeType": "YulLiteral",
"src": "2830:42:20",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nativeSrc": "2819:3:20",
"nodeType": "YulIdentifier",
"src": "2819:3:20"
},
"nativeSrc": "2819:54:20",
"nodeType": "YulFunctionCall",
"src": "2819:54:20"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "2808:7:20",
"nodeType": "YulIdentifier",
"src": "2808:7:20"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nativeSrc": "2753:126:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "2780:5:20",
"nodeType": "YulTypedName",
"src": "2780:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "2790:7:20",
"nodeType": "YulTypedName",
"src": "2790:7:20",
"type": ""
}
],
"src": "2753:126:20"
},
{
"body": {
"nativeSrc": "2930:51:20",
"nodeType": "YulBlock",
"src": "2930:51:20",
"statements": [
{
"nativeSrc": "2940:35:20",
"nodeType": "YulAssignment",
"src": "2940:35:20",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "2969:5:20",
"nodeType": "YulIdentifier",
"src": "2969:5:20"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nativeSrc": "2951:17:20",
"nodeType": "YulIdentifier",
"src": "2951:17:20"
},
"nativeSrc": "2951:24:20",
"nodeType": "YulFunctionCall",
"src": "2951:24:20"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "2940:7:20",
"nodeType": "YulIdentifier",
"src": "2940:7:20"
}
]
}
]
},
"name": "cleanup_t_address",
"nativeSrc": "2885:96:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "2912:5:20",
"nodeType": "YulTypedName",
"src": "2912:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "2922:7:20",
"nodeType": "YulTypedName",
"src": "2922:7:20",
"type": ""
}
],
"src": "2885:96:20"
},
{
"body": {
"nativeSrc": "3030:79:20",
"nodeType": "YulBlock",
"src": "3030:79:20",
"statements": [
{
"body": {
"nativeSrc": "3087:16:20",
"nodeType": "YulBlock",
"src": "3087:16:20",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3096:1:20",
"nodeType": "YulLiteral",
"src": "3096:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "3099:1:20",
"nodeType": "YulLiteral",
"src": "3099:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "3089:6:20",
"nodeType": "YulIdentifier",
"src": "3089:6:20"
},
"nativeSrc": "3089:12:20",
"nodeType": "YulFunctionCall",
"src": "3089:12:20"
},
"nativeSrc": "3089:12:20",
"nodeType": "YulExpressionStatement",
"src": "3089:12:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "3053:5:20",
"nodeType": "YulIdentifier",
"src": "3053:5:20"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "3078:5:20",
"nodeType": "YulIdentifier",
"src": "3078:5:20"
}
],
"functionName": {
"name": "cleanup_t_address",
"nativeSrc": "3060:17:20",
"nodeType": "YulIdentifier",
"src": "3060:17:20"
},
"nativeSrc": "3060:24:20",
"nodeType": "YulFunctionCall",
"src": "3060:24:20"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "3050:2:20",
"nodeType": "YulIdentifier",
"src": "3050:2:20"
},
"nativeSrc": "3050:35:20",
"nodeType": "YulFunctionCall",
"src": "3050:35:20"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "3043:6:20",
"nodeType": "YulIdentifier",
"src": "3043:6:20"
},
"nativeSrc": "3043:43:20",
"nodeType": "YulFunctionCall",
"src": "3043:43:20"
},
"nativeSrc": "3040:63:20",
"nodeType": "YulIf",
"src": "3040:63:20"
}
]
},
"name": "validator_revert_t_address",
"nativeSrc": "2987:122:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "3023:5:20",
"nodeType": "YulTypedName",
"src": "3023:5:20",
"type": ""
}
],
"src": "2987:122:20"
},
{
"body": {
"nativeSrc": "3167:87:20",
"nodeType": "YulBlock",
"src": "3167:87:20",
"statements": [
{
"nativeSrc": "3177:29:20",
"nodeType": "YulAssignment",
"src": "3177:29:20",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "3199:6:20",
"nodeType": "YulIdentifier",
"src": "3199:6:20"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "3186:12:20",
"nodeType": "YulIdentifier",
"src": "3186:12:20"
},
"nativeSrc": "3186:20:20",
"nodeType": "YulFunctionCall",
"src": "3186:20:20"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "3177:5:20",
"nodeType": "YulIdentifier",
"src": "3177:5:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nativeSrc": "3242:5:20",
"nodeType": "YulIdentifier",
"src": "3242:5:20"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nativeSrc": "3215:26:20",
"nodeType": "YulIdentifier",
"src": "3215:26:20"
},
"nativeSrc": "3215:33:20",
"nodeType": "YulFunctionCall",
"src": "3215:33:20"
},
"nativeSrc": "3215:33:20",
"nodeType": "YulExpressionStatement",
"src": "3215:33:20"
}
]
},
"name": "abi_decode_t_address",
"nativeSrc": "3115:139:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "3145:6:20",
"nodeType": "YulTypedName",
"src": "3145:6:20",
"type": ""
},
{
"name": "end",
"nativeSrc": "3153:3:20",
"nodeType": "YulTypedName",
"src": "3153:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nativeSrc": "3161:5:20",
"nodeType": "YulTypedName",
"src": "3161:5:20",
"type": ""
}
],
"src": "3115:139:20"
},
{
"body": {
"nativeSrc": "3305:32:20",
"nodeType": "YulBlock",
"src": "3305:32:20",
"statements": [
{
"nativeSrc": "3315:16:20",
"nodeType": "YulAssignment",
"src": "3315:16:20",
"value": {
"name": "value",
"nativeSrc": "3326:5:20",
"nodeType": "YulIdentifier",
"src": "3326:5:20"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "3315:7:20",
"nodeType": "YulIdentifier",
"src": "3315:7:20"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nativeSrc": "3260:77:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "3287:5:20",
"nodeType": "YulTypedName",
"src": "3287:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "3297:7:20",
"nodeType": "YulTypedName",
"src": "3297:7:20",
"type": ""
}
],
"src": "3260:77:20"
},
{
"body": {
"nativeSrc": "3386:79:20",
"nodeType": "YulBlock",
"src": "3386:79:20",
"statements": [
{
"body": {
"nativeSrc": "3443:16:20",
"nodeType": "YulBlock",
"src": "3443:16:20",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "3452:1:20",
"nodeType": "YulLiteral",
"src": "3452:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "3455:1:20",
"nodeType": "YulLiteral",
"src": "3455:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "3445:6:20",
"nodeType": "YulIdentifier",
"src": "3445:6:20"
},
"nativeSrc": "3445:12:20",
"nodeType": "YulFunctionCall",
"src": "3445:12:20"
},
"nativeSrc": "3445:12:20",
"nodeType": "YulExpressionStatement",
"src": "3445:12:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "3409:5:20",
"nodeType": "YulIdentifier",
"src": "3409:5:20"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "3434:5:20",
"nodeType": "YulIdentifier",
"src": "3434:5:20"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "3416:17:20",
"nodeType": "YulIdentifier",
"src": "3416:17:20"
},
"nativeSrc": "3416:24:20",
"nodeType": "YulFunctionCall",
"src": "3416:24:20"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "3406:2:20",
"nodeType": "YulIdentifier",
"src": "3406:2:20"
},
"nativeSrc": "3406:35:20",
"nodeType": "YulFunctionCall",
"src": "3406:35:20"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "3399:6:20",
"nodeType": "YulIdentifier",
"src": "3399:6:20"
},
"nativeSrc": "3399:43:20",
"nodeType": "YulFunctionCall",
"src": "3399:43:20"
},
"nativeSrc": "3396:63:20",
"nodeType": "YulIf",
"src": "3396:63:20"
}
]
},
"name": "validator_revert_t_uint256",
"nativeSrc": "3343:122:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "3379:5:20",
"nodeType": "YulTypedName",
"src": "3379:5:20",
"type": ""
}
],
"src": "3343:122:20"
},
{
"body": {
"nativeSrc": "3523:87:20",
"nodeType": "YulBlock",
"src": "3523:87:20",
"statements": [
{
"nativeSrc": "3533:29:20",
"nodeType": "YulAssignment",
"src": "3533:29:20",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "3555:6:20",
"nodeType": "YulIdentifier",
"src": "3555:6:20"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "3542:12:20",
"nodeType": "YulIdentifier",
"src": "3542:12:20"
},
"nativeSrc": "3542:20:20",
"nodeType": "YulFunctionCall",
"src": "3542:20:20"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "3533:5:20",
"nodeType": "YulIdentifier",
"src": "3533:5:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nativeSrc": "3598:5:20",
"nodeType": "YulIdentifier",
"src": "3598:5:20"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nativeSrc": "3571:26:20",
"nodeType": "YulIdentifier",
"src": "3571:26:20"
},
"nativeSrc": "3571:33:20",
"nodeType": "YulFunctionCall",
"src": "3571:33:20"
},
"nativeSrc": "3571:33:20",
"nodeType": "YulExpressionStatement",
"src": "3571:33:20"
}
]
},
"name": "abi_decode_t_uint256",
"nativeSrc": "3471:139:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "3501:6:20",
"nodeType": "YulTypedName",
"src": "3501:6:20",
"type": ""
},
{
"name": "end",
"nativeSrc": "3509:3:20",
"nodeType": "YulTypedName",
"src": "3509:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nativeSrc": "3517:5:20",
"nodeType": "YulTypedName",
"src": "3517:5:20",
"type": ""
}
],
"src": "3471:139:20"
},
{
"body": {
"nativeSrc": "3699:391:20",
"nodeType": "YulBlock",
"src": "3699:391:20",
"statements": [
{
"body": {
"nativeSrc": "3745:83:20",
"nodeType": "YulBlock",
"src": "3745:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "3747:77:20",
"nodeType": "YulIdentifier",
"src": "3747:77:20"
},
"nativeSrc": "3747:79:20",
"nodeType": "YulFunctionCall",
"src": "3747:79:20"
},
"nativeSrc": "3747:79:20",
"nodeType": "YulExpressionStatement",
"src": "3747:79:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "3720:7:20",
"nodeType": "YulIdentifier",
"src": "3720:7:20"
},
{
"name": "headStart",
"nativeSrc": "3729:9:20",
"nodeType": "YulIdentifier",
"src": "3729:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "3716:3:20",
"nodeType": "YulIdentifier",
"src": "3716:3:20"
},
"nativeSrc": "3716:23:20",
"nodeType": "YulFunctionCall",
"src": "3716:23:20"
},
{
"kind": "number",
"nativeSrc": "3741:2:20",
"nodeType": "YulLiteral",
"src": "3741:2:20",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "3712:3:20",
"nodeType": "YulIdentifier",
"src": "3712:3:20"
},
"nativeSrc": "3712:32:20",
"nodeType": "YulFunctionCall",
"src": "3712:32:20"
},
"nativeSrc": "3709:119:20",
"nodeType": "YulIf",
"src": "3709:119:20"
},
{
"nativeSrc": "3838:117:20",
"nodeType": "YulBlock",
"src": "3838:117:20",
"statements": [
{
"nativeSrc": "3853:15:20",
"nodeType": "YulVariableDeclaration",
"src": "3853:15:20",
"value": {
"kind": "number",
"nativeSrc": "3867:1:20",
"nodeType": "YulLiteral",
"src": "3867:1:20",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "3857:6:20",
"nodeType": "YulTypedName",
"src": "3857:6:20",
"type": ""
}
]
},
{
"nativeSrc": "3882:63:20",
"nodeType": "YulAssignment",
"src": "3882:63:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "3917:9:20",
"nodeType": "YulIdentifier",
"src": "3917:9:20"
},
{
"name": "offset",
"nativeSrc": "3928:6:20",
"nodeType": "YulIdentifier",
"src": "3928:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "3913:3:20",
"nodeType": "YulIdentifier",
"src": "3913:3:20"
},
"nativeSrc": "3913:22:20",
"nodeType": "YulFunctionCall",
"src": "3913:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "3937:7:20",
"nodeType": "YulIdentifier",
"src": "3937:7:20"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "3892:20:20",
"nodeType": "YulIdentifier",
"src": "3892:20:20"
},
"nativeSrc": "3892:53:20",
"nodeType": "YulFunctionCall",
"src": "3892:53:20"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "3882:6:20",
"nodeType": "YulIdentifier",
"src": "3882:6:20"
}
]
}
]
},
{
"nativeSrc": "3965:118:20",
"nodeType": "YulBlock",
"src": "3965:118:20",
"statements": [
{
"nativeSrc": "3980:16:20",
"nodeType": "YulVariableDeclaration",
"src": "3980:16:20",
"value": {
"kind": "number",
"nativeSrc": "3994:2:20",
"nodeType": "YulLiteral",
"src": "3994:2:20",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nativeSrc": "3984:6:20",
"nodeType": "YulTypedName",
"src": "3984:6:20",
"type": ""
}
]
},
{
"nativeSrc": "4010:63:20",
"nodeType": "YulAssignment",
"src": "4010:63:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "4045:9:20",
"nodeType": "YulIdentifier",
"src": "4045:9:20"
},
{
"name": "offset",
"nativeSrc": "4056:6:20",
"nodeType": "YulIdentifier",
"src": "4056:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4041:3:20",
"nodeType": "YulIdentifier",
"src": "4041:3:20"
},
"nativeSrc": "4041:22:20",
"nodeType": "YulFunctionCall",
"src": "4041:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "4065:7:20",
"nodeType": "YulIdentifier",
"src": "4065:7:20"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nativeSrc": "4020:20:20",
"nodeType": "YulIdentifier",
"src": "4020:20:20"
},
"nativeSrc": "4020:53:20",
"nodeType": "YulFunctionCall",
"src": "4020:53:20"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "4010:6:20",
"nodeType": "YulIdentifier",
"src": "4010:6:20"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256",
"nativeSrc": "3616:474:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "3661:9:20",
"nodeType": "YulTypedName",
"src": "3661:9:20",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "3672:7:20",
"nodeType": "YulTypedName",
"src": "3672:7:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "3684:6:20",
"nodeType": "YulTypedName",
"src": "3684:6:20",
"type": ""
},
{
"name": "value1",
"nativeSrc": "3692:6:20",
"nodeType": "YulTypedName",
"src": "3692:6:20",
"type": ""
}
],
"src": "3616:474:20"
},
{
"body": {
"nativeSrc": "4161:53:20",
"nodeType": "YulBlock",
"src": "4161:53:20",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "4178:3:20",
"nodeType": "YulIdentifier",
"src": "4178:3:20"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "4201:5:20",
"nodeType": "YulIdentifier",
"src": "4201:5:20"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "4183:17:20",
"nodeType": "YulIdentifier",
"src": "4183:17:20"
},
"nativeSrc": "4183:24:20",
"nodeType": "YulFunctionCall",
"src": "4183:24:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "4171:6:20",
"nodeType": "YulIdentifier",
"src": "4171:6:20"
},
"nativeSrc": "4171:37:20",
"nodeType": "YulFunctionCall",
"src": "4171:37:20"
},
"nativeSrc": "4171:37:20",
"nodeType": "YulExpressionStatement",
"src": "4171:37:20"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nativeSrc": "4096:118:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "4149:5:20",
"nodeType": "YulTypedName",
"src": "4149:5:20",
"type": ""
},
{
"name": "pos",
"nativeSrc": "4156:3:20",
"nodeType": "YulTypedName",
"src": "4156:3:20",
"type": ""
}
],
"src": "4096:118:20"
},
{
"body": {
"nativeSrc": "4318:124:20",
"nodeType": "YulBlock",
"src": "4318:124:20",
"statements": [
{
"nativeSrc": "4328:26:20",
"nodeType": "YulAssignment",
"src": "4328:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "4340:9:20",
"nodeType": "YulIdentifier",
"src": "4340:9:20"
},
{
"kind": "number",
"nativeSrc": "4351:2:20",
"nodeType": "YulLiteral",
"src": "4351:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4336:3:20",
"nodeType": "YulIdentifier",
"src": "4336:3:20"
},
"nativeSrc": "4336:18:20",
"nodeType": "YulFunctionCall",
"src": "4336:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "4328:4:20",
"nodeType": "YulIdentifier",
"src": "4328:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "4408:6:20",
"nodeType": "YulIdentifier",
"src": "4408:6:20"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "4421:9:20",
"nodeType": "YulIdentifier",
"src": "4421:9:20"
},
{
"kind": "number",
"nativeSrc": "4432:1:20",
"nodeType": "YulLiteral",
"src": "4432:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4417:3:20",
"nodeType": "YulIdentifier",
"src": "4417:3:20"
},
"nativeSrc": "4417:17:20",
"nodeType": "YulFunctionCall",
"src": "4417:17:20"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nativeSrc": "4364:43:20",
"nodeType": "YulIdentifier",
"src": "4364:43:20"
},
"nativeSrc": "4364:71:20",
"nodeType": "YulFunctionCall",
"src": "4364:71:20"
},
"nativeSrc": "4364:71:20",
"nodeType": "YulExpressionStatement",
"src": "4364:71:20"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nativeSrc": "4220:222:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "4290:9:20",
"nodeType": "YulTypedName",
"src": "4290:9:20",
"type": ""
},
{
"name": "value0",
"nativeSrc": "4302:6:20",
"nodeType": "YulTypedName",
"src": "4302:6:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "4313:4:20",
"nodeType": "YulTypedName",
"src": "4313:4:20",
"type": ""
}
],
"src": "4220:222:20"
},
{
"body": {
"nativeSrc": "4548:519:20",
"nodeType": "YulBlock",
"src": "4548:519:20",
"statements": [
{
"body": {
"nativeSrc": "4594:83:20",
"nodeType": "YulBlock",
"src": "4594:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "4596:77:20",
"nodeType": "YulIdentifier",
"src": "4596:77:20"
},
"nativeSrc": "4596:79:20",
"nodeType": "YulFunctionCall",
"src": "4596:79:20"
},
"nativeSrc": "4596:79:20",
"nodeType": "YulExpressionStatement",
"src": "4596:79:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "4569:7:20",
"nodeType": "YulIdentifier",
"src": "4569:7:20"
},
{
"name": "headStart",
"nativeSrc": "4578:9:20",
"nodeType": "YulIdentifier",
"src": "4578:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "4565:3:20",
"nodeType": "YulIdentifier",
"src": "4565:3:20"
},
"nativeSrc": "4565:23:20",
"nodeType": "YulFunctionCall",
"src": "4565:23:20"
},
{
"kind": "number",
"nativeSrc": "4590:2:20",
"nodeType": "YulLiteral",
"src": "4590:2:20",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "4561:3:20",
"nodeType": "YulIdentifier",
"src": "4561:3:20"
},
"nativeSrc": "4561:32:20",
"nodeType": "YulFunctionCall",
"src": "4561:32:20"
},
"nativeSrc": "4558:119:20",
"nodeType": "YulIf",
"src": "4558:119:20"
},
{
"nativeSrc": "4687:117:20",
"nodeType": "YulBlock",
"src": "4687:117:20",
"statements": [
{
"nativeSrc": "4702:15:20",
"nodeType": "YulVariableDeclaration",
"src": "4702:15:20",
"value": {
"kind": "number",
"nativeSrc": "4716:1:20",
"nodeType": "YulLiteral",
"src": "4716:1:20",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "4706:6:20",
"nodeType": "YulTypedName",
"src": "4706:6:20",
"type": ""
}
]
},
{
"nativeSrc": "4731:63:20",
"nodeType": "YulAssignment",
"src": "4731:63:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "4766:9:20",
"nodeType": "YulIdentifier",
"src": "4766:9:20"
},
{
"name": "offset",
"nativeSrc": "4777:6:20",
"nodeType": "YulIdentifier",
"src": "4777:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4762:3:20",
"nodeType": "YulIdentifier",
"src": "4762:3:20"
},
"nativeSrc": "4762:22:20",
"nodeType": "YulFunctionCall",
"src": "4762:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "4786:7:20",
"nodeType": "YulIdentifier",
"src": "4786:7:20"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "4741:20:20",
"nodeType": "YulIdentifier",
"src": "4741:20:20"
},
"nativeSrc": "4741:53:20",
"nodeType": "YulFunctionCall",
"src": "4741:53:20"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "4731:6:20",
"nodeType": "YulIdentifier",
"src": "4731:6:20"
}
]
}
]
},
{
"nativeSrc": "4814:118:20",
"nodeType": "YulBlock",
"src": "4814:118:20",
"statements": [
{
"nativeSrc": "4829:16:20",
"nodeType": "YulVariableDeclaration",
"src": "4829:16:20",
"value": {
"kind": "number",
"nativeSrc": "4843:2:20",
"nodeType": "YulLiteral",
"src": "4843:2:20",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nativeSrc": "4833:6:20",
"nodeType": "YulTypedName",
"src": "4833:6:20",
"type": ""
}
]
},
{
"nativeSrc": "4859:63:20",
"nodeType": "YulAssignment",
"src": "4859:63:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "4894:9:20",
"nodeType": "YulIdentifier",
"src": "4894:9:20"
},
{
"name": "offset",
"nativeSrc": "4905:6:20",
"nodeType": "YulIdentifier",
"src": "4905:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "4890:3:20",
"nodeType": "YulIdentifier",
"src": "4890:3:20"
},
"nativeSrc": "4890:22:20",
"nodeType": "YulFunctionCall",
"src": "4890:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "4914:7:20",
"nodeType": "YulIdentifier",
"src": "4914:7:20"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "4869:20:20",
"nodeType": "YulIdentifier",
"src": "4869:20:20"
},
"nativeSrc": "4869:53:20",
"nodeType": "YulFunctionCall",
"src": "4869:53:20"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "4859:6:20",
"nodeType": "YulIdentifier",
"src": "4859:6:20"
}
]
}
]
},
{
"nativeSrc": "4942:118:20",
"nodeType": "YulBlock",
"src": "4942:118:20",
"statements": [
{
"nativeSrc": "4957:16:20",
"nodeType": "YulVariableDeclaration",
"src": "4957:16:20",
"value": {
"kind": "number",
"nativeSrc": "4971:2:20",
"nodeType": "YulLiteral",
"src": "4971:2:20",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nativeSrc": "4961:6:20",
"nodeType": "YulTypedName",
"src": "4961:6:20",
"type": ""
}
]
},
{
"nativeSrc": "4987:63:20",
"nodeType": "YulAssignment",
"src": "4987:63:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5022:9:20",
"nodeType": "YulIdentifier",
"src": "5022:9:20"
},
{
"name": "offset",
"nativeSrc": "5033:6:20",
"nodeType": "YulIdentifier",
"src": "5033:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5018:3:20",
"nodeType": "YulIdentifier",
"src": "5018:3:20"
},
"nativeSrc": "5018:22:20",
"nodeType": "YulFunctionCall",
"src": "5018:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "5042:7:20",
"nodeType": "YulIdentifier",
"src": "5042:7:20"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nativeSrc": "4997:20:20",
"nodeType": "YulIdentifier",
"src": "4997:20:20"
},
"nativeSrc": "4997:53:20",
"nodeType": "YulFunctionCall",
"src": "4997:53:20"
},
"variableNames": [
{
"name": "value2",
"nativeSrc": "4987:6:20",
"nodeType": "YulIdentifier",
"src": "4987:6:20"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_uint256",
"nativeSrc": "4448:619:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "4502:9:20",
"nodeType": "YulTypedName",
"src": "4502:9:20",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "4513:7:20",
"nodeType": "YulTypedName",
"src": "4513:7:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "4525:6:20",
"nodeType": "YulTypedName",
"src": "4525:6:20",
"type": ""
},
{
"name": "value1",
"nativeSrc": "4533:6:20",
"nodeType": "YulTypedName",
"src": "4533:6:20",
"type": ""
},
{
"name": "value2",
"nativeSrc": "4541:6:20",
"nodeType": "YulTypedName",
"src": "4541:6:20",
"type": ""
}
],
"src": "4448:619:20"
},
{
"body": {
"nativeSrc": "5118:32:20",
"nodeType": "YulBlock",
"src": "5118:32:20",
"statements": [
{
"nativeSrc": "5128:16:20",
"nodeType": "YulAssignment",
"src": "5128:16:20",
"value": {
"name": "value",
"nativeSrc": "5139:5:20",
"nodeType": "YulIdentifier",
"src": "5139:5:20"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "5128:7:20",
"nodeType": "YulIdentifier",
"src": "5128:7:20"
}
]
}
]
},
"name": "cleanup_t_bytes32",
"nativeSrc": "5073:77:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "5100:5:20",
"nodeType": "YulTypedName",
"src": "5100:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "5110:7:20",
"nodeType": "YulTypedName",
"src": "5110:7:20",
"type": ""
}
],
"src": "5073:77:20"
},
{
"body": {
"nativeSrc": "5199:79:20",
"nodeType": "YulBlock",
"src": "5199:79:20",
"statements": [
{
"body": {
"nativeSrc": "5256:16:20",
"nodeType": "YulBlock",
"src": "5256:16:20",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "5265:1:20",
"nodeType": "YulLiteral",
"src": "5265:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "5268:1:20",
"nodeType": "YulLiteral",
"src": "5268:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "5258:6:20",
"nodeType": "YulIdentifier",
"src": "5258:6:20"
},
"nativeSrc": "5258:12:20",
"nodeType": "YulFunctionCall",
"src": "5258:12:20"
},
"nativeSrc": "5258:12:20",
"nodeType": "YulExpressionStatement",
"src": "5258:12:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "5222:5:20",
"nodeType": "YulIdentifier",
"src": "5222:5:20"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "5247:5:20",
"nodeType": "YulIdentifier",
"src": "5247:5:20"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nativeSrc": "5229:17:20",
"nodeType": "YulIdentifier",
"src": "5229:17:20"
},
"nativeSrc": "5229:24:20",
"nodeType": "YulFunctionCall",
"src": "5229:24:20"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "5219:2:20",
"nodeType": "YulIdentifier",
"src": "5219:2:20"
},
"nativeSrc": "5219:35:20",
"nodeType": "YulFunctionCall",
"src": "5219:35:20"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "5212:6:20",
"nodeType": "YulIdentifier",
"src": "5212:6:20"
},
"nativeSrc": "5212:43:20",
"nodeType": "YulFunctionCall",
"src": "5212:43:20"
},
"nativeSrc": "5209:63:20",
"nodeType": "YulIf",
"src": "5209:63:20"
}
]
},
"name": "validator_revert_t_bytes32",
"nativeSrc": "5156:122:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "5192:5:20",
"nodeType": "YulTypedName",
"src": "5192:5:20",
"type": ""
}
],
"src": "5156:122:20"
},
{
"body": {
"nativeSrc": "5336:87:20",
"nodeType": "YulBlock",
"src": "5336:87:20",
"statements": [
{
"nativeSrc": "5346:29:20",
"nodeType": "YulAssignment",
"src": "5346:29:20",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "5368:6:20",
"nodeType": "YulIdentifier",
"src": "5368:6:20"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "5355:12:20",
"nodeType": "YulIdentifier",
"src": "5355:12:20"
},
"nativeSrc": "5355:20:20",
"nodeType": "YulFunctionCall",
"src": "5355:20:20"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "5346:5:20",
"nodeType": "YulIdentifier",
"src": "5346:5:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nativeSrc": "5411:5:20",
"nodeType": "YulIdentifier",
"src": "5411:5:20"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nativeSrc": "5384:26:20",
"nodeType": "YulIdentifier",
"src": "5384:26:20"
},
"nativeSrc": "5384:33:20",
"nodeType": "YulFunctionCall",
"src": "5384:33:20"
},
"nativeSrc": "5384:33:20",
"nodeType": "YulExpressionStatement",
"src": "5384:33:20"
}
]
},
"name": "abi_decode_t_bytes32",
"nativeSrc": "5284:139:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "5314:6:20",
"nodeType": "YulTypedName",
"src": "5314:6:20",
"type": ""
},
{
"name": "end",
"nativeSrc": "5322:3:20",
"nodeType": "YulTypedName",
"src": "5322:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nativeSrc": "5330:5:20",
"nodeType": "YulTypedName",
"src": "5330:5:20",
"type": ""
}
],
"src": "5284:139:20"
},
{
"body": {
"nativeSrc": "5495:263:20",
"nodeType": "YulBlock",
"src": "5495:263:20",
"statements": [
{
"body": {
"nativeSrc": "5541:83:20",
"nodeType": "YulBlock",
"src": "5541:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "5543:77:20",
"nodeType": "YulIdentifier",
"src": "5543:77:20"
},
"nativeSrc": "5543:79:20",
"nodeType": "YulFunctionCall",
"src": "5543:79:20"
},
"nativeSrc": "5543:79:20",
"nodeType": "YulExpressionStatement",
"src": "5543:79:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "5516:7:20",
"nodeType": "YulIdentifier",
"src": "5516:7:20"
},
{
"name": "headStart",
"nativeSrc": "5525:9:20",
"nodeType": "YulIdentifier",
"src": "5525:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "5512:3:20",
"nodeType": "YulIdentifier",
"src": "5512:3:20"
},
"nativeSrc": "5512:23:20",
"nodeType": "YulFunctionCall",
"src": "5512:23:20"
},
{
"kind": "number",
"nativeSrc": "5537:2:20",
"nodeType": "YulLiteral",
"src": "5537:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "5508:3:20",
"nodeType": "YulIdentifier",
"src": "5508:3:20"
},
"nativeSrc": "5508:32:20",
"nodeType": "YulFunctionCall",
"src": "5508:32:20"
},
"nativeSrc": "5505:119:20",
"nodeType": "YulIf",
"src": "5505:119:20"
},
{
"nativeSrc": "5634:117:20",
"nodeType": "YulBlock",
"src": "5634:117:20",
"statements": [
{
"nativeSrc": "5649:15:20",
"nodeType": "YulVariableDeclaration",
"src": "5649:15:20",
"value": {
"kind": "number",
"nativeSrc": "5663:1:20",
"nodeType": "YulLiteral",
"src": "5663:1:20",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "5653:6:20",
"nodeType": "YulTypedName",
"src": "5653:6:20",
"type": ""
}
]
},
{
"nativeSrc": "5678:63:20",
"nodeType": "YulAssignment",
"src": "5678:63:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "5713:9:20",
"nodeType": "YulIdentifier",
"src": "5713:9:20"
},
{
"name": "offset",
"nativeSrc": "5724:6:20",
"nodeType": "YulIdentifier",
"src": "5724:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "5709:3:20",
"nodeType": "YulIdentifier",
"src": "5709:3:20"
},
"nativeSrc": "5709:22:20",
"nodeType": "YulFunctionCall",
"src": "5709:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "5733:7:20",
"nodeType": "YulIdentifier",
"src": "5733:7:20"
}
],
"functionName": {
"name": "abi_decode_t_bytes32",
"nativeSrc": "5688:20:20",
"nodeType": "YulIdentifier",
"src": "5688:20:20"
},
"nativeSrc": "5688:53:20",
"nodeType": "YulFunctionCall",
"src": "5688:53:20"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "5678:6:20",
"nodeType": "YulIdentifier",
"src": "5678:6:20"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32",
"nativeSrc": "5429:329:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "5465:9:20",
"nodeType": "YulTypedName",
"src": "5465:9:20",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "5476:7:20",
"nodeType": "YulTypedName",
"src": "5476:7:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "5488:6:20",
"nodeType": "YulTypedName",
"src": "5488:6:20",
"type": ""
}
],
"src": "5429:329:20"
},
{
"body": {
"nativeSrc": "5829:53:20",
"nodeType": "YulBlock",
"src": "5829:53:20",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "5846:3:20",
"nodeType": "YulIdentifier",
"src": "5846:3:20"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "5869:5:20",
"nodeType": "YulIdentifier",
"src": "5869:5:20"
}
],
"functionName": {
"name": "cleanup_t_bytes32",
"nativeSrc": "5851:17:20",
"nodeType": "YulIdentifier",
"src": "5851:17:20"
},
"nativeSrc": "5851:24:20",
"nodeType": "YulFunctionCall",
"src": "5851:24:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "5839:6:20",
"nodeType": "YulIdentifier",
"src": "5839:6:20"
},
"nativeSrc": "5839:37:20",
"nodeType": "YulFunctionCall",
"src": "5839:37:20"
},
"nativeSrc": "5839:37:20",
"nodeType": "YulExpressionStatement",
"src": "5839:37:20"
}
]
},
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nativeSrc": "5764:118:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "5817:5:20",
"nodeType": "YulTypedName",
"src": "5817:5:20",
"type": ""
},
{
"name": "pos",
"nativeSrc": "5824:3:20",
"nodeType": "YulTypedName",
"src": "5824:3:20",
"type": ""
}
],
"src": "5764:118:20"
},
{
"body": {
"nativeSrc": "5986:124:20",
"nodeType": "YulBlock",
"src": "5986:124:20",
"statements": [
{
"nativeSrc": "5996:26:20",
"nodeType": "YulAssignment",
"src": "5996:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "6008:9:20",
"nodeType": "YulIdentifier",
"src": "6008:9:20"
},
{
"kind": "number",
"nativeSrc": "6019:2:20",
"nodeType": "YulLiteral",
"src": "6019:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6004:3:20",
"nodeType": "YulIdentifier",
"src": "6004:3:20"
},
"nativeSrc": "6004:18:20",
"nodeType": "YulFunctionCall",
"src": "6004:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "5996:4:20",
"nodeType": "YulIdentifier",
"src": "5996:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "6076:6:20",
"nodeType": "YulIdentifier",
"src": "6076:6:20"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "6089:9:20",
"nodeType": "YulIdentifier",
"src": "6089:9:20"
},
{
"kind": "number",
"nativeSrc": "6100:1:20",
"nodeType": "YulLiteral",
"src": "6100:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6085:3:20",
"nodeType": "YulIdentifier",
"src": "6085:3:20"
},
"nativeSrc": "6085:17:20",
"nodeType": "YulFunctionCall",
"src": "6085:17:20"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nativeSrc": "6032:43:20",
"nodeType": "YulIdentifier",
"src": "6032:43:20"
},
"nativeSrc": "6032:71:20",
"nodeType": "YulFunctionCall",
"src": "6032:71:20"
},
"nativeSrc": "6032:71:20",
"nodeType": "YulExpressionStatement",
"src": "6032:71:20"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nativeSrc": "5888:222:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "5958:9:20",
"nodeType": "YulTypedName",
"src": "5958:9:20",
"type": ""
},
{
"name": "value0",
"nativeSrc": "5970:6:20",
"nodeType": "YulTypedName",
"src": "5970:6:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "5981:4:20",
"nodeType": "YulTypedName",
"src": "5981:4:20",
"type": ""
}
],
"src": "5888:222:20"
},
{
"body": {
"nativeSrc": "6199:391:20",
"nodeType": "YulBlock",
"src": "6199:391:20",
"statements": [
{
"body": {
"nativeSrc": "6245:83:20",
"nodeType": "YulBlock",
"src": "6245:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "6247:77:20",
"nodeType": "YulIdentifier",
"src": "6247:77:20"
},
"nativeSrc": "6247:79:20",
"nodeType": "YulFunctionCall",
"src": "6247:79:20"
},
"nativeSrc": "6247:79:20",
"nodeType": "YulExpressionStatement",
"src": "6247:79:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "6220:7:20",
"nodeType": "YulIdentifier",
"src": "6220:7:20"
},
{
"name": "headStart",
"nativeSrc": "6229:9:20",
"nodeType": "YulIdentifier",
"src": "6229:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "6216:3:20",
"nodeType": "YulIdentifier",
"src": "6216:3:20"
},
"nativeSrc": "6216:23:20",
"nodeType": "YulFunctionCall",
"src": "6216:23:20"
},
{
"kind": "number",
"nativeSrc": "6241:2:20",
"nodeType": "YulLiteral",
"src": "6241:2:20",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "6212:3:20",
"nodeType": "YulIdentifier",
"src": "6212:3:20"
},
"nativeSrc": "6212:32:20",
"nodeType": "YulFunctionCall",
"src": "6212:32:20"
},
"nativeSrc": "6209:119:20",
"nodeType": "YulIf",
"src": "6209:119:20"
},
{
"nativeSrc": "6338:117:20",
"nodeType": "YulBlock",
"src": "6338:117:20",
"statements": [
{
"nativeSrc": "6353:15:20",
"nodeType": "YulVariableDeclaration",
"src": "6353:15:20",
"value": {
"kind": "number",
"nativeSrc": "6367:1:20",
"nodeType": "YulLiteral",
"src": "6367:1:20",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "6357:6:20",
"nodeType": "YulTypedName",
"src": "6357:6:20",
"type": ""
}
]
},
{
"nativeSrc": "6382:63:20",
"nodeType": "YulAssignment",
"src": "6382:63:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "6417:9:20",
"nodeType": "YulIdentifier",
"src": "6417:9:20"
},
{
"name": "offset",
"nativeSrc": "6428:6:20",
"nodeType": "YulIdentifier",
"src": "6428:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6413:3:20",
"nodeType": "YulIdentifier",
"src": "6413:3:20"
},
"nativeSrc": "6413:22:20",
"nodeType": "YulFunctionCall",
"src": "6413:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "6437:7:20",
"nodeType": "YulIdentifier",
"src": "6437:7:20"
}
],
"functionName": {
"name": "abi_decode_t_bytes32",
"nativeSrc": "6392:20:20",
"nodeType": "YulIdentifier",
"src": "6392:20:20"
},
"nativeSrc": "6392:53:20",
"nodeType": "YulFunctionCall",
"src": "6392:53:20"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "6382:6:20",
"nodeType": "YulIdentifier",
"src": "6382:6:20"
}
]
}
]
},
{
"nativeSrc": "6465:118:20",
"nodeType": "YulBlock",
"src": "6465:118:20",
"statements": [
{
"nativeSrc": "6480:16:20",
"nodeType": "YulVariableDeclaration",
"src": "6480:16:20",
"value": {
"kind": "number",
"nativeSrc": "6494:2:20",
"nodeType": "YulLiteral",
"src": "6494:2:20",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nativeSrc": "6484:6:20",
"nodeType": "YulTypedName",
"src": "6484:6:20",
"type": ""
}
]
},
{
"nativeSrc": "6510:63:20",
"nodeType": "YulAssignment",
"src": "6510:63:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "6545:9:20",
"nodeType": "YulIdentifier",
"src": "6545:9:20"
},
{
"name": "offset",
"nativeSrc": "6556:6:20",
"nodeType": "YulIdentifier",
"src": "6556:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6541:3:20",
"nodeType": "YulIdentifier",
"src": "6541:3:20"
},
"nativeSrc": "6541:22:20",
"nodeType": "YulFunctionCall",
"src": "6541:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "6565:7:20",
"nodeType": "YulIdentifier",
"src": "6565:7:20"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "6520:20:20",
"nodeType": "YulIdentifier",
"src": "6520:20:20"
},
"nativeSrc": "6520:53:20",
"nodeType": "YulFunctionCall",
"src": "6520:53:20"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "6510:6:20",
"nodeType": "YulIdentifier",
"src": "6510:6:20"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32t_address",
"nativeSrc": "6116:474:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "6161:9:20",
"nodeType": "YulTypedName",
"src": "6161:9:20",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "6172:7:20",
"nodeType": "YulTypedName",
"src": "6172:7:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "6184:6:20",
"nodeType": "YulTypedName",
"src": "6184:6:20",
"type": ""
},
{
"name": "value1",
"nativeSrc": "6192:6:20",
"nodeType": "YulTypedName",
"src": "6192:6:20",
"type": ""
}
],
"src": "6116:474:20"
},
{
"body": {
"nativeSrc": "6639:43:20",
"nodeType": "YulBlock",
"src": "6639:43:20",
"statements": [
{
"nativeSrc": "6649:27:20",
"nodeType": "YulAssignment",
"src": "6649:27:20",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "6664:5:20",
"nodeType": "YulIdentifier",
"src": "6664:5:20"
},
{
"kind": "number",
"nativeSrc": "6671:4:20",
"nodeType": "YulLiteral",
"src": "6671:4:20",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nativeSrc": "6660:3:20",
"nodeType": "YulIdentifier",
"src": "6660:3:20"
},
"nativeSrc": "6660:16:20",
"nodeType": "YulFunctionCall",
"src": "6660:16:20"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "6649:7:20",
"nodeType": "YulIdentifier",
"src": "6649:7:20"
}
]
}
]
},
"name": "cleanup_t_uint8",
"nativeSrc": "6596:86:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "6621:5:20",
"nodeType": "YulTypedName",
"src": "6621:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "6631:7:20",
"nodeType": "YulTypedName",
"src": "6631:7:20",
"type": ""
}
],
"src": "6596:86:20"
},
{
"body": {
"nativeSrc": "6749:51:20",
"nodeType": "YulBlock",
"src": "6749:51:20",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "6766:3:20",
"nodeType": "YulIdentifier",
"src": "6766:3:20"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "6787:5:20",
"nodeType": "YulIdentifier",
"src": "6787:5:20"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nativeSrc": "6771:15:20",
"nodeType": "YulIdentifier",
"src": "6771:15:20"
},
"nativeSrc": "6771:22:20",
"nodeType": "YulFunctionCall",
"src": "6771:22:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "6759:6:20",
"nodeType": "YulIdentifier",
"src": "6759:6:20"
},
"nativeSrc": "6759:35:20",
"nodeType": "YulFunctionCall",
"src": "6759:35:20"
},
"nativeSrc": "6759:35:20",
"nodeType": "YulExpressionStatement",
"src": "6759:35:20"
}
]
},
"name": "abi_encode_t_uint8_to_t_uint8_fromStack",
"nativeSrc": "6688:112:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "6737:5:20",
"nodeType": "YulTypedName",
"src": "6737:5:20",
"type": ""
},
{
"name": "pos",
"nativeSrc": "6744:3:20",
"nodeType": "YulTypedName",
"src": "6744:3:20",
"type": ""
}
],
"src": "6688:112:20"
},
{
"body": {
"nativeSrc": "6900:120:20",
"nodeType": "YulBlock",
"src": "6900:120:20",
"statements": [
{
"nativeSrc": "6910:26:20",
"nodeType": "YulAssignment",
"src": "6910:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "6922:9:20",
"nodeType": "YulIdentifier",
"src": "6922:9:20"
},
{
"kind": "number",
"nativeSrc": "6933:2:20",
"nodeType": "YulLiteral",
"src": "6933:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6918:3:20",
"nodeType": "YulIdentifier",
"src": "6918:3:20"
},
"nativeSrc": "6918:18:20",
"nodeType": "YulFunctionCall",
"src": "6918:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "6910:4:20",
"nodeType": "YulIdentifier",
"src": "6910:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "6986:6:20",
"nodeType": "YulIdentifier",
"src": "6986:6:20"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "6999:9:20",
"nodeType": "YulIdentifier",
"src": "6999:9:20"
},
{
"kind": "number",
"nativeSrc": "7010:1:20",
"nodeType": "YulLiteral",
"src": "7010:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "6995:3:20",
"nodeType": "YulIdentifier",
"src": "6995:3:20"
},
"nativeSrc": "6995:17:20",
"nodeType": "YulFunctionCall",
"src": "6995:17:20"
}
],
"functionName": {
"name": "abi_encode_t_uint8_to_t_uint8_fromStack",
"nativeSrc": "6946:39:20",
"nodeType": "YulIdentifier",
"src": "6946:39:20"
},
"nativeSrc": "6946:67:20",
"nodeType": "YulFunctionCall",
"src": "6946:67:20"
},
"nativeSrc": "6946:67:20",
"nodeType": "YulExpressionStatement",
"src": "6946:67:20"
}
]
},
"name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
"nativeSrc": "6806:214:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "6872:9:20",
"nodeType": "YulTypedName",
"src": "6872:9:20",
"type": ""
},
{
"name": "value0",
"nativeSrc": "6884:6:20",
"nodeType": "YulTypedName",
"src": "6884:6:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "6895:4:20",
"nodeType": "YulTypedName",
"src": "6895:4:20",
"type": ""
}
],
"src": "6806:214:20"
},
{
"body": {
"nativeSrc": "7092:263:20",
"nodeType": "YulBlock",
"src": "7092:263:20",
"statements": [
{
"body": {
"nativeSrc": "7138:83:20",
"nodeType": "YulBlock",
"src": "7138:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "7140:77:20",
"nodeType": "YulIdentifier",
"src": "7140:77:20"
},
"nativeSrc": "7140:79:20",
"nodeType": "YulFunctionCall",
"src": "7140:79:20"
},
"nativeSrc": "7140:79:20",
"nodeType": "YulExpressionStatement",
"src": "7140:79:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "7113:7:20",
"nodeType": "YulIdentifier",
"src": "7113:7:20"
},
{
"name": "headStart",
"nativeSrc": "7122:9:20",
"nodeType": "YulIdentifier",
"src": "7122:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "7109:3:20",
"nodeType": "YulIdentifier",
"src": "7109:3:20"
},
"nativeSrc": "7109:23:20",
"nodeType": "YulFunctionCall",
"src": "7109:23:20"
},
{
"kind": "number",
"nativeSrc": "7134:2:20",
"nodeType": "YulLiteral",
"src": "7134:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "7105:3:20",
"nodeType": "YulIdentifier",
"src": "7105:3:20"
},
"nativeSrc": "7105:32:20",
"nodeType": "YulFunctionCall",
"src": "7105:32:20"
},
"nativeSrc": "7102:119:20",
"nodeType": "YulIf",
"src": "7102:119:20"
},
{
"nativeSrc": "7231:117:20",
"nodeType": "YulBlock",
"src": "7231:117:20",
"statements": [
{
"nativeSrc": "7246:15:20",
"nodeType": "YulVariableDeclaration",
"src": "7246:15:20",
"value": {
"kind": "number",
"nativeSrc": "7260:1:20",
"nodeType": "YulLiteral",
"src": "7260:1:20",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "7250:6:20",
"nodeType": "YulTypedName",
"src": "7250:6:20",
"type": ""
}
]
},
{
"nativeSrc": "7275:63:20",
"nodeType": "YulAssignment",
"src": "7275:63:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "7310:9:20",
"nodeType": "YulIdentifier",
"src": "7310:9:20"
},
{
"name": "offset",
"nativeSrc": "7321:6:20",
"nodeType": "YulIdentifier",
"src": "7321:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "7306:3:20",
"nodeType": "YulIdentifier",
"src": "7306:3:20"
},
"nativeSrc": "7306:22:20",
"nodeType": "YulFunctionCall",
"src": "7306:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "7330:7:20",
"nodeType": "YulIdentifier",
"src": "7330:7:20"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nativeSrc": "7285:20:20",
"nodeType": "YulIdentifier",
"src": "7285:20:20"
},
"nativeSrc": "7285:53:20",
"nodeType": "YulFunctionCall",
"src": "7285:53:20"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "7275:6:20",
"nodeType": "YulIdentifier",
"src": "7275:6:20"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nativeSrc": "7026:329:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "7062:9:20",
"nodeType": "YulTypedName",
"src": "7062:9:20",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "7073:7:20",
"nodeType": "YulTypedName",
"src": "7073:7:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "7085:6:20",
"nodeType": "YulTypedName",
"src": "7085:6:20",
"type": ""
}
],
"src": "7026:329:20"
},
{
"body": {
"nativeSrc": "7450:28:20",
"nodeType": "YulBlock",
"src": "7450:28:20",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "7467:1:20",
"nodeType": "YulLiteral",
"src": "7467:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "7470:1:20",
"nodeType": "YulLiteral",
"src": "7470:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "7460:6:20",
"nodeType": "YulIdentifier",
"src": "7460:6:20"
},
"nativeSrc": "7460:12:20",
"nodeType": "YulFunctionCall",
"src": "7460:12:20"
},
"nativeSrc": "7460:12:20",
"nodeType": "YulExpressionStatement",
"src": "7460:12:20"
}
]
},
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nativeSrc": "7361:117:20",
"nodeType": "YulFunctionDefinition",
"src": "7361:117:20"
},
{
"body": {
"nativeSrc": "7573:28:20",
"nodeType": "YulBlock",
"src": "7573:28:20",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "7590:1:20",
"nodeType": "YulLiteral",
"src": "7590:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "7593:1:20",
"nodeType": "YulLiteral",
"src": "7593:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "7583:6:20",
"nodeType": "YulIdentifier",
"src": "7583:6:20"
},
"nativeSrc": "7583:12:20",
"nodeType": "YulFunctionCall",
"src": "7583:12:20"
},
"nativeSrc": "7583:12:20",
"nodeType": "YulExpressionStatement",
"src": "7583:12:20"
}
]
},
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nativeSrc": "7484:117:20",
"nodeType": "YulFunctionDefinition",
"src": "7484:117:20"
},
{
"body": {
"nativeSrc": "7635:152:20",
"nodeType": "YulBlock",
"src": "7635:152:20",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "7652:1:20",
"nodeType": "YulLiteral",
"src": "7652:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "7655:77:20",
"nodeType": "YulLiteral",
"src": "7655:77:20",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "7645:6:20",
"nodeType": "YulIdentifier",
"src": "7645:6:20"
},
"nativeSrc": "7645:88:20",
"nodeType": "YulFunctionCall",
"src": "7645:88:20"
},
"nativeSrc": "7645:88:20",
"nodeType": "YulExpressionStatement",
"src": "7645:88:20"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "7749:1:20",
"nodeType": "YulLiteral",
"src": "7749:1:20",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "7752:4:20",
"nodeType": "YulLiteral",
"src": "7752:4:20",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "7742:6:20",
"nodeType": "YulIdentifier",
"src": "7742:6:20"
},
"nativeSrc": "7742:15:20",
"nodeType": "YulFunctionCall",
"src": "7742:15:20"
},
"nativeSrc": "7742:15:20",
"nodeType": "YulExpressionStatement",
"src": "7742:15:20"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "7773:1:20",
"nodeType": "YulLiteral",
"src": "7773:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "7776:4:20",
"nodeType": "YulLiteral",
"src": "7776:4:20",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "7766:6:20",
"nodeType": "YulIdentifier",
"src": "7766:6:20"
},
"nativeSrc": "7766:15:20",
"nodeType": "YulFunctionCall",
"src": "7766:15:20"
},
"nativeSrc": "7766:15:20",
"nodeType": "YulExpressionStatement",
"src": "7766:15:20"
}
]
},
"name": "panic_error_0x41",
"nativeSrc": "7607:180:20",
"nodeType": "YulFunctionDefinition",
"src": "7607:180:20"
},
{
"body": {
"nativeSrc": "7836:238:20",
"nodeType": "YulBlock",
"src": "7836:238:20",
"statements": [
{
"nativeSrc": "7846:58:20",
"nodeType": "YulVariableDeclaration",
"src": "7846:58:20",
"value": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "7868:6:20",
"nodeType": "YulIdentifier",
"src": "7868:6:20"
},
{
"arguments": [
{
"name": "size",
"nativeSrc": "7898:4:20",
"nodeType": "YulIdentifier",
"src": "7898:4:20"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nativeSrc": "7876:21:20",
"nodeType": "YulIdentifier",
"src": "7876:21:20"
},
"nativeSrc": "7876:27:20",
"nodeType": "YulFunctionCall",
"src": "7876:27:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "7864:3:20",
"nodeType": "YulIdentifier",
"src": "7864:3:20"
},
"nativeSrc": "7864:40:20",
"nodeType": "YulFunctionCall",
"src": "7864:40:20"
},
"variables": [
{
"name": "newFreePtr",
"nativeSrc": "7850:10:20",
"nodeType": "YulTypedName",
"src": "7850:10:20",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "8015:22:20",
"nodeType": "YulBlock",
"src": "8015:22:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "8017:16:20",
"nodeType": "YulIdentifier",
"src": "8017:16:20"
},
"nativeSrc": "8017:18:20",
"nodeType": "YulFunctionCall",
"src": "8017:18:20"
},
"nativeSrc": "8017:18:20",
"nodeType": "YulExpressionStatement",
"src": "8017:18:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "7958:10:20",
"nodeType": "YulIdentifier",
"src": "7958:10:20"
},
{
"kind": "number",
"nativeSrc": "7970:18:20",
"nodeType": "YulLiteral",
"src": "7970:18:20",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "7955:2:20",
"nodeType": "YulIdentifier",
"src": "7955:2:20"
},
"nativeSrc": "7955:34:20",
"nodeType": "YulFunctionCall",
"src": "7955:34:20"
},
{
"arguments": [
{
"name": "newFreePtr",
"nativeSrc": "7994:10:20",
"nodeType": "YulIdentifier",
"src": "7994:10:20"
},
{
"name": "memPtr",
"nativeSrc": "8006:6:20",
"nodeType": "YulIdentifier",
"src": "8006:6:20"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "7991:2:20",
"nodeType": "YulIdentifier",
"src": "7991:2:20"
},
"nativeSrc": "7991:22:20",
"nodeType": "YulFunctionCall",
"src": "7991:22:20"
}
],
"functionName": {
"name": "or",
"nativeSrc": "7952:2:20",
"nodeType": "YulIdentifier",
"src": "7952:2:20"
},
"nativeSrc": "7952:62:20",
"nodeType": "YulFunctionCall",
"src": "7952:62:20"
},
"nativeSrc": "7949:88:20",
"nodeType": "YulIf",
"src": "7949:88:20"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "8053:2:20",
"nodeType": "YulLiteral",
"src": "8053:2:20",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nativeSrc": "8057:10:20",
"nodeType": "YulIdentifier",
"src": "8057:10:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "8046:6:20",
"nodeType": "YulIdentifier",
"src": "8046:6:20"
},
"nativeSrc": "8046:22:20",
"nodeType": "YulFunctionCall",
"src": "8046:22:20"
},
"nativeSrc": "8046:22:20",
"nodeType": "YulExpressionStatement",
"src": "8046:22:20"
}
]
},
"name": "finalize_allocation",
"nativeSrc": "7793:281:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "7822:6:20",
"nodeType": "YulTypedName",
"src": "7822:6:20",
"type": ""
},
{
"name": "size",
"nativeSrc": "7830:4:20",
"nodeType": "YulTypedName",
"src": "7830:4:20",
"type": ""
}
],
"src": "7793:281:20"
},
{
"body": {
"nativeSrc": "8121:88:20",
"nodeType": "YulBlock",
"src": "8121:88:20",
"statements": [
{
"nativeSrc": "8131:30:20",
"nodeType": "YulAssignment",
"src": "8131:30:20",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nativeSrc": "8141:18:20",
"nodeType": "YulIdentifier",
"src": "8141:18:20"
},
"nativeSrc": "8141:20:20",
"nodeType": "YulFunctionCall",
"src": "8141:20:20"
},
"variableNames": [
{
"name": "memPtr",
"nativeSrc": "8131:6:20",
"nodeType": "YulIdentifier",
"src": "8131:6:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nativeSrc": "8190:6:20",
"nodeType": "YulIdentifier",
"src": "8190:6:20"
},
{
"name": "size",
"nativeSrc": "8198:4:20",
"nodeType": "YulIdentifier",
"src": "8198:4:20"
}
],
"functionName": {
"name": "finalize_allocation",
"nativeSrc": "8170:19:20",
"nodeType": "YulIdentifier",
"src": "8170:19:20"
},
"nativeSrc": "8170:33:20",
"nodeType": "YulFunctionCall",
"src": "8170:33:20"
},
"nativeSrc": "8170:33:20",
"nodeType": "YulExpressionStatement",
"src": "8170:33:20"
}
]
},
"name": "allocate_memory",
"nativeSrc": "8080:129:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nativeSrc": "8105:4:20",
"nodeType": "YulTypedName",
"src": "8105:4:20",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nativeSrc": "8114:6:20",
"nodeType": "YulTypedName",
"src": "8114:6:20",
"type": ""
}
],
"src": "8080:129:20"
},
{
"body": {
"nativeSrc": "8281:241:20",
"nodeType": "YulBlock",
"src": "8281:241:20",
"statements": [
{
"body": {
"nativeSrc": "8386:22:20",
"nodeType": "YulBlock",
"src": "8386:22:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "8388:16:20",
"nodeType": "YulIdentifier",
"src": "8388:16:20"
},
"nativeSrc": "8388:18:20",
"nodeType": "YulFunctionCall",
"src": "8388:18:20"
},
"nativeSrc": "8388:18:20",
"nodeType": "YulExpressionStatement",
"src": "8388:18:20"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nativeSrc": "8358:6:20",
"nodeType": "YulIdentifier",
"src": "8358:6:20"
},
{
"kind": "number",
"nativeSrc": "8366:18:20",
"nodeType": "YulLiteral",
"src": "8366:18:20",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "8355:2:20",
"nodeType": "YulIdentifier",
"src": "8355:2:20"
},
"nativeSrc": "8355:30:20",
"nodeType": "YulFunctionCall",
"src": "8355:30:20"
},
"nativeSrc": "8352:56:20",
"nodeType": "YulIf",
"src": "8352:56:20"
},
{
"nativeSrc": "8418:37:20",
"nodeType": "YulAssignment",
"src": "8418:37:20",
"value": {
"arguments": [
{
"name": "length",
"nativeSrc": "8448:6:20",
"nodeType": "YulIdentifier",
"src": "8448:6:20"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nativeSrc": "8426:21:20",
"nodeType": "YulIdentifier",
"src": "8426:21:20"
},
"nativeSrc": "8426:29:20",
"nodeType": "YulFunctionCall",
"src": "8426:29:20"
},
"variableNames": [
{
"name": "size",
"nativeSrc": "8418:4:20",
"nodeType": "YulIdentifier",
"src": "8418:4:20"
}
]
},
{
"nativeSrc": "8492:23:20",
"nodeType": "YulAssignment",
"src": "8492:23:20",
"value": {
"arguments": [
{
"name": "size",
"nativeSrc": "8504:4:20",
"nodeType": "YulIdentifier",
"src": "8504:4:20"
},
{
"kind": "number",
"nativeSrc": "8510:4:20",
"nodeType": "YulLiteral",
"src": "8510:4:20",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "8500:3:20",
"nodeType": "YulIdentifier",
"src": "8500:3:20"
},
"nativeSrc": "8500:15:20",
"nodeType": "YulFunctionCall",
"src": "8500:15:20"
},
"variableNames": [
{
"name": "size",
"nativeSrc": "8492:4:20",
"nodeType": "YulIdentifier",
"src": "8492:4:20"
}
]
}
]
},
"name": "array_allocation_size_t_bytes_memory_ptr",
"nativeSrc": "8215:307:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nativeSrc": "8265:6:20",
"nodeType": "YulTypedName",
"src": "8265:6:20",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nativeSrc": "8276:4:20",
"nodeType": "YulTypedName",
"src": "8276:4:20",
"type": ""
}
],
"src": "8215:307:20"
},
{
"body": {
"nativeSrc": "8592:84:20",
"nodeType": "YulBlock",
"src": "8592:84:20",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nativeSrc": "8616:3:20",
"nodeType": "YulIdentifier",
"src": "8616:3:20"
},
{
"name": "src",
"nativeSrc": "8621:3:20",
"nodeType": "YulIdentifier",
"src": "8621:3:20"
},
{
"name": "length",
"nativeSrc": "8626:6:20",
"nodeType": "YulIdentifier",
"src": "8626:6:20"
}
],
"functionName": {
"name": "calldatacopy",
"nativeSrc": "8603:12:20",
"nodeType": "YulIdentifier",
"src": "8603:12:20"
},
"nativeSrc": "8603:30:20",
"nodeType": "YulFunctionCall",
"src": "8603:30:20"
},
"nativeSrc": "8603:30:20",
"nodeType": "YulExpressionStatement",
"src": "8603:30:20"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nativeSrc": "8653:3:20",
"nodeType": "YulIdentifier",
"src": "8653:3:20"
},
{
"name": "length",
"nativeSrc": "8658:6:20",
"nodeType": "YulIdentifier",
"src": "8658:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "8649:3:20",
"nodeType": "YulIdentifier",
"src": "8649:3:20"
},
"nativeSrc": "8649:16:20",
"nodeType": "YulFunctionCall",
"src": "8649:16:20"
},
{
"kind": "number",
"nativeSrc": "8667:1:20",
"nodeType": "YulLiteral",
"src": "8667:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "8642:6:20",
"nodeType": "YulIdentifier",
"src": "8642:6:20"
},
"nativeSrc": "8642:27:20",
"nodeType": "YulFunctionCall",
"src": "8642:27:20"
},
"nativeSrc": "8642:27:20",
"nodeType": "YulExpressionStatement",
"src": "8642:27:20"
}
]
},
"name": "copy_calldata_to_memory_with_cleanup",
"nativeSrc": "8528:148:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nativeSrc": "8574:3:20",
"nodeType": "YulTypedName",
"src": "8574:3:20",
"type": ""
},
{
"name": "dst",
"nativeSrc": "8579:3:20",
"nodeType": "YulTypedName",
"src": "8579:3:20",
"type": ""
},
{
"name": "length",
"nativeSrc": "8584:6:20",
"nodeType": "YulTypedName",
"src": "8584:6:20",
"type": ""
}
],
"src": "8528:148:20"
},
{
"body": {
"nativeSrc": "8765:340:20",
"nodeType": "YulBlock",
"src": "8765:340:20",
"statements": [
{
"nativeSrc": "8775:74:20",
"nodeType": "YulAssignment",
"src": "8775:74:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nativeSrc": "8841:6:20",
"nodeType": "YulIdentifier",
"src": "8841:6:20"
}
],
"functionName": {
"name": "array_allocation_size_t_bytes_memory_ptr",
"nativeSrc": "8800:40:20",
"nodeType": "YulIdentifier",
"src": "8800:40:20"
},
"nativeSrc": "8800:48:20",
"nodeType": "YulFunctionCall",
"src": "8800:48:20"
}
],
"functionName": {
"name": "allocate_memory",
"nativeSrc": "8784:15:20",
"nodeType": "YulIdentifier",
"src": "8784:15:20"
},
"nativeSrc": "8784:65:20",
"nodeType": "YulFunctionCall",
"src": "8784:65:20"
},
"variableNames": [
{
"name": "array",
"nativeSrc": "8775:5:20",
"nodeType": "YulIdentifier",
"src": "8775:5:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nativeSrc": "8865:5:20",
"nodeType": "YulIdentifier",
"src": "8865:5:20"
},
{
"name": "length",
"nativeSrc": "8872:6:20",
"nodeType": "YulIdentifier",
"src": "8872:6:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "8858:6:20",
"nodeType": "YulIdentifier",
"src": "8858:6:20"
},
"nativeSrc": "8858:21:20",
"nodeType": "YulFunctionCall",
"src": "8858:21:20"
},
"nativeSrc": "8858:21:20",
"nodeType": "YulExpressionStatement",
"src": "8858:21:20"
},
{
"nativeSrc": "8888:27:20",
"nodeType": "YulVariableDeclaration",
"src": "8888:27:20",
"value": {
"arguments": [
{
"name": "array",
"nativeSrc": "8903:5:20",
"nodeType": "YulIdentifier",
"src": "8903:5:20"
},
{
"kind": "number",
"nativeSrc": "8910:4:20",
"nodeType": "YulLiteral",
"src": "8910:4:20",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "8899:3:20",
"nodeType": "YulIdentifier",
"src": "8899:3:20"
},
"nativeSrc": "8899:16:20",
"nodeType": "YulFunctionCall",
"src": "8899:16:20"
},
"variables": [
{
"name": "dst",
"nativeSrc": "8892:3:20",
"nodeType": "YulTypedName",
"src": "8892:3:20",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "8953:83:20",
"nodeType": "YulBlock",
"src": "8953:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nativeSrc": "8955:77:20",
"nodeType": "YulIdentifier",
"src": "8955:77:20"
},
"nativeSrc": "8955:79:20",
"nodeType": "YulFunctionCall",
"src": "8955:79:20"
},
"nativeSrc": "8955:79:20",
"nodeType": "YulExpressionStatement",
"src": "8955:79:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nativeSrc": "8934:3:20",
"nodeType": "YulIdentifier",
"src": "8934:3:20"
},
{
"name": "length",
"nativeSrc": "8939:6:20",
"nodeType": "YulIdentifier",
"src": "8939:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "8930:3:20",
"nodeType": "YulIdentifier",
"src": "8930:3:20"
},
"nativeSrc": "8930:16:20",
"nodeType": "YulFunctionCall",
"src": "8930:16:20"
},
{
"name": "end",
"nativeSrc": "8948:3:20",
"nodeType": "YulIdentifier",
"src": "8948:3:20"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "8927:2:20",
"nodeType": "YulIdentifier",
"src": "8927:2:20"
},
"nativeSrc": "8927:25:20",
"nodeType": "YulFunctionCall",
"src": "8927:25:20"
},
"nativeSrc": "8924:112:20",
"nodeType": "YulIf",
"src": "8924:112:20"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nativeSrc": "9082:3:20",
"nodeType": "YulIdentifier",
"src": "9082:3:20"
},
{
"name": "dst",
"nativeSrc": "9087:3:20",
"nodeType": "YulIdentifier",
"src": "9087:3:20"
},
{
"name": "length",
"nativeSrc": "9092:6:20",
"nodeType": "YulIdentifier",
"src": "9092:6:20"
}
],
"functionName": {
"name": "copy_calldata_to_memory_with_cleanup",
"nativeSrc": "9045:36:20",
"nodeType": "YulIdentifier",
"src": "9045:36:20"
},
"nativeSrc": "9045:54:20",
"nodeType": "YulFunctionCall",
"src": "9045:54:20"
},
"nativeSrc": "9045:54:20",
"nodeType": "YulExpressionStatement",
"src": "9045:54:20"
}
]
},
"name": "abi_decode_available_length_t_bytes_memory_ptr",
"nativeSrc": "8682:423:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nativeSrc": "8738:3:20",
"nodeType": "YulTypedName",
"src": "8738:3:20",
"type": ""
},
{
"name": "length",
"nativeSrc": "8743:6:20",
"nodeType": "YulTypedName",
"src": "8743:6:20",
"type": ""
},
{
"name": "end",
"nativeSrc": "8751:3:20",
"nodeType": "YulTypedName",
"src": "8751:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nativeSrc": "8759:5:20",
"nodeType": "YulTypedName",
"src": "8759:5:20",
"type": ""
}
],
"src": "8682:423:20"
},
{
"body": {
"nativeSrc": "9185:277:20",
"nodeType": "YulBlock",
"src": "9185:277:20",
"statements": [
{
"body": {
"nativeSrc": "9234:83:20",
"nodeType": "YulBlock",
"src": "9234:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nativeSrc": "9236:77:20",
"nodeType": "YulIdentifier",
"src": "9236:77:20"
},
"nativeSrc": "9236:79:20",
"nodeType": "YulFunctionCall",
"src": "9236:79:20"
},
"nativeSrc": "9236:79:20",
"nodeType": "YulExpressionStatement",
"src": "9236:79:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nativeSrc": "9213:6:20",
"nodeType": "YulIdentifier",
"src": "9213:6:20"
},
{
"kind": "number",
"nativeSrc": "9221:4:20",
"nodeType": "YulLiteral",
"src": "9221:4:20",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nativeSrc": "9209:3:20",
"nodeType": "YulIdentifier",
"src": "9209:3:20"
},
"nativeSrc": "9209:17:20",
"nodeType": "YulFunctionCall",
"src": "9209:17:20"
},
{
"name": "end",
"nativeSrc": "9228:3:20",
"nodeType": "YulIdentifier",
"src": "9228:3:20"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "9205:3:20",
"nodeType": "YulIdentifier",
"src": "9205:3:20"
},
"nativeSrc": "9205:27:20",
"nodeType": "YulFunctionCall",
"src": "9205:27:20"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "9198:6:20",
"nodeType": "YulIdentifier",
"src": "9198:6:20"
},
"nativeSrc": "9198:35:20",
"nodeType": "YulFunctionCall",
"src": "9198:35:20"
},
"nativeSrc": "9195:122:20",
"nodeType": "YulIf",
"src": "9195:122:20"
},
{
"nativeSrc": "9326:34:20",
"nodeType": "YulVariableDeclaration",
"src": "9326:34:20",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "9353:6:20",
"nodeType": "YulIdentifier",
"src": "9353:6:20"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "9340:12:20",
"nodeType": "YulIdentifier",
"src": "9340:12:20"
},
"nativeSrc": "9340:20:20",
"nodeType": "YulFunctionCall",
"src": "9340:20:20"
},
"variables": [
{
"name": "length",
"nativeSrc": "9330:6:20",
"nodeType": "YulTypedName",
"src": "9330:6:20",
"type": ""
}
]
},
{
"nativeSrc": "9369:87:20",
"nodeType": "YulAssignment",
"src": "9369:87:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nativeSrc": "9429:6:20",
"nodeType": "YulIdentifier",
"src": "9429:6:20"
},
{
"kind": "number",
"nativeSrc": "9437:4:20",
"nodeType": "YulLiteral",
"src": "9437:4:20",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "9425:3:20",
"nodeType": "YulIdentifier",
"src": "9425:3:20"
},
"nativeSrc": "9425:17:20",
"nodeType": "YulFunctionCall",
"src": "9425:17:20"
},
{
"name": "length",
"nativeSrc": "9444:6:20",
"nodeType": "YulIdentifier",
"src": "9444:6:20"
},
{
"name": "end",
"nativeSrc": "9452:3:20",
"nodeType": "YulIdentifier",
"src": "9452:3:20"
}
],
"functionName": {
"name": "abi_decode_available_length_t_bytes_memory_ptr",
"nativeSrc": "9378:46:20",
"nodeType": "YulIdentifier",
"src": "9378:46:20"
},
"nativeSrc": "9378:78:20",
"nodeType": "YulFunctionCall",
"src": "9378:78:20"
},
"variableNames": [
{
"name": "array",
"nativeSrc": "9369:5:20",
"nodeType": "YulIdentifier",
"src": "9369:5:20"
}
]
}
]
},
"name": "abi_decode_t_bytes_memory_ptr",
"nativeSrc": "9124:338:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "9163:6:20",
"nodeType": "YulTypedName",
"src": "9163:6:20",
"type": ""
},
{
"name": "end",
"nativeSrc": "9171:3:20",
"nodeType": "YulTypedName",
"src": "9171:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nativeSrc": "9179:5:20",
"nodeType": "YulTypedName",
"src": "9179:5:20",
"type": ""
}
],
"src": "9124:338:20"
},
{
"body": {
"nativeSrc": "9560:560:20",
"nodeType": "YulBlock",
"src": "9560:560:20",
"statements": [
{
"body": {
"nativeSrc": "9606:83:20",
"nodeType": "YulBlock",
"src": "9606:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "9608:77:20",
"nodeType": "YulIdentifier",
"src": "9608:77:20"
},
"nativeSrc": "9608:79:20",
"nodeType": "YulFunctionCall",
"src": "9608:79:20"
},
"nativeSrc": "9608:79:20",
"nodeType": "YulExpressionStatement",
"src": "9608:79:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "9581:7:20",
"nodeType": "YulIdentifier",
"src": "9581:7:20"
},
{
"name": "headStart",
"nativeSrc": "9590:9:20",
"nodeType": "YulIdentifier",
"src": "9590:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "9577:3:20",
"nodeType": "YulIdentifier",
"src": "9577:3:20"
},
"nativeSrc": "9577:23:20",
"nodeType": "YulFunctionCall",
"src": "9577:23:20"
},
{
"kind": "number",
"nativeSrc": "9602:2:20",
"nodeType": "YulLiteral",
"src": "9602:2:20",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "9573:3:20",
"nodeType": "YulIdentifier",
"src": "9573:3:20"
},
"nativeSrc": "9573:32:20",
"nodeType": "YulFunctionCall",
"src": "9573:32:20"
},
"nativeSrc": "9570:119:20",
"nodeType": "YulIf",
"src": "9570:119:20"
},
{
"nativeSrc": "9699:117:20",
"nodeType": "YulBlock",
"src": "9699:117:20",
"statements": [
{
"nativeSrc": "9714:15:20",
"nodeType": "YulVariableDeclaration",
"src": "9714:15:20",
"value": {
"kind": "number",
"nativeSrc": "9728:1:20",
"nodeType": "YulLiteral",
"src": "9728:1:20",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "9718:6:20",
"nodeType": "YulTypedName",
"src": "9718:6:20",
"type": ""
}
]
},
{
"nativeSrc": "9743:63:20",
"nodeType": "YulAssignment",
"src": "9743:63:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "9778:9:20",
"nodeType": "YulIdentifier",
"src": "9778:9:20"
},
{
"name": "offset",
"nativeSrc": "9789:6:20",
"nodeType": "YulIdentifier",
"src": "9789:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "9774:3:20",
"nodeType": "YulIdentifier",
"src": "9774:3:20"
},
"nativeSrc": "9774:22:20",
"nodeType": "YulFunctionCall",
"src": "9774:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "9798:7:20",
"nodeType": "YulIdentifier",
"src": "9798:7:20"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "9753:20:20",
"nodeType": "YulIdentifier",
"src": "9753:20:20"
},
"nativeSrc": "9753:53:20",
"nodeType": "YulFunctionCall",
"src": "9753:53:20"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "9743:6:20",
"nodeType": "YulIdentifier",
"src": "9743:6:20"
}
]
}
]
},
{
"nativeSrc": "9826:287:20",
"nodeType": "YulBlock",
"src": "9826:287:20",
"statements": [
{
"nativeSrc": "9841:46:20",
"nodeType": "YulVariableDeclaration",
"src": "9841:46:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "9872:9:20",
"nodeType": "YulIdentifier",
"src": "9872:9:20"
},
{
"kind": "number",
"nativeSrc": "9883:2:20",
"nodeType": "YulLiteral",
"src": "9883:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "9868:3:20",
"nodeType": "YulIdentifier",
"src": "9868:3:20"
},
"nativeSrc": "9868:18:20",
"nodeType": "YulFunctionCall",
"src": "9868:18:20"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "9855:12:20",
"nodeType": "YulIdentifier",
"src": "9855:12:20"
},
"nativeSrc": "9855:32:20",
"nodeType": "YulFunctionCall",
"src": "9855:32:20"
},
"variables": [
{
"name": "offset",
"nativeSrc": "9845:6:20",
"nodeType": "YulTypedName",
"src": "9845:6:20",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "9934:83:20",
"nodeType": "YulBlock",
"src": "9934:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nativeSrc": "9936:77:20",
"nodeType": "YulIdentifier",
"src": "9936:77:20"
},
"nativeSrc": "9936:79:20",
"nodeType": "YulFunctionCall",
"src": "9936:79:20"
},
"nativeSrc": "9936:79:20",
"nodeType": "YulExpressionStatement",
"src": "9936:79:20"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nativeSrc": "9906:6:20",
"nodeType": "YulIdentifier",
"src": "9906:6:20"
},
{
"kind": "number",
"nativeSrc": "9914:18:20",
"nodeType": "YulLiteral",
"src": "9914:18:20",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "9903:2:20",
"nodeType": "YulIdentifier",
"src": "9903:2:20"
},
"nativeSrc": "9903:30:20",
"nodeType": "YulFunctionCall",
"src": "9903:30:20"
},
"nativeSrc": "9900:117:20",
"nodeType": "YulIf",
"src": "9900:117:20"
},
{
"nativeSrc": "10031:72:20",
"nodeType": "YulAssignment",
"src": "10031:72:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "10075:9:20",
"nodeType": "YulIdentifier",
"src": "10075:9:20"
},
{
"name": "offset",
"nativeSrc": "10086:6:20",
"nodeType": "YulIdentifier",
"src": "10086:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "10071:3:20",
"nodeType": "YulIdentifier",
"src": "10071:3:20"
},
"nativeSrc": "10071:22:20",
"nodeType": "YulFunctionCall",
"src": "10071:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "10095:7:20",
"nodeType": "YulIdentifier",
"src": "10095:7:20"
}
],
"functionName": {
"name": "abi_decode_t_bytes_memory_ptr",
"nativeSrc": "10041:29:20",
"nodeType": "YulIdentifier",
"src": "10041:29:20"
},
"nativeSrc": "10041:62:20",
"nodeType": "YulFunctionCall",
"src": "10041:62:20"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "10031:6:20",
"nodeType": "YulIdentifier",
"src": "10031:6:20"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_bytes_memory_ptr",
"nativeSrc": "9468:652:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "9522:9:20",
"nodeType": "YulTypedName",
"src": "9522:9:20",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "9533:7:20",
"nodeType": "YulTypedName",
"src": "9533:7:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "9545:6:20",
"nodeType": "YulTypedName",
"src": "9545:6:20",
"type": ""
},
{
"name": "value1",
"nativeSrc": "9553:6:20",
"nodeType": "YulTypedName",
"src": "9553:6:20",
"type": ""
}
],
"src": "9468:652:20"
},
{
"body": {
"nativeSrc": "10193:241:20",
"nodeType": "YulBlock",
"src": "10193:241:20",
"statements": [
{
"body": {
"nativeSrc": "10298:22:20",
"nodeType": "YulBlock",
"src": "10298:22:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "10300:16:20",
"nodeType": "YulIdentifier",
"src": "10300:16:20"
},
"nativeSrc": "10300:18:20",
"nodeType": "YulFunctionCall",
"src": "10300:18:20"
},
"nativeSrc": "10300:18:20",
"nodeType": "YulExpressionStatement",
"src": "10300:18:20"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nativeSrc": "10270:6:20",
"nodeType": "YulIdentifier",
"src": "10270:6:20"
},
{
"kind": "number",
"nativeSrc": "10278:18:20",
"nodeType": "YulLiteral",
"src": "10278:18:20",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "10267:2:20",
"nodeType": "YulIdentifier",
"src": "10267:2:20"
},
"nativeSrc": "10267:30:20",
"nodeType": "YulFunctionCall",
"src": "10267:30:20"
},
"nativeSrc": "10264:56:20",
"nodeType": "YulIf",
"src": "10264:56:20"
},
{
"nativeSrc": "10330:37:20",
"nodeType": "YulAssignment",
"src": "10330:37:20",
"value": {
"arguments": [
{
"name": "length",
"nativeSrc": "10360:6:20",
"nodeType": "YulIdentifier",
"src": "10360:6:20"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nativeSrc": "10338:21:20",
"nodeType": "YulIdentifier",
"src": "10338:21:20"
},
"nativeSrc": "10338:29:20",
"nodeType": "YulFunctionCall",
"src": "10338:29:20"
},
"variableNames": [
{
"name": "size",
"nativeSrc": "10330:4:20",
"nodeType": "YulIdentifier",
"src": "10330:4:20"
}
]
},
{
"nativeSrc": "10404:23:20",
"nodeType": "YulAssignment",
"src": "10404:23:20",
"value": {
"arguments": [
{
"name": "size",
"nativeSrc": "10416:4:20",
"nodeType": "YulIdentifier",
"src": "10416:4:20"
},
{
"kind": "number",
"nativeSrc": "10422:4:20",
"nodeType": "YulLiteral",
"src": "10422:4:20",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "10412:3:20",
"nodeType": "YulIdentifier",
"src": "10412:3:20"
},
"nativeSrc": "10412:15:20",
"nodeType": "YulFunctionCall",
"src": "10412:15:20"
},
"variableNames": [
{
"name": "size",
"nativeSrc": "10404:4:20",
"nodeType": "YulIdentifier",
"src": "10404:4:20"
}
]
}
]
},
"name": "array_allocation_size_t_string_memory_ptr",
"nativeSrc": "10126:308:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nativeSrc": "10177:6:20",
"nodeType": "YulTypedName",
"src": "10177:6:20",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nativeSrc": "10188:4:20",
"nodeType": "YulTypedName",
"src": "10188:4:20",
"type": ""
}
],
"src": "10126:308:20"
},
{
"body": {
"nativeSrc": "10524:341:20",
"nodeType": "YulBlock",
"src": "10524:341:20",
"statements": [
{
"nativeSrc": "10534:75:20",
"nodeType": "YulAssignment",
"src": "10534:75:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nativeSrc": "10601:6:20",
"nodeType": "YulIdentifier",
"src": "10601:6:20"
}
],
"functionName": {
"name": "array_allocation_size_t_string_memory_ptr",
"nativeSrc": "10559:41:20",
"nodeType": "YulIdentifier",
"src": "10559:41:20"
},
"nativeSrc": "10559:49:20",
"nodeType": "YulFunctionCall",
"src": "10559:49:20"
}
],
"functionName": {
"name": "allocate_memory",
"nativeSrc": "10543:15:20",
"nodeType": "YulIdentifier",
"src": "10543:15:20"
},
"nativeSrc": "10543:66:20",
"nodeType": "YulFunctionCall",
"src": "10543:66:20"
},
"variableNames": [
{
"name": "array",
"nativeSrc": "10534:5:20",
"nodeType": "YulIdentifier",
"src": "10534:5:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nativeSrc": "10625:5:20",
"nodeType": "YulIdentifier",
"src": "10625:5:20"
},
{
"name": "length",
"nativeSrc": "10632:6:20",
"nodeType": "YulIdentifier",
"src": "10632:6:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "10618:6:20",
"nodeType": "YulIdentifier",
"src": "10618:6:20"
},
"nativeSrc": "10618:21:20",
"nodeType": "YulFunctionCall",
"src": "10618:21:20"
},
"nativeSrc": "10618:21:20",
"nodeType": "YulExpressionStatement",
"src": "10618:21:20"
},
{
"nativeSrc": "10648:27:20",
"nodeType": "YulVariableDeclaration",
"src": "10648:27:20",
"value": {
"arguments": [
{
"name": "array",
"nativeSrc": "10663:5:20",
"nodeType": "YulIdentifier",
"src": "10663:5:20"
},
{
"kind": "number",
"nativeSrc": "10670:4:20",
"nodeType": "YulLiteral",
"src": "10670:4:20",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "10659:3:20",
"nodeType": "YulIdentifier",
"src": "10659:3:20"
},
"nativeSrc": "10659:16:20",
"nodeType": "YulFunctionCall",
"src": "10659:16:20"
},
"variables": [
{
"name": "dst",
"nativeSrc": "10652:3:20",
"nodeType": "YulTypedName",
"src": "10652:3:20",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "10713:83:20",
"nodeType": "YulBlock",
"src": "10713:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nativeSrc": "10715:77:20",
"nodeType": "YulIdentifier",
"src": "10715:77:20"
},
"nativeSrc": "10715:79:20",
"nodeType": "YulFunctionCall",
"src": "10715:79:20"
},
"nativeSrc": "10715:79:20",
"nodeType": "YulExpressionStatement",
"src": "10715:79:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nativeSrc": "10694:3:20",
"nodeType": "YulIdentifier",
"src": "10694:3:20"
},
{
"name": "length",
"nativeSrc": "10699:6:20",
"nodeType": "YulIdentifier",
"src": "10699:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "10690:3:20",
"nodeType": "YulIdentifier",
"src": "10690:3:20"
},
"nativeSrc": "10690:16:20",
"nodeType": "YulFunctionCall",
"src": "10690:16:20"
},
{
"name": "end",
"nativeSrc": "10708:3:20",
"nodeType": "YulIdentifier",
"src": "10708:3:20"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "10687:2:20",
"nodeType": "YulIdentifier",
"src": "10687:2:20"
},
"nativeSrc": "10687:25:20",
"nodeType": "YulFunctionCall",
"src": "10687:25:20"
},
"nativeSrc": "10684:112:20",
"nodeType": "YulIf",
"src": "10684:112:20"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nativeSrc": "10842:3:20",
"nodeType": "YulIdentifier",
"src": "10842:3:20"
},
{
"name": "dst",
"nativeSrc": "10847:3:20",
"nodeType": "YulIdentifier",
"src": "10847:3:20"
},
{
"name": "length",
"nativeSrc": "10852:6:20",
"nodeType": "YulIdentifier",
"src": "10852:6:20"
}
],
"functionName": {
"name": "copy_calldata_to_memory_with_cleanup",
"nativeSrc": "10805:36:20",
"nodeType": "YulIdentifier",
"src": "10805:36:20"
},
"nativeSrc": "10805:54:20",
"nodeType": "YulFunctionCall",
"src": "10805:54:20"
},
"nativeSrc": "10805:54:20",
"nodeType": "YulExpressionStatement",
"src": "10805:54:20"
}
]
},
"name": "abi_decode_available_length_t_string_memory_ptr",
"nativeSrc": "10440:425:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nativeSrc": "10497:3:20",
"nodeType": "YulTypedName",
"src": "10497:3:20",
"type": ""
},
{
"name": "length",
"nativeSrc": "10502:6:20",
"nodeType": "YulTypedName",
"src": "10502:6:20",
"type": ""
},
{
"name": "end",
"nativeSrc": "10510:3:20",
"nodeType": "YulTypedName",
"src": "10510:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nativeSrc": "10518:5:20",
"nodeType": "YulTypedName",
"src": "10518:5:20",
"type": ""
}
],
"src": "10440:425:20"
},
{
"body": {
"nativeSrc": "10947:278:20",
"nodeType": "YulBlock",
"src": "10947:278:20",
"statements": [
{
"body": {
"nativeSrc": "10996:83:20",
"nodeType": "YulBlock",
"src": "10996:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nativeSrc": "10998:77:20",
"nodeType": "YulIdentifier",
"src": "10998:77:20"
},
"nativeSrc": "10998:79:20",
"nodeType": "YulFunctionCall",
"src": "10998:79:20"
},
"nativeSrc": "10998:79:20",
"nodeType": "YulExpressionStatement",
"src": "10998:79:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nativeSrc": "10975:6:20",
"nodeType": "YulIdentifier",
"src": "10975:6:20"
},
{
"kind": "number",
"nativeSrc": "10983:4:20",
"nodeType": "YulLiteral",
"src": "10983:4:20",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nativeSrc": "10971:3:20",
"nodeType": "YulIdentifier",
"src": "10971:3:20"
},
"nativeSrc": "10971:17:20",
"nodeType": "YulFunctionCall",
"src": "10971:17:20"
},
{
"name": "end",
"nativeSrc": "10990:3:20",
"nodeType": "YulIdentifier",
"src": "10990:3:20"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "10967:3:20",
"nodeType": "YulIdentifier",
"src": "10967:3:20"
},
"nativeSrc": "10967:27:20",
"nodeType": "YulFunctionCall",
"src": "10967:27:20"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "10960:6:20",
"nodeType": "YulIdentifier",
"src": "10960:6:20"
},
"nativeSrc": "10960:35:20",
"nodeType": "YulFunctionCall",
"src": "10960:35:20"
},
"nativeSrc": "10957:122:20",
"nodeType": "YulIf",
"src": "10957:122:20"
},
{
"nativeSrc": "11088:34:20",
"nodeType": "YulVariableDeclaration",
"src": "11088:34:20",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "11115:6:20",
"nodeType": "YulIdentifier",
"src": "11115:6:20"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "11102:12:20",
"nodeType": "YulIdentifier",
"src": "11102:12:20"
},
"nativeSrc": "11102:20:20",
"nodeType": "YulFunctionCall",
"src": "11102:20:20"
},
"variables": [
{
"name": "length",
"nativeSrc": "11092:6:20",
"nodeType": "YulTypedName",
"src": "11092:6:20",
"type": ""
}
]
},
{
"nativeSrc": "11131:88:20",
"nodeType": "YulAssignment",
"src": "11131:88:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nativeSrc": "11192:6:20",
"nodeType": "YulIdentifier",
"src": "11192:6:20"
},
{
"kind": "number",
"nativeSrc": "11200:4:20",
"nodeType": "YulLiteral",
"src": "11200:4:20",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "11188:3:20",
"nodeType": "YulIdentifier",
"src": "11188:3:20"
},
"nativeSrc": "11188:17:20",
"nodeType": "YulFunctionCall",
"src": "11188:17:20"
},
{
"name": "length",
"nativeSrc": "11207:6:20",
"nodeType": "YulIdentifier",
"src": "11207:6:20"
},
{
"name": "end",
"nativeSrc": "11215:3:20",
"nodeType": "YulIdentifier",
"src": "11215:3:20"
}
],
"functionName": {
"name": "abi_decode_available_length_t_string_memory_ptr",
"nativeSrc": "11140:47:20",
"nodeType": "YulIdentifier",
"src": "11140:47:20"
},
"nativeSrc": "11140:79:20",
"nodeType": "YulFunctionCall",
"src": "11140:79:20"
},
"variableNames": [
{
"name": "array",
"nativeSrc": "11131:5:20",
"nodeType": "YulIdentifier",
"src": "11131:5:20"
}
]
}
]
},
"name": "abi_decode_t_string_memory_ptr",
"nativeSrc": "10885:340:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "10925:6:20",
"nodeType": "YulTypedName",
"src": "10925:6:20",
"type": ""
},
{
"name": "end",
"nativeSrc": "10933:3:20",
"nodeType": "YulTypedName",
"src": "10933:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nativeSrc": "10941:5:20",
"nodeType": "YulTypedName",
"src": "10941:5:20",
"type": ""
}
],
"src": "10885:340:20"
},
{
"body": {
"nativeSrc": "11368:988:20",
"nodeType": "YulBlock",
"src": "11368:988:20",
"statements": [
{
"body": {
"nativeSrc": "11415:83:20",
"nodeType": "YulBlock",
"src": "11415:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "11417:77:20",
"nodeType": "YulIdentifier",
"src": "11417:77:20"
},
"nativeSrc": "11417:79:20",
"nodeType": "YulFunctionCall",
"src": "11417:79:20"
},
"nativeSrc": "11417:79:20",
"nodeType": "YulExpressionStatement",
"src": "11417:79:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "11389:7:20",
"nodeType": "YulIdentifier",
"src": "11389:7:20"
},
{
"name": "headStart",
"nativeSrc": "11398:9:20",
"nodeType": "YulIdentifier",
"src": "11398:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "11385:3:20",
"nodeType": "YulIdentifier",
"src": "11385:3:20"
},
"nativeSrc": "11385:23:20",
"nodeType": "YulFunctionCall",
"src": "11385:23:20"
},
{
"kind": "number",
"nativeSrc": "11410:3:20",
"nodeType": "YulLiteral",
"src": "11410:3:20",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "11381:3:20",
"nodeType": "YulIdentifier",
"src": "11381:3:20"
},
"nativeSrc": "11381:33:20",
"nodeType": "YulFunctionCall",
"src": "11381:33:20"
},
"nativeSrc": "11378:120:20",
"nodeType": "YulIf",
"src": "11378:120:20"
},
{
"nativeSrc": "11508:287:20",
"nodeType": "YulBlock",
"src": "11508:287:20",
"statements": [
{
"nativeSrc": "11523:45:20",
"nodeType": "YulVariableDeclaration",
"src": "11523:45:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "11554:9:20",
"nodeType": "YulIdentifier",
"src": "11554:9:20"
},
{
"kind": "number",
"nativeSrc": "11565:1:20",
"nodeType": "YulLiteral",
"src": "11565:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "11550:3:20",
"nodeType": "YulIdentifier",
"src": "11550:3:20"
},
"nativeSrc": "11550:17:20",
"nodeType": "YulFunctionCall",
"src": "11550:17:20"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "11537:12:20",
"nodeType": "YulIdentifier",
"src": "11537:12:20"
},
"nativeSrc": "11537:31:20",
"nodeType": "YulFunctionCall",
"src": "11537:31:20"
},
"variables": [
{
"name": "offset",
"nativeSrc": "11527:6:20",
"nodeType": "YulTypedName",
"src": "11527:6:20",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "11615:83:20",
"nodeType": "YulBlock",
"src": "11615:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nativeSrc": "11617:77:20",
"nodeType": "YulIdentifier",
"src": "11617:77:20"
},
"nativeSrc": "11617:79:20",
"nodeType": "YulFunctionCall",
"src": "11617:79:20"
},
"nativeSrc": "11617:79:20",
"nodeType": "YulExpressionStatement",
"src": "11617:79:20"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nativeSrc": "11587:6:20",
"nodeType": "YulIdentifier",
"src": "11587:6:20"
},
{
"kind": "number",
"nativeSrc": "11595:18:20",
"nodeType": "YulLiteral",
"src": "11595:18:20",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "11584:2:20",
"nodeType": "YulIdentifier",
"src": "11584:2:20"
},
"nativeSrc": "11584:30:20",
"nodeType": "YulFunctionCall",
"src": "11584:30:20"
},
"nativeSrc": "11581:117:20",
"nodeType": "YulIf",
"src": "11581:117:20"
},
{
"nativeSrc": "11712:73:20",
"nodeType": "YulAssignment",
"src": "11712:73:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "11757:9:20",
"nodeType": "YulIdentifier",
"src": "11757:9:20"
},
{
"name": "offset",
"nativeSrc": "11768:6:20",
"nodeType": "YulIdentifier",
"src": "11768:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "11753:3:20",
"nodeType": "YulIdentifier",
"src": "11753:3:20"
},
"nativeSrc": "11753:22:20",
"nodeType": "YulFunctionCall",
"src": "11753:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "11777:7:20",
"nodeType": "YulIdentifier",
"src": "11777:7:20"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr",
"nativeSrc": "11722:30:20",
"nodeType": "YulIdentifier",
"src": "11722:30:20"
},
"nativeSrc": "11722:63:20",
"nodeType": "YulFunctionCall",
"src": "11722:63:20"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "11712:6:20",
"nodeType": "YulIdentifier",
"src": "11712:6:20"
}
]
}
]
},
{
"nativeSrc": "11805:288:20",
"nodeType": "YulBlock",
"src": "11805:288:20",
"statements": [
{
"nativeSrc": "11820:46:20",
"nodeType": "YulVariableDeclaration",
"src": "11820:46:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "11851:9:20",
"nodeType": "YulIdentifier",
"src": "11851:9:20"
},
{
"kind": "number",
"nativeSrc": "11862:2:20",
"nodeType": "YulLiteral",
"src": "11862:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "11847:3:20",
"nodeType": "YulIdentifier",
"src": "11847:3:20"
},
"nativeSrc": "11847:18:20",
"nodeType": "YulFunctionCall",
"src": "11847:18:20"
}
],
"functionName": {
"name": "calldataload",
"nativeSrc": "11834:12:20",
"nodeType": "YulIdentifier",
"src": "11834:12:20"
},
"nativeSrc": "11834:32:20",
"nodeType": "YulFunctionCall",
"src": "11834:32:20"
},
"variables": [
{
"name": "offset",
"nativeSrc": "11824:6:20",
"nodeType": "YulTypedName",
"src": "11824:6:20",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "11913:83:20",
"nodeType": "YulBlock",
"src": "11913:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nativeSrc": "11915:77:20",
"nodeType": "YulIdentifier",
"src": "11915:77:20"
},
"nativeSrc": "11915:79:20",
"nodeType": "YulFunctionCall",
"src": "11915:79:20"
},
"nativeSrc": "11915:79:20",
"nodeType": "YulExpressionStatement",
"src": "11915:79:20"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nativeSrc": "11885:6:20",
"nodeType": "YulIdentifier",
"src": "11885:6:20"
},
{
"kind": "number",
"nativeSrc": "11893:18:20",
"nodeType": "YulLiteral",
"src": "11893:18:20",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "11882:2:20",
"nodeType": "YulIdentifier",
"src": "11882:2:20"
},
"nativeSrc": "11882:30:20",
"nodeType": "YulFunctionCall",
"src": "11882:30:20"
},
"nativeSrc": "11879:117:20",
"nodeType": "YulIf",
"src": "11879:117:20"
},
{
"nativeSrc": "12010:73:20",
"nodeType": "YulAssignment",
"src": "12010:73:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "12055:9:20",
"nodeType": "YulIdentifier",
"src": "12055:9:20"
},
{
"name": "offset",
"nativeSrc": "12066:6:20",
"nodeType": "YulIdentifier",
"src": "12066:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "12051:3:20",
"nodeType": "YulIdentifier",
"src": "12051:3:20"
},
"nativeSrc": "12051:22:20",
"nodeType": "YulFunctionCall",
"src": "12051:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "12075:7:20",
"nodeType": "YulIdentifier",
"src": "12075:7:20"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr",
"nativeSrc": "12020:30:20",
"nodeType": "YulIdentifier",
"src": "12020:30:20"
},
"nativeSrc": "12020:63:20",
"nodeType": "YulFunctionCall",
"src": "12020:63:20"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "12010:6:20",
"nodeType": "YulIdentifier",
"src": "12010:6:20"
}
]
}
]
},
{
"nativeSrc": "12103:118:20",
"nodeType": "YulBlock",
"src": "12103:118:20",
"statements": [
{
"nativeSrc": "12118:16:20",
"nodeType": "YulVariableDeclaration",
"src": "12118:16:20",
"value": {
"kind": "number",
"nativeSrc": "12132:2:20",
"nodeType": "YulLiteral",
"src": "12132:2:20",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nativeSrc": "12122:6:20",
"nodeType": "YulTypedName",
"src": "12122:6:20",
"type": ""
}
]
},
{
"nativeSrc": "12148:63:20",
"nodeType": "YulAssignment",
"src": "12148:63:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "12183:9:20",
"nodeType": "YulIdentifier",
"src": "12183:9:20"
},
{
"name": "offset",
"nativeSrc": "12194:6:20",
"nodeType": "YulIdentifier",
"src": "12194:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "12179:3:20",
"nodeType": "YulIdentifier",
"src": "12179:3:20"
},
"nativeSrc": "12179:22:20",
"nodeType": "YulFunctionCall",
"src": "12179:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "12203:7:20",
"nodeType": "YulIdentifier",
"src": "12203:7:20"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nativeSrc": "12158:20:20",
"nodeType": "YulIdentifier",
"src": "12158:20:20"
},
"nativeSrc": "12158:53:20",
"nodeType": "YulFunctionCall",
"src": "12158:53:20"
},
"variableNames": [
{
"name": "value2",
"nativeSrc": "12148:6:20",
"nodeType": "YulIdentifier",
"src": "12148:6:20"
}
]
}
]
},
{
"nativeSrc": "12231:118:20",
"nodeType": "YulBlock",
"src": "12231:118:20",
"statements": [
{
"nativeSrc": "12246:16:20",
"nodeType": "YulVariableDeclaration",
"src": "12246:16:20",
"value": {
"kind": "number",
"nativeSrc": "12260:2:20",
"nodeType": "YulLiteral",
"src": "12260:2:20",
"type": "",
"value": "96"
},
"variables": [
{
"name": "offset",
"nativeSrc": "12250:6:20",
"nodeType": "YulTypedName",
"src": "12250:6:20",
"type": ""
}
]
},
{
"nativeSrc": "12276:63:20",
"nodeType": "YulAssignment",
"src": "12276:63:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "12311:9:20",
"nodeType": "YulIdentifier",
"src": "12311:9:20"
},
{
"name": "offset",
"nativeSrc": "12322:6:20",
"nodeType": "YulIdentifier",
"src": "12322:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "12307:3:20",
"nodeType": "YulIdentifier",
"src": "12307:3:20"
},
"nativeSrc": "12307:22:20",
"nodeType": "YulFunctionCall",
"src": "12307:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "12331:7:20",
"nodeType": "YulIdentifier",
"src": "12331:7:20"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nativeSrc": "12286:20:20",
"nodeType": "YulIdentifier",
"src": "12286:20:20"
},
"nativeSrc": "12286:53:20",
"nodeType": "YulFunctionCall",
"src": "12286:53:20"
},
"variableNames": [
{
"name": "value3",
"nativeSrc": "12276:6:20",
"nodeType": "YulIdentifier",
"src": "12276:6:20"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint256t_uint256",
"nativeSrc": "11231:1125:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "11314:9:20",
"nodeType": "YulTypedName",
"src": "11314:9:20",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "11325:7:20",
"nodeType": "YulTypedName",
"src": "11325:7:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "11337:6:20",
"nodeType": "YulTypedName",
"src": "11337:6:20",
"type": ""
},
{
"name": "value1",
"nativeSrc": "11345:6:20",
"nodeType": "YulTypedName",
"src": "11345:6:20",
"type": ""
},
{
"name": "value2",
"nativeSrc": "11353:6:20",
"nodeType": "YulTypedName",
"src": "11353:6:20",
"type": ""
},
{
"name": "value3",
"nativeSrc": "11361:6:20",
"nodeType": "YulTypedName",
"src": "11361:6:20",
"type": ""
}
],
"src": "11231:1125:20"
},
{
"body": {
"nativeSrc": "12428:263:20",
"nodeType": "YulBlock",
"src": "12428:263:20",
"statements": [
{
"body": {
"nativeSrc": "12474:83:20",
"nodeType": "YulBlock",
"src": "12474:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "12476:77:20",
"nodeType": "YulIdentifier",
"src": "12476:77:20"
},
"nativeSrc": "12476:79:20",
"nodeType": "YulFunctionCall",
"src": "12476:79:20"
},
"nativeSrc": "12476:79:20",
"nodeType": "YulExpressionStatement",
"src": "12476:79:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "12449:7:20",
"nodeType": "YulIdentifier",
"src": "12449:7:20"
},
{
"name": "headStart",
"nativeSrc": "12458:9:20",
"nodeType": "YulIdentifier",
"src": "12458:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "12445:3:20",
"nodeType": "YulIdentifier",
"src": "12445:3:20"
},
"nativeSrc": "12445:23:20",
"nodeType": "YulFunctionCall",
"src": "12445:23:20"
},
{
"kind": "number",
"nativeSrc": "12470:2:20",
"nodeType": "YulLiteral",
"src": "12470:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "12441:3:20",
"nodeType": "YulIdentifier",
"src": "12441:3:20"
},
"nativeSrc": "12441:32:20",
"nodeType": "YulFunctionCall",
"src": "12441:32:20"
},
"nativeSrc": "12438:119:20",
"nodeType": "YulIf",
"src": "12438:119:20"
},
{
"nativeSrc": "12567:117:20",
"nodeType": "YulBlock",
"src": "12567:117:20",
"statements": [
{
"nativeSrc": "12582:15:20",
"nodeType": "YulVariableDeclaration",
"src": "12582:15:20",
"value": {
"kind": "number",
"nativeSrc": "12596:1:20",
"nodeType": "YulLiteral",
"src": "12596:1:20",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "12586:6:20",
"nodeType": "YulTypedName",
"src": "12586:6:20",
"type": ""
}
]
},
{
"nativeSrc": "12611:63:20",
"nodeType": "YulAssignment",
"src": "12611:63:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "12646:9:20",
"nodeType": "YulIdentifier",
"src": "12646:9:20"
},
{
"name": "offset",
"nativeSrc": "12657:6:20",
"nodeType": "YulIdentifier",
"src": "12657:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "12642:3:20",
"nodeType": "YulIdentifier",
"src": "12642:3:20"
},
"nativeSrc": "12642:22:20",
"nodeType": "YulFunctionCall",
"src": "12642:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "12666:7:20",
"nodeType": "YulIdentifier",
"src": "12666:7:20"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "12621:20:20",
"nodeType": "YulIdentifier",
"src": "12621:20:20"
},
"nativeSrc": "12621:53:20",
"nodeType": "YulFunctionCall",
"src": "12621:53:20"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "12611:6:20",
"nodeType": "YulIdentifier",
"src": "12611:6:20"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nativeSrc": "12362:329:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "12398:9:20",
"nodeType": "YulTypedName",
"src": "12398:9:20",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "12409:7:20",
"nodeType": "YulTypedName",
"src": "12409:7:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "12421:6:20",
"nodeType": "YulTypedName",
"src": "12421:6:20",
"type": ""
}
],
"src": "12362:329:20"
},
{
"body": {
"nativeSrc": "12780:391:20",
"nodeType": "YulBlock",
"src": "12780:391:20",
"statements": [
{
"body": {
"nativeSrc": "12826:83:20",
"nodeType": "YulBlock",
"src": "12826:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "12828:77:20",
"nodeType": "YulIdentifier",
"src": "12828:77:20"
},
"nativeSrc": "12828:79:20",
"nodeType": "YulFunctionCall",
"src": "12828:79:20"
},
"nativeSrc": "12828:79:20",
"nodeType": "YulExpressionStatement",
"src": "12828:79:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "12801:7:20",
"nodeType": "YulIdentifier",
"src": "12801:7:20"
},
{
"name": "headStart",
"nativeSrc": "12810:9:20",
"nodeType": "YulIdentifier",
"src": "12810:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "12797:3:20",
"nodeType": "YulIdentifier",
"src": "12797:3:20"
},
"nativeSrc": "12797:23:20",
"nodeType": "YulFunctionCall",
"src": "12797:23:20"
},
{
"kind": "number",
"nativeSrc": "12822:2:20",
"nodeType": "YulLiteral",
"src": "12822:2:20",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "12793:3:20",
"nodeType": "YulIdentifier",
"src": "12793:3:20"
},
"nativeSrc": "12793:32:20",
"nodeType": "YulFunctionCall",
"src": "12793:32:20"
},
"nativeSrc": "12790:119:20",
"nodeType": "YulIf",
"src": "12790:119:20"
},
{
"nativeSrc": "12919:117:20",
"nodeType": "YulBlock",
"src": "12919:117:20",
"statements": [
{
"nativeSrc": "12934:15:20",
"nodeType": "YulVariableDeclaration",
"src": "12934:15:20",
"value": {
"kind": "number",
"nativeSrc": "12948:1:20",
"nodeType": "YulLiteral",
"src": "12948:1:20",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "12938:6:20",
"nodeType": "YulTypedName",
"src": "12938:6:20",
"type": ""
}
]
},
{
"nativeSrc": "12963:63:20",
"nodeType": "YulAssignment",
"src": "12963:63:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "12998:9:20",
"nodeType": "YulIdentifier",
"src": "12998:9:20"
},
{
"name": "offset",
"nativeSrc": "13009:6:20",
"nodeType": "YulIdentifier",
"src": "13009:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "12994:3:20",
"nodeType": "YulIdentifier",
"src": "12994:3:20"
},
"nativeSrc": "12994:22:20",
"nodeType": "YulFunctionCall",
"src": "12994:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "13018:7:20",
"nodeType": "YulIdentifier",
"src": "13018:7:20"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "12973:20:20",
"nodeType": "YulIdentifier",
"src": "12973:20:20"
},
"nativeSrc": "12973:53:20",
"nodeType": "YulFunctionCall",
"src": "12973:53:20"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "12963:6:20",
"nodeType": "YulIdentifier",
"src": "12963:6:20"
}
]
}
]
},
{
"nativeSrc": "13046:118:20",
"nodeType": "YulBlock",
"src": "13046:118:20",
"statements": [
{
"nativeSrc": "13061:16:20",
"nodeType": "YulVariableDeclaration",
"src": "13061:16:20",
"value": {
"kind": "number",
"nativeSrc": "13075:2:20",
"nodeType": "YulLiteral",
"src": "13075:2:20",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nativeSrc": "13065:6:20",
"nodeType": "YulTypedName",
"src": "13065:6:20",
"type": ""
}
]
},
{
"nativeSrc": "13091:63:20",
"nodeType": "YulAssignment",
"src": "13091:63:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "13126:9:20",
"nodeType": "YulIdentifier",
"src": "13126:9:20"
},
{
"name": "offset",
"nativeSrc": "13137:6:20",
"nodeType": "YulIdentifier",
"src": "13137:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "13122:3:20",
"nodeType": "YulIdentifier",
"src": "13122:3:20"
},
"nativeSrc": "13122:22:20",
"nodeType": "YulFunctionCall",
"src": "13122:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "13146:7:20",
"nodeType": "YulIdentifier",
"src": "13146:7:20"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nativeSrc": "13101:20:20",
"nodeType": "YulIdentifier",
"src": "13101:20:20"
},
"nativeSrc": "13101:53:20",
"nodeType": "YulFunctionCall",
"src": "13101:53:20"
},
"variableNames": [
{
"name": "value1",
"nativeSrc": "13091:6:20",
"nodeType": "YulIdentifier",
"src": "13091:6:20"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_address",
"nativeSrc": "12697:474:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "12742:9:20",
"nodeType": "YulTypedName",
"src": "12742:9:20",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "12753:7:20",
"nodeType": "YulTypedName",
"src": "12753:7:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "12765:6:20",
"nodeType": "YulTypedName",
"src": "12765:6:20",
"type": ""
},
{
"name": "value1",
"nativeSrc": "12773:6:20",
"nodeType": "YulTypedName",
"src": "12773:6:20",
"type": ""
}
],
"src": "12697:474:20"
},
{
"body": {
"nativeSrc": "13205:152:20",
"nodeType": "YulBlock",
"src": "13205:152:20",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "13222:1:20",
"nodeType": "YulLiteral",
"src": "13222:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "13225:77:20",
"nodeType": "YulLiteral",
"src": "13225:77:20",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "13215:6:20",
"nodeType": "YulIdentifier",
"src": "13215:6:20"
},
"nativeSrc": "13215:88:20",
"nodeType": "YulFunctionCall",
"src": "13215:88:20"
},
"nativeSrc": "13215:88:20",
"nodeType": "YulExpressionStatement",
"src": "13215:88:20"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "13319:1:20",
"nodeType": "YulLiteral",
"src": "13319:1:20",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "13322:4:20",
"nodeType": "YulLiteral",
"src": "13322:4:20",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "13312:6:20",
"nodeType": "YulIdentifier",
"src": "13312:6:20"
},
"nativeSrc": "13312:15:20",
"nodeType": "YulFunctionCall",
"src": "13312:15:20"
},
"nativeSrc": "13312:15:20",
"nodeType": "YulExpressionStatement",
"src": "13312:15:20"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "13343:1:20",
"nodeType": "YulLiteral",
"src": "13343:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "13346:4:20",
"nodeType": "YulLiteral",
"src": "13346:4:20",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "13336:6:20",
"nodeType": "YulIdentifier",
"src": "13336:6:20"
},
"nativeSrc": "13336:15:20",
"nodeType": "YulFunctionCall",
"src": "13336:15:20"
},
"nativeSrc": "13336:15:20",
"nodeType": "YulExpressionStatement",
"src": "13336:15:20"
}
]
},
"name": "panic_error_0x22",
"nativeSrc": "13177:180:20",
"nodeType": "YulFunctionDefinition",
"src": "13177:180:20"
},
{
"body": {
"nativeSrc": "13414:269:20",
"nodeType": "YulBlock",
"src": "13414:269:20",
"statements": [
{
"nativeSrc": "13424:22:20",
"nodeType": "YulAssignment",
"src": "13424:22:20",
"value": {
"arguments": [
{
"name": "data",
"nativeSrc": "13438:4:20",
"nodeType": "YulIdentifier",
"src": "13438:4:20"
},
{
"kind": "number",
"nativeSrc": "13444:1:20",
"nodeType": "YulLiteral",
"src": "13444:1:20",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nativeSrc": "13434:3:20",
"nodeType": "YulIdentifier",
"src": "13434:3:20"
},
"nativeSrc": "13434:12:20",
"nodeType": "YulFunctionCall",
"src": "13434:12:20"
},
"variableNames": [
{
"name": "length",
"nativeSrc": "13424:6:20",
"nodeType": "YulIdentifier",
"src": "13424:6:20"
}
]
},
{
"nativeSrc": "13455:38:20",
"nodeType": "YulVariableDeclaration",
"src": "13455:38:20",
"value": {
"arguments": [
{
"name": "data",
"nativeSrc": "13485:4:20",
"nodeType": "YulIdentifier",
"src": "13485:4:20"
},
{
"kind": "number",
"nativeSrc": "13491:1:20",
"nodeType": "YulLiteral",
"src": "13491:1:20",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "13481:3:20",
"nodeType": "YulIdentifier",
"src": "13481:3:20"
},
"nativeSrc": "13481:12:20",
"nodeType": "YulFunctionCall",
"src": "13481:12:20"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nativeSrc": "13459:18:20",
"nodeType": "YulTypedName",
"src": "13459:18:20",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "13532:51:20",
"nodeType": "YulBlock",
"src": "13532:51:20",
"statements": [
{
"nativeSrc": "13546:27:20",
"nodeType": "YulAssignment",
"src": "13546:27:20",
"value": {
"arguments": [
{
"name": "length",
"nativeSrc": "13560:6:20",
"nodeType": "YulIdentifier",
"src": "13560:6:20"
},
{
"kind": "number",
"nativeSrc": "13568:4:20",
"nodeType": "YulLiteral",
"src": "13568:4:20",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nativeSrc": "13556:3:20",
"nodeType": "YulIdentifier",
"src": "13556:3:20"
},
"nativeSrc": "13556:17:20",
"nodeType": "YulFunctionCall",
"src": "13556:17:20"
},
"variableNames": [
{
"name": "length",
"nativeSrc": "13546:6:20",
"nodeType": "YulIdentifier",
"src": "13546:6:20"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nativeSrc": "13512:18:20",
"nodeType": "YulIdentifier",
"src": "13512:18:20"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "13505:6:20",
"nodeType": "YulIdentifier",
"src": "13505:6:20"
},
"nativeSrc": "13505:26:20",
"nodeType": "YulFunctionCall",
"src": "13505:26:20"
},
"nativeSrc": "13502:81:20",
"nodeType": "YulIf",
"src": "13502:81:20"
},
{
"body": {
"nativeSrc": "13635:42:20",
"nodeType": "YulBlock",
"src": "13635:42:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nativeSrc": "13649:16:20",
"nodeType": "YulIdentifier",
"src": "13649:16:20"
},
"nativeSrc": "13649:18:20",
"nodeType": "YulFunctionCall",
"src": "13649:18:20"
},
"nativeSrc": "13649:18:20",
"nodeType": "YulExpressionStatement",
"src": "13649:18:20"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nativeSrc": "13599:18:20",
"nodeType": "YulIdentifier",
"src": "13599:18:20"
},
{
"arguments": [
{
"name": "length",
"nativeSrc": "13622:6:20",
"nodeType": "YulIdentifier",
"src": "13622:6:20"
},
{
"kind": "number",
"nativeSrc": "13630:2:20",
"nodeType": "YulLiteral",
"src": "13630:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "13619:2:20",
"nodeType": "YulIdentifier",
"src": "13619:2:20"
},
"nativeSrc": "13619:14:20",
"nodeType": "YulFunctionCall",
"src": "13619:14:20"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "13596:2:20",
"nodeType": "YulIdentifier",
"src": "13596:2:20"
},
"nativeSrc": "13596:38:20",
"nodeType": "YulFunctionCall",
"src": "13596:38:20"
},
"nativeSrc": "13593:84:20",
"nodeType": "YulIf",
"src": "13593:84:20"
}
]
},
"name": "extract_byte_array_length",
"nativeSrc": "13363:320:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nativeSrc": "13398:4:20",
"nodeType": "YulTypedName",
"src": "13398:4:20",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nativeSrc": "13407:6:20",
"nodeType": "YulTypedName",
"src": "13407:6:20",
"type": ""
}
],
"src": "13363:320:20"
},
{
"body": {
"nativeSrc": "13795:59:20",
"nodeType": "YulBlock",
"src": "13795:59:20",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "13817:6:20",
"nodeType": "YulIdentifier",
"src": "13817:6:20"
},
{
"kind": "number",
"nativeSrc": "13825:1:20",
"nodeType": "YulLiteral",
"src": "13825:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "13813:3:20",
"nodeType": "YulIdentifier",
"src": "13813:3:20"
},
"nativeSrc": "13813:14:20",
"nodeType": "YulFunctionCall",
"src": "13813:14:20"
},
{
"hexValue": "496e76616c69642061646472657373",
"kind": "string",
"nativeSrc": "13829:17:20",
"nodeType": "YulLiteral",
"src": "13829:17:20",
"type": "",
"value": "Invalid address"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "13806:6:20",
"nodeType": "YulIdentifier",
"src": "13806:6:20"
},
"nativeSrc": "13806:41:20",
"nodeType": "YulFunctionCall",
"src": "13806:41:20"
},
"nativeSrc": "13806:41:20",
"nodeType": "YulExpressionStatement",
"src": "13806:41:20"
}
]
},
"name": "store_literal_in_memory_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226",
"nativeSrc": "13689:165:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "13787:6:20",
"nodeType": "YulTypedName",
"src": "13787:6:20",
"type": ""
}
],
"src": "13689:165:20"
},
{
"body": {
"nativeSrc": "14006:220:20",
"nodeType": "YulBlock",
"src": "14006:220:20",
"statements": [
{
"nativeSrc": "14016:74:20",
"nodeType": "YulAssignment",
"src": "14016:74:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "14082:3:20",
"nodeType": "YulIdentifier",
"src": "14082:3:20"
},
{
"kind": "number",
"nativeSrc": "14087:2:20",
"nodeType": "YulLiteral",
"src": "14087:2:20",
"type": "",
"value": "15"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "14023:58:20",
"nodeType": "YulIdentifier",
"src": "14023:58:20"
},
"nativeSrc": "14023:67:20",
"nodeType": "YulFunctionCall",
"src": "14023:67:20"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "14016:3:20",
"nodeType": "YulIdentifier",
"src": "14016:3:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "14188:3:20",
"nodeType": "YulIdentifier",
"src": "14188:3:20"
}
],
"functionName": {
"name": "store_literal_in_memory_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226",
"nativeSrc": "14099:88:20",
"nodeType": "YulIdentifier",
"src": "14099:88:20"
},
"nativeSrc": "14099:93:20",
"nodeType": "YulFunctionCall",
"src": "14099:93:20"
},
"nativeSrc": "14099:93:20",
"nodeType": "YulExpressionStatement",
"src": "14099:93:20"
},
{
"nativeSrc": "14201:19:20",
"nodeType": "YulAssignment",
"src": "14201:19:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "14212:3:20",
"nodeType": "YulIdentifier",
"src": "14212:3:20"
},
{
"kind": "number",
"nativeSrc": "14217:2:20",
"nodeType": "YulLiteral",
"src": "14217:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "14208:3:20",
"nodeType": "YulIdentifier",
"src": "14208:3:20"
},
"nativeSrc": "14208:12:20",
"nodeType": "YulFunctionCall",
"src": "14208:12:20"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "14201:3:20",
"nodeType": "YulIdentifier",
"src": "14201:3:20"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226_to_t_string_memory_ptr_fromStack",
"nativeSrc": "13860:366:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "13994:3:20",
"nodeType": "YulTypedName",
"src": "13994:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "14002:3:20",
"nodeType": "YulTypedName",
"src": "14002:3:20",
"type": ""
}
],
"src": "13860:366:20"
},
{
"body": {
"nativeSrc": "14403:248:20",
"nodeType": "YulBlock",
"src": "14403:248:20",
"statements": [
{
"nativeSrc": "14413:26:20",
"nodeType": "YulAssignment",
"src": "14413:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "14425:9:20",
"nodeType": "YulIdentifier",
"src": "14425:9:20"
},
{
"kind": "number",
"nativeSrc": "14436:2:20",
"nodeType": "YulLiteral",
"src": "14436:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "14421:3:20",
"nodeType": "YulIdentifier",
"src": "14421:3:20"
},
"nativeSrc": "14421:18:20",
"nodeType": "YulFunctionCall",
"src": "14421:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "14413:4:20",
"nodeType": "YulIdentifier",
"src": "14413:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "14460:9:20",
"nodeType": "YulIdentifier",
"src": "14460:9:20"
},
{
"kind": "number",
"nativeSrc": "14471:1:20",
"nodeType": "YulLiteral",
"src": "14471:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "14456:3:20",
"nodeType": "YulIdentifier",
"src": "14456:3:20"
},
"nativeSrc": "14456:17:20",
"nodeType": "YulFunctionCall",
"src": "14456:17:20"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "14479:4:20",
"nodeType": "YulIdentifier",
"src": "14479:4:20"
},
{
"name": "headStart",
"nativeSrc": "14485:9:20",
"nodeType": "YulIdentifier",
"src": "14485:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "14475:3:20",
"nodeType": "YulIdentifier",
"src": "14475:3:20"
},
"nativeSrc": "14475:20:20",
"nodeType": "YulFunctionCall",
"src": "14475:20:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "14449:6:20",
"nodeType": "YulIdentifier",
"src": "14449:6:20"
},
"nativeSrc": "14449:47:20",
"nodeType": "YulFunctionCall",
"src": "14449:47:20"
},
"nativeSrc": "14449:47:20",
"nodeType": "YulExpressionStatement",
"src": "14449:47:20"
},
{
"nativeSrc": "14505:139:20",
"nodeType": "YulAssignment",
"src": "14505:139:20",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "14639:4:20",
"nodeType": "YulIdentifier",
"src": "14639:4:20"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226_to_t_string_memory_ptr_fromStack",
"nativeSrc": "14513:124:20",
"nodeType": "YulIdentifier",
"src": "14513:124:20"
},
"nativeSrc": "14513:131:20",
"nodeType": "YulFunctionCall",
"src": "14513:131:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "14505:4:20",
"nodeType": "YulIdentifier",
"src": "14505:4:20"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "14232:419:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "14383:9:20",
"nodeType": "YulTypedName",
"src": "14383:9:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "14398:4:20",
"nodeType": "YulTypedName",
"src": "14398:4:20",
"type": ""
}
],
"src": "14232:419:20"
},
{
"body": {
"nativeSrc": "14685:152:20",
"nodeType": "YulBlock",
"src": "14685:152:20",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "14702:1:20",
"nodeType": "YulLiteral",
"src": "14702:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "14705:77:20",
"nodeType": "YulLiteral",
"src": "14705:77:20",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "14695:6:20",
"nodeType": "YulIdentifier",
"src": "14695:6:20"
},
"nativeSrc": "14695:88:20",
"nodeType": "YulFunctionCall",
"src": "14695:88:20"
},
"nativeSrc": "14695:88:20",
"nodeType": "YulExpressionStatement",
"src": "14695:88:20"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "14799:1:20",
"nodeType": "YulLiteral",
"src": "14799:1:20",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "14802:4:20",
"nodeType": "YulLiteral",
"src": "14802:4:20",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "14792:6:20",
"nodeType": "YulIdentifier",
"src": "14792:6:20"
},
"nativeSrc": "14792:15:20",
"nodeType": "YulFunctionCall",
"src": "14792:15:20"
},
"nativeSrc": "14792:15:20",
"nodeType": "YulExpressionStatement",
"src": "14792:15:20"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "14823:1:20",
"nodeType": "YulLiteral",
"src": "14823:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "14826:4:20",
"nodeType": "YulLiteral",
"src": "14826:4:20",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "14816:6:20",
"nodeType": "YulIdentifier",
"src": "14816:6:20"
},
"nativeSrc": "14816:15:20",
"nodeType": "YulFunctionCall",
"src": "14816:15:20"
},
"nativeSrc": "14816:15:20",
"nodeType": "YulExpressionStatement",
"src": "14816:15:20"
}
]
},
"name": "panic_error_0x11",
"nativeSrc": "14657:180:20",
"nodeType": "YulFunctionDefinition",
"src": "14657:180:20"
},
{
"body": {
"nativeSrc": "14887:147:20",
"nodeType": "YulBlock",
"src": "14887:147:20",
"statements": [
{
"nativeSrc": "14897:25:20",
"nodeType": "YulAssignment",
"src": "14897:25:20",
"value": {
"arguments": [
{
"name": "x",
"nativeSrc": "14920:1:20",
"nodeType": "YulIdentifier",
"src": "14920:1:20"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "14902:17:20",
"nodeType": "YulIdentifier",
"src": "14902:17:20"
},
"nativeSrc": "14902:20:20",
"nodeType": "YulFunctionCall",
"src": "14902:20:20"
},
"variableNames": [
{
"name": "x",
"nativeSrc": "14897:1:20",
"nodeType": "YulIdentifier",
"src": "14897:1:20"
}
]
},
{
"nativeSrc": "14931:25:20",
"nodeType": "YulAssignment",
"src": "14931:25:20",
"value": {
"arguments": [
{
"name": "y",
"nativeSrc": "14954:1:20",
"nodeType": "YulIdentifier",
"src": "14954:1:20"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "14936:17:20",
"nodeType": "YulIdentifier",
"src": "14936:17:20"
},
"nativeSrc": "14936:20:20",
"nodeType": "YulFunctionCall",
"src": "14936:20:20"
},
"variableNames": [
{
"name": "y",
"nativeSrc": "14931:1:20",
"nodeType": "YulIdentifier",
"src": "14931:1:20"
}
]
},
{
"nativeSrc": "14965:16:20",
"nodeType": "YulAssignment",
"src": "14965:16:20",
"value": {
"arguments": [
{
"name": "x",
"nativeSrc": "14976:1:20",
"nodeType": "YulIdentifier",
"src": "14976:1:20"
},
{
"name": "y",
"nativeSrc": "14979:1:20",
"nodeType": "YulIdentifier",
"src": "14979:1:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "14972:3:20",
"nodeType": "YulIdentifier",
"src": "14972:3:20"
},
"nativeSrc": "14972:9:20",
"nodeType": "YulFunctionCall",
"src": "14972:9:20"
},
"variableNames": [
{
"name": "sum",
"nativeSrc": "14965:3:20",
"nodeType": "YulIdentifier",
"src": "14965:3:20"
}
]
},
{
"body": {
"nativeSrc": "15005:22:20",
"nodeType": "YulBlock",
"src": "15005:22:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nativeSrc": "15007:16:20",
"nodeType": "YulIdentifier",
"src": "15007:16:20"
},
"nativeSrc": "15007:18:20",
"nodeType": "YulFunctionCall",
"src": "15007:18:20"
},
"nativeSrc": "15007:18:20",
"nodeType": "YulExpressionStatement",
"src": "15007:18:20"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nativeSrc": "14997:1:20",
"nodeType": "YulIdentifier",
"src": "14997:1:20"
},
{
"name": "sum",
"nativeSrc": "15000:3:20",
"nodeType": "YulIdentifier",
"src": "15000:3:20"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "14994:2:20",
"nodeType": "YulIdentifier",
"src": "14994:2:20"
},
"nativeSrc": "14994:10:20",
"nodeType": "YulFunctionCall",
"src": "14994:10:20"
},
"nativeSrc": "14991:36:20",
"nodeType": "YulIf",
"src": "14991:36:20"
}
]
},
"name": "checked_add_t_uint256",
"nativeSrc": "14843:191:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nativeSrc": "14874:1:20",
"nodeType": "YulTypedName",
"src": "14874:1:20",
"type": ""
},
{
"name": "y",
"nativeSrc": "14877:1:20",
"nodeType": "YulTypedName",
"src": "14877:1:20",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nativeSrc": "14883:3:20",
"nodeType": "YulTypedName",
"src": "14883:3:20",
"type": ""
}
],
"src": "14843:191:20"
},
{
"body": {
"nativeSrc": "15146:55:20",
"nodeType": "YulBlock",
"src": "15146:55:20",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "15168:6:20",
"nodeType": "YulIdentifier",
"src": "15168:6:20"
},
{
"kind": "number",
"nativeSrc": "15176:1:20",
"nodeType": "YulLiteral",
"src": "15176:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "15164:3:20",
"nodeType": "YulIdentifier",
"src": "15164:3:20"
},
"nativeSrc": "15164:14:20",
"nodeType": "YulFunctionCall",
"src": "15164:14:20"
},
{
"hexValue": "4578636565647320636170",
"kind": "string",
"nativeSrc": "15180:13:20",
"nodeType": "YulLiteral",
"src": "15180:13:20",
"type": "",
"value": "Exceeds cap"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "15157:6:20",
"nodeType": "YulIdentifier",
"src": "15157:6:20"
},
"nativeSrc": "15157:37:20",
"nodeType": "YulFunctionCall",
"src": "15157:37:20"
},
"nativeSrc": "15157:37:20",
"nodeType": "YulExpressionStatement",
"src": "15157:37:20"
}
]
},
"name": "store_literal_in_memory_b8b6f5cda2cdd2ae9d4a84fa9f23426c906d73b31e79e02f654665fe4d569d8f",
"nativeSrc": "15040:161:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "15138:6:20",
"nodeType": "YulTypedName",
"src": "15138:6:20",
"type": ""
}
],
"src": "15040:161:20"
},
{
"body": {
"nativeSrc": "15353:220:20",
"nodeType": "YulBlock",
"src": "15353:220:20",
"statements": [
{
"nativeSrc": "15363:74:20",
"nodeType": "YulAssignment",
"src": "15363:74:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "15429:3:20",
"nodeType": "YulIdentifier",
"src": "15429:3:20"
},
{
"kind": "number",
"nativeSrc": "15434:2:20",
"nodeType": "YulLiteral",
"src": "15434:2:20",
"type": "",
"value": "11"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "15370:58:20",
"nodeType": "YulIdentifier",
"src": "15370:58:20"
},
"nativeSrc": "15370:67:20",
"nodeType": "YulFunctionCall",
"src": "15370:67:20"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "15363:3:20",
"nodeType": "YulIdentifier",
"src": "15363:3:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "15535:3:20",
"nodeType": "YulIdentifier",
"src": "15535:3:20"
}
],
"functionName": {
"name": "store_literal_in_memory_b8b6f5cda2cdd2ae9d4a84fa9f23426c906d73b31e79e02f654665fe4d569d8f",
"nativeSrc": "15446:88:20",
"nodeType": "YulIdentifier",
"src": "15446:88:20"
},
"nativeSrc": "15446:93:20",
"nodeType": "YulFunctionCall",
"src": "15446:93:20"
},
"nativeSrc": "15446:93:20",
"nodeType": "YulExpressionStatement",
"src": "15446:93:20"
},
{
"nativeSrc": "15548:19:20",
"nodeType": "YulAssignment",
"src": "15548:19:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "15559:3:20",
"nodeType": "YulIdentifier",
"src": "15559:3:20"
},
{
"kind": "number",
"nativeSrc": "15564:2:20",
"nodeType": "YulLiteral",
"src": "15564:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "15555:3:20",
"nodeType": "YulIdentifier",
"src": "15555:3:20"
},
"nativeSrc": "15555:12:20",
"nodeType": "YulFunctionCall",
"src": "15555:12:20"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "15548:3:20",
"nodeType": "YulIdentifier",
"src": "15548:3:20"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_b8b6f5cda2cdd2ae9d4a84fa9f23426c906d73b31e79e02f654665fe4d569d8f_to_t_string_memory_ptr_fromStack",
"nativeSrc": "15207:366:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "15341:3:20",
"nodeType": "YulTypedName",
"src": "15341:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "15349:3:20",
"nodeType": "YulTypedName",
"src": "15349:3:20",
"type": ""
}
],
"src": "15207:366:20"
},
{
"body": {
"nativeSrc": "15750:248:20",
"nodeType": "YulBlock",
"src": "15750:248:20",
"statements": [
{
"nativeSrc": "15760:26:20",
"nodeType": "YulAssignment",
"src": "15760:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "15772:9:20",
"nodeType": "YulIdentifier",
"src": "15772:9:20"
},
{
"kind": "number",
"nativeSrc": "15783:2:20",
"nodeType": "YulLiteral",
"src": "15783:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "15768:3:20",
"nodeType": "YulIdentifier",
"src": "15768:3:20"
},
"nativeSrc": "15768:18:20",
"nodeType": "YulFunctionCall",
"src": "15768:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "15760:4:20",
"nodeType": "YulIdentifier",
"src": "15760:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "15807:9:20",
"nodeType": "YulIdentifier",
"src": "15807:9:20"
},
{
"kind": "number",
"nativeSrc": "15818:1:20",
"nodeType": "YulLiteral",
"src": "15818:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "15803:3:20",
"nodeType": "YulIdentifier",
"src": "15803:3:20"
},
"nativeSrc": "15803:17:20",
"nodeType": "YulFunctionCall",
"src": "15803:17:20"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "15826:4:20",
"nodeType": "YulIdentifier",
"src": "15826:4:20"
},
{
"name": "headStart",
"nativeSrc": "15832:9:20",
"nodeType": "YulIdentifier",
"src": "15832:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "15822:3:20",
"nodeType": "YulIdentifier",
"src": "15822:3:20"
},
"nativeSrc": "15822:20:20",
"nodeType": "YulFunctionCall",
"src": "15822:20:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "15796:6:20",
"nodeType": "YulIdentifier",
"src": "15796:6:20"
},
"nativeSrc": "15796:47:20",
"nodeType": "YulFunctionCall",
"src": "15796:47:20"
},
"nativeSrc": "15796:47:20",
"nodeType": "YulExpressionStatement",
"src": "15796:47:20"
},
{
"nativeSrc": "15852:139:20",
"nodeType": "YulAssignment",
"src": "15852:139:20",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "15986:4:20",
"nodeType": "YulIdentifier",
"src": "15986:4:20"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_b8b6f5cda2cdd2ae9d4a84fa9f23426c906d73b31e79e02f654665fe4d569d8f_to_t_string_memory_ptr_fromStack",
"nativeSrc": "15860:124:20",
"nodeType": "YulIdentifier",
"src": "15860:124:20"
},
"nativeSrc": "15860:131:20",
"nodeType": "YulFunctionCall",
"src": "15860:131:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "15852:4:20",
"nodeType": "YulIdentifier",
"src": "15852:4:20"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_b8b6f5cda2cdd2ae9d4a84fa9f23426c906d73b31e79e02f654665fe4d569d8f__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "15579:419:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "15730:9:20",
"nodeType": "YulTypedName",
"src": "15730:9:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "15745:4:20",
"nodeType": "YulTypedName",
"src": "15745:4:20",
"type": ""
}
],
"src": "15579:419:20"
},
{
"body": {
"nativeSrc": "16110:64:20",
"nodeType": "YulBlock",
"src": "16110:64:20",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "16132:6:20",
"nodeType": "YulIdentifier",
"src": "16132:6:20"
},
{
"kind": "number",
"nativeSrc": "16140:1:20",
"nodeType": "YulLiteral",
"src": "16140:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "16128:3:20",
"nodeType": "YulIdentifier",
"src": "16128:3:20"
},
"nativeSrc": "16128:14:20",
"nodeType": "YulFunctionCall",
"src": "16128:14:20"
},
{
"hexValue": "496e73756666696369656e742062616c616e6365",
"kind": "string",
"nativeSrc": "16144:22:20",
"nodeType": "YulLiteral",
"src": "16144:22:20",
"type": "",
"value": "Insufficient balance"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "16121:6:20",
"nodeType": "YulIdentifier",
"src": "16121:6:20"
},
"nativeSrc": "16121:46:20",
"nodeType": "YulFunctionCall",
"src": "16121:46:20"
},
"nativeSrc": "16121:46:20",
"nodeType": "YulExpressionStatement",
"src": "16121:46:20"
}
]
},
"name": "store_literal_in_memory_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5",
"nativeSrc": "16004:170:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "16102:6:20",
"nodeType": "YulTypedName",
"src": "16102:6:20",
"type": ""
}
],
"src": "16004:170:20"
},
{
"body": {
"nativeSrc": "16326:220:20",
"nodeType": "YulBlock",
"src": "16326:220:20",
"statements": [
{
"nativeSrc": "16336:74:20",
"nodeType": "YulAssignment",
"src": "16336:74:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "16402:3:20",
"nodeType": "YulIdentifier",
"src": "16402:3:20"
},
{
"kind": "number",
"nativeSrc": "16407:2:20",
"nodeType": "YulLiteral",
"src": "16407:2:20",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "16343:58:20",
"nodeType": "YulIdentifier",
"src": "16343:58:20"
},
"nativeSrc": "16343:67:20",
"nodeType": "YulFunctionCall",
"src": "16343:67:20"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "16336:3:20",
"nodeType": "YulIdentifier",
"src": "16336:3:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "16508:3:20",
"nodeType": "YulIdentifier",
"src": "16508:3:20"
}
],
"functionName": {
"name": "store_literal_in_memory_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5",
"nativeSrc": "16419:88:20",
"nodeType": "YulIdentifier",
"src": "16419:88:20"
},
"nativeSrc": "16419:93:20",
"nodeType": "YulFunctionCall",
"src": "16419:93:20"
},
"nativeSrc": "16419:93:20",
"nodeType": "YulExpressionStatement",
"src": "16419:93:20"
},
{
"nativeSrc": "16521:19:20",
"nodeType": "YulAssignment",
"src": "16521:19:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "16532:3:20",
"nodeType": "YulIdentifier",
"src": "16532:3:20"
},
{
"kind": "number",
"nativeSrc": "16537:2:20",
"nodeType": "YulLiteral",
"src": "16537:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "16528:3:20",
"nodeType": "YulIdentifier",
"src": "16528:3:20"
},
"nativeSrc": "16528:12:20",
"nodeType": "YulFunctionCall",
"src": "16528:12:20"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "16521:3:20",
"nodeType": "YulIdentifier",
"src": "16521:3:20"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5_to_t_string_memory_ptr_fromStack",
"nativeSrc": "16180:366:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "16314:3:20",
"nodeType": "YulTypedName",
"src": "16314:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "16322:3:20",
"nodeType": "YulTypedName",
"src": "16322:3:20",
"type": ""
}
],
"src": "16180:366:20"
},
{
"body": {
"nativeSrc": "16723:248:20",
"nodeType": "YulBlock",
"src": "16723:248:20",
"statements": [
{
"nativeSrc": "16733:26:20",
"nodeType": "YulAssignment",
"src": "16733:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "16745:9:20",
"nodeType": "YulIdentifier",
"src": "16745:9:20"
},
{
"kind": "number",
"nativeSrc": "16756:2:20",
"nodeType": "YulLiteral",
"src": "16756:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "16741:3:20",
"nodeType": "YulIdentifier",
"src": "16741:3:20"
},
"nativeSrc": "16741:18:20",
"nodeType": "YulFunctionCall",
"src": "16741:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "16733:4:20",
"nodeType": "YulIdentifier",
"src": "16733:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "16780:9:20",
"nodeType": "YulIdentifier",
"src": "16780:9:20"
},
{
"kind": "number",
"nativeSrc": "16791:1:20",
"nodeType": "YulLiteral",
"src": "16791:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "16776:3:20",
"nodeType": "YulIdentifier",
"src": "16776:3:20"
},
"nativeSrc": "16776:17:20",
"nodeType": "YulFunctionCall",
"src": "16776:17:20"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "16799:4:20",
"nodeType": "YulIdentifier",
"src": "16799:4:20"
},
{
"name": "headStart",
"nativeSrc": "16805:9:20",
"nodeType": "YulIdentifier",
"src": "16805:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "16795:3:20",
"nodeType": "YulIdentifier",
"src": "16795:3:20"
},
"nativeSrc": "16795:20:20",
"nodeType": "YulFunctionCall",
"src": "16795:20:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "16769:6:20",
"nodeType": "YulIdentifier",
"src": "16769:6:20"
},
"nativeSrc": "16769:47:20",
"nodeType": "YulFunctionCall",
"src": "16769:47:20"
},
"nativeSrc": "16769:47:20",
"nodeType": "YulExpressionStatement",
"src": "16769:47:20"
},
{
"nativeSrc": "16825:139:20",
"nodeType": "YulAssignment",
"src": "16825:139:20",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "16959:4:20",
"nodeType": "YulIdentifier",
"src": "16959:4:20"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5_to_t_string_memory_ptr_fromStack",
"nativeSrc": "16833:124:20",
"nodeType": "YulIdentifier",
"src": "16833:124:20"
},
"nativeSrc": "16833:131:20",
"nodeType": "YulFunctionCall",
"src": "16833:131:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "16825:4:20",
"nodeType": "YulIdentifier",
"src": "16825:4:20"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "16552:419:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "16703:9:20",
"nodeType": "YulTypedName",
"src": "16703:9:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "16718:4:20",
"nodeType": "YulTypedName",
"src": "16718:4:20",
"type": ""
}
],
"src": "16552:419:20"
},
{
"body": {
"nativeSrc": "17083:70:20",
"nodeType": "YulBlock",
"src": "17083:70:20",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "17105:6:20",
"nodeType": "YulIdentifier",
"src": "17105:6:20"
},
{
"kind": "number",
"nativeSrc": "17113:1:20",
"nodeType": "YulLiteral",
"src": "17113:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "17101:3:20",
"nodeType": "YulIdentifier",
"src": "17101:3:20"
},
"nativeSrc": "17101:14:20",
"nodeType": "YulFunctionCall",
"src": "17101:14:20"
},
{
"hexValue": "436170206d7573742062652067726561746572207468616e2030",
"kind": "string",
"nativeSrc": "17117:28:20",
"nodeType": "YulLiteral",
"src": "17117:28:20",
"type": "",
"value": "Cap must be greater than 0"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "17094:6:20",
"nodeType": "YulIdentifier",
"src": "17094:6:20"
},
"nativeSrc": "17094:52:20",
"nodeType": "YulFunctionCall",
"src": "17094:52:20"
},
"nativeSrc": "17094:52:20",
"nodeType": "YulExpressionStatement",
"src": "17094:52:20"
}
]
},
"name": "store_literal_in_memory_5e183aa048a71e5e23fea18f2a2522958a8400e3c1ab664f1955f1a074c38645",
"nativeSrc": "16977:176:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "17075:6:20",
"nodeType": "YulTypedName",
"src": "17075:6:20",
"type": ""
}
],
"src": "16977:176:20"
},
{
"body": {
"nativeSrc": "17305:220:20",
"nodeType": "YulBlock",
"src": "17305:220:20",
"statements": [
{
"nativeSrc": "17315:74:20",
"nodeType": "YulAssignment",
"src": "17315:74:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "17381:3:20",
"nodeType": "YulIdentifier",
"src": "17381:3:20"
},
{
"kind": "number",
"nativeSrc": "17386:2:20",
"nodeType": "YulLiteral",
"src": "17386:2:20",
"type": "",
"value": "26"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "17322:58:20",
"nodeType": "YulIdentifier",
"src": "17322:58:20"
},
"nativeSrc": "17322:67:20",
"nodeType": "YulFunctionCall",
"src": "17322:67:20"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "17315:3:20",
"nodeType": "YulIdentifier",
"src": "17315:3:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "17487:3:20",
"nodeType": "YulIdentifier",
"src": "17487:3:20"
}
],
"functionName": {
"name": "store_literal_in_memory_5e183aa048a71e5e23fea18f2a2522958a8400e3c1ab664f1955f1a074c38645",
"nativeSrc": "17398:88:20",
"nodeType": "YulIdentifier",
"src": "17398:88:20"
},
"nativeSrc": "17398:93:20",
"nodeType": "YulFunctionCall",
"src": "17398:93:20"
},
"nativeSrc": "17398:93:20",
"nodeType": "YulExpressionStatement",
"src": "17398:93:20"
},
{
"nativeSrc": "17500:19:20",
"nodeType": "YulAssignment",
"src": "17500:19:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "17511:3:20",
"nodeType": "YulIdentifier",
"src": "17511:3:20"
},
{
"kind": "number",
"nativeSrc": "17516:2:20",
"nodeType": "YulLiteral",
"src": "17516:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "17507:3:20",
"nodeType": "YulIdentifier",
"src": "17507:3:20"
},
"nativeSrc": "17507:12:20",
"nodeType": "YulFunctionCall",
"src": "17507:12:20"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "17500:3:20",
"nodeType": "YulIdentifier",
"src": "17500:3:20"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_5e183aa048a71e5e23fea18f2a2522958a8400e3c1ab664f1955f1a074c38645_to_t_string_memory_ptr_fromStack",
"nativeSrc": "17159:366:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "17293:3:20",
"nodeType": "YulTypedName",
"src": "17293:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "17301:3:20",
"nodeType": "YulTypedName",
"src": "17301:3:20",
"type": ""
}
],
"src": "17159:366:20"
},
{
"body": {
"nativeSrc": "17702:248:20",
"nodeType": "YulBlock",
"src": "17702:248:20",
"statements": [
{
"nativeSrc": "17712:26:20",
"nodeType": "YulAssignment",
"src": "17712:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "17724:9:20",
"nodeType": "YulIdentifier",
"src": "17724:9:20"
},
{
"kind": "number",
"nativeSrc": "17735:2:20",
"nodeType": "YulLiteral",
"src": "17735:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "17720:3:20",
"nodeType": "YulIdentifier",
"src": "17720:3:20"
},
"nativeSrc": "17720:18:20",
"nodeType": "YulFunctionCall",
"src": "17720:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "17712:4:20",
"nodeType": "YulIdentifier",
"src": "17712:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "17759:9:20",
"nodeType": "YulIdentifier",
"src": "17759:9:20"
},
{
"kind": "number",
"nativeSrc": "17770:1:20",
"nodeType": "YulLiteral",
"src": "17770:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "17755:3:20",
"nodeType": "YulIdentifier",
"src": "17755:3:20"
},
"nativeSrc": "17755:17:20",
"nodeType": "YulFunctionCall",
"src": "17755:17:20"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "17778:4:20",
"nodeType": "YulIdentifier",
"src": "17778:4:20"
},
{
"name": "headStart",
"nativeSrc": "17784:9:20",
"nodeType": "YulIdentifier",
"src": "17784:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "17774:3:20",
"nodeType": "YulIdentifier",
"src": "17774:3:20"
},
"nativeSrc": "17774:20:20",
"nodeType": "YulFunctionCall",
"src": "17774:20:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "17748:6:20",
"nodeType": "YulIdentifier",
"src": "17748:6:20"
},
"nativeSrc": "17748:47:20",
"nodeType": "YulFunctionCall",
"src": "17748:47:20"
},
"nativeSrc": "17748:47:20",
"nodeType": "YulExpressionStatement",
"src": "17748:47:20"
},
{
"nativeSrc": "17804:139:20",
"nodeType": "YulAssignment",
"src": "17804:139:20",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "17938:4:20",
"nodeType": "YulIdentifier",
"src": "17938:4:20"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_5e183aa048a71e5e23fea18f2a2522958a8400e3c1ab664f1955f1a074c38645_to_t_string_memory_ptr_fromStack",
"nativeSrc": "17812:124:20",
"nodeType": "YulIdentifier",
"src": "17812:124:20"
},
"nativeSrc": "17812:131:20",
"nodeType": "YulFunctionCall",
"src": "17812:131:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "17804:4:20",
"nodeType": "YulIdentifier",
"src": "17804:4:20"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_5e183aa048a71e5e23fea18f2a2522958a8400e3c1ab664f1955f1a074c38645__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "17531:419:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "17682:9:20",
"nodeType": "YulTypedName",
"src": "17682:9:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "17697:4:20",
"nodeType": "YulTypedName",
"src": "17697:4:20",
"type": ""
}
],
"src": "17531:419:20"
},
{
"body": {
"nativeSrc": "18007:51:20",
"nodeType": "YulBlock",
"src": "18007:51:20",
"statements": [
{
"nativeSrc": "18017:34:20",
"nodeType": "YulAssignment",
"src": "18017:34:20",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "18042:1:20",
"nodeType": "YulLiteral",
"src": "18042:1:20",
"type": "",
"value": "1"
},
{
"name": "value",
"nativeSrc": "18045:5:20",
"nodeType": "YulIdentifier",
"src": "18045:5:20"
}
],
"functionName": {
"name": "shr",
"nativeSrc": "18038:3:20",
"nodeType": "YulIdentifier",
"src": "18038:3:20"
},
"nativeSrc": "18038:13:20",
"nodeType": "YulFunctionCall",
"src": "18038:13:20"
},
"variableNames": [
{
"name": "newValue",
"nativeSrc": "18017:8:20",
"nodeType": "YulIdentifier",
"src": "18017:8:20"
}
]
}
]
},
"name": "shift_right_1_unsigned",
"nativeSrc": "17956:102:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "17988:5:20",
"nodeType": "YulTypedName",
"src": "17988:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nativeSrc": "17998:8:20",
"nodeType": "YulTypedName",
"src": "17998:8:20",
"type": ""
}
],
"src": "17956:102:20"
},
{
"body": {
"nativeSrc": "18137:775:20",
"nodeType": "YulBlock",
"src": "18137:775:20",
"statements": [
{
"nativeSrc": "18147:15:20",
"nodeType": "YulAssignment",
"src": "18147:15:20",
"value": {
"name": "_power",
"nativeSrc": "18156:6:20",
"nodeType": "YulIdentifier",
"src": "18156:6:20"
},
"variableNames": [
{
"name": "power",
"nativeSrc": "18147:5:20",
"nodeType": "YulIdentifier",
"src": "18147:5:20"
}
]
},
{
"nativeSrc": "18171:14:20",
"nodeType": "YulAssignment",
"src": "18171:14:20",
"value": {
"name": "_base",
"nativeSrc": "18180:5:20",
"nodeType": "YulIdentifier",
"src": "18180:5:20"
},
"variableNames": [
{
"name": "base",
"nativeSrc": "18171:4:20",
"nodeType": "YulIdentifier",
"src": "18171:4:20"
}
]
},
{
"body": {
"nativeSrc": "18229:677:20",
"nodeType": "YulBlock",
"src": "18229:677:20",
"statements": [
{
"body": {
"nativeSrc": "18317:22:20",
"nodeType": "YulBlock",
"src": "18317:22:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nativeSrc": "18319:16:20",
"nodeType": "YulIdentifier",
"src": "18319:16:20"
},
"nativeSrc": "18319:18:20",
"nodeType": "YulFunctionCall",
"src": "18319:18:20"
},
"nativeSrc": "18319:18:20",
"nodeType": "YulExpressionStatement",
"src": "18319:18:20"
}
]
},
"condition": {
"arguments": [
{
"name": "base",
"nativeSrc": "18295:4:20",
"nodeType": "YulIdentifier",
"src": "18295:4:20"
},
{
"arguments": [
{
"name": "max",
"nativeSrc": "18305:3:20",
"nodeType": "YulIdentifier",
"src": "18305:3:20"
},
{
"name": "base",
"nativeSrc": "18310:4:20",
"nodeType": "YulIdentifier",
"src": "18310:4:20"
}
],
"functionName": {
"name": "div",
"nativeSrc": "18301:3:20",
"nodeType": "YulIdentifier",
"src": "18301:3:20"
},
"nativeSrc": "18301:14:20",
"nodeType": "YulFunctionCall",
"src": "18301:14:20"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "18292:2:20",
"nodeType": "YulIdentifier",
"src": "18292:2:20"
},
"nativeSrc": "18292:24:20",
"nodeType": "YulFunctionCall",
"src": "18292:24:20"
},
"nativeSrc": "18289:50:20",
"nodeType": "YulIf",
"src": "18289:50:20"
},
{
"body": {
"nativeSrc": "18384:419:20",
"nodeType": "YulBlock",
"src": "18384:419:20",
"statements": [
{
"nativeSrc": "18764:25:20",
"nodeType": "YulAssignment",
"src": "18764:25:20",
"value": {
"arguments": [
{
"name": "power",
"nativeSrc": "18777:5:20",
"nodeType": "YulIdentifier",
"src": "18777:5:20"
},
{
"name": "base",
"nativeSrc": "18784:4:20",
"nodeType": "YulIdentifier",
"src": "18784:4:20"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "18773:3:20",
"nodeType": "YulIdentifier",
"src": "18773:3:20"
},
"nativeSrc": "18773:16:20",
"nodeType": "YulFunctionCall",
"src": "18773:16:20"
},
"variableNames": [
{
"name": "power",
"nativeSrc": "18764:5:20",
"nodeType": "YulIdentifier",
"src": "18764:5:20"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "exponent",
"nativeSrc": "18359:8:20",
"nodeType": "YulIdentifier",
"src": "18359:8:20"
},
{
"kind": "number",
"nativeSrc": "18369:1:20",
"nodeType": "YulLiteral",
"src": "18369:1:20",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nativeSrc": "18355:3:20",
"nodeType": "YulIdentifier",
"src": "18355:3:20"
},
"nativeSrc": "18355:16:20",
"nodeType": "YulFunctionCall",
"src": "18355:16:20"
},
"nativeSrc": "18352:451:20",
"nodeType": "YulIf",
"src": "18352:451:20"
},
{
"nativeSrc": "18816:23:20",
"nodeType": "YulAssignment",
"src": "18816:23:20",
"value": {
"arguments": [
{
"name": "base",
"nativeSrc": "18828:4:20",
"nodeType": "YulIdentifier",
"src": "18828:4:20"
},
{
"name": "base",
"nativeSrc": "18834:4:20",
"nodeType": "YulIdentifier",
"src": "18834:4:20"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "18824:3:20",
"nodeType": "YulIdentifier",
"src": "18824:3:20"
},
"nativeSrc": "18824:15:20",
"nodeType": "YulFunctionCall",
"src": "18824:15:20"
},
"variableNames": [
{
"name": "base",
"nativeSrc": "18816:4:20",
"nodeType": "YulIdentifier",
"src": "18816:4:20"
}
]
},
{
"nativeSrc": "18852:44:20",
"nodeType": "YulAssignment",
"src": "18852:44:20",
"value": {
"arguments": [
{
"name": "exponent",
"nativeSrc": "18887:8:20",
"nodeType": "YulIdentifier",
"src": "18887:8:20"
}
],
"functionName": {
"name": "shift_right_1_unsigned",
"nativeSrc": "18864:22:20",
"nodeType": "YulIdentifier",
"src": "18864:22:20"
},
"nativeSrc": "18864:32:20",
"nodeType": "YulFunctionCall",
"src": "18864:32:20"
},
"variableNames": [
{
"name": "exponent",
"nativeSrc": "18852:8:20",
"nodeType": "YulIdentifier",
"src": "18852:8:20"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "exponent",
"nativeSrc": "18205:8:20",
"nodeType": "YulIdentifier",
"src": "18205:8:20"
},
{
"kind": "number",
"nativeSrc": "18215:1:20",
"nodeType": "YulLiteral",
"src": "18215:1:20",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "18202:2:20",
"nodeType": "YulIdentifier",
"src": "18202:2:20"
},
"nativeSrc": "18202:15:20",
"nodeType": "YulFunctionCall",
"src": "18202:15:20"
},
"nativeSrc": "18194:712:20",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "18218:2:20",
"nodeType": "YulBlock",
"src": "18218:2:20",
"statements": []
},
"pre": {
"nativeSrc": "18198:3:20",
"nodeType": "YulBlock",
"src": "18198:3:20",
"statements": []
},
"src": "18194:712:20"
}
]
},
"name": "checked_exp_helper",
"nativeSrc": "18064:848:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "_power",
"nativeSrc": "18092:6:20",
"nodeType": "YulTypedName",
"src": "18092:6:20",
"type": ""
},
{
"name": "_base",
"nativeSrc": "18100:5:20",
"nodeType": "YulTypedName",
"src": "18100:5:20",
"type": ""
},
{
"name": "exponent",
"nativeSrc": "18107:8:20",
"nodeType": "YulTypedName",
"src": "18107:8:20",
"type": ""
},
{
"name": "max",
"nativeSrc": "18117:3:20",
"nodeType": "YulTypedName",
"src": "18117:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "power",
"nativeSrc": "18125:5:20",
"nodeType": "YulTypedName",
"src": "18125:5:20",
"type": ""
},
{
"name": "base",
"nativeSrc": "18132:4:20",
"nodeType": "YulTypedName",
"src": "18132:4:20",
"type": ""
}
],
"src": "18064:848:20"
},
{
"body": {
"nativeSrc": "18978:1013:20",
"nodeType": "YulBlock",
"src": "18978:1013:20",
"statements": [
{
"body": {
"nativeSrc": "19173:20:20",
"nodeType": "YulBlock",
"src": "19173:20:20",
"statements": [
{
"nativeSrc": "19175:10:20",
"nodeType": "YulAssignment",
"src": "19175:10:20",
"value": {
"kind": "number",
"nativeSrc": "19184:1:20",
"nodeType": "YulLiteral",
"src": "19184:1:20",
"type": "",
"value": "1"
},
"variableNames": [
{
"name": "power",
"nativeSrc": "19175:5:20",
"nodeType": "YulIdentifier",
"src": "19175:5:20"
}
]
},
{
"nativeSrc": "19186:5:20",
"nodeType": "YulLeave",
"src": "19186:5:20"
}
]
},
"condition": {
"arguments": [
{
"name": "exponent",
"nativeSrc": "19163:8:20",
"nodeType": "YulIdentifier",
"src": "19163:8:20"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "19156:6:20",
"nodeType": "YulIdentifier",
"src": "19156:6:20"
},
"nativeSrc": "19156:16:20",
"nodeType": "YulFunctionCall",
"src": "19156:16:20"
},
"nativeSrc": "19153:40:20",
"nodeType": "YulIf",
"src": "19153:40:20"
},
{
"body": {
"nativeSrc": "19218:20:20",
"nodeType": "YulBlock",
"src": "19218:20:20",
"statements": [
{
"nativeSrc": "19220:10:20",
"nodeType": "YulAssignment",
"src": "19220:10:20",
"value": {
"kind": "number",
"nativeSrc": "19229:1:20",
"nodeType": "YulLiteral",
"src": "19229:1:20",
"type": "",
"value": "0"
},
"variableNames": [
{
"name": "power",
"nativeSrc": "19220:5:20",
"nodeType": "YulIdentifier",
"src": "19220:5:20"
}
]
},
{
"nativeSrc": "19231:5:20",
"nodeType": "YulLeave",
"src": "19231:5:20"
}
]
},
"condition": {
"arguments": [
{
"name": "base",
"nativeSrc": "19212:4:20",
"nodeType": "YulIdentifier",
"src": "19212:4:20"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "19205:6:20",
"nodeType": "YulIdentifier",
"src": "19205:6:20"
},
"nativeSrc": "19205:12:20",
"nodeType": "YulFunctionCall",
"src": "19205:12:20"
},
"nativeSrc": "19202:36:20",
"nodeType": "YulIf",
"src": "19202:36:20"
},
{
"cases": [
{
"body": {
"nativeSrc": "19348:20:20",
"nodeType": "YulBlock",
"src": "19348:20:20",
"statements": [
{
"nativeSrc": "19350:10:20",
"nodeType": "YulAssignment",
"src": "19350:10:20",
"value": {
"kind": "number",
"nativeSrc": "19359:1:20",
"nodeType": "YulLiteral",
"src": "19359:1:20",
"type": "",
"value": "1"
},
"variableNames": [
{
"name": "power",
"nativeSrc": "19350:5:20",
"nodeType": "YulIdentifier",
"src": "19350:5:20"
}
]
},
{
"nativeSrc": "19361:5:20",
"nodeType": "YulLeave",
"src": "19361:5:20"
}
]
},
"nativeSrc": "19341:27:20",
"nodeType": "YulCase",
"src": "19341:27:20",
"value": {
"kind": "number",
"nativeSrc": "19346:1:20",
"nodeType": "YulLiteral",
"src": "19346:1:20",
"type": "",
"value": "1"
}
},
{
"body": {
"nativeSrc": "19392:176:20",
"nodeType": "YulBlock",
"src": "19392:176:20",
"statements": [
{
"body": {
"nativeSrc": "19427:22:20",
"nodeType": "YulBlock",
"src": "19427:22:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nativeSrc": "19429:16:20",
"nodeType": "YulIdentifier",
"src": "19429:16:20"
},
"nativeSrc": "19429:18:20",
"nodeType": "YulFunctionCall",
"src": "19429:18:20"
},
"nativeSrc": "19429:18:20",
"nodeType": "YulExpressionStatement",
"src": "19429:18:20"
}
]
},
"condition": {
"arguments": [
{
"name": "exponent",
"nativeSrc": "19412:8:20",
"nodeType": "YulIdentifier",
"src": "19412:8:20"
},
{
"kind": "number",
"nativeSrc": "19422:3:20",
"nodeType": "YulLiteral",
"src": "19422:3:20",
"type": "",
"value": "255"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "19409:2:20",
"nodeType": "YulIdentifier",
"src": "19409:2:20"
},
"nativeSrc": "19409:17:20",
"nodeType": "YulFunctionCall",
"src": "19409:17:20"
},
"nativeSrc": "19406:43:20",
"nodeType": "YulIf",
"src": "19406:43:20"
},
{
"nativeSrc": "19462:25:20",
"nodeType": "YulAssignment",
"src": "19462:25:20",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "19475:1:20",
"nodeType": "YulLiteral",
"src": "19475:1:20",
"type": "",
"value": "2"
},
{
"name": "exponent",
"nativeSrc": "19478:8:20",
"nodeType": "YulIdentifier",
"src": "19478:8:20"
}
],
"functionName": {
"name": "exp",
"nativeSrc": "19471:3:20",
"nodeType": "YulIdentifier",
"src": "19471:3:20"
},
"nativeSrc": "19471:16:20",
"nodeType": "YulFunctionCall",
"src": "19471:16:20"
},
"variableNames": [
{
"name": "power",
"nativeSrc": "19462:5:20",
"nodeType": "YulIdentifier",
"src": "19462:5:20"
}
]
},
{
"body": {
"nativeSrc": "19518:22:20",
"nodeType": "YulBlock",
"src": "19518:22:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nativeSrc": "19520:16:20",
"nodeType": "YulIdentifier",
"src": "19520:16:20"
},
"nativeSrc": "19520:18:20",
"nodeType": "YulFunctionCall",
"src": "19520:18:20"
},
"nativeSrc": "19520:18:20",
"nodeType": "YulExpressionStatement",
"src": "19520:18:20"
}
]
},
"condition": {
"arguments": [
{
"name": "power",
"nativeSrc": "19506:5:20",
"nodeType": "YulIdentifier",
"src": "19506:5:20"
},
{
"name": "max",
"nativeSrc": "19513:3:20",
"nodeType": "YulIdentifier",
"src": "19513:3:20"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "19503:2:20",
"nodeType": "YulIdentifier",
"src": "19503:2:20"
},
"nativeSrc": "19503:14:20",
"nodeType": "YulFunctionCall",
"src": "19503:14:20"
},
"nativeSrc": "19500:40:20",
"nodeType": "YulIf",
"src": "19500:40:20"
},
{
"nativeSrc": "19553:5:20",
"nodeType": "YulLeave",
"src": "19553:5:20"
}
]
},
"nativeSrc": "19377:191:20",
"nodeType": "YulCase",
"src": "19377:191:20",
"value": {
"kind": "number",
"nativeSrc": "19382:1:20",
"nodeType": "YulLiteral",
"src": "19382:1:20",
"type": "",
"value": "2"
}
}
],
"expression": {
"name": "base",
"nativeSrc": "19298:4:20",
"nodeType": "YulIdentifier",
"src": "19298:4:20"
},
"nativeSrc": "19291:277:20",
"nodeType": "YulSwitch",
"src": "19291:277:20"
},
{
"body": {
"nativeSrc": "19700:123:20",
"nodeType": "YulBlock",
"src": "19700:123:20",
"statements": [
{
"nativeSrc": "19714:28:20",
"nodeType": "YulAssignment",
"src": "19714:28:20",
"value": {
"arguments": [
{
"name": "base",
"nativeSrc": "19727:4:20",
"nodeType": "YulIdentifier",
"src": "19727:4:20"
},
{
"name": "exponent",
"nativeSrc": "19733:8:20",
"nodeType": "YulIdentifier",
"src": "19733:8:20"
}
],
"functionName": {
"name": "exp",
"nativeSrc": "19723:3:20",
"nodeType": "YulIdentifier",
"src": "19723:3:20"
},
"nativeSrc": "19723:19:20",
"nodeType": "YulFunctionCall",
"src": "19723:19:20"
},
"variableNames": [
{
"name": "power",
"nativeSrc": "19714:5:20",
"nodeType": "YulIdentifier",
"src": "19714:5:20"
}
]
},
{
"body": {
"nativeSrc": "19773:22:20",
"nodeType": "YulBlock",
"src": "19773:22:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nativeSrc": "19775:16:20",
"nodeType": "YulIdentifier",
"src": "19775:16:20"
},
"nativeSrc": "19775:18:20",
"nodeType": "YulFunctionCall",
"src": "19775:18:20"
},
"nativeSrc": "19775:18:20",
"nodeType": "YulExpressionStatement",
"src": "19775:18:20"
}
]
},
"condition": {
"arguments": [
{
"name": "power",
"nativeSrc": "19761:5:20",
"nodeType": "YulIdentifier",
"src": "19761:5:20"
},
{
"name": "max",
"nativeSrc": "19768:3:20",
"nodeType": "YulIdentifier",
"src": "19768:3:20"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "19758:2:20",
"nodeType": "YulIdentifier",
"src": "19758:2:20"
},
"nativeSrc": "19758:14:20",
"nodeType": "YulFunctionCall",
"src": "19758:14:20"
},
"nativeSrc": "19755:40:20",
"nodeType": "YulIf",
"src": "19755:40:20"
},
{
"nativeSrc": "19808:5:20",
"nodeType": "YulLeave",
"src": "19808:5:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "base",
"nativeSrc": "19603:4:20",
"nodeType": "YulIdentifier",
"src": "19603:4:20"
},
{
"kind": "number",
"nativeSrc": "19609:2:20",
"nodeType": "YulLiteral",
"src": "19609:2:20",
"type": "",
"value": "11"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "19600:2:20",
"nodeType": "YulIdentifier",
"src": "19600:2:20"
},
"nativeSrc": "19600:12:20",
"nodeType": "YulFunctionCall",
"src": "19600:12:20"
},
{
"arguments": [
{
"name": "exponent",
"nativeSrc": "19617:8:20",
"nodeType": "YulIdentifier",
"src": "19617:8:20"
},
{
"kind": "number",
"nativeSrc": "19627:2:20",
"nodeType": "YulLiteral",
"src": "19627:2:20",
"type": "",
"value": "78"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "19614:2:20",
"nodeType": "YulIdentifier",
"src": "19614:2:20"
},
"nativeSrc": "19614:16:20",
"nodeType": "YulFunctionCall",
"src": "19614:16:20"
}
],
"functionName": {
"name": "and",
"nativeSrc": "19596:3:20",
"nodeType": "YulIdentifier",
"src": "19596:3:20"
},
"nativeSrc": "19596:35:20",
"nodeType": "YulFunctionCall",
"src": "19596:35:20"
},
{
"arguments": [
{
"arguments": [
{
"name": "base",
"nativeSrc": "19652:4:20",
"nodeType": "YulIdentifier",
"src": "19652:4:20"
},
{
"kind": "number",
"nativeSrc": "19658:3:20",
"nodeType": "YulLiteral",
"src": "19658:3:20",
"type": "",
"value": "307"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "19649:2:20",
"nodeType": "YulIdentifier",
"src": "19649:2:20"
},
"nativeSrc": "19649:13:20",
"nodeType": "YulFunctionCall",
"src": "19649:13:20"
},
{
"arguments": [
{
"name": "exponent",
"nativeSrc": "19667:8:20",
"nodeType": "YulIdentifier",
"src": "19667:8:20"
},
{
"kind": "number",
"nativeSrc": "19677:2:20",
"nodeType": "YulLiteral",
"src": "19677:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "19664:2:20",
"nodeType": "YulIdentifier",
"src": "19664:2:20"
},
"nativeSrc": "19664:16:20",
"nodeType": "YulFunctionCall",
"src": "19664:16:20"
}
],
"functionName": {
"name": "and",
"nativeSrc": "19645:3:20",
"nodeType": "YulIdentifier",
"src": "19645:3:20"
},
"nativeSrc": "19645:36:20",
"nodeType": "YulFunctionCall",
"src": "19645:36:20"
}
],
"functionName": {
"name": "or",
"nativeSrc": "19580:2:20",
"nodeType": "YulIdentifier",
"src": "19580:2:20"
},
"nativeSrc": "19580:111:20",
"nodeType": "YulFunctionCall",
"src": "19580:111:20"
},
"nativeSrc": "19577:246:20",
"nodeType": "YulIf",
"src": "19577:246:20"
},
{
"nativeSrc": "19833:57:20",
"nodeType": "YulAssignment",
"src": "19833:57:20",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "19867:1:20",
"nodeType": "YulLiteral",
"src": "19867:1:20",
"type": "",
"value": "1"
},
{
"name": "base",
"nativeSrc": "19870:4:20",
"nodeType": "YulIdentifier",
"src": "19870:4:20"
},
{
"name": "exponent",
"nativeSrc": "19876:8:20",
"nodeType": "YulIdentifier",
"src": "19876:8:20"
},
{
"name": "max",
"nativeSrc": "19886:3:20",
"nodeType": "YulIdentifier",
"src": "19886:3:20"
}
],
"functionName": {
"name": "checked_exp_helper",
"nativeSrc": "19848:18:20",
"nodeType": "YulIdentifier",
"src": "19848:18:20"
},
"nativeSrc": "19848:42:20",
"nodeType": "YulFunctionCall",
"src": "19848:42:20"
},
"variableNames": [
{
"name": "power",
"nativeSrc": "19833:5:20",
"nodeType": "YulIdentifier",
"src": "19833:5:20"
},
{
"name": "base",
"nativeSrc": "19840:4:20",
"nodeType": "YulIdentifier",
"src": "19840:4:20"
}
]
},
{
"body": {
"nativeSrc": "19929:22:20",
"nodeType": "YulBlock",
"src": "19929:22:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nativeSrc": "19931:16:20",
"nodeType": "YulIdentifier",
"src": "19931:16:20"
},
"nativeSrc": "19931:18:20",
"nodeType": "YulFunctionCall",
"src": "19931:18:20"
},
"nativeSrc": "19931:18:20",
"nodeType": "YulExpressionStatement",
"src": "19931:18:20"
}
]
},
"condition": {
"arguments": [
{
"name": "power",
"nativeSrc": "19906:5:20",
"nodeType": "YulIdentifier",
"src": "19906:5:20"
},
{
"arguments": [
{
"name": "max",
"nativeSrc": "19917:3:20",
"nodeType": "YulIdentifier",
"src": "19917:3:20"
},
{
"name": "base",
"nativeSrc": "19922:4:20",
"nodeType": "YulIdentifier",
"src": "19922:4:20"
}
],
"functionName": {
"name": "div",
"nativeSrc": "19913:3:20",
"nodeType": "YulIdentifier",
"src": "19913:3:20"
},
"nativeSrc": "19913:14:20",
"nodeType": "YulFunctionCall",
"src": "19913:14:20"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "19903:2:20",
"nodeType": "YulIdentifier",
"src": "19903:2:20"
},
"nativeSrc": "19903:25:20",
"nodeType": "YulFunctionCall",
"src": "19903:25:20"
},
"nativeSrc": "19900:51:20",
"nodeType": "YulIf",
"src": "19900:51:20"
},
{
"nativeSrc": "19960:25:20",
"nodeType": "YulAssignment",
"src": "19960:25:20",
"value": {
"arguments": [
{
"name": "power",
"nativeSrc": "19973:5:20",
"nodeType": "YulIdentifier",
"src": "19973:5:20"
},
{
"name": "base",
"nativeSrc": "19980:4:20",
"nodeType": "YulIdentifier",
"src": "19980:4:20"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "19969:3:20",
"nodeType": "YulIdentifier",
"src": "19969:3:20"
},
"nativeSrc": "19969:16:20",
"nodeType": "YulFunctionCall",
"src": "19969:16:20"
},
"variableNames": [
{
"name": "power",
"nativeSrc": "19960:5:20",
"nodeType": "YulIdentifier",
"src": "19960:5:20"
}
]
}
]
},
"name": "checked_exp_unsigned",
"nativeSrc": "18918:1073:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "base",
"nativeSrc": "18948:4:20",
"nodeType": "YulTypedName",
"src": "18948:4:20",
"type": ""
},
{
"name": "exponent",
"nativeSrc": "18954:8:20",
"nodeType": "YulTypedName",
"src": "18954:8:20",
"type": ""
},
{
"name": "max",
"nativeSrc": "18964:3:20",
"nodeType": "YulTypedName",
"src": "18964:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "power",
"nativeSrc": "18972:5:20",
"nodeType": "YulTypedName",
"src": "18972:5:20",
"type": ""
}
],
"src": "18918:1073:20"
},
{
"body": {
"nativeSrc": "20061:217:20",
"nodeType": "YulBlock",
"src": "20061:217:20",
"statements": [
{
"nativeSrc": "20071:31:20",
"nodeType": "YulAssignment",
"src": "20071:31:20",
"value": {
"arguments": [
{
"name": "base",
"nativeSrc": "20097:4:20",
"nodeType": "YulIdentifier",
"src": "20097:4:20"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "20079:17:20",
"nodeType": "YulIdentifier",
"src": "20079:17:20"
},
"nativeSrc": "20079:23:20",
"nodeType": "YulFunctionCall",
"src": "20079:23:20"
},
"variableNames": [
{
"name": "base",
"nativeSrc": "20071:4:20",
"nodeType": "YulIdentifier",
"src": "20071:4:20"
}
]
},
{
"nativeSrc": "20111:37:20",
"nodeType": "YulAssignment",
"src": "20111:37:20",
"value": {
"arguments": [
{
"name": "exponent",
"nativeSrc": "20139:8:20",
"nodeType": "YulIdentifier",
"src": "20139:8:20"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nativeSrc": "20123:15:20",
"nodeType": "YulIdentifier",
"src": "20123:15:20"
},
"nativeSrc": "20123:25:20",
"nodeType": "YulFunctionCall",
"src": "20123:25:20"
},
"variableNames": [
{
"name": "exponent",
"nativeSrc": "20111:8:20",
"nodeType": "YulIdentifier",
"src": "20111:8:20"
}
]
},
{
"nativeSrc": "20158:113:20",
"nodeType": "YulAssignment",
"src": "20158:113:20",
"value": {
"arguments": [
{
"name": "base",
"nativeSrc": "20188:4:20",
"nodeType": "YulIdentifier",
"src": "20188:4:20"
},
{
"name": "exponent",
"nativeSrc": "20194:8:20",
"nodeType": "YulIdentifier",
"src": "20194:8:20"
},
{
"kind": "number",
"nativeSrc": "20204:66:20",
"nodeType": "YulLiteral",
"src": "20204:66:20",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "checked_exp_unsigned",
"nativeSrc": "20167:20:20",
"nodeType": "YulIdentifier",
"src": "20167:20:20"
},
"nativeSrc": "20167:104:20",
"nodeType": "YulFunctionCall",
"src": "20167:104:20"
},
"variableNames": [
{
"name": "power",
"nativeSrc": "20158:5:20",
"nodeType": "YulIdentifier",
"src": "20158:5:20"
}
]
}
]
},
"name": "checked_exp_t_uint256_t_uint8",
"nativeSrc": "19997:281:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "base",
"nativeSrc": "20036:4:20",
"nodeType": "YulTypedName",
"src": "20036:4:20",
"type": ""
},
{
"name": "exponent",
"nativeSrc": "20042:8:20",
"nodeType": "YulTypedName",
"src": "20042:8:20",
"type": ""
}
],
"returnVariables": [
{
"name": "power",
"nativeSrc": "20055:5:20",
"nodeType": "YulTypedName",
"src": "20055:5:20",
"type": ""
}
],
"src": "19997:281:20"
},
{
"body": {
"nativeSrc": "20332:362:20",
"nodeType": "YulBlock",
"src": "20332:362:20",
"statements": [
{
"nativeSrc": "20342:25:20",
"nodeType": "YulAssignment",
"src": "20342:25:20",
"value": {
"arguments": [
{
"name": "x",
"nativeSrc": "20365:1:20",
"nodeType": "YulIdentifier",
"src": "20365:1:20"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "20347:17:20",
"nodeType": "YulIdentifier",
"src": "20347:17:20"
},
"nativeSrc": "20347:20:20",
"nodeType": "YulFunctionCall",
"src": "20347:20:20"
},
"variableNames": [
{
"name": "x",
"nativeSrc": "20342:1:20",
"nodeType": "YulIdentifier",
"src": "20342:1:20"
}
]
},
{
"nativeSrc": "20376:25:20",
"nodeType": "YulAssignment",
"src": "20376:25:20",
"value": {
"arguments": [
{
"name": "y",
"nativeSrc": "20399:1:20",
"nodeType": "YulIdentifier",
"src": "20399:1:20"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "20381:17:20",
"nodeType": "YulIdentifier",
"src": "20381:17:20"
},
"nativeSrc": "20381:20:20",
"nodeType": "YulFunctionCall",
"src": "20381:20:20"
},
"variableNames": [
{
"name": "y",
"nativeSrc": "20376:1:20",
"nodeType": "YulIdentifier",
"src": "20376:1:20"
}
]
},
{
"nativeSrc": "20410:28:20",
"nodeType": "YulVariableDeclaration",
"src": "20410:28:20",
"value": {
"arguments": [
{
"name": "x",
"nativeSrc": "20433:1:20",
"nodeType": "YulIdentifier",
"src": "20433:1:20"
},
{
"name": "y",
"nativeSrc": "20436:1:20",
"nodeType": "YulIdentifier",
"src": "20436:1:20"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "20429:3:20",
"nodeType": "YulIdentifier",
"src": "20429:3:20"
},
"nativeSrc": "20429:9:20",
"nodeType": "YulFunctionCall",
"src": "20429:9:20"
},
"variables": [
{
"name": "product_raw",
"nativeSrc": "20414:11:20",
"nodeType": "YulTypedName",
"src": "20414:11:20",
"type": ""
}
]
},
{
"nativeSrc": "20447:41:20",
"nodeType": "YulAssignment",
"src": "20447:41:20",
"value": {
"arguments": [
{
"name": "product_raw",
"nativeSrc": "20476:11:20",
"nodeType": "YulIdentifier",
"src": "20476:11:20"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "20458:17:20",
"nodeType": "YulIdentifier",
"src": "20458:17:20"
},
"nativeSrc": "20458:30:20",
"nodeType": "YulFunctionCall",
"src": "20458:30:20"
},
"variableNames": [
{
"name": "product",
"nativeSrc": "20447:7:20",
"nodeType": "YulIdentifier",
"src": "20447:7:20"
}
]
},
{
"body": {
"nativeSrc": "20665:22:20",
"nodeType": "YulBlock",
"src": "20665:22:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nativeSrc": "20667:16:20",
"nodeType": "YulIdentifier",
"src": "20667:16:20"
},
"nativeSrc": "20667:18:20",
"nodeType": "YulFunctionCall",
"src": "20667:18:20"
},
"nativeSrc": "20667:18:20",
"nodeType": "YulExpressionStatement",
"src": "20667:18:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "x",
"nativeSrc": "20598:1:20",
"nodeType": "YulIdentifier",
"src": "20598:1:20"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "20591:6:20",
"nodeType": "YulIdentifier",
"src": "20591:6:20"
},
"nativeSrc": "20591:9:20",
"nodeType": "YulFunctionCall",
"src": "20591:9:20"
},
{
"arguments": [
{
"name": "y",
"nativeSrc": "20621:1:20",
"nodeType": "YulIdentifier",
"src": "20621:1:20"
},
{
"arguments": [
{
"name": "product",
"nativeSrc": "20628:7:20",
"nodeType": "YulIdentifier",
"src": "20628:7:20"
},
{
"name": "x",
"nativeSrc": "20637:1:20",
"nodeType": "YulIdentifier",
"src": "20637:1:20"
}
],
"functionName": {
"name": "div",
"nativeSrc": "20624:3:20",
"nodeType": "YulIdentifier",
"src": "20624:3:20"
},
"nativeSrc": "20624:15:20",
"nodeType": "YulFunctionCall",
"src": "20624:15:20"
}
],
"functionName": {
"name": "eq",
"nativeSrc": "20618:2:20",
"nodeType": "YulIdentifier",
"src": "20618:2:20"
},
"nativeSrc": "20618:22:20",
"nodeType": "YulFunctionCall",
"src": "20618:22:20"
}
],
"functionName": {
"name": "or",
"nativeSrc": "20571:2:20",
"nodeType": "YulIdentifier",
"src": "20571:2:20"
},
"nativeSrc": "20571:83:20",
"nodeType": "YulFunctionCall",
"src": "20571:83:20"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "20551:6:20",
"nodeType": "YulIdentifier",
"src": "20551:6:20"
},
"nativeSrc": "20551:113:20",
"nodeType": "YulFunctionCall",
"src": "20551:113:20"
},
"nativeSrc": "20548:139:20",
"nodeType": "YulIf",
"src": "20548:139:20"
}
]
},
"name": "checked_mul_t_uint256",
"nativeSrc": "20284:410:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nativeSrc": "20315:1:20",
"nodeType": "YulTypedName",
"src": "20315:1:20",
"type": ""
},
{
"name": "y",
"nativeSrc": "20318:1:20",
"nodeType": "YulTypedName",
"src": "20318:1:20",
"type": ""
}
],
"returnVariables": [
{
"name": "product",
"nativeSrc": "20324:7:20",
"nodeType": "YulTypedName",
"src": "20324:7:20",
"type": ""
}
],
"src": "20284:410:20"
},
{
"body": {
"nativeSrc": "20806:70:20",
"nodeType": "YulBlock",
"src": "20806:70:20",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "20828:6:20",
"nodeType": "YulIdentifier",
"src": "20828:6:20"
},
{
"kind": "number",
"nativeSrc": "20836:1:20",
"nodeType": "YulLiteral",
"src": "20836:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "20824:3:20",
"nodeType": "YulIdentifier",
"src": "20824:3:20"
},
"nativeSrc": "20824:14:20",
"nodeType": "YulFunctionCall",
"src": "20824:14:20"
},
{
"hexValue": "496e697469616c20737570706c79206578636565647320636170",
"kind": "string",
"nativeSrc": "20840:28:20",
"nodeType": "YulLiteral",
"src": "20840:28:20",
"type": "",
"value": "Initial supply exceeds cap"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "20817:6:20",
"nodeType": "YulIdentifier",
"src": "20817:6:20"
},
"nativeSrc": "20817:52:20",
"nodeType": "YulFunctionCall",
"src": "20817:52:20"
},
"nativeSrc": "20817:52:20",
"nodeType": "YulExpressionStatement",
"src": "20817:52:20"
}
]
},
"name": "store_literal_in_memory_7b5b5c33ebdb097d93e26e4cac29620b03bf03ccffd90e216f088d94f6f3716d",
"nativeSrc": "20700:176:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "20798:6:20",
"nodeType": "YulTypedName",
"src": "20798:6:20",
"type": ""
}
],
"src": "20700:176:20"
},
{
"body": {
"nativeSrc": "21028:220:20",
"nodeType": "YulBlock",
"src": "21028:220:20",
"statements": [
{
"nativeSrc": "21038:74:20",
"nodeType": "YulAssignment",
"src": "21038:74:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "21104:3:20",
"nodeType": "YulIdentifier",
"src": "21104:3:20"
},
{
"kind": "number",
"nativeSrc": "21109:2:20",
"nodeType": "YulLiteral",
"src": "21109:2:20",
"type": "",
"value": "26"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "21045:58:20",
"nodeType": "YulIdentifier",
"src": "21045:58:20"
},
"nativeSrc": "21045:67:20",
"nodeType": "YulFunctionCall",
"src": "21045:67:20"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "21038:3:20",
"nodeType": "YulIdentifier",
"src": "21038:3:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "21210:3:20",
"nodeType": "YulIdentifier",
"src": "21210:3:20"
}
],
"functionName": {
"name": "store_literal_in_memory_7b5b5c33ebdb097d93e26e4cac29620b03bf03ccffd90e216f088d94f6f3716d",
"nativeSrc": "21121:88:20",
"nodeType": "YulIdentifier",
"src": "21121:88:20"
},
"nativeSrc": "21121:93:20",
"nodeType": "YulFunctionCall",
"src": "21121:93:20"
},
"nativeSrc": "21121:93:20",
"nodeType": "YulExpressionStatement",
"src": "21121:93:20"
},
{
"nativeSrc": "21223:19:20",
"nodeType": "YulAssignment",
"src": "21223:19:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "21234:3:20",
"nodeType": "YulIdentifier",
"src": "21234:3:20"
},
{
"kind": "number",
"nativeSrc": "21239:2:20",
"nodeType": "YulLiteral",
"src": "21239:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "21230:3:20",
"nodeType": "YulIdentifier",
"src": "21230:3:20"
},
"nativeSrc": "21230:12:20",
"nodeType": "YulFunctionCall",
"src": "21230:12:20"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "21223:3:20",
"nodeType": "YulIdentifier",
"src": "21223:3:20"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_7b5b5c33ebdb097d93e26e4cac29620b03bf03ccffd90e216f088d94f6f3716d_to_t_string_memory_ptr_fromStack",
"nativeSrc": "20882:366:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "21016:3:20",
"nodeType": "YulTypedName",
"src": "21016:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "21024:3:20",
"nodeType": "YulTypedName",
"src": "21024:3:20",
"type": ""
}
],
"src": "20882:366:20"
},
{
"body": {
"nativeSrc": "21425:248:20",
"nodeType": "YulBlock",
"src": "21425:248:20",
"statements": [
{
"nativeSrc": "21435:26:20",
"nodeType": "YulAssignment",
"src": "21435:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "21447:9:20",
"nodeType": "YulIdentifier",
"src": "21447:9:20"
},
{
"kind": "number",
"nativeSrc": "21458:2:20",
"nodeType": "YulLiteral",
"src": "21458:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "21443:3:20",
"nodeType": "YulIdentifier",
"src": "21443:3:20"
},
"nativeSrc": "21443:18:20",
"nodeType": "YulFunctionCall",
"src": "21443:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "21435:4:20",
"nodeType": "YulIdentifier",
"src": "21435:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "21482:9:20",
"nodeType": "YulIdentifier",
"src": "21482:9:20"
},
{
"kind": "number",
"nativeSrc": "21493:1:20",
"nodeType": "YulLiteral",
"src": "21493:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "21478:3:20",
"nodeType": "YulIdentifier",
"src": "21478:3:20"
},
"nativeSrc": "21478:17:20",
"nodeType": "YulFunctionCall",
"src": "21478:17:20"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "21501:4:20",
"nodeType": "YulIdentifier",
"src": "21501:4:20"
},
{
"name": "headStart",
"nativeSrc": "21507:9:20",
"nodeType": "YulIdentifier",
"src": "21507:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "21497:3:20",
"nodeType": "YulIdentifier",
"src": "21497:3:20"
},
"nativeSrc": "21497:20:20",
"nodeType": "YulFunctionCall",
"src": "21497:20:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "21471:6:20",
"nodeType": "YulIdentifier",
"src": "21471:6:20"
},
"nativeSrc": "21471:47:20",
"nodeType": "YulFunctionCall",
"src": "21471:47:20"
},
"nativeSrc": "21471:47:20",
"nodeType": "YulExpressionStatement",
"src": "21471:47:20"
},
{
"nativeSrc": "21527:139:20",
"nodeType": "YulAssignment",
"src": "21527:139:20",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "21661:4:20",
"nodeType": "YulIdentifier",
"src": "21661:4:20"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_7b5b5c33ebdb097d93e26e4cac29620b03bf03ccffd90e216f088d94f6f3716d_to_t_string_memory_ptr_fromStack",
"nativeSrc": "21535:124:20",
"nodeType": "YulIdentifier",
"src": "21535:124:20"
},
"nativeSrc": "21535:131:20",
"nodeType": "YulFunctionCall",
"src": "21535:131:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "21527:4:20",
"nodeType": "YulIdentifier",
"src": "21527:4:20"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_7b5b5c33ebdb097d93e26e4cac29620b03bf03ccffd90e216f088d94f6f3716d__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "21254:419:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "21405:9:20",
"nodeType": "YulTypedName",
"src": "21405:9:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "21420:4:20",
"nodeType": "YulTypedName",
"src": "21420:4:20",
"type": ""
}
],
"src": "21254:419:20"
},
{
"body": {
"nativeSrc": "21732:32:20",
"nodeType": "YulBlock",
"src": "21732:32:20",
"statements": [
{
"nativeSrc": "21742:16:20",
"nodeType": "YulAssignment",
"src": "21742:16:20",
"value": {
"name": "value",
"nativeSrc": "21753:5:20",
"nodeType": "YulIdentifier",
"src": "21753:5:20"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "21742:7:20",
"nodeType": "YulIdentifier",
"src": "21742:7:20"
}
]
}
]
},
"name": "cleanup_t_rational_1_by_1",
"nativeSrc": "21679:85:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "21714:5:20",
"nodeType": "YulTypedName",
"src": "21714:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "21724:7:20",
"nodeType": "YulTypedName",
"src": "21724:7:20",
"type": ""
}
],
"src": "21679:85:20"
},
{
"body": {
"nativeSrc": "21814:57:20",
"nodeType": "YulBlock",
"src": "21814:57:20",
"statements": [
{
"nativeSrc": "21824:41:20",
"nodeType": "YulAssignment",
"src": "21824:41:20",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "21839:5:20",
"nodeType": "YulIdentifier",
"src": "21839:5:20"
},
{
"kind": "number",
"nativeSrc": "21846:18:20",
"nodeType": "YulLiteral",
"src": "21846:18:20",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nativeSrc": "21835:3:20",
"nodeType": "YulIdentifier",
"src": "21835:3:20"
},
"nativeSrc": "21835:30:20",
"nodeType": "YulFunctionCall",
"src": "21835:30:20"
},
"variableNames": [
{
"name": "cleaned",
"nativeSrc": "21824:7:20",
"nodeType": "YulIdentifier",
"src": "21824:7:20"
}
]
}
]
},
"name": "cleanup_t_uint64",
"nativeSrc": "21770:101:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "21796:5:20",
"nodeType": "YulTypedName",
"src": "21796:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nativeSrc": "21806:7:20",
"nodeType": "YulTypedName",
"src": "21806:7:20",
"type": ""
}
],
"src": "21770:101:20"
},
{
"body": {
"nativeSrc": "21909:28:20",
"nodeType": "YulBlock",
"src": "21909:28:20",
"statements": [
{
"nativeSrc": "21919:12:20",
"nodeType": "YulAssignment",
"src": "21919:12:20",
"value": {
"name": "value",
"nativeSrc": "21926:5:20",
"nodeType": "YulIdentifier",
"src": "21926:5:20"
},
"variableNames": [
{
"name": "ret",
"nativeSrc": "21919:3:20",
"nodeType": "YulIdentifier",
"src": "21919:3:20"
}
]
}
]
},
"name": "identity",
"nativeSrc": "21877:60:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "21895:5:20",
"nodeType": "YulTypedName",
"src": "21895:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nativeSrc": "21905:3:20",
"nodeType": "YulTypedName",
"src": "21905:3:20",
"type": ""
}
],
"src": "21877:60:20"
},
{
"body": {
"nativeSrc": "22010:89:20",
"nodeType": "YulBlock",
"src": "22010:89:20",
"statements": [
{
"nativeSrc": "22020:73:20",
"nodeType": "YulAssignment",
"src": "22020:73:20",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "22085:5:20",
"nodeType": "YulIdentifier",
"src": "22085:5:20"
}
],
"functionName": {
"name": "cleanup_t_rational_1_by_1",
"nativeSrc": "22059:25:20",
"nodeType": "YulIdentifier",
"src": "22059:25:20"
},
"nativeSrc": "22059:32:20",
"nodeType": "YulFunctionCall",
"src": "22059:32:20"
}
],
"functionName": {
"name": "identity",
"nativeSrc": "22050:8:20",
"nodeType": "YulIdentifier",
"src": "22050:8:20"
},
"nativeSrc": "22050:42:20",
"nodeType": "YulFunctionCall",
"src": "22050:42:20"
}
],
"functionName": {
"name": "cleanup_t_uint64",
"nativeSrc": "22033:16:20",
"nodeType": "YulIdentifier",
"src": "22033:16:20"
},
"nativeSrc": "22033:60:20",
"nodeType": "YulFunctionCall",
"src": "22033:60:20"
},
"variableNames": [
{
"name": "converted",
"nativeSrc": "22020:9:20",
"nodeType": "YulIdentifier",
"src": "22020:9:20"
}
]
}
]
},
"name": "convert_t_rational_1_by_1_to_t_uint64",
"nativeSrc": "21943:156:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "21990:5:20",
"nodeType": "YulTypedName",
"src": "21990:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nativeSrc": "22000:9:20",
"nodeType": "YulTypedName",
"src": "22000:9:20",
"type": ""
}
],
"src": "21943:156:20"
},
{
"body": {
"nativeSrc": "22177:73:20",
"nodeType": "YulBlock",
"src": "22177:73:20",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "22194:3:20",
"nodeType": "YulIdentifier",
"src": "22194:3:20"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "22237:5:20",
"nodeType": "YulIdentifier",
"src": "22237:5:20"
}
],
"functionName": {
"name": "convert_t_rational_1_by_1_to_t_uint64",
"nativeSrc": "22199:37:20",
"nodeType": "YulIdentifier",
"src": "22199:37:20"
},
"nativeSrc": "22199:44:20",
"nodeType": "YulFunctionCall",
"src": "22199:44:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "22187:6:20",
"nodeType": "YulIdentifier",
"src": "22187:6:20"
},
"nativeSrc": "22187:57:20",
"nodeType": "YulFunctionCall",
"src": "22187:57:20"
},
"nativeSrc": "22187:57:20",
"nodeType": "YulExpressionStatement",
"src": "22187:57:20"
}
]
},
"name": "abi_encode_t_rational_1_by_1_to_t_uint64_fromStack",
"nativeSrc": "22105:145:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "22165:5:20",
"nodeType": "YulTypedName",
"src": "22165:5:20",
"type": ""
},
{
"name": "pos",
"nativeSrc": "22172:3:20",
"nodeType": "YulTypedName",
"src": "22172:3:20",
"type": ""
}
],
"src": "22105:145:20"
},
{
"body": {
"nativeSrc": "22361:131:20",
"nodeType": "YulBlock",
"src": "22361:131:20",
"statements": [
{
"nativeSrc": "22371:26:20",
"nodeType": "YulAssignment",
"src": "22371:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "22383:9:20",
"nodeType": "YulIdentifier",
"src": "22383:9:20"
},
{
"kind": "number",
"nativeSrc": "22394:2:20",
"nodeType": "YulLiteral",
"src": "22394:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "22379:3:20",
"nodeType": "YulIdentifier",
"src": "22379:3:20"
},
"nativeSrc": "22379:18:20",
"nodeType": "YulFunctionCall",
"src": "22379:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "22371:4:20",
"nodeType": "YulIdentifier",
"src": "22371:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "22458:6:20",
"nodeType": "YulIdentifier",
"src": "22458:6:20"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "22471:9:20",
"nodeType": "YulIdentifier",
"src": "22471:9:20"
},
{
"kind": "number",
"nativeSrc": "22482:1:20",
"nodeType": "YulLiteral",
"src": "22482:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "22467:3:20",
"nodeType": "YulIdentifier",
"src": "22467:3:20"
},
"nativeSrc": "22467:17:20",
"nodeType": "YulFunctionCall",
"src": "22467:17:20"
}
],
"functionName": {
"name": "abi_encode_t_rational_1_by_1_to_t_uint64_fromStack",
"nativeSrc": "22407:50:20",
"nodeType": "YulIdentifier",
"src": "22407:50:20"
},
"nativeSrc": "22407:78:20",
"nodeType": "YulFunctionCall",
"src": "22407:78:20"
},
"nativeSrc": "22407:78:20",
"nodeType": "YulExpressionStatement",
"src": "22407:78:20"
}
]
},
"name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed",
"nativeSrc": "22256:236:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "22333:9:20",
"nodeType": "YulTypedName",
"src": "22333:9:20",
"type": ""
},
{
"name": "value0",
"nativeSrc": "22345:6:20",
"nodeType": "YulTypedName",
"src": "22345:6:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "22356:4:20",
"nodeType": "YulTypedName",
"src": "22356:4:20",
"type": ""
}
],
"src": "22256:236:20"
},
{
"body": {
"nativeSrc": "22526:152:20",
"nodeType": "YulBlock",
"src": "22526:152:20",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "22543:1:20",
"nodeType": "YulLiteral",
"src": "22543:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "22546:77:20",
"nodeType": "YulLiteral",
"src": "22546:77:20",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "22536:6:20",
"nodeType": "YulIdentifier",
"src": "22536:6:20"
},
"nativeSrc": "22536:88:20",
"nodeType": "YulFunctionCall",
"src": "22536:88:20"
},
"nativeSrc": "22536:88:20",
"nodeType": "YulExpressionStatement",
"src": "22536:88:20"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "22640:1:20",
"nodeType": "YulLiteral",
"src": "22640:1:20",
"type": "",
"value": "4"
},
{
"kind": "number",
"nativeSrc": "22643:4:20",
"nodeType": "YulLiteral",
"src": "22643:4:20",
"type": "",
"value": "0x12"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "22633:6:20",
"nodeType": "YulIdentifier",
"src": "22633:6:20"
},
"nativeSrc": "22633:15:20",
"nodeType": "YulFunctionCall",
"src": "22633:15:20"
},
"nativeSrc": "22633:15:20",
"nodeType": "YulExpressionStatement",
"src": "22633:15:20"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "22664:1:20",
"nodeType": "YulLiteral",
"src": "22664:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "22667:4:20",
"nodeType": "YulLiteral",
"src": "22667:4:20",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nativeSrc": "22657:6:20",
"nodeType": "YulIdentifier",
"src": "22657:6:20"
},
"nativeSrc": "22657:15:20",
"nodeType": "YulFunctionCall",
"src": "22657:15:20"
},
"nativeSrc": "22657:15:20",
"nodeType": "YulExpressionStatement",
"src": "22657:15:20"
}
]
},
"name": "panic_error_0x12",
"nativeSrc": "22498:180:20",
"nodeType": "YulFunctionDefinition",
"src": "22498:180:20"
},
{
"body": {
"nativeSrc": "22726:143:20",
"nodeType": "YulBlock",
"src": "22726:143:20",
"statements": [
{
"nativeSrc": "22736:25:20",
"nodeType": "YulAssignment",
"src": "22736:25:20",
"value": {
"arguments": [
{
"name": "x",
"nativeSrc": "22759:1:20",
"nodeType": "YulIdentifier",
"src": "22759:1:20"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "22741:17:20",
"nodeType": "YulIdentifier",
"src": "22741:17:20"
},
"nativeSrc": "22741:20:20",
"nodeType": "YulFunctionCall",
"src": "22741:20:20"
},
"variableNames": [
{
"name": "x",
"nativeSrc": "22736:1:20",
"nodeType": "YulIdentifier",
"src": "22736:1:20"
}
]
},
{
"nativeSrc": "22770:25:20",
"nodeType": "YulAssignment",
"src": "22770:25:20",
"value": {
"arguments": [
{
"name": "y",
"nativeSrc": "22793:1:20",
"nodeType": "YulIdentifier",
"src": "22793:1:20"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "22775:17:20",
"nodeType": "YulIdentifier",
"src": "22775:17:20"
},
"nativeSrc": "22775:20:20",
"nodeType": "YulFunctionCall",
"src": "22775:20:20"
},
"variableNames": [
{
"name": "y",
"nativeSrc": "22770:1:20",
"nodeType": "YulIdentifier",
"src": "22770:1:20"
}
]
},
{
"body": {
"nativeSrc": "22817:22:20",
"nodeType": "YulBlock",
"src": "22817:22:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x12",
"nativeSrc": "22819:16:20",
"nodeType": "YulIdentifier",
"src": "22819:16:20"
},
"nativeSrc": "22819:18:20",
"nodeType": "YulFunctionCall",
"src": "22819:18:20"
},
"nativeSrc": "22819:18:20",
"nodeType": "YulExpressionStatement",
"src": "22819:18:20"
}
]
},
"condition": {
"arguments": [
{
"name": "y",
"nativeSrc": "22814:1:20",
"nodeType": "YulIdentifier",
"src": "22814:1:20"
}
],
"functionName": {
"name": "iszero",
"nativeSrc": "22807:6:20",
"nodeType": "YulIdentifier",
"src": "22807:6:20"
},
"nativeSrc": "22807:9:20",
"nodeType": "YulFunctionCall",
"src": "22807:9:20"
},
"nativeSrc": "22804:35:20",
"nodeType": "YulIf",
"src": "22804:35:20"
},
{
"nativeSrc": "22849:14:20",
"nodeType": "YulAssignment",
"src": "22849:14:20",
"value": {
"arguments": [
{
"name": "x",
"nativeSrc": "22858:1:20",
"nodeType": "YulIdentifier",
"src": "22858:1:20"
},
{
"name": "y",
"nativeSrc": "22861:1:20",
"nodeType": "YulIdentifier",
"src": "22861:1:20"
}
],
"functionName": {
"name": "div",
"nativeSrc": "22854:3:20",
"nodeType": "YulIdentifier",
"src": "22854:3:20"
},
"nativeSrc": "22854:9:20",
"nodeType": "YulFunctionCall",
"src": "22854:9:20"
},
"variableNames": [
{
"name": "r",
"nativeSrc": "22849:1:20",
"nodeType": "YulIdentifier",
"src": "22849:1:20"
}
]
}
]
},
"name": "checked_div_t_uint256",
"nativeSrc": "22684:185:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nativeSrc": "22715:1:20",
"nodeType": "YulTypedName",
"src": "22715:1:20",
"type": ""
},
{
"name": "y",
"nativeSrc": "22718:1:20",
"nodeType": "YulTypedName",
"src": "22718:1:20",
"type": ""
}
],
"returnVariables": [
{
"name": "r",
"nativeSrc": "22724:1:20",
"nodeType": "YulTypedName",
"src": "22724:1:20",
"type": ""
}
],
"src": "22684:185:20"
},
{
"body": {
"nativeSrc": "22981:124:20",
"nodeType": "YulBlock",
"src": "22981:124:20",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "23003:6:20",
"nodeType": "YulIdentifier",
"src": "23003:6:20"
},
{
"kind": "number",
"nativeSrc": "23011:1:20",
"nodeType": "YulLiteral",
"src": "23011:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "22999:3:20",
"nodeType": "YulIdentifier",
"src": "22999:3:20"
},
"nativeSrc": "22999:14:20",
"nodeType": "YulFunctionCall",
"src": "22999:14:20"
},
{
"hexValue": "4e657720636170206d7573742062652067726561746572207468616e20637572",
"kind": "string",
"nativeSrc": "23015:34:20",
"nodeType": "YulLiteral",
"src": "23015:34:20",
"type": "",
"value": "New cap must be greater than cur"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "22992:6:20",
"nodeType": "YulIdentifier",
"src": "22992:6:20"
},
"nativeSrc": "22992:58:20",
"nodeType": "YulFunctionCall",
"src": "22992:58:20"
},
"nativeSrc": "22992:58:20",
"nodeType": "YulExpressionStatement",
"src": "22992:58:20"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "23071:6:20",
"nodeType": "YulIdentifier",
"src": "23071:6:20"
},
{
"kind": "number",
"nativeSrc": "23079:2:20",
"nodeType": "YulLiteral",
"src": "23079:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "23067:3:20",
"nodeType": "YulIdentifier",
"src": "23067:3:20"
},
"nativeSrc": "23067:15:20",
"nodeType": "YulFunctionCall",
"src": "23067:15:20"
},
{
"hexValue": "72656e7420737570706c79",
"kind": "string",
"nativeSrc": "23084:13:20",
"nodeType": "YulLiteral",
"src": "23084:13:20",
"type": "",
"value": "rent supply"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "23060:6:20",
"nodeType": "YulIdentifier",
"src": "23060:6:20"
},
"nativeSrc": "23060:38:20",
"nodeType": "YulFunctionCall",
"src": "23060:38:20"
},
"nativeSrc": "23060:38:20",
"nodeType": "YulExpressionStatement",
"src": "23060:38:20"
}
]
},
"name": "store_literal_in_memory_46d970fa77b82baee60098ee14b8367afc87d548358ef8e79dc0221f8c0e0002",
"nativeSrc": "22875:230:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "22973:6:20",
"nodeType": "YulTypedName",
"src": "22973:6:20",
"type": ""
}
],
"src": "22875:230:20"
},
{
"body": {
"nativeSrc": "23257:220:20",
"nodeType": "YulBlock",
"src": "23257:220:20",
"statements": [
{
"nativeSrc": "23267:74:20",
"nodeType": "YulAssignment",
"src": "23267:74:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "23333:3:20",
"nodeType": "YulIdentifier",
"src": "23333:3:20"
},
{
"kind": "number",
"nativeSrc": "23338:2:20",
"nodeType": "YulLiteral",
"src": "23338:2:20",
"type": "",
"value": "43"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "23274:58:20",
"nodeType": "YulIdentifier",
"src": "23274:58:20"
},
"nativeSrc": "23274:67:20",
"nodeType": "YulFunctionCall",
"src": "23274:67:20"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "23267:3:20",
"nodeType": "YulIdentifier",
"src": "23267:3:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "23439:3:20",
"nodeType": "YulIdentifier",
"src": "23439:3:20"
}
],
"functionName": {
"name": "store_literal_in_memory_46d970fa77b82baee60098ee14b8367afc87d548358ef8e79dc0221f8c0e0002",
"nativeSrc": "23350:88:20",
"nodeType": "YulIdentifier",
"src": "23350:88:20"
},
"nativeSrc": "23350:93:20",
"nodeType": "YulFunctionCall",
"src": "23350:93:20"
},
"nativeSrc": "23350:93:20",
"nodeType": "YulExpressionStatement",
"src": "23350:93:20"
},
{
"nativeSrc": "23452:19:20",
"nodeType": "YulAssignment",
"src": "23452:19:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "23463:3:20",
"nodeType": "YulIdentifier",
"src": "23463:3:20"
},
{
"kind": "number",
"nativeSrc": "23468:2:20",
"nodeType": "YulLiteral",
"src": "23468:2:20",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "23459:3:20",
"nodeType": "YulIdentifier",
"src": "23459:3:20"
},
"nativeSrc": "23459:12:20",
"nodeType": "YulFunctionCall",
"src": "23459:12:20"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "23452:3:20",
"nodeType": "YulIdentifier",
"src": "23452:3:20"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_46d970fa77b82baee60098ee14b8367afc87d548358ef8e79dc0221f8c0e0002_to_t_string_memory_ptr_fromStack",
"nativeSrc": "23111:366:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "23245:3:20",
"nodeType": "YulTypedName",
"src": "23245:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "23253:3:20",
"nodeType": "YulTypedName",
"src": "23253:3:20",
"type": ""
}
],
"src": "23111:366:20"
},
{
"body": {
"nativeSrc": "23654:248:20",
"nodeType": "YulBlock",
"src": "23654:248:20",
"statements": [
{
"nativeSrc": "23664:26:20",
"nodeType": "YulAssignment",
"src": "23664:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "23676:9:20",
"nodeType": "YulIdentifier",
"src": "23676:9:20"
},
{
"kind": "number",
"nativeSrc": "23687:2:20",
"nodeType": "YulLiteral",
"src": "23687:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "23672:3:20",
"nodeType": "YulIdentifier",
"src": "23672:3:20"
},
"nativeSrc": "23672:18:20",
"nodeType": "YulFunctionCall",
"src": "23672:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "23664:4:20",
"nodeType": "YulIdentifier",
"src": "23664:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "23711:9:20",
"nodeType": "YulIdentifier",
"src": "23711:9:20"
},
{
"kind": "number",
"nativeSrc": "23722:1:20",
"nodeType": "YulLiteral",
"src": "23722:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "23707:3:20",
"nodeType": "YulIdentifier",
"src": "23707:3:20"
},
"nativeSrc": "23707:17:20",
"nodeType": "YulFunctionCall",
"src": "23707:17:20"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "23730:4:20",
"nodeType": "YulIdentifier",
"src": "23730:4:20"
},
{
"name": "headStart",
"nativeSrc": "23736:9:20",
"nodeType": "YulIdentifier",
"src": "23736:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "23726:3:20",
"nodeType": "YulIdentifier",
"src": "23726:3:20"
},
"nativeSrc": "23726:20:20",
"nodeType": "YulFunctionCall",
"src": "23726:20:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "23700:6:20",
"nodeType": "YulIdentifier",
"src": "23700:6:20"
},
"nativeSrc": "23700:47:20",
"nodeType": "YulFunctionCall",
"src": "23700:47:20"
},
"nativeSrc": "23700:47:20",
"nodeType": "YulExpressionStatement",
"src": "23700:47:20"
},
{
"nativeSrc": "23756:139:20",
"nodeType": "YulAssignment",
"src": "23756:139:20",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "23890:4:20",
"nodeType": "YulIdentifier",
"src": "23890:4:20"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_46d970fa77b82baee60098ee14b8367afc87d548358ef8e79dc0221f8c0e0002_to_t_string_memory_ptr_fromStack",
"nativeSrc": "23764:124:20",
"nodeType": "YulIdentifier",
"src": "23764:124:20"
},
"nativeSrc": "23764:131:20",
"nodeType": "YulFunctionCall",
"src": "23764:131:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "23756:4:20",
"nodeType": "YulIdentifier",
"src": "23756:4:20"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_46d970fa77b82baee60098ee14b8367afc87d548358ef8e79dc0221f8c0e0002__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "23483:419:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "23634:9:20",
"nodeType": "YulTypedName",
"src": "23634:9:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "23649:4:20",
"nodeType": "YulTypedName",
"src": "23649:4:20",
"type": ""
}
],
"src": "23483:419:20"
},
{
"body": {
"nativeSrc": "24014:60:20",
"nodeType": "YulBlock",
"src": "24014:60:20",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "24036:6:20",
"nodeType": "YulIdentifier",
"src": "24036:6:20"
},
{
"kind": "number",
"nativeSrc": "24044:1:20",
"nodeType": "YulLiteral",
"src": "24044:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "24032:3:20",
"nodeType": "YulIdentifier",
"src": "24032:3:20"
},
"nativeSrc": "24032:14:20",
"nodeType": "YulFunctionCall",
"src": "24032:14:20"
},
{
"hexValue": "5061757361626c653a20706175736564",
"kind": "string",
"nativeSrc": "24048:18:20",
"nodeType": "YulLiteral",
"src": "24048:18:20",
"type": "",
"value": "Pausable: paused"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "24025:6:20",
"nodeType": "YulIdentifier",
"src": "24025:6:20"
},
"nativeSrc": "24025:42:20",
"nodeType": "YulFunctionCall",
"src": "24025:42:20"
},
"nativeSrc": "24025:42:20",
"nodeType": "YulExpressionStatement",
"src": "24025:42:20"
}
]
},
"name": "store_literal_in_memory_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a",
"nativeSrc": "23908:166:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "24006:6:20",
"nodeType": "YulTypedName",
"src": "24006:6:20",
"type": ""
}
],
"src": "23908:166:20"
},
{
"body": {
"nativeSrc": "24226:220:20",
"nodeType": "YulBlock",
"src": "24226:220:20",
"statements": [
{
"nativeSrc": "24236:74:20",
"nodeType": "YulAssignment",
"src": "24236:74:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "24302:3:20",
"nodeType": "YulIdentifier",
"src": "24302:3:20"
},
{
"kind": "number",
"nativeSrc": "24307:2:20",
"nodeType": "YulLiteral",
"src": "24307:2:20",
"type": "",
"value": "16"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "24243:58:20",
"nodeType": "YulIdentifier",
"src": "24243:58:20"
},
"nativeSrc": "24243:67:20",
"nodeType": "YulFunctionCall",
"src": "24243:67:20"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "24236:3:20",
"nodeType": "YulIdentifier",
"src": "24236:3:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "24408:3:20",
"nodeType": "YulIdentifier",
"src": "24408:3:20"
}
],
"functionName": {
"name": "store_literal_in_memory_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a",
"nativeSrc": "24319:88:20",
"nodeType": "YulIdentifier",
"src": "24319:88:20"
},
"nativeSrc": "24319:93:20",
"nodeType": "YulFunctionCall",
"src": "24319:93:20"
},
"nativeSrc": "24319:93:20",
"nodeType": "YulExpressionStatement",
"src": "24319:93:20"
},
{
"nativeSrc": "24421:19:20",
"nodeType": "YulAssignment",
"src": "24421:19:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "24432:3:20",
"nodeType": "YulIdentifier",
"src": "24432:3:20"
},
{
"kind": "number",
"nativeSrc": "24437:2:20",
"nodeType": "YulLiteral",
"src": "24437:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "24428:3:20",
"nodeType": "YulIdentifier",
"src": "24428:3:20"
},
"nativeSrc": "24428:12:20",
"nodeType": "YulFunctionCall",
"src": "24428:12:20"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "24421:3:20",
"nodeType": "YulIdentifier",
"src": "24421:3:20"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a_to_t_string_memory_ptr_fromStack",
"nativeSrc": "24080:366:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "24214:3:20",
"nodeType": "YulTypedName",
"src": "24214:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "24222:3:20",
"nodeType": "YulTypedName",
"src": "24222:3:20",
"type": ""
}
],
"src": "24080:366:20"
},
{
"body": {
"nativeSrc": "24623:248:20",
"nodeType": "YulBlock",
"src": "24623:248:20",
"statements": [
{
"nativeSrc": "24633:26:20",
"nodeType": "YulAssignment",
"src": "24633:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "24645:9:20",
"nodeType": "YulIdentifier",
"src": "24645:9:20"
},
{
"kind": "number",
"nativeSrc": "24656:2:20",
"nodeType": "YulLiteral",
"src": "24656:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "24641:3:20",
"nodeType": "YulIdentifier",
"src": "24641:3:20"
},
"nativeSrc": "24641:18:20",
"nodeType": "YulFunctionCall",
"src": "24641:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "24633:4:20",
"nodeType": "YulIdentifier",
"src": "24633:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "24680:9:20",
"nodeType": "YulIdentifier",
"src": "24680:9:20"
},
{
"kind": "number",
"nativeSrc": "24691:1:20",
"nodeType": "YulLiteral",
"src": "24691:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "24676:3:20",
"nodeType": "YulIdentifier",
"src": "24676:3:20"
},
"nativeSrc": "24676:17:20",
"nodeType": "YulFunctionCall",
"src": "24676:17:20"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "24699:4:20",
"nodeType": "YulIdentifier",
"src": "24699:4:20"
},
{
"name": "headStart",
"nativeSrc": "24705:9:20",
"nodeType": "YulIdentifier",
"src": "24705:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "24695:3:20",
"nodeType": "YulIdentifier",
"src": "24695:3:20"
},
"nativeSrc": "24695:20:20",
"nodeType": "YulFunctionCall",
"src": "24695:20:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "24669:6:20",
"nodeType": "YulIdentifier",
"src": "24669:6:20"
},
"nativeSrc": "24669:47:20",
"nodeType": "YulFunctionCall",
"src": "24669:47:20"
},
"nativeSrc": "24669:47:20",
"nodeType": "YulExpressionStatement",
"src": "24669:47:20"
},
{
"nativeSrc": "24725:139:20",
"nodeType": "YulAssignment",
"src": "24725:139:20",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "24859:4:20",
"nodeType": "YulIdentifier",
"src": "24859:4:20"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a_to_t_string_memory_ptr_fromStack",
"nativeSrc": "24733:124:20",
"nodeType": "YulIdentifier",
"src": "24733:124:20"
},
"nativeSrc": "24733:131:20",
"nodeType": "YulFunctionCall",
"src": "24733:131:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "24725:4:20",
"nodeType": "YulIdentifier",
"src": "24725:4:20"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "24452:419:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "24603:9:20",
"nodeType": "YulTypedName",
"src": "24603:9:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "24618:4:20",
"nodeType": "YulTypedName",
"src": "24618:4:20",
"type": ""
}
],
"src": "24452:419:20"
},
{
"body": {
"nativeSrc": "24942:53:20",
"nodeType": "YulBlock",
"src": "24942:53:20",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "24959:3:20",
"nodeType": "YulIdentifier",
"src": "24959:3:20"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "24982:5:20",
"nodeType": "YulIdentifier",
"src": "24982:5:20"
}
],
"functionName": {
"name": "cleanup_t_address",
"nativeSrc": "24964:17:20",
"nodeType": "YulIdentifier",
"src": "24964:17:20"
},
"nativeSrc": "24964:24:20",
"nodeType": "YulFunctionCall",
"src": "24964:24:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "24952:6:20",
"nodeType": "YulIdentifier",
"src": "24952:6:20"
},
"nativeSrc": "24952:37:20",
"nodeType": "YulFunctionCall",
"src": "24952:37:20"
},
"nativeSrc": "24952:37:20",
"nodeType": "YulExpressionStatement",
"src": "24952:37:20"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "24877:118:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "24930:5:20",
"nodeType": "YulTypedName",
"src": "24930:5:20",
"type": ""
},
{
"name": "pos",
"nativeSrc": "24937:3:20",
"nodeType": "YulTypedName",
"src": "24937:3:20",
"type": ""
}
],
"src": "24877:118:20"
},
{
"body": {
"nativeSrc": "25099:124:20",
"nodeType": "YulBlock",
"src": "25099:124:20",
"statements": [
{
"nativeSrc": "25109:26:20",
"nodeType": "YulAssignment",
"src": "25109:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "25121:9:20",
"nodeType": "YulIdentifier",
"src": "25121:9:20"
},
{
"kind": "number",
"nativeSrc": "25132:2:20",
"nodeType": "YulLiteral",
"src": "25132:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "25117:3:20",
"nodeType": "YulIdentifier",
"src": "25117:3:20"
},
"nativeSrc": "25117:18:20",
"nodeType": "YulFunctionCall",
"src": "25117:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "25109:4:20",
"nodeType": "YulIdentifier",
"src": "25109:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "25189:6:20",
"nodeType": "YulIdentifier",
"src": "25189:6:20"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "25202:9:20",
"nodeType": "YulIdentifier",
"src": "25202:9:20"
},
{
"kind": "number",
"nativeSrc": "25213:1:20",
"nodeType": "YulLiteral",
"src": "25213:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "25198:3:20",
"nodeType": "YulIdentifier",
"src": "25198:3:20"
},
"nativeSrc": "25198:17:20",
"nodeType": "YulFunctionCall",
"src": "25198:17:20"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "25145:43:20",
"nodeType": "YulIdentifier",
"src": "25145:43:20"
},
"nativeSrc": "25145:71:20",
"nodeType": "YulFunctionCall",
"src": "25145:71:20"
},
"nativeSrc": "25145:71:20",
"nodeType": "YulExpressionStatement",
"src": "25145:71:20"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nativeSrc": "25001:222:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "25071:9:20",
"nodeType": "YulTypedName",
"src": "25071:9:20",
"type": ""
},
{
"name": "value0",
"nativeSrc": "25083:6:20",
"nodeType": "YulTypedName",
"src": "25083:6:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "25094:4:20",
"nodeType": "YulTypedName",
"src": "25094:4:20",
"type": ""
}
],
"src": "25001:222:20"
},
{
"body": {
"nativeSrc": "25292:80:20",
"nodeType": "YulBlock",
"src": "25292:80:20",
"statements": [
{
"nativeSrc": "25302:22:20",
"nodeType": "YulAssignment",
"src": "25302:22:20",
"value": {
"arguments": [
{
"name": "offset",
"nativeSrc": "25317:6:20",
"nodeType": "YulIdentifier",
"src": "25317:6:20"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "25311:5:20",
"nodeType": "YulIdentifier",
"src": "25311:5:20"
},
"nativeSrc": "25311:13:20",
"nodeType": "YulFunctionCall",
"src": "25311:13:20"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "25302:5:20",
"nodeType": "YulIdentifier",
"src": "25302:5:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nativeSrc": "25360:5:20",
"nodeType": "YulIdentifier",
"src": "25360:5:20"
}
],
"functionName": {
"name": "validator_revert_t_bytes32",
"nativeSrc": "25333:26:20",
"nodeType": "YulIdentifier",
"src": "25333:26:20"
},
"nativeSrc": "25333:33:20",
"nodeType": "YulFunctionCall",
"src": "25333:33:20"
},
"nativeSrc": "25333:33:20",
"nodeType": "YulExpressionStatement",
"src": "25333:33:20"
}
]
},
"name": "abi_decode_t_bytes32_fromMemory",
"nativeSrc": "25229:143:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nativeSrc": "25270:6:20",
"nodeType": "YulTypedName",
"src": "25270:6:20",
"type": ""
},
{
"name": "end",
"nativeSrc": "25278:3:20",
"nodeType": "YulTypedName",
"src": "25278:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nativeSrc": "25286:5:20",
"nodeType": "YulTypedName",
"src": "25286:5:20",
"type": ""
}
],
"src": "25229:143:20"
},
{
"body": {
"nativeSrc": "25455:274:20",
"nodeType": "YulBlock",
"src": "25455:274:20",
"statements": [
{
"body": {
"nativeSrc": "25501:83:20",
"nodeType": "YulBlock",
"src": "25501:83:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nativeSrc": "25503:77:20",
"nodeType": "YulIdentifier",
"src": "25503:77:20"
},
"nativeSrc": "25503:79:20",
"nodeType": "YulFunctionCall",
"src": "25503:79:20"
},
"nativeSrc": "25503:79:20",
"nodeType": "YulExpressionStatement",
"src": "25503:79:20"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nativeSrc": "25476:7:20",
"nodeType": "YulIdentifier",
"src": "25476:7:20"
},
{
"name": "headStart",
"nativeSrc": "25485:9:20",
"nodeType": "YulIdentifier",
"src": "25485:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "25472:3:20",
"nodeType": "YulIdentifier",
"src": "25472:3:20"
},
"nativeSrc": "25472:23:20",
"nodeType": "YulFunctionCall",
"src": "25472:23:20"
},
{
"kind": "number",
"nativeSrc": "25497:2:20",
"nodeType": "YulLiteral",
"src": "25497:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nativeSrc": "25468:3:20",
"nodeType": "YulIdentifier",
"src": "25468:3:20"
},
"nativeSrc": "25468:32:20",
"nodeType": "YulFunctionCall",
"src": "25468:32:20"
},
"nativeSrc": "25465:119:20",
"nodeType": "YulIf",
"src": "25465:119:20"
},
{
"nativeSrc": "25594:128:20",
"nodeType": "YulBlock",
"src": "25594:128:20",
"statements": [
{
"nativeSrc": "25609:15:20",
"nodeType": "YulVariableDeclaration",
"src": "25609:15:20",
"value": {
"kind": "number",
"nativeSrc": "25623:1:20",
"nodeType": "YulLiteral",
"src": "25623:1:20",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nativeSrc": "25613:6:20",
"nodeType": "YulTypedName",
"src": "25613:6:20",
"type": ""
}
]
},
{
"nativeSrc": "25638:74:20",
"nodeType": "YulAssignment",
"src": "25638:74:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "25684:9:20",
"nodeType": "YulIdentifier",
"src": "25684:9:20"
},
{
"name": "offset",
"nativeSrc": "25695:6:20",
"nodeType": "YulIdentifier",
"src": "25695:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "25680:3:20",
"nodeType": "YulIdentifier",
"src": "25680:3:20"
},
"nativeSrc": "25680:22:20",
"nodeType": "YulFunctionCall",
"src": "25680:22:20"
},
{
"name": "dataEnd",
"nativeSrc": "25704:7:20",
"nodeType": "YulIdentifier",
"src": "25704:7:20"
}
],
"functionName": {
"name": "abi_decode_t_bytes32_fromMemory",
"nativeSrc": "25648:31:20",
"nodeType": "YulIdentifier",
"src": "25648:31:20"
},
"nativeSrc": "25648:64:20",
"nodeType": "YulFunctionCall",
"src": "25648:64:20"
},
"variableNames": [
{
"name": "value0",
"nativeSrc": "25638:6:20",
"nodeType": "YulIdentifier",
"src": "25638:6:20"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_bytes32_fromMemory",
"nativeSrc": "25378:351:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "25425:9:20",
"nodeType": "YulTypedName",
"src": "25425:9:20",
"type": ""
},
{
"name": "dataEnd",
"nativeSrc": "25436:7:20",
"nodeType": "YulTypedName",
"src": "25436:7:20",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nativeSrc": "25448:6:20",
"nodeType": "YulTypedName",
"src": "25448:6:20",
"type": ""
}
],
"src": "25378:351:20"
},
{
"body": {
"nativeSrc": "25889:288:20",
"nodeType": "YulBlock",
"src": "25889:288:20",
"statements": [
{
"nativeSrc": "25899:26:20",
"nodeType": "YulAssignment",
"src": "25899:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "25911:9:20",
"nodeType": "YulIdentifier",
"src": "25911:9:20"
},
{
"kind": "number",
"nativeSrc": "25922:2:20",
"nodeType": "YulLiteral",
"src": "25922:2:20",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nativeSrc": "25907:3:20",
"nodeType": "YulIdentifier",
"src": "25907:3:20"
},
"nativeSrc": "25907:18:20",
"nodeType": "YulFunctionCall",
"src": "25907:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "25899:4:20",
"nodeType": "YulIdentifier",
"src": "25899:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "25979:6:20",
"nodeType": "YulIdentifier",
"src": "25979:6:20"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "25992:9:20",
"nodeType": "YulIdentifier",
"src": "25992:9:20"
},
{
"kind": "number",
"nativeSrc": "26003:1:20",
"nodeType": "YulLiteral",
"src": "26003:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "25988:3:20",
"nodeType": "YulIdentifier",
"src": "25988:3:20"
},
"nativeSrc": "25988:17:20",
"nodeType": "YulFunctionCall",
"src": "25988:17:20"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "25935:43:20",
"nodeType": "YulIdentifier",
"src": "25935:43:20"
},
"nativeSrc": "25935:71:20",
"nodeType": "YulFunctionCall",
"src": "25935:71:20"
},
"nativeSrc": "25935:71:20",
"nodeType": "YulExpressionStatement",
"src": "25935:71:20"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nativeSrc": "26060:6:20",
"nodeType": "YulIdentifier",
"src": "26060:6:20"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "26073:9:20",
"nodeType": "YulIdentifier",
"src": "26073:9:20"
},
{
"kind": "number",
"nativeSrc": "26084:2:20",
"nodeType": "YulLiteral",
"src": "26084:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "26069:3:20",
"nodeType": "YulIdentifier",
"src": "26069:3:20"
},
"nativeSrc": "26069:18:20",
"nodeType": "YulFunctionCall",
"src": "26069:18:20"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nativeSrc": "26016:43:20",
"nodeType": "YulIdentifier",
"src": "26016:43:20"
},
"nativeSrc": "26016:72:20",
"nodeType": "YulFunctionCall",
"src": "26016:72:20"
},
"nativeSrc": "26016:72:20",
"nodeType": "YulExpressionStatement",
"src": "26016:72:20"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nativeSrc": "26142:6:20",
"nodeType": "YulIdentifier",
"src": "26142:6:20"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "26155:9:20",
"nodeType": "YulIdentifier",
"src": "26155:9:20"
},
{
"kind": "number",
"nativeSrc": "26166:2:20",
"nodeType": "YulLiteral",
"src": "26166:2:20",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "26151:3:20",
"nodeType": "YulIdentifier",
"src": "26151:3:20"
},
"nativeSrc": "26151:18:20",
"nodeType": "YulFunctionCall",
"src": "26151:18:20"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nativeSrc": "26098:43:20",
"nodeType": "YulIdentifier",
"src": "26098:43:20"
},
"nativeSrc": "26098:72:20",
"nodeType": "YulFunctionCall",
"src": "26098:72:20"
},
"nativeSrc": "26098:72:20",
"nodeType": "YulExpressionStatement",
"src": "26098:72:20"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed",
"nativeSrc": "25735:442:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "25845:9:20",
"nodeType": "YulTypedName",
"src": "25845:9:20",
"type": ""
},
{
"name": "value2",
"nativeSrc": "25857:6:20",
"nodeType": "YulTypedName",
"src": "25857:6:20",
"type": ""
},
{
"name": "value1",
"nativeSrc": "25865:6:20",
"nodeType": "YulTypedName",
"src": "25865:6:20",
"type": ""
},
{
"name": "value0",
"nativeSrc": "25873:6:20",
"nodeType": "YulTypedName",
"src": "25873:6:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "25884:4:20",
"nodeType": "YulTypedName",
"src": "25884:4:20",
"type": ""
}
],
"src": "25735:442:20"
},
{
"body": {
"nativeSrc": "26309:206:20",
"nodeType": "YulBlock",
"src": "26309:206:20",
"statements": [
{
"nativeSrc": "26319:26:20",
"nodeType": "YulAssignment",
"src": "26319:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "26331:9:20",
"nodeType": "YulIdentifier",
"src": "26331:9:20"
},
{
"kind": "number",
"nativeSrc": "26342:2:20",
"nodeType": "YulLiteral",
"src": "26342:2:20",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nativeSrc": "26327:3:20",
"nodeType": "YulIdentifier",
"src": "26327:3:20"
},
"nativeSrc": "26327:18:20",
"nodeType": "YulFunctionCall",
"src": "26327:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "26319:4:20",
"nodeType": "YulIdentifier",
"src": "26319:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nativeSrc": "26399:6:20",
"nodeType": "YulIdentifier",
"src": "26399:6:20"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "26412:9:20",
"nodeType": "YulIdentifier",
"src": "26412:9:20"
},
{
"kind": "number",
"nativeSrc": "26423:1:20",
"nodeType": "YulLiteral",
"src": "26423:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "26408:3:20",
"nodeType": "YulIdentifier",
"src": "26408:3:20"
},
"nativeSrc": "26408:17:20",
"nodeType": "YulFunctionCall",
"src": "26408:17:20"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nativeSrc": "26355:43:20",
"nodeType": "YulIdentifier",
"src": "26355:43:20"
},
"nativeSrc": "26355:71:20",
"nodeType": "YulFunctionCall",
"src": "26355:71:20"
},
"nativeSrc": "26355:71:20",
"nodeType": "YulExpressionStatement",
"src": "26355:71:20"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nativeSrc": "26480:6:20",
"nodeType": "YulIdentifier",
"src": "26480:6:20"
},
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "26493:9:20",
"nodeType": "YulIdentifier",
"src": "26493:9:20"
},
{
"kind": "number",
"nativeSrc": "26504:2:20",
"nodeType": "YulLiteral",
"src": "26504:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "26489:3:20",
"nodeType": "YulIdentifier",
"src": "26489:3:20"
},
"nativeSrc": "26489:18:20",
"nodeType": "YulFunctionCall",
"src": "26489:18:20"
}
],
"functionName": {
"name": "abi_encode_t_bytes32_to_t_bytes32_fromStack",
"nativeSrc": "26436:43:20",
"nodeType": "YulIdentifier",
"src": "26436:43:20"
},
"nativeSrc": "26436:72:20",
"nodeType": "YulFunctionCall",
"src": "26436:72:20"
},
"nativeSrc": "26436:72:20",
"nodeType": "YulExpressionStatement",
"src": "26436:72:20"
}
]
},
"name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed",
"nativeSrc": "26183:332:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "26273:9:20",
"nodeType": "YulTypedName",
"src": "26273:9:20",
"type": ""
},
{
"name": "value1",
"nativeSrc": "26285:6:20",
"nodeType": "YulTypedName",
"src": "26285:6:20",
"type": ""
},
{
"name": "value0",
"nativeSrc": "26293:6:20",
"nodeType": "YulTypedName",
"src": "26293:6:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "26304:4:20",
"nodeType": "YulTypedName",
"src": "26304:4:20",
"type": ""
}
],
"src": "26183:332:20"
},
{
"body": {
"nativeSrc": "26627:64:20",
"nodeType": "YulBlock",
"src": "26627:64:20",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nativeSrc": "26649:6:20",
"nodeType": "YulIdentifier",
"src": "26649:6:20"
},
{
"kind": "number",
"nativeSrc": "26657:1:20",
"nodeType": "YulLiteral",
"src": "26657:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "26645:3:20",
"nodeType": "YulIdentifier",
"src": "26645:3:20"
},
"nativeSrc": "26645:14:20",
"nodeType": "YulFunctionCall",
"src": "26645:14:20"
},
{
"hexValue": "5061757361626c653a206e6f7420706175736564",
"kind": "string",
"nativeSrc": "26661:22:20",
"nodeType": "YulLiteral",
"src": "26661:22:20",
"type": "",
"value": "Pausable: not paused"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "26638:6:20",
"nodeType": "YulIdentifier",
"src": "26638:6:20"
},
"nativeSrc": "26638:46:20",
"nodeType": "YulFunctionCall",
"src": "26638:46:20"
},
"nativeSrc": "26638:46:20",
"nodeType": "YulExpressionStatement",
"src": "26638:46:20"
}
]
},
"name": "store_literal_in_memory_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a",
"nativeSrc": "26521:170:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nativeSrc": "26619:6:20",
"nodeType": "YulTypedName",
"src": "26619:6:20",
"type": ""
}
],
"src": "26521:170:20"
},
{
"body": {
"nativeSrc": "26843:220:20",
"nodeType": "YulBlock",
"src": "26843:220:20",
"statements": [
{
"nativeSrc": "26853:74:20",
"nodeType": "YulAssignment",
"src": "26853:74:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "26919:3:20",
"nodeType": "YulIdentifier",
"src": "26919:3:20"
},
{
"kind": "number",
"nativeSrc": "26924:2:20",
"nodeType": "YulLiteral",
"src": "26924:2:20",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nativeSrc": "26860:58:20",
"nodeType": "YulIdentifier",
"src": "26860:58:20"
},
"nativeSrc": "26860:67:20",
"nodeType": "YulFunctionCall",
"src": "26860:67:20"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "26853:3:20",
"nodeType": "YulIdentifier",
"src": "26853:3:20"
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nativeSrc": "27025:3:20",
"nodeType": "YulIdentifier",
"src": "27025:3:20"
}
],
"functionName": {
"name": "store_literal_in_memory_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a",
"nativeSrc": "26936:88:20",
"nodeType": "YulIdentifier",
"src": "26936:88:20"
},
"nativeSrc": "26936:93:20",
"nodeType": "YulFunctionCall",
"src": "26936:93:20"
},
"nativeSrc": "26936:93:20",
"nodeType": "YulExpressionStatement",
"src": "26936:93:20"
},
{
"nativeSrc": "27038:19:20",
"nodeType": "YulAssignment",
"src": "27038:19:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "27049:3:20",
"nodeType": "YulIdentifier",
"src": "27049:3:20"
},
{
"kind": "number",
"nativeSrc": "27054:2:20",
"nodeType": "YulLiteral",
"src": "27054:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "27045:3:20",
"nodeType": "YulIdentifier",
"src": "27045:3:20"
},
"nativeSrc": "27045:12:20",
"nodeType": "YulFunctionCall",
"src": "27045:12:20"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "27038:3:20",
"nodeType": "YulIdentifier",
"src": "27038:3:20"
}
]
}
]
},
"name": "abi_encode_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a_to_t_string_memory_ptr_fromStack",
"nativeSrc": "26697:366:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "26831:3:20",
"nodeType": "YulTypedName",
"src": "26831:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "26839:3:20",
"nodeType": "YulTypedName",
"src": "26839:3:20",
"type": ""
}
],
"src": "26697:366:20"
},
{
"body": {
"nativeSrc": "27240:248:20",
"nodeType": "YulBlock",
"src": "27240:248:20",
"statements": [
{
"nativeSrc": "27250:26:20",
"nodeType": "YulAssignment",
"src": "27250:26:20",
"value": {
"arguments": [
{
"name": "headStart",
"nativeSrc": "27262:9:20",
"nodeType": "YulIdentifier",
"src": "27262:9:20"
},
{
"kind": "number",
"nativeSrc": "27273:2:20",
"nodeType": "YulLiteral",
"src": "27273:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "27258:3:20",
"nodeType": "YulIdentifier",
"src": "27258:3:20"
},
"nativeSrc": "27258:18:20",
"nodeType": "YulFunctionCall",
"src": "27258:18:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "27250:4:20",
"nodeType": "YulIdentifier",
"src": "27250:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nativeSrc": "27297:9:20",
"nodeType": "YulIdentifier",
"src": "27297:9:20"
},
{
"kind": "number",
"nativeSrc": "27308:1:20",
"nodeType": "YulLiteral",
"src": "27308:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nativeSrc": "27293:3:20",
"nodeType": "YulIdentifier",
"src": "27293:3:20"
},
"nativeSrc": "27293:17:20",
"nodeType": "YulFunctionCall",
"src": "27293:17:20"
},
{
"arguments": [
{
"name": "tail",
"nativeSrc": "27316:4:20",
"nodeType": "YulIdentifier",
"src": "27316:4:20"
},
{
"name": "headStart",
"nativeSrc": "27322:9:20",
"nodeType": "YulIdentifier",
"src": "27322:9:20"
}
],
"functionName": {
"name": "sub",
"nativeSrc": "27312:3:20",
"nodeType": "YulIdentifier",
"src": "27312:3:20"
},
"nativeSrc": "27312:20:20",
"nodeType": "YulFunctionCall",
"src": "27312:20:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "27286:6:20",
"nodeType": "YulIdentifier",
"src": "27286:6:20"
},
"nativeSrc": "27286:47:20",
"nodeType": "YulFunctionCall",
"src": "27286:47:20"
},
"nativeSrc": "27286:47:20",
"nodeType": "YulExpressionStatement",
"src": "27286:47:20"
},
{
"nativeSrc": "27342:139:20",
"nodeType": "YulAssignment",
"src": "27342:139:20",
"value": {
"arguments": [
{
"name": "tail",
"nativeSrc": "27476:4:20",
"nodeType": "YulIdentifier",
"src": "27476:4:20"
}
],
"functionName": {
"name": "abi_encode_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a_to_t_string_memory_ptr_fromStack",
"nativeSrc": "27350:124:20",
"nodeType": "YulIdentifier",
"src": "27350:124:20"
},
"nativeSrc": "27350:131:20",
"nodeType": "YulFunctionCall",
"src": "27350:131:20"
},
"variableNames": [
{
"name": "tail",
"nativeSrc": "27342:4:20",
"nodeType": "YulIdentifier",
"src": "27342:4:20"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed",
"nativeSrc": "27069:419:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nativeSrc": "27220:9:20",
"nodeType": "YulTypedName",
"src": "27220:9:20",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nativeSrc": "27235:4:20",
"nodeType": "YulTypedName",
"src": "27235:4:20",
"type": ""
}
],
"src": "27069:419:20"
},
{
"body": {
"nativeSrc": "27548:87:20",
"nodeType": "YulBlock",
"src": "27548:87:20",
"statements": [
{
"nativeSrc": "27558:11:20",
"nodeType": "YulAssignment",
"src": "27558:11:20",
"value": {
"name": "ptr",
"nativeSrc": "27566:3:20",
"nodeType": "YulIdentifier",
"src": "27566:3:20"
},
"variableNames": [
{
"name": "data",
"nativeSrc": "27558:4:20",
"nodeType": "YulIdentifier",
"src": "27558:4:20"
}
]
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nativeSrc": "27586:1:20",
"nodeType": "YulLiteral",
"src": "27586:1:20",
"type": "",
"value": "0"
},
{
"name": "ptr",
"nativeSrc": "27589:3:20",
"nodeType": "YulIdentifier",
"src": "27589:3:20"
}
],
"functionName": {
"name": "mstore",
"nativeSrc": "27579:6:20",
"nodeType": "YulIdentifier",
"src": "27579:6:20"
},
"nativeSrc": "27579:14:20",
"nodeType": "YulFunctionCall",
"src": "27579:14:20"
},
"nativeSrc": "27579:14:20",
"nodeType": "YulExpressionStatement",
"src": "27579:14:20"
},
{
"nativeSrc": "27602:26:20",
"nodeType": "YulAssignment",
"src": "27602:26:20",
"value": {
"arguments": [
{
"kind": "number",
"nativeSrc": "27620:1:20",
"nodeType": "YulLiteral",
"src": "27620:1:20",
"type": "",
"value": "0"
},
{
"kind": "number",
"nativeSrc": "27623:4:20",
"nodeType": "YulLiteral",
"src": "27623:4:20",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "keccak256",
"nativeSrc": "27610:9:20",
"nodeType": "YulIdentifier",
"src": "27610:9:20"
},
"nativeSrc": "27610:18:20",
"nodeType": "YulFunctionCall",
"src": "27610:18:20"
},
"variableNames": [
{
"name": "data",
"nativeSrc": "27602:4:20",
"nodeType": "YulIdentifier",
"src": "27602:4:20"
}
]
}
]
},
"name": "array_dataslot_t_string_storage",
"nativeSrc": "27494:141:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nativeSrc": "27535:3:20",
"nodeType": "YulTypedName",
"src": "27535:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nativeSrc": "27543:4:20",
"nodeType": "YulTypedName",
"src": "27543:4:20",
"type": ""
}
],
"src": "27494:141:20"
},
{
"body": {
"nativeSrc": "27685:49:20",
"nodeType": "YulBlock",
"src": "27685:49:20",
"statements": [
{
"nativeSrc": "27695:33:20",
"nodeType": "YulAssignment",
"src": "27695:33:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "27713:5:20",
"nodeType": "YulIdentifier",
"src": "27713:5:20"
},
{
"kind": "number",
"nativeSrc": "27720:2:20",
"nodeType": "YulLiteral",
"src": "27720:2:20",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nativeSrc": "27709:3:20",
"nodeType": "YulIdentifier",
"src": "27709:3:20"
},
"nativeSrc": "27709:14:20",
"nodeType": "YulFunctionCall",
"src": "27709:14:20"
},
{
"kind": "number",
"nativeSrc": "27725:2:20",
"nodeType": "YulLiteral",
"src": "27725:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "div",
"nativeSrc": "27705:3:20",
"nodeType": "YulIdentifier",
"src": "27705:3:20"
},
"nativeSrc": "27705:23:20",
"nodeType": "YulFunctionCall",
"src": "27705:23:20"
},
"variableNames": [
{
"name": "result",
"nativeSrc": "27695:6:20",
"nodeType": "YulIdentifier",
"src": "27695:6:20"
}
]
}
]
},
"name": "divide_by_32_ceil",
"nativeSrc": "27641:93:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "27668:5:20",
"nodeType": "YulTypedName",
"src": "27668:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nativeSrc": "27678:6:20",
"nodeType": "YulTypedName",
"src": "27678:6:20",
"type": ""
}
],
"src": "27641:93:20"
},
{
"body": {
"nativeSrc": "27793:54:20",
"nodeType": "YulBlock",
"src": "27793:54:20",
"statements": [
{
"nativeSrc": "27803:37:20",
"nodeType": "YulAssignment",
"src": "27803:37:20",
"value": {
"arguments": [
{
"name": "bits",
"nativeSrc": "27828:4:20",
"nodeType": "YulIdentifier",
"src": "27828:4:20"
},
{
"name": "value",
"nativeSrc": "27834:5:20",
"nodeType": "YulIdentifier",
"src": "27834:5:20"
}
],
"functionName": {
"name": "shl",
"nativeSrc": "27824:3:20",
"nodeType": "YulIdentifier",
"src": "27824:3:20"
},
"nativeSrc": "27824:16:20",
"nodeType": "YulFunctionCall",
"src": "27824:16:20"
},
"variableNames": [
{
"name": "newValue",
"nativeSrc": "27803:8:20",
"nodeType": "YulIdentifier",
"src": "27803:8:20"
}
]
}
]
},
"name": "shift_left_dynamic",
"nativeSrc": "27740:107:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nativeSrc": "27768:4:20",
"nodeType": "YulTypedName",
"src": "27768:4:20",
"type": ""
},
{
"name": "value",
"nativeSrc": "27774:5:20",
"nodeType": "YulTypedName",
"src": "27774:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nativeSrc": "27784:8:20",
"nodeType": "YulTypedName",
"src": "27784:8:20",
"type": ""
}
],
"src": "27740:107:20"
},
{
"body": {
"nativeSrc": "27929:317:20",
"nodeType": "YulBlock",
"src": "27929:317:20",
"statements": [
{
"nativeSrc": "27939:35:20",
"nodeType": "YulVariableDeclaration",
"src": "27939:35:20",
"value": {
"arguments": [
{
"name": "shiftBytes",
"nativeSrc": "27960:10:20",
"nodeType": "YulIdentifier",
"src": "27960:10:20"
},
{
"kind": "number",
"nativeSrc": "27972:1:20",
"nodeType": "YulLiteral",
"src": "27972:1:20",
"type": "",
"value": "8"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "27956:3:20",
"nodeType": "YulIdentifier",
"src": "27956:3:20"
},
"nativeSrc": "27956:18:20",
"nodeType": "YulFunctionCall",
"src": "27956:18:20"
},
"variables": [
{
"name": "shiftBits",
"nativeSrc": "27943:9:20",
"nodeType": "YulTypedName",
"src": "27943:9:20",
"type": ""
}
]
},
{
"nativeSrc": "27983:109:20",
"nodeType": "YulVariableDeclaration",
"src": "27983:109:20",
"value": {
"arguments": [
{
"name": "shiftBits",
"nativeSrc": "28014:9:20",
"nodeType": "YulIdentifier",
"src": "28014:9:20"
},
{
"kind": "number",
"nativeSrc": "28025:66:20",
"nodeType": "YulLiteral",
"src": "28025:66:20",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nativeSrc": "27995:18:20",
"nodeType": "YulIdentifier",
"src": "27995:18:20"
},
"nativeSrc": "27995:97:20",
"nodeType": "YulFunctionCall",
"src": "27995:97:20"
},
"variables": [
{
"name": "mask",
"nativeSrc": "27987:4:20",
"nodeType": "YulTypedName",
"src": "27987:4:20",
"type": ""
}
]
},
{
"nativeSrc": "28101:51:20",
"nodeType": "YulAssignment",
"src": "28101:51:20",
"value": {
"arguments": [
{
"name": "shiftBits",
"nativeSrc": "28132:9:20",
"nodeType": "YulIdentifier",
"src": "28132:9:20"
},
{
"name": "toInsert",
"nativeSrc": "28143:8:20",
"nodeType": "YulIdentifier",
"src": "28143:8:20"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nativeSrc": "28113:18:20",
"nodeType": "YulIdentifier",
"src": "28113:18:20"
},
"nativeSrc": "28113:39:20",
"nodeType": "YulFunctionCall",
"src": "28113:39:20"
},
"variableNames": [
{
"name": "toInsert",
"nativeSrc": "28101:8:20",
"nodeType": "YulIdentifier",
"src": "28101:8:20"
}
]
},
{
"nativeSrc": "28161:30:20",
"nodeType": "YulAssignment",
"src": "28161:30:20",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "28174:5:20",
"nodeType": "YulIdentifier",
"src": "28174:5:20"
},
{
"arguments": [
{
"name": "mask",
"nativeSrc": "28185:4:20",
"nodeType": "YulIdentifier",
"src": "28185:4:20"
}
],
"functionName": {
"name": "not",
"nativeSrc": "28181:3:20",
"nodeType": "YulIdentifier",
"src": "28181:3:20"
},
"nativeSrc": "28181:9:20",
"nodeType": "YulFunctionCall",
"src": "28181:9:20"
}
],
"functionName": {
"name": "and",
"nativeSrc": "28170:3:20",
"nodeType": "YulIdentifier",
"src": "28170:3:20"
},
"nativeSrc": "28170:21:20",
"nodeType": "YulFunctionCall",
"src": "28170:21:20"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "28161:5:20",
"nodeType": "YulIdentifier",
"src": "28161:5:20"
}
]
},
{
"nativeSrc": "28200:40:20",
"nodeType": "YulAssignment",
"src": "28200:40:20",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "28213:5:20",
"nodeType": "YulIdentifier",
"src": "28213:5:20"
},
{
"arguments": [
{
"name": "toInsert",
"nativeSrc": "28224:8:20",
"nodeType": "YulIdentifier",
"src": "28224:8:20"
},
{
"name": "mask",
"nativeSrc": "28234:4:20",
"nodeType": "YulIdentifier",
"src": "28234:4:20"
}
],
"functionName": {
"name": "and",
"nativeSrc": "28220:3:20",
"nodeType": "YulIdentifier",
"src": "28220:3:20"
},
"nativeSrc": "28220:19:20",
"nodeType": "YulFunctionCall",
"src": "28220:19:20"
}
],
"functionName": {
"name": "or",
"nativeSrc": "28210:2:20",
"nodeType": "YulIdentifier",
"src": "28210:2:20"
},
"nativeSrc": "28210:30:20",
"nodeType": "YulFunctionCall",
"src": "28210:30:20"
},
"variableNames": [
{
"name": "result",
"nativeSrc": "28200:6:20",
"nodeType": "YulIdentifier",
"src": "28200:6:20"
}
]
}
]
},
"name": "update_byte_slice_dynamic32",
"nativeSrc": "27853:393:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "27890:5:20",
"nodeType": "YulTypedName",
"src": "27890:5:20",
"type": ""
},
{
"name": "shiftBytes",
"nativeSrc": "27897:10:20",
"nodeType": "YulTypedName",
"src": "27897:10:20",
"type": ""
},
{
"name": "toInsert",
"nativeSrc": "27909:8:20",
"nodeType": "YulTypedName",
"src": "27909:8:20",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nativeSrc": "27922:6:20",
"nodeType": "YulTypedName",
"src": "27922:6:20",
"type": ""
}
],
"src": "27853:393:20"
},
{
"body": {
"nativeSrc": "28312:82:20",
"nodeType": "YulBlock",
"src": "28312:82:20",
"statements": [
{
"nativeSrc": "28322:66:20",
"nodeType": "YulAssignment",
"src": "28322:66:20",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "28380:5:20",
"nodeType": "YulIdentifier",
"src": "28380:5:20"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "28362:17:20",
"nodeType": "YulIdentifier",
"src": "28362:17:20"
},
"nativeSrc": "28362:24:20",
"nodeType": "YulFunctionCall",
"src": "28362:24:20"
}
],
"functionName": {
"name": "identity",
"nativeSrc": "28353:8:20",
"nodeType": "YulIdentifier",
"src": "28353:8:20"
},
"nativeSrc": "28353:34:20",
"nodeType": "YulFunctionCall",
"src": "28353:34:20"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nativeSrc": "28335:17:20",
"nodeType": "YulIdentifier",
"src": "28335:17:20"
},
"nativeSrc": "28335:53:20",
"nodeType": "YulFunctionCall",
"src": "28335:53:20"
},
"variableNames": [
{
"name": "converted",
"nativeSrc": "28322:9:20",
"nodeType": "YulIdentifier",
"src": "28322:9:20"
}
]
}
]
},
"name": "convert_t_uint256_to_t_uint256",
"nativeSrc": "28252:142:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "28292:5:20",
"nodeType": "YulTypedName",
"src": "28292:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nativeSrc": "28302:9:20",
"nodeType": "YulTypedName",
"src": "28302:9:20",
"type": ""
}
],
"src": "28252:142:20"
},
{
"body": {
"nativeSrc": "28447:28:20",
"nodeType": "YulBlock",
"src": "28447:28:20",
"statements": [
{
"nativeSrc": "28457:12:20",
"nodeType": "YulAssignment",
"src": "28457:12:20",
"value": {
"name": "value",
"nativeSrc": "28464:5:20",
"nodeType": "YulIdentifier",
"src": "28464:5:20"
},
"variableNames": [
{
"name": "ret",
"nativeSrc": "28457:3:20",
"nodeType": "YulIdentifier",
"src": "28457:3:20"
}
]
}
]
},
"name": "prepare_store_t_uint256",
"nativeSrc": "28400:75:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "28433:5:20",
"nodeType": "YulTypedName",
"src": "28433:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nativeSrc": "28443:3:20",
"nodeType": "YulTypedName",
"src": "28443:3:20",
"type": ""
}
],
"src": "28400:75:20"
},
{
"body": {
"nativeSrc": "28557:193:20",
"nodeType": "YulBlock",
"src": "28557:193:20",
"statements": [
{
"nativeSrc": "28567:63:20",
"nodeType": "YulVariableDeclaration",
"src": "28567:63:20",
"value": {
"arguments": [
{
"name": "value_0",
"nativeSrc": "28622:7:20",
"nodeType": "YulIdentifier",
"src": "28622:7:20"
}
],
"functionName": {
"name": "convert_t_uint256_to_t_uint256",
"nativeSrc": "28591:30:20",
"nodeType": "YulIdentifier",
"src": "28591:30:20"
},
"nativeSrc": "28591:39:20",
"nodeType": "YulFunctionCall",
"src": "28591:39:20"
},
"variables": [
{
"name": "convertedValue_0",
"nativeSrc": "28571:16:20",
"nodeType": "YulTypedName",
"src": "28571:16:20",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nativeSrc": "28646:4:20",
"nodeType": "YulIdentifier",
"src": "28646:4:20"
},
{
"arguments": [
{
"arguments": [
{
"name": "slot",
"nativeSrc": "28686:4:20",
"nodeType": "YulIdentifier",
"src": "28686:4:20"
}
],
"functionName": {
"name": "sload",
"nativeSrc": "28680:5:20",
"nodeType": "YulIdentifier",
"src": "28680:5:20"
},
"nativeSrc": "28680:11:20",
"nodeType": "YulFunctionCall",
"src": "28680:11:20"
},
{
"name": "offset",
"nativeSrc": "28693:6:20",
"nodeType": "YulIdentifier",
"src": "28693:6:20"
},
{
"arguments": [
{
"name": "convertedValue_0",
"nativeSrc": "28725:16:20",
"nodeType": "YulIdentifier",
"src": "28725:16:20"
}
],
"functionName": {
"name": "prepare_store_t_uint256",
"nativeSrc": "28701:23:20",
"nodeType": "YulIdentifier",
"src": "28701:23:20"
},
"nativeSrc": "28701:41:20",
"nodeType": "YulFunctionCall",
"src": "28701:41:20"
}
],
"functionName": {
"name": "update_byte_slice_dynamic32",
"nativeSrc": "28652:27:20",
"nodeType": "YulIdentifier",
"src": "28652:27:20"
},
"nativeSrc": "28652:91:20",
"nodeType": "YulFunctionCall",
"src": "28652:91:20"
}
],
"functionName": {
"name": "sstore",
"nativeSrc": "28639:6:20",
"nodeType": "YulIdentifier",
"src": "28639:6:20"
},
"nativeSrc": "28639:105:20",
"nodeType": "YulFunctionCall",
"src": "28639:105:20"
},
"nativeSrc": "28639:105:20",
"nodeType": "YulExpressionStatement",
"src": "28639:105:20"
}
]
},
"name": "update_storage_value_t_uint256_to_t_uint256",
"nativeSrc": "28481:269:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nativeSrc": "28534:4:20",
"nodeType": "YulTypedName",
"src": "28534:4:20",
"type": ""
},
{
"name": "offset",
"nativeSrc": "28540:6:20",
"nodeType": "YulTypedName",
"src": "28540:6:20",
"type": ""
},
{
"name": "value_0",
"nativeSrc": "28548:7:20",
"nodeType": "YulTypedName",
"src": "28548:7:20",
"type": ""
}
],
"src": "28481:269:20"
},
{
"body": {
"nativeSrc": "28805:24:20",
"nodeType": "YulBlock",
"src": "28805:24:20",
"statements": [
{
"nativeSrc": "28815:8:20",
"nodeType": "YulAssignment",
"src": "28815:8:20",
"value": {
"kind": "number",
"nativeSrc": "28822:1:20",
"nodeType": "YulLiteral",
"src": "28822:1:20",
"type": "",
"value": "0"
},
"variableNames": [
{
"name": "ret",
"nativeSrc": "28815:3:20",
"nodeType": "YulIdentifier",
"src": "28815:3:20"
}
]
}
]
},
"name": "zero_value_for_split_t_uint256",
"nativeSrc": "28756:73:20",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "ret",
"nativeSrc": "28801:3:20",
"nodeType": "YulTypedName",
"src": "28801:3:20",
"type": ""
}
],
"src": "28756:73:20"
},
{
"body": {
"nativeSrc": "28888:136:20",
"nodeType": "YulBlock",
"src": "28888:136:20",
"statements": [
{
"nativeSrc": "28898:46:20",
"nodeType": "YulVariableDeclaration",
"src": "28898:46:20",
"value": {
"arguments": [],
"functionName": {
"name": "zero_value_for_split_t_uint256",
"nativeSrc": "28912:30:20",
"nodeType": "YulIdentifier",
"src": "28912:30:20"
},
"nativeSrc": "28912:32:20",
"nodeType": "YulFunctionCall",
"src": "28912:32:20"
},
"variables": [
{
"name": "zero_0",
"nativeSrc": "28902:6:20",
"nodeType": "YulTypedName",
"src": "28902:6:20",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nativeSrc": "28997:4:20",
"nodeType": "YulIdentifier",
"src": "28997:4:20"
},
{
"name": "offset",
"nativeSrc": "29003:6:20",
"nodeType": "YulIdentifier",
"src": "29003:6:20"
},
{
"name": "zero_0",
"nativeSrc": "29011:6:20",
"nodeType": "YulIdentifier",
"src": "29011:6:20"
}
],
"functionName": {
"name": "update_storage_value_t_uint256_to_t_uint256",
"nativeSrc": "28953:43:20",
"nodeType": "YulIdentifier",
"src": "28953:43:20"
},
"nativeSrc": "28953:65:20",
"nodeType": "YulFunctionCall",
"src": "28953:65:20"
},
"nativeSrc": "28953:65:20",
"nodeType": "YulExpressionStatement",
"src": "28953:65:20"
}
]
},
"name": "storage_set_to_zero_t_uint256",
"nativeSrc": "28835:189:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nativeSrc": "28874:4:20",
"nodeType": "YulTypedName",
"src": "28874:4:20",
"type": ""
},
{
"name": "offset",
"nativeSrc": "28880:6:20",
"nodeType": "YulTypedName",
"src": "28880:6:20",
"type": ""
}
],
"src": "28835:189:20"
},
{
"body": {
"nativeSrc": "29080:136:20",
"nodeType": "YulBlock",
"src": "29080:136:20",
"statements": [
{
"body": {
"nativeSrc": "29147:63:20",
"nodeType": "YulBlock",
"src": "29147:63:20",
"statements": [
{
"expression": {
"arguments": [
{
"name": "start",
"nativeSrc": "29191:5:20",
"nodeType": "YulIdentifier",
"src": "29191:5:20"
},
{
"kind": "number",
"nativeSrc": "29198:1:20",
"nodeType": "YulLiteral",
"src": "29198:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "storage_set_to_zero_t_uint256",
"nativeSrc": "29161:29:20",
"nodeType": "YulIdentifier",
"src": "29161:29:20"
},
"nativeSrc": "29161:39:20",
"nodeType": "YulFunctionCall",
"src": "29161:39:20"
},
"nativeSrc": "29161:39:20",
"nodeType": "YulExpressionStatement",
"src": "29161:39:20"
}
]
},
"condition": {
"arguments": [
{
"name": "start",
"nativeSrc": "29100:5:20",
"nodeType": "YulIdentifier",
"src": "29100:5:20"
},
{
"name": "end",
"nativeSrc": "29107:3:20",
"nodeType": "YulIdentifier",
"src": "29107:3:20"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "29097:2:20",
"nodeType": "YulIdentifier",
"src": "29097:2:20"
},
"nativeSrc": "29097:14:20",
"nodeType": "YulFunctionCall",
"src": "29097:14:20"
},
"nativeSrc": "29090:120:20",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "29112:26:20",
"nodeType": "YulBlock",
"src": "29112:26:20",
"statements": [
{
"nativeSrc": "29114:22:20",
"nodeType": "YulAssignment",
"src": "29114:22:20",
"value": {
"arguments": [
{
"name": "start",
"nativeSrc": "29127:5:20",
"nodeType": "YulIdentifier",
"src": "29127:5:20"
},
{
"kind": "number",
"nativeSrc": "29134:1:20",
"nodeType": "YulLiteral",
"src": "29134:1:20",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "29123:3:20",
"nodeType": "YulIdentifier",
"src": "29123:3:20"
},
"nativeSrc": "29123:13:20",
"nodeType": "YulFunctionCall",
"src": "29123:13:20"
},
"variableNames": [
{
"name": "start",
"nativeSrc": "29114:5:20",
"nodeType": "YulIdentifier",
"src": "29114:5:20"
}
]
}
]
},
"pre": {
"nativeSrc": "29094:2:20",
"nodeType": "YulBlock",
"src": "29094:2:20",
"statements": []
},
"src": "29090:120:20"
}
]
},
"name": "clear_storage_range_t_bytes1",
"nativeSrc": "29030:186:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "start",
"nativeSrc": "29068:5:20",
"nodeType": "YulTypedName",
"src": "29068:5:20",
"type": ""
},
{
"name": "end",
"nativeSrc": "29075:3:20",
"nodeType": "YulTypedName",
"src": "29075:3:20",
"type": ""
}
],
"src": "29030:186:20"
},
{
"body": {
"nativeSrc": "29301:464:20",
"nodeType": "YulBlock",
"src": "29301:464:20",
"statements": [
{
"body": {
"nativeSrc": "29327:431:20",
"nodeType": "YulBlock",
"src": "29327:431:20",
"statements": [
{
"nativeSrc": "29341:54:20",
"nodeType": "YulVariableDeclaration",
"src": "29341:54:20",
"value": {
"arguments": [
{
"name": "array",
"nativeSrc": "29389:5:20",
"nodeType": "YulIdentifier",
"src": "29389:5:20"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nativeSrc": "29357:31:20",
"nodeType": "YulIdentifier",
"src": "29357:31:20"
},
"nativeSrc": "29357:38:20",
"nodeType": "YulFunctionCall",
"src": "29357:38:20"
},
"variables": [
{
"name": "dataArea",
"nativeSrc": "29345:8:20",
"nodeType": "YulTypedName",
"src": "29345:8:20",
"type": ""
}
]
},
{
"nativeSrc": "29408:63:20",
"nodeType": "YulVariableDeclaration",
"src": "29408:63:20",
"value": {
"arguments": [
{
"name": "dataArea",
"nativeSrc": "29431:8:20",
"nodeType": "YulIdentifier",
"src": "29431:8:20"
},
{
"arguments": [
{
"name": "startIndex",
"nativeSrc": "29459:10:20",
"nodeType": "YulIdentifier",
"src": "29459:10:20"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nativeSrc": "29441:17:20",
"nodeType": "YulIdentifier",
"src": "29441:17:20"
},
"nativeSrc": "29441:29:20",
"nodeType": "YulFunctionCall",
"src": "29441:29:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "29427:3:20",
"nodeType": "YulIdentifier",
"src": "29427:3:20"
},
"nativeSrc": "29427:44:20",
"nodeType": "YulFunctionCall",
"src": "29427:44:20"
},
"variables": [
{
"name": "deleteStart",
"nativeSrc": "29412:11:20",
"nodeType": "YulTypedName",
"src": "29412:11:20",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "29628:27:20",
"nodeType": "YulBlock",
"src": "29628:27:20",
"statements": [
{
"nativeSrc": "29630:23:20",
"nodeType": "YulAssignment",
"src": "29630:23:20",
"value": {
"name": "dataArea",
"nativeSrc": "29645:8:20",
"nodeType": "YulIdentifier",
"src": "29645:8:20"
},
"variableNames": [
{
"name": "deleteStart",
"nativeSrc": "29630:11:20",
"nodeType": "YulIdentifier",
"src": "29630:11:20"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "startIndex",
"nativeSrc": "29612:10:20",
"nodeType": "YulIdentifier",
"src": "29612:10:20"
},
{
"kind": "number",
"nativeSrc": "29624:2:20",
"nodeType": "YulLiteral",
"src": "29624:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "29609:2:20",
"nodeType": "YulIdentifier",
"src": "29609:2:20"
},
"nativeSrc": "29609:18:20",
"nodeType": "YulFunctionCall",
"src": "29609:18:20"
},
"nativeSrc": "29606:49:20",
"nodeType": "YulIf",
"src": "29606:49:20"
},
{
"expression": {
"arguments": [
{
"name": "deleteStart",
"nativeSrc": "29697:11:20",
"nodeType": "YulIdentifier",
"src": "29697:11:20"
},
{
"arguments": [
{
"name": "dataArea",
"nativeSrc": "29714:8:20",
"nodeType": "YulIdentifier",
"src": "29714:8:20"
},
{
"arguments": [
{
"name": "len",
"nativeSrc": "29742:3:20",
"nodeType": "YulIdentifier",
"src": "29742:3:20"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nativeSrc": "29724:17:20",
"nodeType": "YulIdentifier",
"src": "29724:17:20"
},
"nativeSrc": "29724:22:20",
"nodeType": "YulFunctionCall",
"src": "29724:22:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "29710:3:20",
"nodeType": "YulIdentifier",
"src": "29710:3:20"
},
"nativeSrc": "29710:37:20",
"nodeType": "YulFunctionCall",
"src": "29710:37:20"
}
],
"functionName": {
"name": "clear_storage_range_t_bytes1",
"nativeSrc": "29668:28:20",
"nodeType": "YulIdentifier",
"src": "29668:28:20"
},
"nativeSrc": "29668:80:20",
"nodeType": "YulFunctionCall",
"src": "29668:80:20"
},
"nativeSrc": "29668:80:20",
"nodeType": "YulExpressionStatement",
"src": "29668:80:20"
}
]
},
"condition": {
"arguments": [
{
"name": "len",
"nativeSrc": "29318:3:20",
"nodeType": "YulIdentifier",
"src": "29318:3:20"
},
{
"kind": "number",
"nativeSrc": "29323:2:20",
"nodeType": "YulLiteral",
"src": "29323:2:20",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "29315:2:20",
"nodeType": "YulIdentifier",
"src": "29315:2:20"
},
"nativeSrc": "29315:11:20",
"nodeType": "YulFunctionCall",
"src": "29315:11:20"
},
"nativeSrc": "29312:446:20",
"nodeType": "YulIf",
"src": "29312:446:20"
}
]
},
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nativeSrc": "29222:543:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "array",
"nativeSrc": "29277:5:20",
"nodeType": "YulTypedName",
"src": "29277:5:20",
"type": ""
},
{
"name": "len",
"nativeSrc": "29284:3:20",
"nodeType": "YulTypedName",
"src": "29284:3:20",
"type": ""
},
{
"name": "startIndex",
"nativeSrc": "29289:10:20",
"nodeType": "YulTypedName",
"src": "29289:10:20",
"type": ""
}
],
"src": "29222:543:20"
},
{
"body": {
"nativeSrc": "29834:54:20",
"nodeType": "YulBlock",
"src": "29834:54:20",
"statements": [
{
"nativeSrc": "29844:37:20",
"nodeType": "YulAssignment",
"src": "29844:37:20",
"value": {
"arguments": [
{
"name": "bits",
"nativeSrc": "29869:4:20",
"nodeType": "YulIdentifier",
"src": "29869:4:20"
},
{
"name": "value",
"nativeSrc": "29875:5:20",
"nodeType": "YulIdentifier",
"src": "29875:5:20"
}
],
"functionName": {
"name": "shr",
"nativeSrc": "29865:3:20",
"nodeType": "YulIdentifier",
"src": "29865:3:20"
},
"nativeSrc": "29865:16:20",
"nodeType": "YulFunctionCall",
"src": "29865:16:20"
},
"variableNames": [
{
"name": "newValue",
"nativeSrc": "29844:8:20",
"nodeType": "YulIdentifier",
"src": "29844:8:20"
}
]
}
]
},
"name": "shift_right_unsigned_dynamic",
"nativeSrc": "29771:117:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nativeSrc": "29809:4:20",
"nodeType": "YulTypedName",
"src": "29809:4:20",
"type": ""
},
{
"name": "value",
"nativeSrc": "29815:5:20",
"nodeType": "YulTypedName",
"src": "29815:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nativeSrc": "29825:8:20",
"nodeType": "YulTypedName",
"src": "29825:8:20",
"type": ""
}
],
"src": "29771:117:20"
},
{
"body": {
"nativeSrc": "29945:118:20",
"nodeType": "YulBlock",
"src": "29945:118:20",
"statements": [
{
"nativeSrc": "29955:68:20",
"nodeType": "YulVariableDeclaration",
"src": "29955:68:20",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nativeSrc": "30004:1:20",
"nodeType": "YulLiteral",
"src": "30004:1:20",
"type": "",
"value": "8"
},
{
"name": "bytes",
"nativeSrc": "30007:5:20",
"nodeType": "YulIdentifier",
"src": "30007:5:20"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "30000:3:20",
"nodeType": "YulIdentifier",
"src": "30000:3:20"
},
"nativeSrc": "30000:13:20",
"nodeType": "YulFunctionCall",
"src": "30000:13:20"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "30019:1:20",
"nodeType": "YulLiteral",
"src": "30019:1:20",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nativeSrc": "30015:3:20",
"nodeType": "YulIdentifier",
"src": "30015:3:20"
},
"nativeSrc": "30015:6:20",
"nodeType": "YulFunctionCall",
"src": "30015:6:20"
}
],
"functionName": {
"name": "shift_right_unsigned_dynamic",
"nativeSrc": "29971:28:20",
"nodeType": "YulIdentifier",
"src": "29971:28:20"
},
"nativeSrc": "29971:51:20",
"nodeType": "YulFunctionCall",
"src": "29971:51:20"
}
],
"functionName": {
"name": "not",
"nativeSrc": "29967:3:20",
"nodeType": "YulIdentifier",
"src": "29967:3:20"
},
"nativeSrc": "29967:56:20",
"nodeType": "YulFunctionCall",
"src": "29967:56:20"
},
"variables": [
{
"name": "mask",
"nativeSrc": "29959:4:20",
"nodeType": "YulTypedName",
"src": "29959:4:20",
"type": ""
}
]
},
{
"nativeSrc": "30032:25:20",
"nodeType": "YulAssignment",
"src": "30032:25:20",
"value": {
"arguments": [
{
"name": "data",
"nativeSrc": "30046:4:20",
"nodeType": "YulIdentifier",
"src": "30046:4:20"
},
{
"name": "mask",
"nativeSrc": "30052:4:20",
"nodeType": "YulIdentifier",
"src": "30052:4:20"
}
],
"functionName": {
"name": "and",
"nativeSrc": "30042:3:20",
"nodeType": "YulIdentifier",
"src": "30042:3:20"
},
"nativeSrc": "30042:15:20",
"nodeType": "YulFunctionCall",
"src": "30042:15:20"
},
"variableNames": [
{
"name": "result",
"nativeSrc": "30032:6:20",
"nodeType": "YulIdentifier",
"src": "30032:6:20"
}
]
}
]
},
"name": "mask_bytes_dynamic",
"nativeSrc": "29894:169:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nativeSrc": "29922:4:20",
"nodeType": "YulTypedName",
"src": "29922:4:20",
"type": ""
},
{
"name": "bytes",
"nativeSrc": "29928:5:20",
"nodeType": "YulTypedName",
"src": "29928:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nativeSrc": "29938:6:20",
"nodeType": "YulTypedName",
"src": "29938:6:20",
"type": ""
}
],
"src": "29894:169:20"
},
{
"body": {
"nativeSrc": "30149:214:20",
"nodeType": "YulBlock",
"src": "30149:214:20",
"statements": [
{
"nativeSrc": "30282:37:20",
"nodeType": "YulAssignment",
"src": "30282:37:20",
"value": {
"arguments": [
{
"name": "data",
"nativeSrc": "30309:4:20",
"nodeType": "YulIdentifier",
"src": "30309:4:20"
},
{
"name": "len",
"nativeSrc": "30315:3:20",
"nodeType": "YulIdentifier",
"src": "30315:3:20"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nativeSrc": "30290:18:20",
"nodeType": "YulIdentifier",
"src": "30290:18:20"
},
"nativeSrc": "30290:29:20",
"nodeType": "YulFunctionCall",
"src": "30290:29:20"
},
"variableNames": [
{
"name": "data",
"nativeSrc": "30282:4:20",
"nodeType": "YulIdentifier",
"src": "30282:4:20"
}
]
},
{
"nativeSrc": "30328:29:20",
"nodeType": "YulAssignment",
"src": "30328:29:20",
"value": {
"arguments": [
{
"name": "data",
"nativeSrc": "30339:4:20",
"nodeType": "YulIdentifier",
"src": "30339:4:20"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "30349:1:20",
"nodeType": "YulLiteral",
"src": "30349:1:20",
"type": "",
"value": "2"
},
{
"name": "len",
"nativeSrc": "30352:3:20",
"nodeType": "YulIdentifier",
"src": "30352:3:20"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "30345:3:20",
"nodeType": "YulIdentifier",
"src": "30345:3:20"
},
"nativeSrc": "30345:11:20",
"nodeType": "YulFunctionCall",
"src": "30345:11:20"
}
],
"functionName": {
"name": "or",
"nativeSrc": "30336:2:20",
"nodeType": "YulIdentifier",
"src": "30336:2:20"
},
"nativeSrc": "30336:21:20",
"nodeType": "YulFunctionCall",
"src": "30336:21:20"
},
"variableNames": [
{
"name": "used",
"nativeSrc": "30328:4:20",
"nodeType": "YulIdentifier",
"src": "30328:4:20"
}
]
}
]
},
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nativeSrc": "30068:295:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nativeSrc": "30130:4:20",
"nodeType": "YulTypedName",
"src": "30130:4:20",
"type": ""
},
{
"name": "len",
"nativeSrc": "30136:3:20",
"nodeType": "YulTypedName",
"src": "30136:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "used",
"nativeSrc": "30144:4:20",
"nodeType": "YulTypedName",
"src": "30144:4:20",
"type": ""
}
],
"src": "30068:295:20"
},
{
"body": {
"nativeSrc": "30460:1303:20",
"nodeType": "YulBlock",
"src": "30460:1303:20",
"statements": [
{
"nativeSrc": "30471:51:20",
"nodeType": "YulVariableDeclaration",
"src": "30471:51:20",
"value": {
"arguments": [
{
"name": "src",
"nativeSrc": "30518:3:20",
"nodeType": "YulIdentifier",
"src": "30518:3:20"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nativeSrc": "30485:32:20",
"nodeType": "YulIdentifier",
"src": "30485:32:20"
},
"nativeSrc": "30485:37:20",
"nodeType": "YulFunctionCall",
"src": "30485:37:20"
},
"variables": [
{
"name": "newLen",
"nativeSrc": "30475:6:20",
"nodeType": "YulTypedName",
"src": "30475:6:20",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "30607:22:20",
"nodeType": "YulBlock",
"src": "30607:22:20",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nativeSrc": "30609:16:20",
"nodeType": "YulIdentifier",
"src": "30609:16:20"
},
"nativeSrc": "30609:18:20",
"nodeType": "YulFunctionCall",
"src": "30609:18:20"
},
"nativeSrc": "30609:18:20",
"nodeType": "YulExpressionStatement",
"src": "30609:18:20"
}
]
},
"condition": {
"arguments": [
{
"name": "newLen",
"nativeSrc": "30579:6:20",
"nodeType": "YulIdentifier",
"src": "30579:6:20"
},
{
"kind": "number",
"nativeSrc": "30587:18:20",
"nodeType": "YulLiteral",
"src": "30587:18:20",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "30576:2:20",
"nodeType": "YulIdentifier",
"src": "30576:2:20"
},
"nativeSrc": "30576:30:20",
"nodeType": "YulFunctionCall",
"src": "30576:30:20"
},
"nativeSrc": "30573:56:20",
"nodeType": "YulIf",
"src": "30573:56:20"
},
{
"nativeSrc": "30639:52:20",
"nodeType": "YulVariableDeclaration",
"src": "30639:52:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "slot",
"nativeSrc": "30685:4:20",
"nodeType": "YulIdentifier",
"src": "30685:4:20"
}
],
"functionName": {
"name": "sload",
"nativeSrc": "30679:5:20",
"nodeType": "YulIdentifier",
"src": "30679:5:20"
},
"nativeSrc": "30679:11:20",
"nodeType": "YulFunctionCall",
"src": "30679:11:20"
}
],
"functionName": {
"name": "extract_byte_array_length",
"nativeSrc": "30653:25:20",
"nodeType": "YulIdentifier",
"src": "30653:25:20"
},
"nativeSrc": "30653:38:20",
"nodeType": "YulFunctionCall",
"src": "30653:38:20"
},
"variables": [
{
"name": "oldLen",
"nativeSrc": "30643:6:20",
"nodeType": "YulTypedName",
"src": "30643:6:20",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nativeSrc": "30784:4:20",
"nodeType": "YulIdentifier",
"src": "30784:4:20"
},
{
"name": "oldLen",
"nativeSrc": "30790:6:20",
"nodeType": "YulIdentifier",
"src": "30790:6:20"
},
{
"name": "newLen",
"nativeSrc": "30798:6:20",
"nodeType": "YulIdentifier",
"src": "30798:6:20"
}
],
"functionName": {
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nativeSrc": "30738:45:20",
"nodeType": "YulIdentifier",
"src": "30738:45:20"
},
"nativeSrc": "30738:67:20",
"nodeType": "YulFunctionCall",
"src": "30738:67:20"
},
"nativeSrc": "30738:67:20",
"nodeType": "YulExpressionStatement",
"src": "30738:67:20"
},
{
"nativeSrc": "30815:18:20",
"nodeType": "YulVariableDeclaration",
"src": "30815:18:20",
"value": {
"kind": "number",
"nativeSrc": "30832:1:20",
"nodeType": "YulLiteral",
"src": "30832:1:20",
"type": "",
"value": "0"
},
"variables": [
{
"name": "srcOffset",
"nativeSrc": "30819:9:20",
"nodeType": "YulTypedName",
"src": "30819:9:20",
"type": ""
}
]
},
{
"nativeSrc": "30843:17:20",
"nodeType": "YulAssignment",
"src": "30843:17:20",
"value": {
"kind": "number",
"nativeSrc": "30856:4:20",
"nodeType": "YulLiteral",
"src": "30856:4:20",
"type": "",
"value": "0x20"
},
"variableNames": [
{
"name": "srcOffset",
"nativeSrc": "30843:9:20",
"nodeType": "YulIdentifier",
"src": "30843:9:20"
}
]
},
{
"cases": [
{
"body": {
"nativeSrc": "30907:611:20",
"nodeType": "YulBlock",
"src": "30907:611:20",
"statements": [
{
"nativeSrc": "30921:37:20",
"nodeType": "YulVariableDeclaration",
"src": "30921:37:20",
"value": {
"arguments": [
{
"name": "newLen",
"nativeSrc": "30940:6:20",
"nodeType": "YulIdentifier",
"src": "30940:6:20"
},
{
"arguments": [
{
"kind": "number",
"nativeSrc": "30952:4:20",
"nodeType": "YulLiteral",
"src": "30952:4:20",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "not",
"nativeSrc": "30948:3:20",
"nodeType": "YulIdentifier",
"src": "30948:3:20"
},
"nativeSrc": "30948:9:20",
"nodeType": "YulFunctionCall",
"src": "30948:9:20"
}
],
"functionName": {
"name": "and",
"nativeSrc": "30936:3:20",
"nodeType": "YulIdentifier",
"src": "30936:3:20"
},
"nativeSrc": "30936:22:20",
"nodeType": "YulFunctionCall",
"src": "30936:22:20"
},
"variables": [
{
"name": "loopEnd",
"nativeSrc": "30925:7:20",
"nodeType": "YulTypedName",
"src": "30925:7:20",
"type": ""
}
]
},
{
"nativeSrc": "30972:51:20",
"nodeType": "YulVariableDeclaration",
"src": "30972:51:20",
"value": {
"arguments": [
{
"name": "slot",
"nativeSrc": "31018:4:20",
"nodeType": "YulIdentifier",
"src": "31018:4:20"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nativeSrc": "30986:31:20",
"nodeType": "YulIdentifier",
"src": "30986:31:20"
},
"nativeSrc": "30986:37:20",
"nodeType": "YulFunctionCall",
"src": "30986:37:20"
},
"variables": [
{
"name": "dstPtr",
"nativeSrc": "30976:6:20",
"nodeType": "YulTypedName",
"src": "30976:6:20",
"type": ""
}
]
},
{
"nativeSrc": "31036:10:20",
"nodeType": "YulVariableDeclaration",
"src": "31036:10:20",
"value": {
"kind": "number",
"nativeSrc": "31045:1:20",
"nodeType": "YulLiteral",
"src": "31045:1:20",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nativeSrc": "31040:1:20",
"nodeType": "YulTypedName",
"src": "31040:1:20",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "31104:163:20",
"nodeType": "YulBlock",
"src": "31104:163:20",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nativeSrc": "31129:6:20",
"nodeType": "YulIdentifier",
"src": "31129:6:20"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nativeSrc": "31147:3:20",
"nodeType": "YulIdentifier",
"src": "31147:3:20"
},
{
"name": "srcOffset",
"nativeSrc": "31152:9:20",
"nodeType": "YulIdentifier",
"src": "31152:9:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "31143:3:20",
"nodeType": "YulIdentifier",
"src": "31143:3:20"
},
"nativeSrc": "31143:19:20",
"nodeType": "YulFunctionCall",
"src": "31143:19:20"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "31137:5:20",
"nodeType": "YulIdentifier",
"src": "31137:5:20"
},
"nativeSrc": "31137:26:20",
"nodeType": "YulFunctionCall",
"src": "31137:26:20"
}
],
"functionName": {
"name": "sstore",
"nativeSrc": "31122:6:20",
"nodeType": "YulIdentifier",
"src": "31122:6:20"
},
"nativeSrc": "31122:42:20",
"nodeType": "YulFunctionCall",
"src": "31122:42:20"
},
"nativeSrc": "31122:42:20",
"nodeType": "YulExpressionStatement",
"src": "31122:42:20"
},
{
"nativeSrc": "31181:24:20",
"nodeType": "YulAssignment",
"src": "31181:24:20",
"value": {
"arguments": [
{
"name": "dstPtr",
"nativeSrc": "31195:6:20",
"nodeType": "YulIdentifier",
"src": "31195:6:20"
},
{
"kind": "number",
"nativeSrc": "31203:1:20",
"nodeType": "YulLiteral",
"src": "31203:1:20",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "31191:3:20",
"nodeType": "YulIdentifier",
"src": "31191:3:20"
},
"nativeSrc": "31191:14:20",
"nodeType": "YulFunctionCall",
"src": "31191:14:20"
},
"variableNames": [
{
"name": "dstPtr",
"nativeSrc": "31181:6:20",
"nodeType": "YulIdentifier",
"src": "31181:6:20"
}
]
},
{
"nativeSrc": "31222:31:20",
"nodeType": "YulAssignment",
"src": "31222:31:20",
"value": {
"arguments": [
{
"name": "srcOffset",
"nativeSrc": "31239:9:20",
"nodeType": "YulIdentifier",
"src": "31239:9:20"
},
{
"kind": "number",
"nativeSrc": "31250:2:20",
"nodeType": "YulLiteral",
"src": "31250:2:20",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nativeSrc": "31235:3:20",
"nodeType": "YulIdentifier",
"src": "31235:3:20"
},
"nativeSrc": "31235:18:20",
"nodeType": "YulFunctionCall",
"src": "31235:18:20"
},
"variableNames": [
{
"name": "srcOffset",
"nativeSrc": "31222:9:20",
"nodeType": "YulIdentifier",
"src": "31222:9:20"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nativeSrc": "31070:1:20",
"nodeType": "YulIdentifier",
"src": "31070:1:20"
},
{
"name": "loopEnd",
"nativeSrc": "31073:7:20",
"nodeType": "YulIdentifier",
"src": "31073:7:20"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "31067:2:20",
"nodeType": "YulIdentifier",
"src": "31067:2:20"
},
"nativeSrc": "31067:14:20",
"nodeType": "YulFunctionCall",
"src": "31067:14:20"
},
"nativeSrc": "31059:208:20",
"nodeType": "YulForLoop",
"post": {
"nativeSrc": "31082:21:20",
"nodeType": "YulBlock",
"src": "31082:21:20",
"statements": [
{
"nativeSrc": "31084:17:20",
"nodeType": "YulAssignment",
"src": "31084:17:20",
"value": {
"arguments": [
{
"name": "i",
"nativeSrc": "31093:1:20",
"nodeType": "YulIdentifier",
"src": "31093:1:20"
},
{
"kind": "number",
"nativeSrc": "31096:4:20",
"nodeType": "YulLiteral",
"src": "31096:4:20",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "31089:3:20",
"nodeType": "YulIdentifier",
"src": "31089:3:20"
},
"nativeSrc": "31089:12:20",
"nodeType": "YulFunctionCall",
"src": "31089:12:20"
},
"variableNames": [
{
"name": "i",
"nativeSrc": "31084:1:20",
"nodeType": "YulIdentifier",
"src": "31084:1:20"
}
]
}
]
},
"pre": {
"nativeSrc": "31063:3:20",
"nodeType": "YulBlock",
"src": "31063:3:20",
"statements": []
},
"src": "31059:208:20"
},
{
"body": {
"nativeSrc": "31303:156:20",
"nodeType": "YulBlock",
"src": "31303:156:20",
"statements": [
{
"nativeSrc": "31321:43:20",
"nodeType": "YulVariableDeclaration",
"src": "31321:43:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nativeSrc": "31348:3:20",
"nodeType": "YulIdentifier",
"src": "31348:3:20"
},
{
"name": "srcOffset",
"nativeSrc": "31353:9:20",
"nodeType": "YulIdentifier",
"src": "31353:9:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "31344:3:20",
"nodeType": "YulIdentifier",
"src": "31344:3:20"
},
"nativeSrc": "31344:19:20",
"nodeType": "YulFunctionCall",
"src": "31344:19:20"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "31338:5:20",
"nodeType": "YulIdentifier",
"src": "31338:5:20"
},
"nativeSrc": "31338:26:20",
"nodeType": "YulFunctionCall",
"src": "31338:26:20"
},
"variables": [
{
"name": "lastValue",
"nativeSrc": "31325:9:20",
"nodeType": "YulTypedName",
"src": "31325:9:20",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nativeSrc": "31388:6:20",
"nodeType": "YulIdentifier",
"src": "31388:6:20"
},
{
"arguments": [
{
"name": "lastValue",
"nativeSrc": "31415:9:20",
"nodeType": "YulIdentifier",
"src": "31415:9:20"
},
{
"arguments": [
{
"name": "newLen",
"nativeSrc": "31430:6:20",
"nodeType": "YulIdentifier",
"src": "31430:6:20"
},
{
"kind": "number",
"nativeSrc": "31438:4:20",
"nodeType": "YulLiteral",
"src": "31438:4:20",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "and",
"nativeSrc": "31426:3:20",
"nodeType": "YulIdentifier",
"src": "31426:3:20"
},
"nativeSrc": "31426:17:20",
"nodeType": "YulFunctionCall",
"src": "31426:17:20"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nativeSrc": "31396:18:20",
"nodeType": "YulIdentifier",
"src": "31396:18:20"
},
"nativeSrc": "31396:48:20",
"nodeType": "YulFunctionCall",
"src": "31396:48:20"
}
],
"functionName": {
"name": "sstore",
"nativeSrc": "31381:6:20",
"nodeType": "YulIdentifier",
"src": "31381:6:20"
},
"nativeSrc": "31381:64:20",
"nodeType": "YulFunctionCall",
"src": "31381:64:20"
},
"nativeSrc": "31381:64:20",
"nodeType": "YulExpressionStatement",
"src": "31381:64:20"
}
]
},
"condition": {
"arguments": [
{
"name": "loopEnd",
"nativeSrc": "31286:7:20",
"nodeType": "YulIdentifier",
"src": "31286:7:20"
},
{
"name": "newLen",
"nativeSrc": "31295:6:20",
"nodeType": "YulIdentifier",
"src": "31295:6:20"
}
],
"functionName": {
"name": "lt",
"nativeSrc": "31283:2:20",
"nodeType": "YulIdentifier",
"src": "31283:2:20"
},
"nativeSrc": "31283:19:20",
"nodeType": "YulFunctionCall",
"src": "31283:19:20"
},
"nativeSrc": "31280:179:20",
"nodeType": "YulIf",
"src": "31280:179:20"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nativeSrc": "31479:4:20",
"nodeType": "YulIdentifier",
"src": "31479:4:20"
},
{
"arguments": [
{
"arguments": [
{
"name": "newLen",
"nativeSrc": "31493:6:20",
"nodeType": "YulIdentifier",
"src": "31493:6:20"
},
{
"kind": "number",
"nativeSrc": "31501:1:20",
"nodeType": "YulLiteral",
"src": "31501:1:20",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "mul",
"nativeSrc": "31489:3:20",
"nodeType": "YulIdentifier",
"src": "31489:3:20"
},
"nativeSrc": "31489:14:20",
"nodeType": "YulFunctionCall",
"src": "31489:14:20"
},
{
"kind": "number",
"nativeSrc": "31505:1:20",
"nodeType": "YulLiteral",
"src": "31505:1:20",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nativeSrc": "31485:3:20",
"nodeType": "YulIdentifier",
"src": "31485:3:20"
},
"nativeSrc": "31485:22:20",
"nodeType": "YulFunctionCall",
"src": "31485:22:20"
}
],
"functionName": {
"name": "sstore",
"nativeSrc": "31472:6:20",
"nodeType": "YulIdentifier",
"src": "31472:6:20"
},
"nativeSrc": "31472:36:20",
"nodeType": "YulFunctionCall",
"src": "31472:36:20"
},
"nativeSrc": "31472:36:20",
"nodeType": "YulExpressionStatement",
"src": "31472:36:20"
}
]
},
"nativeSrc": "30900:618:20",
"nodeType": "YulCase",
"src": "30900:618:20",
"value": {
"kind": "number",
"nativeSrc": "30905:1:20",
"nodeType": "YulLiteral",
"src": "30905:1:20",
"type": "",
"value": "1"
}
},
{
"body": {
"nativeSrc": "31535:222:20",
"nodeType": "YulBlock",
"src": "31535:222:20",
"statements": [
{
"nativeSrc": "31549:14:20",
"nodeType": "YulVariableDeclaration",
"src": "31549:14:20",
"value": {
"kind": "number",
"nativeSrc": "31562:1:20",
"nodeType": "YulLiteral",
"src": "31562:1:20",
"type": "",
"value": "0"
},
"variables": [
{
"name": "value",
"nativeSrc": "31553:5:20",
"nodeType": "YulTypedName",
"src": "31553:5:20",
"type": ""
}
]
},
{
"body": {
"nativeSrc": "31586:67:20",
"nodeType": "YulBlock",
"src": "31586:67:20",
"statements": [
{
"nativeSrc": "31604:35:20",
"nodeType": "YulAssignment",
"src": "31604:35:20",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nativeSrc": "31623:3:20",
"nodeType": "YulIdentifier",
"src": "31623:3:20"
},
{
"name": "srcOffset",
"nativeSrc": "31628:9:20",
"nodeType": "YulIdentifier",
"src": "31628:9:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "31619:3:20",
"nodeType": "YulIdentifier",
"src": "31619:3:20"
},
"nativeSrc": "31619:19:20",
"nodeType": "YulFunctionCall",
"src": "31619:19:20"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "31613:5:20",
"nodeType": "YulIdentifier",
"src": "31613:5:20"
},
"nativeSrc": "31613:26:20",
"nodeType": "YulFunctionCall",
"src": "31613:26:20"
},
"variableNames": [
{
"name": "value",
"nativeSrc": "31604:5:20",
"nodeType": "YulIdentifier",
"src": "31604:5:20"
}
]
}
]
},
"condition": {
"name": "newLen",
"nativeSrc": "31579:6:20",
"nodeType": "YulIdentifier",
"src": "31579:6:20"
},
"nativeSrc": "31576:77:20",
"nodeType": "YulIf",
"src": "31576:77:20"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nativeSrc": "31673:4:20",
"nodeType": "YulIdentifier",
"src": "31673:4:20"
},
{
"arguments": [
{
"name": "value",
"nativeSrc": "31732:5:20",
"nodeType": "YulIdentifier",
"src": "31732:5:20"
},
{
"name": "newLen",
"nativeSrc": "31739:6:20",
"nodeType": "YulIdentifier",
"src": "31739:6:20"
}
],
"functionName": {
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nativeSrc": "31679:52:20",
"nodeType": "YulIdentifier",
"src": "31679:52:20"
},
"nativeSrc": "31679:67:20",
"nodeType": "YulFunctionCall",
"src": "31679:67:20"
}
],
"functionName": {
"name": "sstore",
"nativeSrc": "31666:6:20",
"nodeType": "YulIdentifier",
"src": "31666:6:20"
},
"nativeSrc": "31666:81:20",
"nodeType": "YulFunctionCall",
"src": "31666:81:20"
},
"nativeSrc": "31666:81:20",
"nodeType": "YulExpressionStatement",
"src": "31666:81:20"
}
]
},
"nativeSrc": "31527:230:20",
"nodeType": "YulCase",
"src": "31527:230:20",
"value": "default"
}
],
"expression": {
"arguments": [
{
"name": "newLen",
"nativeSrc": "30880:6:20",
"nodeType": "YulIdentifier",
"src": "30880:6:20"
},
{
"kind": "number",
"nativeSrc": "30888:2:20",
"nodeType": "YulLiteral",
"src": "30888:2:20",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nativeSrc": "30877:2:20",
"nodeType": "YulIdentifier",
"src": "30877:2:20"
},
"nativeSrc": "30877:14:20",
"nodeType": "YulFunctionCall",
"src": "30877:14:20"
},
"nativeSrc": "30870:887:20",
"nodeType": "YulSwitch",
"src": "30870:887:20"
}
]
},
"name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
"nativeSrc": "30368:1395:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nativeSrc": "30449:4:20",
"nodeType": "YulTypedName",
"src": "30449:4:20",
"type": ""
},
{
"name": "src",
"nativeSrc": "30455:3:20",
"nodeType": "YulTypedName",
"src": "30455:3:20",
"type": ""
}
],
"src": "30368:1395:20"
},
{
"body": {
"nativeSrc": "31827:40:20",
"nodeType": "YulBlock",
"src": "31827:40:20",
"statements": [
{
"nativeSrc": "31838:22:20",
"nodeType": "YulAssignment",
"src": "31838:22:20",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "31854:5:20",
"nodeType": "YulIdentifier",
"src": "31854:5:20"
}
],
"functionName": {
"name": "mload",
"nativeSrc": "31848:5:20",
"nodeType": "YulIdentifier",
"src": "31848:5:20"
},
"nativeSrc": "31848:12:20",
"nodeType": "YulFunctionCall",
"src": "31848:12:20"
},
"variableNames": [
{
"name": "length",
"nativeSrc": "31838:6:20",
"nodeType": "YulIdentifier",
"src": "31838:6:20"
}
]
}
]
},
"name": "array_length_t_bytes_memory_ptr",
"nativeSrc": "31769:98:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "31810:5:20",
"nodeType": "YulTypedName",
"src": "31810:5:20",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nativeSrc": "31820:6:20",
"nodeType": "YulTypedName",
"src": "31820:6:20",
"type": ""
}
],
"src": "31769:98:20"
},
{
"body": {
"nativeSrc": "31986:34:20",
"nodeType": "YulBlock",
"src": "31986:34:20",
"statements": [
{
"nativeSrc": "31996:18:20",
"nodeType": "YulAssignment",
"src": "31996:18:20",
"value": {
"name": "pos",
"nativeSrc": "32011:3:20",
"nodeType": "YulIdentifier",
"src": "32011:3:20"
},
"variableNames": [
{
"name": "updated_pos",
"nativeSrc": "31996:11:20",
"nodeType": "YulIdentifier",
"src": "31996:11:20"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nativeSrc": "31873:147:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "31958:3:20",
"nodeType": "YulTypedName",
"src": "31958:3:20",
"type": ""
},
{
"name": "length",
"nativeSrc": "31963:6:20",
"nodeType": "YulTypedName",
"src": "31963:6:20",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nativeSrc": "31974:11:20",
"nodeType": "YulTypedName",
"src": "31974:11:20",
"type": ""
}
],
"src": "31873:147:20"
},
{
"body": {
"nativeSrc": "32134:278:20",
"nodeType": "YulBlock",
"src": "32134:278:20",
"statements": [
{
"nativeSrc": "32144:52:20",
"nodeType": "YulVariableDeclaration",
"src": "32144:52:20",
"value": {
"arguments": [
{
"name": "value",
"nativeSrc": "32190:5:20",
"nodeType": "YulIdentifier",
"src": "32190:5:20"
}
],
"functionName": {
"name": "array_length_t_bytes_memory_ptr",
"nativeSrc": "32158:31:20",
"nodeType": "YulIdentifier",
"src": "32158:31:20"
},
"nativeSrc": "32158:38:20",
"nodeType": "YulFunctionCall",
"src": "32158:38:20"
},
"variables": [
{
"name": "length",
"nativeSrc": "32148:6:20",
"nodeType": "YulTypedName",
"src": "32148:6:20",
"type": ""
}
]
},
{
"nativeSrc": "32205:95:20",
"nodeType": "YulAssignment",
"src": "32205:95:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "32288:3:20",
"nodeType": "YulIdentifier",
"src": "32288:3:20"
},
{
"name": "length",
"nativeSrc": "32293:6:20",
"nodeType": "YulIdentifier",
"src": "32293:6:20"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nativeSrc": "32212:75:20",
"nodeType": "YulIdentifier",
"src": "32212:75:20"
},
"nativeSrc": "32212:88:20",
"nodeType": "YulFunctionCall",
"src": "32212:88:20"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "32205:3:20",
"nodeType": "YulIdentifier",
"src": "32205:3:20"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nativeSrc": "32348:5:20",
"nodeType": "YulIdentifier",
"src": "32348:5:20"
},
{
"kind": "number",
"nativeSrc": "32355:4:20",
"nodeType": "YulLiteral",
"src": "32355:4:20",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "32344:3:20",
"nodeType": "YulIdentifier",
"src": "32344:3:20"
},
"nativeSrc": "32344:16:20",
"nodeType": "YulFunctionCall",
"src": "32344:16:20"
},
{
"name": "pos",
"nativeSrc": "32362:3:20",
"nodeType": "YulIdentifier",
"src": "32362:3:20"
},
{
"name": "length",
"nativeSrc": "32367:6:20",
"nodeType": "YulIdentifier",
"src": "32367:6:20"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nativeSrc": "32309:34:20",
"nodeType": "YulIdentifier",
"src": "32309:34:20"
},
"nativeSrc": "32309:65:20",
"nodeType": "YulFunctionCall",
"src": "32309:65:20"
},
"nativeSrc": "32309:65:20",
"nodeType": "YulExpressionStatement",
"src": "32309:65:20"
},
{
"nativeSrc": "32383:23:20",
"nodeType": "YulAssignment",
"src": "32383:23:20",
"value": {
"arguments": [
{
"name": "pos",
"nativeSrc": "32394:3:20",
"nodeType": "YulIdentifier",
"src": "32394:3:20"
},
{
"name": "length",
"nativeSrc": "32399:6:20",
"nodeType": "YulIdentifier",
"src": "32399:6:20"
}
],
"functionName": {
"name": "add",
"nativeSrc": "32390:3:20",
"nodeType": "YulIdentifier",
"src": "32390:3:20"
},
"nativeSrc": "32390:16:20",
"nodeType": "YulFunctionCall",
"src": "32390:16:20"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "32383:3:20",
"nodeType": "YulIdentifier",
"src": "32383:3:20"
}
]
}
]
},
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nativeSrc": "32026:386:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nativeSrc": "32115:5:20",
"nodeType": "YulTypedName",
"src": "32115:5:20",
"type": ""
},
{
"name": "pos",
"nativeSrc": "32122:3:20",
"nodeType": "YulTypedName",
"src": "32122:3:20",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "32130:3:20",
"nodeType": "YulTypedName",
"src": "32130:3:20",
"type": ""
}
],
"src": "32026:386:20"
},
{
"body": {
"nativeSrc": "32552:137:20",
"nodeType": "YulBlock",
"src": "32552:137:20",
"statements": [
{
"nativeSrc": "32563:100:20",
"nodeType": "YulAssignment",
"src": "32563:100:20",
"value": {
"arguments": [
{
"name": "value0",
"nativeSrc": "32650:6:20",
"nodeType": "YulIdentifier",
"src": "32650:6:20"
},
{
"name": "pos",
"nativeSrc": "32659:3:20",
"nodeType": "YulIdentifier",
"src": "32659:3:20"
}
],
"functionName": {
"name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
"nativeSrc": "32570:79:20",
"nodeType": "YulIdentifier",
"src": "32570:79:20"
},
"nativeSrc": "32570:93:20",
"nodeType": "YulFunctionCall",
"src": "32570:93:20"
},
"variableNames": [
{
"name": "pos",
"nativeSrc": "32563:3:20",
"nodeType": "YulIdentifier",
"src": "32563:3:20"
}
]
},
{
"nativeSrc": "32673:10:20",
"nodeType": "YulAssignment",
"src": "32673:10:20",
"value": {
"name": "pos",
"nativeSrc": "32680:3:20",
"nodeType": "YulIdentifier",
"src": "32680:3:20"
},
"variableNames": [
{
"name": "end",
"nativeSrc": "32673:3:20",
"nodeType": "YulIdentifier",
"src": "32673:3:20"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nativeSrc": "32418:271:20",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nativeSrc": "32531:3:20",
"nodeType": "YulTypedName",
"src": "32531:3:20",
"type": ""
},
{
"name": "value0",
"nativeSrc": "32537:6:20",
"nodeType": "YulTypedName",
"src": "32537:6:20",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nativeSrc": "32548:3:20",
"nodeType": "YulTypedName",
"src": "32548:3:20",
"type": ""
}
],
"src": "32418:271:20"
}
]
},
"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 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\n mcopy(dst, src, length)\n mstore(add(dst, length), 0)\n\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_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 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 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 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_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n 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 abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(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 let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\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 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 cleanup_t_uint8(value) -> cleaned {\n cleaned := and(value, 0xff)\n }\n\n function abi_encode_t_uint8_to_t_uint8_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint8(value))\n }\n\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint8_to_t_uint8_fromStack(value0, add(headStart, 0))\n\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 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_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory_with_cleanup(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_bytes_memory_ptr(add(headStart, offset), dataEnd)\n }\n\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 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_ptrt_string_memory_ptrt_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { 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 let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_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_address(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 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_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226(memPtr) {\n\n mstore(add(memPtr, 0), \"Invalid address\")\n\n }\n\n function abi_encode_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 15)\n store_literal_in_memory_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__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_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226_to_t_string_memory_ptr_fromStack( 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_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 store_literal_in_memory_b8b6f5cda2cdd2ae9d4a84fa9f23426c906d73b31e79e02f654665fe4d569d8f(memPtr) {\n\n mstore(add(memPtr, 0), \"Exceeds cap\")\n\n }\n\n function abi_encode_t_stringliteral_b8b6f5cda2cdd2ae9d4a84fa9f23426c906d73b31e79e02f654665fe4d569d8f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 11)\n store_literal_in_memory_b8b6f5cda2cdd2ae9d4a84fa9f23426c906d73b31e79e02f654665fe4d569d8f(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_b8b6f5cda2cdd2ae9d4a84fa9f23426c906d73b31e79e02f654665fe4d569d8f__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_b8b6f5cda2cdd2ae9d4a84fa9f23426c906d73b31e79e02f654665fe4d569d8f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5(memPtr) {\n\n mstore(add(memPtr, 0), \"Insufficient balance\")\n\n }\n\n function abi_encode_t_stringliteral_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 20)\n store_literal_in_memory_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5__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_47533c3652efd02135ecc34b3fac8efc7b14bf0618b9392fd6e044a3d8a6eef5_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_5e183aa048a71e5e23fea18f2a2522958a8400e3c1ab664f1955f1a074c38645(memPtr) {\n\n mstore(add(memPtr, 0), \"Cap must be greater than 0\")\n\n }\n\n function abi_encode_t_stringliteral_5e183aa048a71e5e23fea18f2a2522958a8400e3c1ab664f1955f1a074c38645_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 26)\n store_literal_in_memory_5e183aa048a71e5e23fea18f2a2522958a8400e3c1ab664f1955f1a074c38645(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_5e183aa048a71e5e23fea18f2a2522958a8400e3c1ab664f1955f1a074c38645__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_5e183aa048a71e5e23fea18f2a2522958a8400e3c1ab664f1955f1a074c38645_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function shift_right_1_unsigned(value) -> newValue {\n newValue :=\n\n shr(1, value)\n\n }\n\n function checked_exp_helper(_power, _base, exponent, max) -> power, base {\n power := _power\n base := _base\n for { } gt(exponent, 1) {}\n {\n // overflow check for base * base\n if gt(base, div(max, base)) { panic_error_0x11() }\n if and(exponent, 1)\n {\n // No checks for power := mul(power, base) needed, because the check\n // for base * base above is sufficient, since:\n // |power| <= base (proof by induction) and thus:\n // |power * base| <= base * base <= max <= |min| (for signed)\n // (this is equally true for signed and unsigned exp)\n power := mul(power, base)\n }\n base := mul(base, base)\n exponent := shift_right_1_unsigned(exponent)\n }\n }\n\n function checked_exp_unsigned(base, exponent, max) -> power {\n // This function currently cannot be inlined because of the\n // \"leave\" statements. We have to improve the optimizer.\n\n // Note that 0**0 == 1\n if iszero(exponent) { power := 1 leave }\n if iszero(base) { power := 0 leave }\n\n // Specializations for small bases\n switch base\n // 0 is handled above\n case 1 { power := 1 leave }\n case 2\n {\n if gt(exponent, 255) { panic_error_0x11() }\n power := exp(2, exponent)\n if gt(power, max) { panic_error_0x11() }\n leave\n }\n if or(\n and(lt(base, 11), lt(exponent, 78)),\n and(lt(base, 307), lt(exponent, 32))\n )\n {\n power := exp(base, exponent)\n if gt(power, max) { panic_error_0x11() }\n leave\n }\n\n power, base := checked_exp_helper(1, base, exponent, max)\n\n if gt(power, div(max, base)) { panic_error_0x11() }\n power := mul(power, base)\n }\n\n function checked_exp_t_uint256_t_uint8(base, exponent) -> power {\n base := cleanup_t_uint256(base)\n exponent := cleanup_t_uint8(exponent)\n\n power := checked_exp_unsigned(base, exponent, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n\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 store_literal_in_memory_7b5b5c33ebdb097d93e26e4cac29620b03bf03ccffd90e216f088d94f6f3716d(memPtr) {\n\n mstore(add(memPtr, 0), \"Initial supply exceeds cap\")\n\n }\n\n function abi_encode_t_stringliteral_7b5b5c33ebdb097d93e26e4cac29620b03bf03ccffd90e216f088d94f6f3716d_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 26)\n store_literal_in_memory_7b5b5c33ebdb097d93e26e4cac29620b03bf03ccffd90e216f088d94f6f3716d(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_7b5b5c33ebdb097d93e26e4cac29620b03bf03ccffd90e216f088d94f6f3716d__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_7b5b5c33ebdb097d93e26e4cac29620b03bf03ccffd90e216f088d94f6f3716d_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function cleanup_t_rational_1_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_uint64(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffff)\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_rational_1_by_1_to_t_uint64(value) -> converted {\n converted := cleanup_t_uint64(identity(cleanup_t_rational_1_by_1(value)))\n }\n\n function abi_encode_t_rational_1_by_1_to_t_uint64_fromStack(value, pos) {\n mstore(pos, convert_t_rational_1_by_1_to_t_uint64(value))\n }\n\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_1_by_1_to_t_uint64_fromStack(value0, add(headStart, 0))\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function store_literal_in_memory_46d970fa77b82baee60098ee14b8367afc87d548358ef8e79dc0221f8c0e0002(memPtr) {\n\n mstore(add(memPtr, 0), \"New cap must be greater than cur\")\n\n mstore(add(memPtr, 32), \"rent supply\")\n\n }\n\n function abi_encode_t_stringliteral_46d970fa77b82baee60098ee14b8367afc87d548358ef8e79dc0221f8c0e0002_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n store_literal_in_memory_46d970fa77b82baee60098ee14b8367afc87d548358ef8e79dc0221f8c0e0002(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_46d970fa77b82baee60098ee14b8367afc87d548358ef8e79dc0221f8c0e0002__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_46d970fa77b82baee60098ee14b8367afc87d548358ef8e79dc0221f8c0e0002_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a(memPtr) {\n\n mstore(add(memPtr, 0), \"Pausable: paused\")\n\n }\n\n function abi_encode_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 16)\n store_literal_in_memory_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__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_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value1, add(headStart, 32))\n\n }\n\n function store_literal_in_memory_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a(memPtr) {\n\n mstore(add(memPtr, 0), \"Pausable: not paused\")\n\n }\n\n function abi_encode_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 20)\n store_literal_in_memory_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__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_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a_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 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_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n}\n",
"id": 20,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {
"650": [
{
"length": 32,
"start": 5731
},
{
"length": 32,
"start": 5816
},
{
"length": 32,
"start": 6263
}
]
},
"linkReferences": {},
"object": "6080604052600436106101b6575f3560e01c806352d1902d116100eb578063a217fddf11610089578063ad3cb1cc11610063578063ad3cb1cc1461060e578063d539139314610638578063d547741f14610662578063dd62ed3e1461068a576101b6565b8063a217fddf14610580578063a7d68896146105aa578063a9059cbb146105d2576101b6565b806370a08231116100c557806370a08231146104c85780638456cb591461050457806391d148541461051a57806395d89b4114610556576101b6565b806352d1902d1461044c5780635c975abb146104765780636fe0e395146104a0576101b6565b8063313ce567116101585780633f4ba83a116101325780633f4ba83a146103a257806340c10f19146103b857806342966c68146103f45780634f1ef28614610430576101b6565b8063313ce56714610326578063355274ea1461035057806336568abe1461037a576101b6565b806318160ddd1161019457806318160ddd1461025c57806323b872dd14610286578063248a9ca3146102c25780632f2ff15d146102fe576101b6565b806301ffc9a7146101ba57806306fdde03146101f6578063095ea7b314610220575b5f5ffd5b3480156101c5575f5ffd5b506101e060048036038101906101db9190612478565b6106c6565b6040516101ed91906124bd565b60405180910390f35b348015610201575f5ffd5b5061020a61073f565b6040516102179190612546565b60405180910390f35b34801561022b575f5ffd5b50610246600480360381019061024191906125f3565b6107dd565b60405161025391906124bd565b60405180910390f35b348015610267575f5ffd5b506102706107f8565b60405161027d9190612640565b60405180910390f35b348015610291575f5ffd5b506102ac60048036038101906102a79190612659565b61080f565b6040516102b991906124bd565b60405180910390f35b3480156102cd575f5ffd5b506102e860048036038101906102e391906126dc565b61082c565b6040516102f59190612716565b60405180910390f35b348015610309575f5ffd5b50610324600480360381019061031f919061272f565b610856565b005b348015610331575f5ffd5b5061033a610878565b6040516103479190612788565b60405180910390f35b34801561035b575f5ffd5b50610364610880565b6040516103719190612640565b60405180910390f35b348015610385575f5ffd5b506103a0600480360381019061039b919061272f565b610886565b005b3480156103ad575f5ffd5b506103b6610901565b005b3480156103c3575f5ffd5b506103de60048036038101906103d991906125f3565b610918565b6040516103eb91906124bd565b60405180910390f35b3480156103ff575f5ffd5b5061041a600480360381019061041591906127a1565b610a6b565b60405161042791906124bd565b60405180910390f35b61044a600480360381019061044591906128f8565b610b20565b005b348015610457575f5ffd5b50610460610b3f565b60405161046d9190612716565b60405180910390f35b348015610481575f5ffd5b5061048a610b70565b60405161049791906124bd565b60405180910390f35b3480156104ab575f5ffd5b506104c660048036038101906104c191906129f0565b610b84565b005b3480156104d3575f5ffd5b506104ee60048036038101906104e99190612a8c565b610e2b565b6040516104fb9190612640565b60405180910390f35b34801561050f575f5ffd5b50610518610e7e565b005b348015610525575f5ffd5b50610540600480360381019061053b919061272f565b610e95565b60405161054d91906124bd565b60405180910390f35b348015610561575f5ffd5b5061056a610f06565b6040516105779190612546565b60405180910390f35b34801561058b575f5ffd5b50610594610fa4565b6040516105a19190612716565b60405180910390f35b3480156105b5575f5ffd5b506105d060048036038101906105cb91906127a1565b610faa565b005b3480156105dd575f5ffd5b506105f860048036038101906105f391906125f3565b61107d565b60405161060591906124bd565b60405180910390f35b348015610619575f5ffd5b50610622611098565b60405161062f9190612546565b60405180910390f35b348015610643575f5ffd5b5061064c6110d1565b6040516106599190612716565b60405180910390f35b34801561066d575f5ffd5b506106886004803603810190610683919061272f565b6110f5565b005b348015610695575f5ffd5b506106b060048036038101906106ab9190612ab7565b611117565b6040516106bd9190612640565b60405180910390f35b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107385750610737826111a7565b5b9050919050565b60605f61074a611210565b905080600301805461075b90612b22565b80601f016020809104026020016040519081016040528092919081815260200182805461078790612b22565b80156107d25780601f106107a9576101008083540402835291602001916107d2565b820191905f5260205f20905b8154815290600101906020018083116107b557829003601f168201915b505050505091505090565b5f6107e6611237565b6107f08383611281565b905092915050565b5f5f610802611210565b9050806002015491505090565b5f610818611237565b6108238484846112a3565b90509392505050565b5f5f6108366112d1565b9050805f015f8481526020019081526020015f2060010154915050919050565b61085f8261082c565b610868816112f8565b610872838361130c565b50505050565b5f6012905090565b60325481565b61088e611404565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108f2576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108fc828261140b565b505050565b5f5f1b61090d816112f8565b610915611503565b50565b5f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610943816112f8565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a890612b9c565b60405180910390fd5b603254836109bd6107f8565b6109c79190612be7565b1115610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff90612c64565b60405180910390fd5b610a128484611563565b8373ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688584604051610a589190612640565b60405180910390a2600191505092915050565b5f610a74611237565b81610a7e33610e2b565b1015610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab690612ccc565b60405180910390fd5b610ac933836115e2565b3373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca583604051610b0f9190612640565b60405180910390a260019050919050565b610b28611661565b610b3182611747565b610b3b8282611757565b5050565b5f610b48611875565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b905090565b5f5f5f9054906101000a900460ff16905090565b5f610b8d6118fc565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f5f8267ffffffffffffffff16148015610bd55750825b90505f60018367ffffffffffffffff16148015610c0857505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610c16575080155b15610c4d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610c9a576001855f0160086101000a81548160ff0219169083151502179055505b610ca4898961190f565b610cac611925565b610cb4611937565b610cbc611941565b610cc85f5f1b3361130c565b50610cf37f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361130c565b505f8611610d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2d90612d34565b60405180910390fd5b610d3e610878565b600a610d4a9190612e81565b86610d559190612ecb565b60328190555085871115610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9590612f56565b60405180910390fd5b610dc633610daa610878565b600a610db69190612e81565b89610dc19190612ecb565b611563565b8315610e20575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610e179190612fc9565b60405180910390a15b505050505050505050565b5f5f610e35611210565b9050805f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054915050919050565b5f5f1b610e8a816112f8565b610e9261194b565b50565b5f5f610e9f6112d1565b9050805f015f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b60605f610f11611210565b9050806004018054610f2290612b22565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4e90612b22565b8015610f995780601f10610f7057610100808354040283529160200191610f99565b820191905f5260205f20905b815481529060010190602001808311610f7c57829003601f168201915b505050505091505090565b5f5f1b81565b5f5f1b610fb6816112f8565b610fbe610878565b600a610fca9190612e81565b610fd26107f8565b610fdc919061300f565b821161101d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611014906130af565b60405180910390fd5b611025610878565b600a6110319190612e81565b8261103c9190612ecb565b6032819055507f3c8eb7c49d332f4c1e4d92a27cda93c31cc9452f7a408e0c6109fcddbc9946ea826040516110719190612640565b60405180910390a15050565b5f611086611237565b61109083836119ac565b905092915050565b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6110fe8261082c565b611107816112f8565b611111838361140b565b50505050565b5f5f611121611210565b9050806001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205491505092915050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00905090565b61123f610b70565b1561127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690613117565b60405180910390fd5b565b5f5f61128b611404565b90506112988185856119ce565b600191505092915050565b5f5f6112ad611404565b90506112ba8582856119e0565b6112c5858585611a73565b60019150509392505050565b5f7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b61130981611304611404565b611b63565b50565b5f5f6113166112d1565b90506113228484610e95565b6113f9576001815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611395611404565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506113fe565b5f9150505b92915050565b5f33905090565b5f5f6114156112d1565b90506114218484610e95565b156114f8575f815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611494611404565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019150506114fd565b5f9150505b92915050565b61150b611bb4565b5f5f5f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61154c611404565b6040516115599190613144565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115d3575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016115ca9190613144565b60405180910390fd5b6115de5f8383611bfd565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611652575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016116499190613144565b60405180910390fd5b61165d825f83611bfd565b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148061170e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166116f5611e2c565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611745576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f5f1b611753816112f8565b5050565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117bf57506040513d601f19601f820116820180604052508101906117bc9190613171565b60015b61180057816040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016117f79190613144565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b811461186657806040517faa1d49a400000000000000000000000000000000000000000000000000000000815260040161185d9190612716565b60405180910390fd5b6118708383611e7f565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16146118fa576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f5f611906611ef1565b90508091505090565b611917611f1a565b6119218282611f5a565b5050565b61192d611f1a565b611935611f96565b565b61193f611f1a565b565b611949611f1a565b565b611953611237565b60015f5f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611995611404565b6040516119a29190613144565b60405180910390a1565b5f5f6119b6611404565b90506119c3818585611a73565b600191505092915050565b6119db8383836001611fb8565b505050565b5f6119eb8484611117565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015611a6d5781811015611a5e578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611a559392919061319c565b60405180910390fd5b611a6c84848484035f611fb8565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ae3575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611ada9190613144565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b53575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611b4a9190613144565b60405180910390fd5b611b5e838383611bfd565b505050565b611b6d8282610e95565b611bb05780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611ba79291906131d1565b60405180910390fd5b5050565b611bbc610b70565b611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf290613242565b60405180910390fd5b565b5f611c06611210565b90505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c5a5781816002015f828254611c4e9190612be7565b92505081905550611d2c565b5f815f015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611ce5578481846040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611cdc9392919061319c565b60405180910390fd5b828103825f015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d755781816002015f8282540392505081905550611dc1565b81815f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e1e9190612640565b60405180910390a350505050565b5f611e587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b612195565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611e888261219e565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25f81511115611ee457611ede8282612267565b50611eed565b611eec6122e7565b5b5050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005f1b905090565b611f22612323565b611f58576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611f62611f1a565b5f611f6b611210565b905082816003019081611f7e91906133f7565b5081816004019081611f9091906133f7565b50505050565b611f9e611f1a565b5f5f5f6101000a81548160ff021916908315150217905550565b5f611fc1611210565b90505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612033575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161202a9190613144565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036120a3575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161209a9190613144565b60405180910390fd5b82816001015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550811561218e578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516121859190612640565b60405180910390a35b5050505050565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036121f957806040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016121f09190613144565b60405180910390fd5b806122257f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b612195565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f5f8473ffffffffffffffffffffffffffffffffffffffff1684604051612290919061350a565b5f60405180830381855af49150503d805f81146122c8576040519150601f19603f3d011682016040523d82523d5f602084013e6122cd565b606091505b50915091506122dd858383612341565b9250505092915050565b5f341115612321576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f61232c6118fc565b5f0160089054906101000a900460ff16905090565b60608261235657612351826123ce565b6123c6565b5f825114801561237c57505f8473ffffffffffffffffffffffffffffffffffffffff163b145b156123be57836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016123b59190613144565b60405180910390fd5b8190506123c7565b5b9392505050565b5f815111156123e05780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61245781612423565b8114612461575f5ffd5b50565b5f813590506124728161244e565b92915050565b5f6020828403121561248d5761248c61241b565b5b5f61249a84828501612464565b91505092915050565b5f8115159050919050565b6124b7816124a3565b82525050565b5f6020820190506124d05f8301846124ae565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612518826124d6565b61252281856124e0565b93506125328185602086016124f0565b61253b816124fe565b840191505092915050565b5f6020820190508181035f83015261255e818461250e565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61258f82612566565b9050919050565b61259f81612585565b81146125a9575f5ffd5b50565b5f813590506125ba81612596565b92915050565b5f819050919050565b6125d2816125c0565b81146125dc575f5ffd5b50565b5f813590506125ed816125c9565b92915050565b5f5f604083850312156126095761260861241b565b5b5f612616858286016125ac565b9250506020612627858286016125df565b9150509250929050565b61263a816125c0565b82525050565b5f6020820190506126535f830184612631565b92915050565b5f5f5f606084860312156126705761266f61241b565b5b5f61267d868287016125ac565b935050602061268e868287016125ac565b925050604061269f868287016125df565b9150509250925092565b5f819050919050565b6126bb816126a9565b81146126c5575f5ffd5b50565b5f813590506126d6816126b2565b92915050565b5f602082840312156126f1576126f061241b565b5b5f6126fe848285016126c8565b91505092915050565b612710816126a9565b82525050565b5f6020820190506127295f830184612707565b92915050565b5f5f604083850312156127455761274461241b565b5b5f612752858286016126c8565b9250506020612763858286016125ac565b9150509250929050565b5f60ff82169050919050565b6127828161276d565b82525050565b5f60208201905061279b5f830184612779565b92915050565b5f602082840312156127b6576127b561241b565b5b5f6127c3848285016125df565b91505092915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61280a826124fe565b810181811067ffffffffffffffff82111715612829576128286127d4565b5b80604052505050565b5f61283b612412565b90506128478282612801565b919050565b5f67ffffffffffffffff821115612866576128656127d4565b5b61286f826124fe565b9050602081019050919050565b828183375f83830152505050565b5f61289c6128978461284c565b612832565b9050828152602081018484840111156128b8576128b76127d0565b5b6128c384828561287c565b509392505050565b5f82601f8301126128df576128de6127cc565b5b81356128ef84826020860161288a565b91505092915050565b5f5f6040838503121561290e5761290d61241b565b5b5f61291b858286016125ac565b925050602083013567ffffffffffffffff81111561293c5761293b61241f565b5b612948858286016128cb565b9150509250929050565b5f67ffffffffffffffff82111561296c5761296b6127d4565b5b612975826124fe565b9050602081019050919050565b5f61299461298f84612952565b612832565b9050828152602081018484840111156129b0576129af6127d0565b5b6129bb84828561287c565b509392505050565b5f82601f8301126129d7576129d66127cc565b5b81356129e7848260208601612982565b91505092915050565b5f5f5f5f60808587031215612a0857612a0761241b565b5b5f85013567ffffffffffffffff811115612a2557612a2461241f565b5b612a31878288016129c3565b945050602085013567ffffffffffffffff811115612a5257612a5161241f565b5b612a5e878288016129c3565b9350506040612a6f878288016125df565b9250506060612a80878288016125df565b91505092959194509250565b5f60208284031215612aa157612aa061241b565b5b5f612aae848285016125ac565b91505092915050565b5f5f60408385031215612acd57612acc61241b565b5b5f612ada858286016125ac565b9250506020612aeb858286016125ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b3957607f821691505b602082108103612b4c57612b4b612af5565b5b50919050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f612b86600f836124e0565b9150612b9182612b52565b602082019050919050565b5f6020820190508181035f830152612bb381612b7a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bf1826125c0565b9150612bfc836125c0565b9250828201905080821115612c1457612c13612bba565b5b92915050565b7f45786365656473206361700000000000000000000000000000000000000000005f82015250565b5f612c4e600b836124e0565b9150612c5982612c1a565b602082019050919050565b5f6020820190508181035f830152612c7b81612c42565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f612cb66014836124e0565b9150612cc182612c82565b602082019050919050565b5f6020820190508181035f830152612ce381612caa565b9050919050565b7f436170206d7573742062652067726561746572207468616e20300000000000005f82015250565b5f612d1e601a836124e0565b9150612d2982612cea565b602082019050919050565b5f6020820190508181035f830152612d4b81612d12565b9050919050565b5f8160011c9050919050565b5f5f8291508390505b6001851115612da757808604811115612d8357612d82612bba565b5b6001851615612d925780820291505b8081029050612da085612d52565b9450612d67565b94509492505050565b5f82612dbf5760019050612e7a565b81612dcc575f9050612e7a565b8160018114612de25760028114612dec57612e1b565b6001915050612e7a565b60ff841115612dfe57612dfd612bba565b5b8360020a915084821115612e1557612e14612bba565b5b50612e7a565b5060208310610133831016604e8410600b8410161715612e505782820a905083811115612e4b57612e4a612bba565b5b612e7a565b612e5d8484846001612d5e565b92509050818404811115612e7457612e73612bba565b5b81810290505b9392505050565b5f612e8b826125c0565b9150612e968361276d565b9250612ec37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612db0565b905092915050565b5f612ed5826125c0565b9150612ee0836125c0565b9250828202612eee816125c0565b91508282048414831517612f0557612f04612bba565b5b5092915050565b7f496e697469616c20737570706c792065786365656473206361700000000000005f82015250565b5f612f40601a836124e0565b9150612f4b82612f0c565b602082019050919050565b5f6020820190508181035f830152612f6d81612f34565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f612fb3612fae612fa984612f74565b612f90565b612f7d565b9050919050565b612fc381612f99565b82525050565b5f602082019050612fdc5f830184612fba565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613019826125c0565b9150613024836125c0565b92508261303457613033612fe2565b5b828204905092915050565b7f4e657720636170206d7573742062652067726561746572207468616e206375725f8201527f72656e7420737570706c79000000000000000000000000000000000000000000602082015250565b5f613099602b836124e0565b91506130a48261303f565b604082019050919050565b5f6020820190508181035f8301526130c68161308d565b9050919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f6131016010836124e0565b915061310c826130cd565b602082019050919050565b5f6020820190508181035f83015261312e816130f5565b9050919050565b61313e81612585565b82525050565b5f6020820190506131575f830184613135565b92915050565b5f8151905061316b816126b2565b92915050565b5f602082840312156131865761318561241b565b5b5f6131938482850161315d565b91505092915050565b5f6060820190506131af5f830186613135565b6131bc6020830185612631565b6131c96040830184612631565b949350505050565b5f6040820190506131e45f830185613135565b6131f16020830184612707565b9392505050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f61322c6014836124e0565b9150613237826131f8565b602082019050919050565b5f6020820190508181035f83015261325981613220565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026132bc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613281565b6132c68683613281565b95508019841693508086168417925050509392505050565b5f6132f86132f36132ee846125c0565b612f90565b6125c0565b9050919050565b5f819050919050565b613311836132de565b61332561331d826132ff565b84845461328d565b825550505050565b5f5f905090565b61333c61332d565b613347818484613308565b505050565b5b8181101561336a5761335f5f82613334565b60018101905061334d565b5050565b601f8211156133af5761338081613260565b61338984613272565b81016020851015613398578190505b6133ac6133a485613272565b83018261334c565b50505b505050565b5f82821c905092915050565b5f6133cf5f19846008026133b4565b1980831691505092915050565b5f6133e783836133c0565b9150826002028217905092915050565b613400826124d6565b67ffffffffffffffff811115613419576134186127d4565b5b6134238254612b22565b61342e82828561336e565b5f60209050601f83116001811461345f575f841561344d578287015190505b61345785826133dc565b8655506134be565b601f19841661346d86613260565b5f5b828110156134945784890151825560018201915060208501945060208101905061346f565b868310156134b157848901516134ad601f8916826133c0565b8355505b6001600288020188555050505b505050505050565b5f81519050919050565b5f81905092915050565b5f6134e4826134c6565b6134ee81856134d0565b93506134fe8185602086016124f0565b80840191505092915050565b5f61351582846134da565b91508190509291505056fea2646970667358221220272a22c50e4097fa8c644bf54d91ca916d86accdac56663ea40c6b03d823cc3164736f6c634300081e0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1B6 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x52D1902D GT PUSH2 0xEB JUMPI DUP1 PUSH4 0xA217FDDF GT PUSH2 0x89 JUMPI DUP1 PUSH4 0xAD3CB1CC GT PUSH2 0x63 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x60E JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x638 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x662 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x68A JUMPI PUSH2 0x1B6 JUMP JUMPDEST DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0xA7D68896 EQ PUSH2 0x5AA JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5D2 JUMPI PUSH2 0x1B6 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 GT PUSH2 0xC5 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4C8 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x504 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x556 JUMPI PUSH2 0x1B6 JUMP JUMPDEST DUP1 PUSH4 0x52D1902D EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x476 JUMPI DUP1 PUSH4 0x6FE0E395 EQ PUSH2 0x4A0 JUMPI PUSH2 0x1B6 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x158 JUMPI DUP1 PUSH4 0x3F4BA83A GT PUSH2 0x132 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3B8 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x3F4 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x430 JUMPI PUSH2 0x1B6 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x326 JUMPI DUP1 PUSH4 0x355274EA EQ PUSH2 0x350 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x37A JUMPI PUSH2 0x1B6 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x194 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x286 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x2FE JUMPI PUSH2 0x1B6 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1BA JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x220 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1DB SWAP2 SWAP1 PUSH2 0x2478 JUMP JUMPDEST PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1ED SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x201 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x20A PUSH2 0x73F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x217 SWAP2 SWAP1 PUSH2 0x2546 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x246 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x241 SWAP2 SWAP1 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x7DD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x253 SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x270 PUSH2 0x7F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x27D SWAP2 SWAP1 PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x291 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x2659 JUMP JUMPDEST PUSH2 0x80F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B9 SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2E3 SWAP2 SWAP1 PUSH2 0x26DC JUMP JUMPDEST PUSH2 0x82C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F5 SWAP2 SWAP1 PUSH2 0x2716 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x309 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x324 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x31F SWAP2 SWAP1 PUSH2 0x272F JUMP JUMPDEST PUSH2 0x856 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x331 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x33A PUSH2 0x878 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x347 SWAP2 SWAP1 PUSH2 0x2788 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x364 PUSH2 0x880 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x371 SWAP2 SWAP1 PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x385 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x39B SWAP2 SWAP1 PUSH2 0x272F JUMP JUMPDEST PUSH2 0x886 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3B6 PUSH2 0x901 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3D9 SWAP2 SWAP1 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x918 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3EB SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x41A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x415 SWAP2 SWAP1 PUSH2 0x27A1 JUMP JUMPDEST PUSH2 0xA6B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x427 SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x44A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x445 SWAP2 SWAP1 PUSH2 0x28F8 JUMP JUMPDEST PUSH2 0xB20 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x457 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x460 PUSH2 0xB3F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x46D SWAP2 SWAP1 PUSH2 0x2716 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x481 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x48A PUSH2 0xB70 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x497 SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4C1 SWAP2 SWAP1 PUSH2 0x29F0 JUMP JUMPDEST PUSH2 0xB84 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4EE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4E9 SWAP2 SWAP1 PUSH2 0x2A8C JUMP JUMPDEST PUSH2 0xE2B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4FB SWAP2 SWAP1 PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x518 PUSH2 0xE7E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x525 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x540 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x53B SWAP2 SWAP1 PUSH2 0x272F JUMP JUMPDEST PUSH2 0xE95 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x54D SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x561 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x56A PUSH2 0xF06 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x577 SWAP2 SWAP1 PUSH2 0x2546 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x594 PUSH2 0xFA4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5A1 SWAP2 SWAP1 PUSH2 0x2716 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5CB SWAP2 SWAP1 PUSH2 0x27A1 JUMP JUMPDEST PUSH2 0xFAA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5F3 SWAP2 SWAP1 PUSH2 0x25F3 JUMP JUMPDEST PUSH2 0x107D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x605 SWAP2 SWAP1 PUSH2 0x24BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x619 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x622 PUSH2 0x1098 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x62F SWAP2 SWAP1 PUSH2 0x2546 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x643 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x64C PUSH2 0x10D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x659 SWAP2 SWAP1 PUSH2 0x2716 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x688 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x683 SWAP2 SWAP1 PUSH2 0x272F JUMP JUMPDEST PUSH2 0x10F5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x695 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x6B0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6AB SWAP2 SWAP1 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x1117 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6BD SWAP2 SWAP1 PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH0 PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x738 JUMPI POP PUSH2 0x737 DUP3 PUSH2 0x11A7 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x74A PUSH2 0x1210 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x3 ADD DUP1 SLOAD PUSH2 0x75B SWAP1 PUSH2 0x2B22 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 0x787 SWAP1 PUSH2 0x2B22 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7D2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7A9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7D2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7B5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x7E6 PUSH2 0x1237 JUMP JUMPDEST PUSH2 0x7F0 DUP4 DUP4 PUSH2 0x1281 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x802 PUSH2 0x1210 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x818 PUSH2 0x1237 JUMP JUMPDEST PUSH2 0x823 DUP5 DUP5 DUP5 PUSH2 0x12A3 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x836 PUSH2 0x12D1 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x85F DUP3 PUSH2 0x82C JUMP JUMPDEST PUSH2 0x868 DUP2 PUSH2 0x12F8 JUMP JUMPDEST PUSH2 0x872 DUP4 DUP4 PUSH2 0x130C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x32 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x88E PUSH2 0x1404 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6697B23200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8FC DUP3 DUP3 PUSH2 0x140B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH0 SHL PUSH2 0x90D DUP2 PUSH2 0x12F8 JUMP JUMPDEST PUSH2 0x915 PUSH2 0x1503 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0x943 DUP2 PUSH2 0x12F8 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x9B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A8 SWAP1 PUSH2 0x2B9C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x32 SLOAD DUP4 PUSH2 0x9BD PUSH2 0x7F8 JUMP JUMPDEST PUSH2 0x9C7 SWAP2 SWAP1 PUSH2 0x2BE7 JUMP JUMPDEST GT ISZERO PUSH2 0xA08 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9FF SWAP1 PUSH2 0x2C64 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA12 DUP5 DUP5 PUSH2 0x1563 JUMP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF6798A560793A54C3BCFE86A93CDE1E73087D944C0EA20544137D4121396885 DUP5 PUSH1 0x40 MLOAD PUSH2 0xA58 SWAP2 SWAP1 PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA74 PUSH2 0x1237 JUMP JUMPDEST DUP2 PUSH2 0xA7E CALLER PUSH2 0xE2B JUMP JUMPDEST LT ISZERO PUSH2 0xABF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAB6 SWAP1 PUSH2 0x2CCC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAC9 CALLER DUP4 PUSH2 0x15E2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCC16F5DBB4873280815C1EE09DBD06736CFFCC184412CF7A71A0FDB75D397CA5 DUP4 PUSH1 0x40 MLOAD PUSH2 0xB0F SWAP2 SWAP1 PUSH2 0x2640 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB28 PUSH2 0x1661 JUMP JUMPDEST PUSH2 0xB31 DUP3 PUSH2 0x1747 JUMP JUMPDEST PUSH2 0xB3B DUP3 DUP3 PUSH2 0x1757 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0xB48 PUSH2 0x1875 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC PUSH0 SHL SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xB8D PUSH2 0x18FC JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO SWAP1 POP PUSH0 DUP3 PUSH0 ADD PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH0 PUSH0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0xBD5 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ DUP1 ISZERO PUSH2 0xC08 JUMPI POP PUSH0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE EQ JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xC16 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xC4D JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 ISZERO PUSH2 0xC9A JUMPI PUSH1 0x1 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST PUSH2 0xCA4 DUP10 DUP10 PUSH2 0x190F JUMP JUMPDEST PUSH2 0xCAC PUSH2 0x1925 JUMP JUMPDEST PUSH2 0xCB4 PUSH2 0x1937 JUMP JUMPDEST PUSH2 0xCBC PUSH2 0x1941 JUMP JUMPDEST PUSH2 0xCC8 PUSH0 PUSH0 SHL CALLER PUSH2 0x130C JUMP JUMPDEST POP PUSH2 0xCF3 PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 CALLER PUSH2 0x130C JUMP JUMPDEST POP PUSH0 DUP7 GT PUSH2 0xD36 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD2D SWAP1 PUSH2 0x2D34 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD3E PUSH2 0x878 JUMP JUMPDEST PUSH1 0xA PUSH2 0xD4A SWAP2 SWAP1 PUSH2 0x2E81 JUMP JUMPDEST DUP7 PUSH2 0xD55 SWAP2 SWAP1 PUSH2 0x2ECB JUMP JUMPDEST PUSH1 0x32 DUP2 SWAP1 SSTORE POP DUP6 DUP8 GT ISZERO PUSH2 0xD9E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD95 SWAP1 PUSH2 0x2F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDC6 CALLER PUSH2 0xDAA PUSH2 0x878 JUMP JUMPDEST PUSH1 0xA PUSH2 0xDB6 SWAP2 SWAP1 PUSH2 0x2E81 JUMP JUMPDEST DUP10 PUSH2 0xDC1 SWAP2 SWAP1 PUSH2 0x2ECB JUMP JUMPDEST PUSH2 0x1563 JUMP JUMPDEST DUP4 ISZERO PUSH2 0xE20 JUMPI PUSH0 DUP6 PUSH0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 PUSH1 0x1 PUSH1 0x40 MLOAD PUSH2 0xE17 SWAP2 SWAP1 PUSH2 0x2FC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xE35 PUSH2 0x1210 JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 ADD PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 SHL PUSH2 0xE8A DUP2 PUSH2 0x12F8 JUMP JUMPD
View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

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