Skip to content

Instantly share code, notes, and snippets.

@simba-crypto
Created December 11, 2025 09:30
Show Gist options
  • Select an option

  • Save simba-crypto/f15aa6592c4a3d2cf7164391232f98ef to your computer and use it in GitHub Desktop.

Select an option

Save simba-crypto/f15aa6592c4a3d2cf7164391232f98ef 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.20+commit.a1b79de6.js&optimize=undefined&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.4.0) (interfaces/draft-IERC6093.sol)
pragma solidity >=0.8.4;
/**
* @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.4.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.20;
import {IERC20} from "./IERC20.sol";
import {IERC20Metadata} from "./extensions/IERC20Metadata.sol";
import {Context} from "../../utils/Context.sol";
import {IERC20Errors} from "../../interfaces/draft-IERC6093.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 ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
mapping(address account => uint256) private _balances;
mapping(address account => mapping(address spender => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* Both values are immutable: they can only be set once during construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the 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;
}
/// @inheritdoc IERC20
function totalSupply() public view virtual returns (uint256) {
return _totalSupply;
}
/// @inheritdoc IERC20
function balanceOf(address account) public view virtual returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `value`.
*/
function transfer(address to, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_transfer(owner, to, value);
return true;
}
/// @inheritdoc IERC20
function allowance(address owner, address spender) public view virtual returns (uint256) {
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 {
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 {
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.4.0) (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity >=0.6.2;
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.4.0) (token/ERC20/IERC20.sol)
pragma solidity >=0.4.16;
/**
* @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.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
ref: refs/heads/main
DIRCi:�@bZi:�@bZ��ێ�ux�;�g1��DsK�ShadowPhoenix.sol#����s�L����H�y��
x����O�@�=�_1�$��4 .ф��O�e;���n�H��M?���$3�y���ʸ�� )a1�<wH��؝fh���!<N��(�:W�����/I|��H� W2cW����@CVjg�T��d��V��oҤ��w&��SZ���ig��`kRJ3�AXlT�v��CK{'���t����b[�5�U��j�FX:V� ��&Q�� U��jq� �Fж����z.��]n�rڿ�ĤL��Բjj�� "*l�#k��ܯc�6ò���9Y���Έ�Zy'� �јN
{
"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": {}
}
]
}
{
"db": {
"0490f0d98c06a6234cc374564f984580f33770d4605e5781451d4971d3235a2d": "0xf873a1205931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"937514b0e72ad8da6bb5e656f25334fb09e7018992ae794d5c237fbf27a5db15": "0x735ee5c3600ba6be4781708f9d701c9dc7eb9c8da725273879d6057772268f17",
"ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f": "0xf872a0399bf57501565dbd2fdcea36efa2b9aef8340a8901e3459f4a4c926275d36cdbb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"dac9f9238909bae6bedf62a95a3ac503b5e6927b8243b9b44e0e335869bef325": "0xf8518080808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f80808080808080",
"6e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2": "0xf872a034a10bfd00977f54cc3450c9b25c9b3a502a089eba0097ba35fc33c4ea5fcb54b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"1db6a1394b96218e282fb52d559676dbecfba9a78146880e35ef38cc061dbf44": "0xf871a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e280808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f80808080808080",
"acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c": "0xf872a03fbe3e504ac4e35541bebad4d0e7574668e16fefa26cd4172f93e18b59ce9486b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"de2548e2521504daf92524b329dbb037a000ed381a8f810b8607e2f8832ada7d": "0xf891a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e280808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f808080a0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c808080",
"5f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c": "0xf872a036d82c545c22b72034803633d3dda2b28e89fb704f3c111355ac43e10612aedcb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"09cc43c2655ecf235e9ef7dbf5c6f27157eb9f6e2b53433a3f0f13301ca34450": "0xf8b1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e280808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f808080a0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"69a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bd": "0xf872a0323d89d4ba0f8b56a459710de4b44820d73e93736cfc0667f35cdd5142b70f0db84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"7b184ca9e86ac8499d2cde865d80d191cbbeca4393fd2b74df5972f5426e0895": "0xf8d1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e280808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f8080a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"0968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315": "0xf872a03c22adb6b75b7a618594eacef369bc4f0ec06380e8630fd7580f9bf0ea413ca8b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"b955e456c73a5460828b40c246ac4e09b60c899b969e7a9520783863649f104a": "0xf8f1a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f8080a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"70f09e0afc485ee4555a5c2bcb5380fe4745dfb619c97ce55ca368555f4c0358": "0xf872a03b9f0f05f155b5df3bbdd079fa47bedd6da0e32966c72f92264d98e80248858eb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"e628eda7692102d1123972b085e483fb81586793e6e4bb395f356f319785b924": "0xf90111a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0b57eae55d1d898a1388d3065de9102d0f6ade3423b29be2482e1626394acd99f80a070f09e0afc485ee4555a5c2bcb5380fe4745dfb619c97ce55ca368555f4c0358a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"021eda8d86f1724d84a155e5e0227744e3fb2f570089a70ae65750d24410fe10": "0xf872a0209bf57501565dbd2fdcea36efa2b9aef8340a8901e3459f4a4c926275d36cdbb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"35196d12c07e2405a02d095f74880568965618e95b50e64e8690594aa6bb5ea2": "0xf872a0207839edeb5b3ee9a2dee69954b24aeb3f91b8ff4c608efd90618351fe77152fb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"f4ae3d0d998ac3c8f5118c8ef3ce2ef3dc0440a900323177580df0f212f8b363": "0xf85180808080a035196d12c07e2405a02d095f74880568965618e95b50e64e8690594aa6bb5ea280808080a0021eda8d86f1724d84a155e5e0227744e3fb2f570089a70ae65750d24410fe1080808080808080",
"4b7be564e069212c8c0dd694ce21c7051e5cb7bbb527e3af73faf7e61de082c0": "0xf90111a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0f4ae3d0d998ac3c8f5118c8ef3ce2ef3dc0440a900323177580df0f212f8b36380a070f09e0afc485ee4555a5c2bcb5380fe4745dfb619c97ce55ca368555f4c0358a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515a": "0xf872a03aea7c8c479e9ff598fc761670d034e3eff2ebadb1e3769b349b2d1663d23913b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"1b83601c6f891d16b1422e65ed3cd47bcbe1342010db6168a0508de8597ac327": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0f4ae3d0d998ac3c8f5118c8ef3ce2ef3dc0440a900323177580df0f212f8b363a0c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515aa070f09e0afc485ee4555a5c2bcb5380fe4745dfb619c97ce55ca368555f4c0358a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"82f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d68": "0xf872a0209f0f05f155b5df3bbdd079fa47bedd6da0e32966c72f92264d98e80248858eb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"cdeaf028a7a2894d4778d6c412bfb95e81b23c2e6044f4c5d6de2ed8a50f78f3": "0xf872a020591967aed668a4b27645ff40c444892d91bf5951b382995d4d4f6ee3a2ce03b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"9d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797": "0xf85180a0cdeaf028a7a2894d4778d6c412bfb95e81b23c2e6044f4c5d6de2ed8a50f78f3808080808080808080a082f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d688080808080",
"0733321bda3c83f42aeeb32f8dcad18bb4f4c2b80fa60dee4b6eb25f0952524c": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0f4ae3d0d998ac3c8f5118c8ef3ce2ef3dc0440a900323177580df0f212f8b363a0c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515aa09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"0932e0165ad0cabdfe9d8fb6a70150033d789cd07caaf499c8a37141495499c3": "0xf872a020a258265696d227eef589fd6cd14671a82aa2963ec2214eb048fca5441c4a7eb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8": "0xf87180808080a035196d12c07e2405a02d095f74880568965618e95b50e64e8690594aa6bb5ea280808080a0021eda8d86f1724d84a155e5e0227744e3fb2f570089a70ae65750d24410fe10808080a00932e0165ad0cabdfe9d8fb6a70150033d789cd07caaf499c8a37141495499c3808080",
"a137d310a084b364dfbf0de1114f64e94253e42baa0297980c4a88db4e7d9aa8": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515aa09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0acc98ed24983a10e645870d5b47d42f6a1c47d94ac9165221722626a99b3660c80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"9aceb391e41ce30a6ee2c0c568b850f9fde2e425b767f72e7f4d9cc76e8271ec": "0xf872a020be3e504ac4e35541bebad4d0e7574668e16fefa26cd4172f93e18b59ce9486b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"090d9dec4c66aadc432a96de820eb6fb44489111b3b6f1f397cd9a44a0014882": "0xf872a0209ae219c4bbc2c5eaa1cd472f76bd0211bbf31053549dd7771cc573d3ed197fb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"819c926feb18dee3be8e9daa7ab62abe91febb2caceac5e8038b048d7a4bed0d": "0xf851808080808080808080808080a0090d9dec4c66aadc432a96de820eb6fb44489111b3b6f1f397cd9a44a00148828080a09aceb391e41ce30a6ee2c0c568b850f9fde2e425b767f72e7f4d9cc76e8271ec80",
"53ac286d5d31f0a7f768060b7f9f198956d75c903a698ae4fbb3dcc9f9d5e0b8": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515aa09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0819c926feb18dee3be8e9daa7ab62abe91febb2caceac5e8038b048d7a4bed0d80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"1a0e275dfddaeead8d1fa18c665c7e19b15dc769d3ede56c4a85377edc877110": "0xf8719f20e219c4bbc2c5eaa1cd472f76bd0211bbf31053549dd7771cc573d3ed197fb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"ff695f1ea854ce96ed9c761374f9cc42179fddef3c76a01c05f7f1bb19725ef8": "0xf8719f201e8c4eba798a431ca40726ca69bda8c7067f1690340e5b0a08d83d00d9cbb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"f96f3afee8124cd65bfb12ead5b9bd737c7def4cb7f7c71b82b00d5da23cd77c": "0xf85180808080a0ff695f1ea854ce96ed9c761374f9cc42179fddef3c76a01c05f7f1bb19725ef88080808080a01a0e275dfddaeead8d1fa18c665c7e19b15dc769d3ede56c4a85377edc877110808080808080",
"d8394fa4bbb65976fe11ee9de67bd6f0fb3fa3d7b36ee09f1421dae79b17b95f": "0xe219a0f96f3afee8124cd65bfb12ead5b9bd737c7def4cb7f7c71b82b00d5da23cd77c",
"853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a": "0xf851808080808080808080808080a0d8394fa4bbb65976fe11ee9de67bd6f0fb3fa3d7b36ee09f1421dae79b17b95f8080a09aceb391e41ce30a6ee2c0c568b850f9fde2e425b767f72e7f4d9cc76e8271ec80",
"29a7ea17591b34ca73ee13832a64db6d8565d9ab4dbafea03842fabe139016fa": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0c3165ef5b21e80c163531f807c25789fef8810eda00ae7ca5ced381ff9a9515aa09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"48e73baa24091198f9b69f9c7d27ba256fc19dddebf64448a7a0fd3df28d727d": "0xf872a020ea7c8c479e9ff598fc761670d034e3eff2ebadb1e3769b349b2d1663d23913b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"dc3d58bdcff5ea646a823bebe53ec4ab457ca425e952485f0da477b44fd7bacd": "0xf872a020e7c546eb582218cf94b848c36f3b058e2518876240ae6100c4ef23d38f3e07b84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546bab": "0xf85180808080808080808080a048e73baa24091198f9b69f9c7d27ba256fc19dddebf64448a7a0fd3df28d727d80808080a0dc3d58bdcff5ea646a823bebe53ec4ab457ca425e952485f0da477b44fd7bacd80",
"c87ee106e21de6f375b1424af09b5235d42f0524163ba739aa52ff49cf6e0fb9": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0ac59032c139346dba6925ea119f110bc037a945991f7349e218edbe12d6d43e9808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"332fc2cf9111adea3eee8b73eb4a8f6f1b69bd6445bfc0359d86587d2ccedbf4": "0xf844a120c2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85ba1a0536861646f7750686f656e69780000000000000000000000000000000000001a",
"1133f30b831ebaeb0b00976bdaa57126ee6b6149fdaab406c583f759e40120eb": "0xf843a032575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85ba1a0536861646f7750686f656e69780000000000000000000000000000000000001a",
"487c6cd3fd923d3fea2b46e5c26f56311abc3468a4e5086ec0113756850fefd7": "0xf843a03a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19ba1a04441524b00000000000000000000000000000000000000000000000000000008",
"3fd176f8a5c9c99fcf1693fc4843847634f3a1f955d2cbb3aff8b76c7eeaf440": "0xf8518080808080808080a0487c6cd3fd923d3fea2b46e5c26f56311abc3468a4e5086ec0113756850fefd7808080a01133f30b831ebaeb0b00976bdaa57126ee6b6149fdaab406c583f759e40120eb80808080",
"38cfce3d0bc3f2e685afb5b784869c6f1c3b07be2e28dbfb55a306d41220c265": "0xf7a0336b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db095945b38da6a701c568545dcfcb03fcb875f56beddc4",
"6c7e371cb43cfb15d613cfb8ca3336cdb2e1380a7fe80d91d00a93d56afb6a2d": "0xf871a038cfce3d0bc3f2e685afb5b784869c6f1c3b07be2e28dbfb55a306d41220c26580808080808080a0487c6cd3fd923d3fea2b46e5c26f56311abc3468a4e5086ec0113756850fefd7808080a01133f30b831ebaeb0b00976bdaa57126ee6b6149fdaab406c583f759e40120eb80808080",
"322088fc654a91e7af262715d1c23ad925ba6c3804e092fe9c57e4fcae44a64e": "0xefa0305787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace8d8c015b6a759f4835dc24000000",
"c118d5bae343ab4fc6b5881aadb18d8f1c24267a5938fb219ee89c9ab40fa1df": "0xf891a038cfce3d0bc3f2e685afb5b784869c6f1c3b07be2e28dbfb55a306d41220c265808080a0322088fc654a91e7af262715d1c23ad925ba6c3804e092fe9c57e4fcae44a64e808080a0487c6cd3fd923d3fea2b46e5c26f56311abc3468a4e5086ec0113756850fefd7808080a01133f30b831ebaeb0b00976bdaa57126ee6b6149fdaab406c583f759e40120eb80808080",
"30f08b28505306c1aea141d1d1dba25b6c1592a9734635ec27d2501e9f5c6fb0": "0xefa03f4efd012f30b85c3b205250c3dad4cd9208919ba8889723a8325ec6826f69e18d8c015b6a759f4835dc24000000",
"19ca57ee95b4808cdf2707fb68671fc2d6f9ae55e5386b0eb9d13302e9d68b58": "0xf8b1a038cfce3d0bc3f2e685afb5b784869c6f1c3b07be2e28dbfb55a306d41220c26580a030f08b28505306c1aea141d1d1dba25b6c1592a9734635ec27d2501e9f5c6fb080a0322088fc654a91e7af262715d1c23ad925ba6c3804e092fe9c57e4fcae44a64e808080a0487c6cd3fd923d3fea2b46e5c26f56311abc3468a4e5086ec0113756850fefd7808080a01133f30b831ebaeb0b00976bdaa57126ee6b6149fdaab406c583f759e40120eb80808080",
"3d70266ebe82a1cbafbebc91d668c3660f1a8e041c9738846c9e6a58b1dfe47f": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d8089056bc75e2d61100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"37bf9cec1a51c255d9719f0e8b14cba07e26cc8651b74c01282ad6a45f3d48f6": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a03d70266ebe82a1cbafbebc91d668c3660f1a8e041c9738846c9e6a58b1dfe47f808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"461013860fc2e215d750d933237c6d349a13e99bec8ce1e42ba23dcd7ae9e9b8": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0189056bc75e2d61100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"c57c6d53192b8dd0a8244639ea3ac33c16b5fc36350bde985a949e59d72c588d": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0461013860fc2e215d750d933237c6d349a13e99bec8ce1e42ba23dcd7ae9e9b8808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"57ec08b8f040499409fb0220f538477790d4f010c4bb51a8dbae5da3537a86a4": "0xf872a020d82c545c22b72034803633d3dda2b28e89fb704f3c111355ac43e10612aedcb84ff84d8089056bc75e2d63100000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"9b5e595475007074a246b52a8b850b6a55a1ca47751ed6d715c290926ece7d10": "0xf869a0204b24eae4a02d3987ca887631704554f37941d36d88eba3861c6e365c7804a5b846f8448080a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"8ebfa1bb8d7f17c4c7b061298856df0d764d78874df9bbee0e2607b97a282e6f": "0xf851808080808080a057ec08b8f040499409fb0220f538477790d4f010c4bb51a8dbae5da3537a86a480a09b5e595475007074a246b52a8b850b6a55a1ca47751ed6d715c290926ece7d108080808080808080",
"6d4eea9fb897114d89cca26d71fe3e360c81cf9f9941ca2332a8759d0dd18e70": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0461013860fc2e215d750d933237c6d349a13e99bec8ce1e42ba23dcd7ae9e9b8808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a08ebfa1bb8d7f17c4c7b061298856df0d764d78874df9bbee0e2607b97a282e6f80",
"bb6ee835518e56b6623af794f7aa4fc29ad48c4def725b8a2ff64b38bd22c789": "0xf869a0204b24eae4a02d3987ca887631704554f37941d36d88eba3861c6e365c7804a5b846f8440180a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"78411d2196a2e4c560372788d3e499d0b71f36204f1961a41ef216a7fd574e95": "0xf851808080808080a057ec08b8f040499409fb0220f538477790d4f010c4bb51a8dbae5da3537a86a480a0bb6ee835518e56b6623af794f7aa4fc29ad48c4def725b8a2ff64b38bd22c7898080808080808080",
"6be820f4ced8cbd4a441b86b1fa020bfe198f7fce532715cf52ddb07e1509efd": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0461013860fc2e215d750d933237c6d349a13e99bec8ce1e42ba23dcd7ae9e9b8808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a078411d2196a2e4c560372788d3e499d0b71f36204f1961a41ef216a7fd574e9580",
"64a203e2f3780e03cb592bb3f87d9dbd47e7d2d19ec08127a6ff9c2d93e9373a": "0xf869a0204b24eae4a02d3987ca887631704554f37941d36d88eba3861c6e365c7804a5b846f8440180a0332fc2cf9111adea3eee8b73eb4a8f6f1b69bd6445bfc0359d86587d2ccedbf4a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"7e799d6f14e8c6927a27351a7050ba716ad8268d703183b968b1c2a05648d752": "0xf851808080808080a057ec08b8f040499409fb0220f538477790d4f010c4bb51a8dbae5da3537a86a480a064a203e2f3780e03cb592bb3f87d9dbd47e7d2d19ec08127a6ff9c2d93e9373a8080808080808080",
"deede781eb8d2c8ca33b3688cf490e13a90128bc9089296118ae95a2bfe60727": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0461013860fc2e215d750d933237c6d349a13e99bec8ce1e42ba23dcd7ae9e9b8808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a07e799d6f14e8c6927a27351a7050ba716ad8268d703183b968b1c2a05648d75280",
"433e69a0e320285b261a9c9cd64095538e1e713055cc59a4e2161b4555335152": "0xf869a0204b24eae4a02d3987ca887631704554f37941d36d88eba3861c6e365c7804a5b846f8440180a03fd176f8a5c9c99fcf1693fc4843847634f3a1f955d2cbb3aff8b76c7eeaf440a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"62d68a24eb01de4d1d595d882f074d85d591cd5109d2d3c103a67038d6f89ee7": "0xf851808080808080a057ec08b8f040499409fb0220f538477790d4f010c4bb51a8dbae5da3537a86a480a0433e69a0e320285b261a9c9cd64095538e1e713055cc59a4e2161b45553351528080808080808080",
"44b4ebadda1e06d24f3a277161f3269e5f3180470b8b36493af67eb371080875": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0461013860fc2e215d750d933237c6d349a13e99bec8ce1e42ba23dcd7ae9e9b8808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a062d68a24eb01de4d1d595d882f074d85d591cd5109d2d3c103a67038d6f89ee780",
"b5bbd9d06fc445f8b3d155c2cf02ce112a4251add09dab39de216d6e4c9d6125": "0xf869a0204b24eae4a02d3987ca887631704554f37941d36d88eba3861c6e365c7804a5b846f8440180a06c7e371cb43cfb15d613cfb8ca3336cdb2e1380a7fe80d91d00a93d56afb6a2da0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"fb73122dbd1cf78636e7ee5657e87f6bae48bb023eb766c5545782f7e2740dec": "0xf851808080808080a057ec08b8f040499409fb0220f538477790d4f010c4bb51a8dbae5da3537a86a480a0b5bbd9d06fc445f8b3d155c2cf02ce112a4251add09dab39de216d6e4c9d61258080808080808080",
"af92d6771ed04676e09f65173011992109eb36b0f48b2438657939e706b1e2a2": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0461013860fc2e215d750d933237c6d349a13e99bec8ce1e42ba23dcd7ae9e9b8808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a0fb73122dbd1cf78636e7ee5657e87f6bae48bb023eb766c5545782f7e2740dec80",
"eb9ebb825e1183b916d5854588c6669821c2f76e3ac3aaa78edb268e107d9af6": "0xf869a0204b24eae4a02d3987ca887631704554f37941d36d88eba3861c6e365c7804a5b846f8440180a0c118d5bae343ab4fc6b5881aadb18d8f1c24267a5938fb219ee89c9ab40fa1dfa0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"99861c90b0a073d6c2e666067243b8be12eeab6d662e60dfcdf16fe224b768ef": "0xf851808080808080a057ec08b8f040499409fb0220f538477790d4f010c4bb51a8dbae5da3537a86a480a0eb9ebb825e1183b916d5854588c6669821c2f76e3ac3aaa78edb268e107d9af68080808080808080",
"c80d7ab1181dd8e0459cd3cacfe3811a3f7e0360f61c8b3a09549a8944b2a35d": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0461013860fc2e215d750d933237c6d349a13e99bec8ce1e42ba23dcd7ae9e9b8808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a099861c90b0a073d6c2e666067243b8be12eeab6d662e60dfcdf16fe224b768ef80",
"414040a1b35511c11126933d819b89f08dc569dbe4a4866c58748d4bc732a23b": "0xf869a0204b24eae4a02d3987ca887631704554f37941d36d88eba3861c6e365c7804a5b846f8440180a019ca57ee95b4808cdf2707fb68671fc2d6f9ae55e5386b0eb9d13302e9d68b58a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"548b2850acf204deb0ce929c02453dbccfc413704234715b6ea00c26cbf3d292": "0xf851808080808080a057ec08b8f040499409fb0220f538477790d4f010c4bb51a8dbae5da3537a86a480a0414040a1b35511c11126933d819b89f08dc569dbe4a4866c58748d4bc732a23b8080808080808080",
"19269e0f65c75a7f07588ee6ada329fe8ce076bcda9c783ce6260c0e500602c3": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0461013860fc2e215d750d933237c6d349a13e99bec8ce1e42ba23dcd7ae9e9b8808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a0548b2850acf204deb0ce929c02453dbccfc413704234715b6ea00c26cbf3d29280",
"631e6a51a8204e0d4562cba6c770eca2a41b94be689a7fd23219fcd1cc01e374c1": "0x608060405234801561000f575f80fd5b50600436106100b2575f3560e01c8063715018a61161006f578063715018a6146101a05780638da5cb5b146101aa57806395d89b41146101c8578063a9059cbb146101e6578063dd62ed3e14610216578063f2fde38b14610246576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce5671461015257806370a0823114610170575b5f80fd5b6100be610262565b6040516100cb9190610ce3565b60405180910390f35b6100ee60048036038101906100e99190610d94565b6102f2565b6040516100fb9190610dec565b60405180910390f35b61010c610314565b6040516101199190610e14565b60405180910390f35b61013c60048036038101906101379190610e2d565b61031d565b6040516101499190610dec565b60405180910390f35b61015a61034b565b6040516101679190610e98565b60405180910390f35b61018a60048036038101906101859190610eb1565b610353565b6040516101979190610e14565b60405180910390f35b6101a8610398565b005b6101b26103ab565b6040516101bf9190610eeb565b60405180910390f35b6101d06103d3565b6040516101dd9190610ce3565b60405180910390f35b61020060048036038101906101fb9190610d94565b610463565b60405161020d9190610dec565b60405180910390f35b610230600480360381019061022b9190610f04565b610485565b60405161023d9190610e14565b60405180910390f35b610260600480360381019061025b9190610eb1565b610507565b005b60606003805461027190610f6f565b80601f016020809104026020016040519081016040528092919081815260200182805461029d90610f6f565b80156102e85780601f106102bf576101008083540402835291602001916102e8565b820191905f5260205f20905b8154815290600101906020018083116102cb57829003601f168201915b5050505050905090565b5f806102fc61058b565b9050610309818585610592565b600191505092915050565b5f600254905090565b5f8061032761058b565b90506103348582856105a4565b61033f858585610637565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6103a0610727565b6103a95f6107ae565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546103e290610f6f565b80601f016020809104026020016040519081016040528092919081815260200182805461040e90610f6f565b80156104595780601f1061043057610100808354040283529160200191610459565b820191905f5260205f20905b81548152906001019060200180831161043c57829003601f168201915b5050505050905090565b5f8061046d61058b565b905061047a818585610637565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61050f610727565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361057f575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016105769190610eeb565b60405180910390fd5b610588816107ae565b50565b5f33905090565b61059f8383836001610871565b505050565b5f6105af8484610485565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156106315781811015610622578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161061993929190610f9f565b60405180910390fd5b61063084848484035f610871565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106a7575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161069e9190610eeb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610717575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161070e9190610eeb565b60405180910390fd5b610722838383610a40565b505050565b61072f61058b565b73ffffffffffffffffffffffffffffffffffffffff1661074d6103ab565b73ffffffffffffffffffffffffffffffffffffffff16146107ac5761077061058b565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016107a39190610eeb565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036108e1575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016108d89190610eeb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610951575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016109489190610eeb565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610a3a578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a319190610e14565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a90578060025f828254610a849190611001565b92505081905550610b5e565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610b19578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610b1093929190610f9f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ba5578060025f8282540392505081905550610bef565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c4c9190610e14565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610c90578082015181840152602081019050610c75565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610cb582610c59565b610cbf8185610c63565b9350610ccf818560208601610c73565b610cd881610c9b565b840191505092915050565b5f6020820190508181035f830152610cfb8184610cab565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d3082610d07565b9050919050565b610d4081610d26565b8114610d4a575f80fd5b50565b5f81359050610d5b81610d37565b92915050565b5f819050919050565b610d7381610d61565b8114610d7d575f80fd5b50565b5f81359050610d8e81610d6a565b92915050565b5f8060408385031215610daa57610da9610d03565b5b5f610db785828601610d4d565b9250506020610dc885828601610d80565b9150509250929050565b5f8115159050919050565b610de681610dd2565b82525050565b5f602082019050610dff5f830184610ddd565b92915050565b610e0e81610d61565b82525050565b5f602082019050610e275f830184610e05565b92915050565b5f805f60608486031215610e4457610e43610d03565b5b5f610e5186828701610d4d565b9350506020610e6286828701610d4d565b9250506040610e7386828701610d80565b9150509250925092565b5f60ff82169050919050565b610e9281610e7d565b82525050565b5f602082019050610eab5f830184610e89565b92915050565b5f60208284031215610ec657610ec5610d03565b5b5f610ed384828501610d4d565b91505092915050565b610ee581610d26565b82525050565b5f602082019050610efe5f830184610edc565b92915050565b5f8060408385031215610f1a57610f19610d03565b5b5f610f2785828601610d4d565b9250506020610f3885828601610d4d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610f8657607f821691505b602082108103610f9957610f98610f42565b5b50919050565b5f606082019050610fb25f830186610edc565b610fbf6020830185610e05565b610fcc6040830184610e05565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61100b82610d61565b915061101683610d61565b925082820190508082111561102e5761102d610fd4565b5b9291505056fea26469706673582212203e2e4dadbd7d97c23f659d54dc57d7529c6ef5f4ad2e8e938d2bd8e79bc45c0664736f6c63430008140033",
"e7c6fe885a5c34c40d59c5f443ac972914a0e3af6200e3184f43ca6ede960e54": "0xf869a0204b24eae4a02d3987ca887631704554f37941d36d88eba3861c6e365c7804a5b846f8440180a019ca57ee95b4808cdf2707fb68671fc2d6f9ae55e5386b0eb9d13302e9d68b58a01e6a51a8204e0d4562cba6c770eca2a41b94be689a7fd23219fcd1cc01e374c1",
"1bfb0a8aa6904b3962fab7fae22d04b4c889f8aa261e54bef5cd2795706b9e59": "0xf851808080808080a057ec08b8f040499409fb0220f538477790d4f010c4bb51a8dbae5da3537a86a480a0e7c6fe885a5c34c40d59c5f443ac972914a0e3af6200e3184f43ca6ede960e548080808080808080",
"7e6b8c53632ee8fc5785f748a4cfb10f2ec8310b4e15c541767690c995a80f1c": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0461013860fc2e215d750d933237c6d349a13e99bec8ce1e42ba23dcd7ae9e9b8808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a01bfb0a8aa6904b3962fab7fae22d04b4c889f8aa261e54bef5cd2795706b9e5980",
"e9a1e089d46c08d722e429d24af116dba5a1d0d4068a7b983e6cfdddd7ce72c3": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0189056bc75e2d62ee1adaa056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"67d9e5e055eecb4615e4b9485679e3896108b377e4b0f706f0bb82dc2397be2e": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0e9a1e089d46c08d722e429d24af116dba5a1d0d4068a7b983e6cfdddd7ce72c3808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a01bfb0a8aa6904b3962fab7fae22d04b4c889f8aa261e54bef5cd2795706b9e5980",
"ec80072c319175f511e975974bccc6fd664a2ce6b8d5bb6893c99a69a2774d93": "0xf86ca020a40a9004224e397238839b469142c546607ee7a8b114ded86182fceae00e35b849f847808310f293a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"725df1ac3d57b463d46c9f9b88c41e880da642bebc67a7e3af5efe277abf467c": "0xf87180a0cdeaf028a7a2894d4778d6c412bfb95e81b23c2e6044f4c5d6de2ed8a50f78f3808080808080808080a082f6e0ef9d3ec62e68c811432d52e6e0c907d604aed5a2a561d95e393f487d688080a0ec80072c319175f511e975974bccc6fd664a2ce6b8d5bb6893c99a69a2774d938080",
"735ee5c3600ba6be4781708f9d701c9dc7eb9c8da725273879d6057772268f17": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0e9a1e089d46c08d722e429d24af116dba5a1d0d4068a7b983e6cfdddd7ce72c3808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba0725df1ac3d57b463d46c9f9b88c41e880da642bebc67a7e3af5efe277abf467ca069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a01bfb0a8aa6904b3962fab7fae22d04b4c889f8aa261e54bef5cd2795706b9e5980",
"6b07771e687e891d62abb9c1ac08a5999b23ff5d97b23a6c3bdb8bb52be3e5c3": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d8089056bc75e2d62e90546a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"c103eb0bd2edf864519c4282574df91fdbd89005bf1a5799d4e859854cae8009": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a06b07771e687e891d62abb9c1ac08a5999b23ff5d97b23a6c3bdb8bb52be3e5c3808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"b09b4a7f3017cf3e2141bb6030e818593555c415e7373454c0d4fc7db20b9f04": "0xf872a03931b4ed56ace4c46b68524cb5bcbf4195f1bbaacbe5228fbd090546c88dd229b84ff84d0189056bc75e2d62e90546a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"1b704e036ecaf5ab51ac949c4004972616ca273ec7b4e6789e8463e8ea1ee2d4": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0b09b4a7f3017cf3e2141bb6030e818593555c415e7373454c0d4fc7db20b9f04808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a05f1ef1b2e89b5ed4e71249e76600493c718bc6c6030189bfab281c7b85389a2c80",
"0d64729ffe955516c35cd4295993e6290c76cbd78ac9f3c35fb7a9c1b4de0da7": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0b09b4a7f3017cf3e2141bb6030e818593555c415e7373454c0d4fc7db20b9f04808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a08ebfa1bb8d7f17c4c7b061298856df0d764d78874df9bbee0e2607b97a282e6f80",
"12e5db682b92dde5311fbd64fcfad38b3fd8c2379b9d68a61b5fff1af001f01c": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0b09b4a7f3017cf3e2141bb6030e818593555c415e7373454c0d4fc7db20b9f04808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a078411d2196a2e4c560372788d3e499d0b71f36204f1961a41ef216a7fd574e9580",
"9a57eb836486ab3d641aa6b5125238f01780661e813a488ba1f93817dcc3ea01": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0b09b4a7f3017cf3e2141bb6030e818593555c415e7373454c0d4fc7db20b9f04808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a07e799d6f14e8c6927a27351a7050ba716ad8268d703183b968b1c2a05648d75280",
"a897088b828a2e09cb18812cd06e0f7b8467a391ed16cb7d9871a4ec236a4275": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0b09b4a7f3017cf3e2141bb6030e818593555c415e7373454c0d4fc7db20b9f04808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a062d68a24eb01de4d1d595d882f074d85d591cd5109d2d3c103a67038d6f89ee780",
"4f26885bc45559cde3586a04fd6e0365c34910d2389e3098a334e18189a21d66": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0b09b4a7f3017cf3e2141bb6030e818593555c415e7373454c0d4fc7db20b9f04808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a0fb73122dbd1cf78636e7ee5657e87f6bae48bb023eb766c5545782f7e2740dec80",
"59fe5dee568a69dd42e7844c75e2455be6520a7cadcfc8dd67b0de8664361f25": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0b09b4a7f3017cf3e2141bb6030e818593555c415e7373454c0d4fc7db20b9f04808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a099861c90b0a073d6c2e666067243b8be12eeab6d662e60dfcdf16fe224b768ef80",
"8914cf0263eba30b12727f5fd4215080ced11bf04ad6eec803df0abbae5f395e": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0b09b4a7f3017cf3e2141bb6030e818593555c415e7373454c0d4fc7db20b9f04808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a0548b2850acf204deb0ce929c02453dbccfc413704234715b6ea00c26cbf3d29280",
"000f301b9b9148fab6d9fd67fea8ba58a58b308f86f31f74ac1138bbb63f2236": "0xf90131a06e94ede82e8c381d422f010130a4c2ed35805be58e6783d800fbb37d000090e2a00968480c83b67f0eb2cafc1df82dbf6dcac0811f36fbd405f20c46f158da5315808080a0b09b4a7f3017cf3e2141bb6030e818593555c415e7373454c0d4fc7db20b9f04808080a0aff16a3ca0d6e3544a2d4deb40842cebaf9325e6a98f2d6edc4cdce5d853e5d8a0bff66d9133cff6e91fe1878473b09aee9458c323efa078340d914a82de546baba09d1b5f3c8944300dda9eec33376308282aa06c11d3fdc640669ce5e506edb797a069a571829b9b6f89efb0b65e66e59e5a26b2eb72cdfce949e0aec5e0037357bda0853082590f798e998c021e6cf314a77c9a9fa6321048ad84cd12210b7aca706a80a01bfb0a8aa6904b3962fab7fae22d04b4c889f8aa261e54bef5cd2795706b9e5980"
},
"blocks": [
"0xf90260f9025aa00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940e9281e9c6a0808672eaba6bd1220e144c9bb07aa00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008080837a12008084693a8c1e80a0000000000000000000000000000000000000000000000000000000000000000088000000000000000007a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000a0e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855c0c0c0",
"0xf91d01f9025aa0b4e0796d6357ae7b7f78d6a54b7e211eeb0e284f33a28548786cd793ebc2cf69a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948945a1288dc78a6d8952a92c77aee6730b414778a00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800183137d5d8084693a8dc580a0000000000000000000000000000000000000000000000000000000000000000088000000000000000001a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000a0e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855f91a9fb91a9c02f91a980180010783137d5d8080b91a47608060405234801562000010575f80fd5b5060405162001a2738038062001a27833981810160405281019062000036919062000514565b336040518060400160405280600d81526020017f536861646f7750686f656e6978000000000000000000000000000000000000008152506040518060400160405280600481526020017f4441524b000000000000000000000000000000000000000000000000000000008152508160039081620000b491906200079f565b508060049081620000c691906200079f565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013c575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001339190620008c6565b60405180910390fd5b6200014d816200016760201b60201c565b506200016033826200022a60201b60201c565b50620009af565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200029d575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620002949190620008c6565b60405180910390fd5b620002b05f8383620002b460201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000308578060025f828254620002fb91906200090e565b92505081905550620003d9565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000394578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200038b9392919062000959565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000422578060025f82825403925050819055506200046c565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004cb919062000994565b60405180910390a3505050565b5f80fd5b5f819050919050565b620004f081620004dc565b8114620004fb575f80fd5b50565b5f815190506200050e81620004e5565b92915050565b5f602082840312156200052c576200052b620004d8565b5b5f6200053b84828501620004fe565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620005c057607f821691505b602082108103620005d657620005d56200057b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200063a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005fd565b620006468683620005fd565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000687620006816200067b84620004dc565b6200065e565b620004dc565b9050919050565b5f819050919050565b620006a28362000667565b620006ba620006b1826200068e565b84845462000609565b825550505050565b5f90565b620006d0620006c2565b620006dd81848462000697565b505050565b5b818110156200070457620006f85f82620006c6565b600181019050620006e3565b5050565b601f82111562000753576200071d81620005dc565b6200072884620005ee565b8101602085101562000738578190505b620007506200074785620005ee565b830182620006e2565b50505b505050565b5f82821c905092915050565b5f620007755f198460080262000758565b1980831691505092915050565b5f6200078f838362000764565b9150826002028217905092915050565b620007aa8262000544565b67ffffffffffffffff811115620007c657620007c56200054e565b5b620007d28254620005a8565b620007df82828562000708565b5f60209050601f83116001811462000815575f841562000800578287015190505b6200080c858262000782565b8655506200087b565b601f1984166200082586620005dc565b5f5b828110156200084e5784890151825560018201915060208501945060208101905062000827565b868310156200086e57848901516200086a601f89168262000764565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620008ae8262000883565b9050919050565b620008c081620008a2565b82525050565b5f602082019050620008db5f830184620008b5565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200091a82620004dc565b91506200092783620004dc565b9250828201905080821115620009425762000941620008e1565b5b92915050565b6200095381620004dc565b82525050565b5f6060820190506200096e5f830186620008b5565b6200097d602083018562000948565b6200098c604083018462000948565b949350505050565b5f602082019050620009a95f83018462000948565b92915050565b61106a80620009bd5f395ff3fe608060405234801561000f575f80fd5b50600436106100b2575f3560e01c8063715018a61161006f578063715018a6146101a05780638da5cb5b146101aa57806395d89b41146101c8578063a9059cbb146101e6578063dd62ed3e14610216578063f2fde38b14610246576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce5671461015257806370a0823114610170575b5f80fd5b6100be610262565b6040516100cb9190610ce3565b60405180910390f35b6100ee60048036038101906100e99190610d94565b6102f2565b6040516100fb9190610dec565b60405180910390f35b61010c610314565b6040516101199190610e14565b60405180910390f35b61013c60048036038101906101379190610e2d565b61031d565b6040516101499190610dec565b60405180910390f35b61015a61034b565b6040516101679190610e98565b60405180910390f35b61018a60048036038101906101859190610eb1565b610353565b6040516101979190610e14565b60405180910390f35b6101a8610398565b005b6101b26103ab565b6040516101bf9190610eeb565b60405180910390f35b6101d06103d3565b6040516101dd9190610ce3565b60405180910390f35b61020060048036038101906101fb9190610d94565b610463565b60405161020d9190610dec565b60405180910390f35b610230600480360381019061022b9190610f04565b610485565b60405161023d9190610e14565b60405180910390f35b610260600480360381019061025b9190610eb1565b610507565b005b60606003805461027190610f6f565b80601f016020809104026020016040519081016040528092919081815260200182805461029d90610f6f565b80156102e85780601f106102bf576101008083540402835291602001916102e8565b820191905f5260205f20905b8154815290600101906020018083116102cb57829003601f168201915b5050505050905090565b5f806102fc61058b565b9050610309818585610592565b600191505092915050565b5f600254905090565b5f8061032761058b565b90506103348582856105a4565b61033f858585610637565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6103a0610727565b6103a95f6107ae565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546103e290610f6f565b80601f016020809104026020016040519081016040528092919081815260200182805461040e90610f6f565b80156104595780601f1061043057610100808354040283529160200191610459565b820191905f5260205f20905b81548152906001019060200180831161043c57829003601f168201915b5050505050905090565b5f8061046d61058b565b905061047a818585610637565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61050f610727565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361057f575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016105769190610eeb565b60405180910390fd5b610588816107ae565b50565b5f33905090565b61059f8383836001610871565b505050565b5f6105af8484610485565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156106315781811015610622578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161061993929190610f9f565b60405180910390fd5b61063084848484035f610871565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106a7575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161069e9190610eeb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610717575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161070e9190610eeb565b60405180910390fd5b610722838383610a40565b505050565b61072f61058b565b73ffffffffffffffffffffffffffffffffffffffff1661074d6103ab565b73ffffffffffffffffffffffffffffffffffffffff16146107ac5761077061058b565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016107a39190610eeb565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036108e1575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016108d89190610eeb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610951575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016109489190610eeb565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610a3a578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a319190610e14565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a90578060025f828254610a849190611001565b92505081905550610b5e565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610b19578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610b1093929190610f9f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ba5578060025f8282540392505081905550610bef565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c4c9190610e14565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610c90578082015181840152602081019050610c75565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610cb582610c59565b610cbf8185610c63565b9350610ccf818560208601610c73565b610cd881610c9b565b840191505092915050565b5f6020820190508181035f830152610cfb8184610cab565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d3082610d07565b9050919050565b610d4081610d26565b8114610d4a575f80fd5b50565b5f81359050610d5b81610d37565b92915050565b5f819050919050565b610d7381610d61565b8114610d7d575f80fd5b50565b5f81359050610d8e81610d6a565b92915050565b5f8060408385031215610daa57610da9610d03565b5b5f610db785828601610d4d565b9250506020610dc885828601610d80565b9150509250929050565b5f8115159050919050565b610de681610dd2565b82525050565b5f602082019050610dff5f830184610ddd565b92915050565b610e0e81610d61565b82525050565b5f602082019050610e275f830184610e05565b92915050565b5f805f60608486031215610e4457610e43610d03565b5b5f610e5186828701610d4d565b9350506020610e6286828701610d4d565b9250506040610e7386828701610d80565b9150509250925092565b5f60ff82169050919050565b610e9281610e7d565b82525050565b5f602082019050610eab5f830184610e89565b92915050565b5f60208284031215610ec657610ec5610d03565b5b5f610ed384828501610d4d565b91505092915050565b610ee581610d26565b82525050565b5f602082019050610efe5f830184610edc565b92915050565b5f8060408385031215610f1a57610f19610d03565b5b5f610f2785828601610d4d565b9250506020610f3885828601610d4d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610f8657607f821691505b602082108103610f9957610f98610f42565b5b50919050565b5f606082019050610fb25f830186610edc565b610fbf6020830185610e05565b610fcc6040830184610e05565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61100b82610d61565b915061101683610d61565b925082820190508082111561102e5761102d610fd4565b5b9291505056fea26469706673582212203e2e4dadbd7d97c23f659d54dc57d7529c6ef5f4ad2e8e938d2bd8e79bc45c0664736f6c634300081400330000000000000000000000000000000000000000015b6a759f4835dc24000000c080a0af816b6549706e750e9b88d03c43bb01446aac5973ad0020442b8ea2102e33b4a05e72825129c36d4d81db7582d281c3b85093c784f1a942b1246a7f430f79edadc0c0"
],
"latestBlockNumber": "0x1",
"baseBlockNumber": "0x0"
}
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 two typescript files which help to deploy the 'Storage' contract using '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`
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, 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.
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"sepolia:11155111": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_336": {
"entryPoint": null,
"id": 336,
"parameterSlots": 2,
"returnSlots": 0
},
"@_50": {
"entryPoint": null,
"id": 50,
"parameterSlots": 1,
"returnSlots": 0
},
"@_962": {
"entryPoint": null,
"id": 962,
"parameterSlots": 1,
"returnSlots": 0
},
"@_mint_639": {
"entryPoint": 554,
"id": 639,
"parameterSlots": 2,
"returnSlots": 0
},
"@_transferOwnership_146": {
"entryPoint": 359,
"id": 146,
"parameterSlots": 1,
"returnSlots": 0
},
"@_update_606": {
"entryPoint": 692,
"id": 606,
"parameterSlots": 3,
"returnSlots": 0
},
"abi_decode_t_uint256_fromMemory": {
"entryPoint": 1278,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256_fromMemory": {
"entryPoint": 1300,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 2229,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 2376,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 2246,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": {
"entryPoint": 2393,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 2452,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_dataslot_t_string_storage": {
"entryPoint": 1500,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 1348,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 2318,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"clean_up_bytearray_end_slots_t_string_storage": {
"entryPoint": 1800,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"cleanup_t_address": {
"entryPoint": 2210,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 2179,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 1244,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"clear_storage_range_t_bytes1": {
"entryPoint": 1762,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"convert_t_uint256_to_t_uint256": {
"entryPoint": 1639,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
"entryPoint": 1951,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"divide_by_32_ceil": {
"entryPoint": 1518,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_byte_array_length": {
"entryPoint": 1448,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_used_part_and_set_length_of_short_byte_array": {
"entryPoint": 1922,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"identity": {
"entryPoint": 1630,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"mask_bytes_dynamic": {
"entryPoint": 1892,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 2273,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x22": {
"entryPoint": 1403,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 1358,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"prepare_store_t_uint256": {
"entryPoint": 1678,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 1240,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"shift_left_dynamic": {
"entryPoint": 1533,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"shift_right_unsigned_dynamic": {
"entryPoint": 1880,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"storage_set_to_zero_t_uint256": {
"entryPoint": 1734,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"update_byte_slice_dynamic32": {
"entryPoint": 1545,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"update_storage_value_t_uint256_to_t_uint256": {
"entryPoint": 1687,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 1253,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"zero_value_for_split_t_uint256": {
"entryPoint": 1730,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:7961:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "47:35:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "57:19:7",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "73:2:7",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "67:5:7"
},
"nodeType": "YulFunctionCall",
"src": "67:9:7"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "57:6:7"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "40:6:7",
"type": ""
}
],
"src": "7:75:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "177:28:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "194:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "197:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "187:6:7"
},
"nodeType": "YulFunctionCall",
"src": "187:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "187:12:7"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "88:117:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "300:28:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "317:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "310:6:7"
},
"nodeType": "YulFunctionCall",
"src": "310:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "310:12:7"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "211:117:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "379:32:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "389:16:7",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "400:5:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "389:7:7"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "361:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "371:7:7",
"type": ""
}
],
"src": "334:77:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "460:79:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "517:16:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "526:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "529:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "519:6:7"
},
"nodeType": "YulFunctionCall",
"src": "519:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "519:12:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "483:5:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "508:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "490:17:7"
},
"nodeType": "YulFunctionCall",
"src": "490:24:7"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "480:2:7"
},
"nodeType": "YulFunctionCall",
"src": "480:35:7"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "473:6:7"
},
"nodeType": "YulFunctionCall",
"src": "473:43:7"
},
"nodeType": "YulIf",
"src": "470:63:7"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "453:5:7",
"type": ""
}
],
"src": "417:122:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "608:80:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "618:22:7",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "633:6:7"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "627:5:7"
},
"nodeType": "YulFunctionCall",
"src": "627:13:7"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "618:5:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "676:5:7"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "649:26:7"
},
"nodeType": "YulFunctionCall",
"src": "649:33:7"
},
"nodeType": "YulExpressionStatement",
"src": "649:33:7"
}
]
},
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "586:6:7",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "594:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "602:5:7",
"type": ""
}
],
"src": "545:143:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "771:274:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "817:83:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "819:77:7"
},
"nodeType": "YulFunctionCall",
"src": "819:79:7"
},
"nodeType": "YulExpressionStatement",
"src": "819:79:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "792:7:7"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "801:9:7"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "788:3:7"
},
"nodeType": "YulFunctionCall",
"src": "788:23:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "813:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "784:3:7"
},
"nodeType": "YulFunctionCall",
"src": "784:32:7"
},
"nodeType": "YulIf",
"src": "781:119:7"
},
{
"nodeType": "YulBlock",
"src": "910:128:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "925:15:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "939:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "929:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "954:74:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1000:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1011:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "996:3:7"
},
"nodeType": "YulFunctionCall",
"src": "996:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1020:7:7"
}
],
"functionName": {
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulIdentifier",
"src": "964:31:7"
},
"nodeType": "YulFunctionCall",
"src": "964:64:7"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "954:6:7"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "741:9:7",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "752:7:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "764:6:7",
"type": ""
}
],
"src": "694:351:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1110:40:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1121:22:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1137:5:7"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1131:5:7"
},
"nodeType": "YulFunctionCall",
"src": "1131:12:7"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1121:6:7"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1093:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1103:6:7",
"type": ""
}
],
"src": "1051:99:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1184:152:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1201:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1204:77:7",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1194:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1194:88:7"
},
"nodeType": "YulExpressionStatement",
"src": "1194:88:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1298:1:7",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1301:4:7",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1291:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1291:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "1291:15:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1322:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1325:4:7",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1315:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1315:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "1315:15:7"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "1156:180:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1370:152:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1387:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1390:77:7",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1380:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1380:88:7"
},
"nodeType": "YulExpressionStatement",
"src": "1380:88:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1484:1:7",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1487:4:7",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1477:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1477:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "1477:15:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1508:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1511:4:7",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1501:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1501:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "1501:15:7"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "1342:180:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1579:269:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1589:22:7",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1603:4:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1609:1:7",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "1599:3:7"
},
"nodeType": "YulFunctionCall",
"src": "1599:12:7"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1589:6:7"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1620:38:7",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1650:4:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1656:1:7",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1646:3:7"
},
"nodeType": "YulFunctionCall",
"src": "1646:12:7"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "1624:18:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1697:51:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1711:27:7",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1725:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1733:4:7",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1721:3:7"
},
"nodeType": "YulFunctionCall",
"src": "1721:17:7"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1711:6:7"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "1677:18:7"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1670:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1670:26:7"
},
"nodeType": "YulIf",
"src": "1667:81:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1800:42:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "1814:16:7"
},
"nodeType": "YulFunctionCall",
"src": "1814:18:7"
},
"nodeType": "YulExpressionStatement",
"src": "1814:18:7"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "1764:18:7"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1787:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1795:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1784:2:7"
},
"nodeType": "YulFunctionCall",
"src": "1784:14:7"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1761:2:7"
},
"nodeType": "YulFunctionCall",
"src": "1761:38:7"
},
"nodeType": "YulIf",
"src": "1758:84:7"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "1563:4:7",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1572:6:7",
"type": ""
}
],
"src": "1528:320:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1908:87:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1918:11:7",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "1926:3:7"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1918:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1946:1:7",
"type": "",
"value": "0"
},
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "1949:3:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1939:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1939:14:7"
},
"nodeType": "YulExpressionStatement",
"src": "1939:14:7"
},
{
"nodeType": "YulAssignment",
"src": "1962:26:7",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1980:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1983:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "keccak256",
"nodeType": "YulIdentifier",
"src": "1970:9:7"
},
"nodeType": "YulFunctionCall",
"src": "1970:18:7"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1962:4:7"
}
]
}
]
},
"name": "array_dataslot_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "1895:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "1903:4:7",
"type": ""
}
],
"src": "1854:141:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2045:49:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2055:33:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2073:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2080:2:7",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2069:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2069:14:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2085:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "2065:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2065:23:7"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "2055:6:7"
}
]
}
]
},
"name": "divide_by_32_ceil",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2028:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "2038:6:7",
"type": ""
}
],
"src": "2001:93:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2153:54:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2163:37:7",
"value": {
"arguments": [
{
"name": "bits",
"nodeType": "YulIdentifier",
"src": "2188:4:7"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2194:5:7"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "2184:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2184:16:7"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "2163:8:7"
}
]
}
]
},
"name": "shift_left_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nodeType": "YulTypedName",
"src": "2128:4:7",
"type": ""
},
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2134:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "2144:8:7",
"type": ""
}
],
"src": "2100:107:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2289:317:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2299:35:7",
"value": {
"arguments": [
{
"name": "shiftBytes",
"nodeType": "YulIdentifier",
"src": "2320:10:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2332:1:7",
"type": "",
"value": "8"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "2316:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2316:18:7"
},
"variables": [
{
"name": "shiftBits",
"nodeType": "YulTypedName",
"src": "2303:9:7",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2343:109:7",
"value": {
"arguments": [
{
"name": "shiftBits",
"nodeType": "YulIdentifier",
"src": "2374:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2385:66:7",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
"src": "2355:18:7"
},
"nodeType": "YulFunctionCall",
"src": "2355:97:7"
},
"variables": [
{
"name": "mask",
"nodeType": "YulTypedName",
"src": "2347:4:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2461:51:7",
"value": {
"arguments": [
{
"name": "shiftBits",
"nodeType": "YulIdentifier",
"src": "2492:9:7"
},
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "2503:8:7"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
"src": "2473:18:7"
},
"nodeType": "YulFunctionCall",
"src": "2473:39:7"
},
"variableNames": [
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "2461:8:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2521:30:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2534:5:7"
},
{
"arguments": [
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "2545:4:7"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "2541:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2541:9:7"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2530:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2530:21:7"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2521:5:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2560:40:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2573:5:7"
},
{
"arguments": [
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "2584:8:7"
},
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "2594:4:7"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2580:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2580:19:7"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "2570:2:7"
},
"nodeType": "YulFunctionCall",
"src": "2570:30:7"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "2560:6:7"
}
]
}
]
},
"name": "update_byte_slice_dynamic32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2250:5:7",
"type": ""
},
{
"name": "shiftBytes",
"nodeType": "YulTypedName",
"src": "2257:10:7",
"type": ""
},
{
"name": "toInsert",
"nodeType": "YulTypedName",
"src": "2269:8:7",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "2282:6:7",
"type": ""
}
],
"src": "2213:393:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2644:28:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2654:12:7",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2661:5:7"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "2654:3:7"
}
]
}
]
},
"name": "identity",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2630:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "2640:3:7",
"type": ""
}
],
"src": "2612:60:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2738:82:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2748:66:7",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2806:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2788:17:7"
},
"nodeType": "YulFunctionCall",
"src": "2788:24:7"
}
],
"functionName": {
"name": "identity",
"nodeType": "YulIdentifier",
"src": "2779:8:7"
},
"nodeType": "YulFunctionCall",
"src": "2779:34:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2761:17:7"
},
"nodeType": "YulFunctionCall",
"src": "2761:53:7"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "2748:9:7"
}
]
}
]
},
"name": "convert_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2718:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "2728:9:7",
"type": ""
}
],
"src": "2678:142:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2873:28:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2883:12:7",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2890:5:7"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "2883:3:7"
}
]
}
]
},
"name": "prepare_store_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2859:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "2869:3:7",
"type": ""
}
],
"src": "2826:75:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2983:193:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2993:63:7",
"value": {
"arguments": [
{
"name": "value_0",
"nodeType": "YulIdentifier",
"src": "3048:7:7"
}
],
"functionName": {
"name": "convert_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "3017:30:7"
},
"nodeType": "YulFunctionCall",
"src": "3017:39:7"
},
"variables": [
{
"name": "convertedValue_0",
"nodeType": "YulTypedName",
"src": "2997:16:7",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "3072:4:7"
},
{
"arguments": [
{
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "3112:4:7"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "3106:5:7"
},
"nodeType": "YulFunctionCall",
"src": "3106:11:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3119:6:7"
},
{
"arguments": [
{
"name": "convertedValue_0",
"nodeType": "YulIdentifier",
"src": "3151:16:7"
}
],
"functionName": {
"name": "prepare_store_t_uint256",
"nodeType": "YulIdentifier",
"src": "3127:23:7"
},
"nodeType": "YulFunctionCall",
"src": "3127:41:7"
}
],
"functionName": {
"name": "update_byte_slice_dynamic32",
"nodeType": "YulIdentifier",
"src": "3078:27:7"
},
"nodeType": "YulFunctionCall",
"src": "3078:91:7"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "3065:6:7"
},
"nodeType": "YulFunctionCall",
"src": "3065:105:7"
},
"nodeType": "YulExpressionStatement",
"src": "3065:105:7"
}
]
},
"name": "update_storage_value_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "2960:4:7",
"type": ""
},
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2966:6:7",
"type": ""
},
{
"name": "value_0",
"nodeType": "YulTypedName",
"src": "2974:7:7",
"type": ""
}
],
"src": "2907:269:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3231:24:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3241:8:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3248:1:7",
"type": "",
"value": "0"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "3241:3:7"
}
]
}
]
},
"name": "zero_value_for_split_t_uint256",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "3227:3:7",
"type": ""
}
],
"src": "3182:73:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3314:136:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3324:46:7",
"value": {
"arguments": [],
"functionName": {
"name": "zero_value_for_split_t_uint256",
"nodeType": "YulIdentifier",
"src": "3338:30:7"
},
"nodeType": "YulFunctionCall",
"src": "3338:32:7"
},
"variables": [
{
"name": "zero_0",
"nodeType": "YulTypedName",
"src": "3328:6:7",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "3423:4:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3429:6:7"
},
{
"name": "zero_0",
"nodeType": "YulIdentifier",
"src": "3437:6:7"
}
],
"functionName": {
"name": "update_storage_value_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "3379:43:7"
},
"nodeType": "YulFunctionCall",
"src": "3379:65:7"
},
"nodeType": "YulExpressionStatement",
"src": "3379:65:7"
}
]
},
"name": "storage_set_to_zero_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "3300:4:7",
"type": ""
},
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3306:6:7",
"type": ""
}
],
"src": "3261:189:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3506:136:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3573:63:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "3617:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3624:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "storage_set_to_zero_t_uint256",
"nodeType": "YulIdentifier",
"src": "3587:29:7"
},
"nodeType": "YulFunctionCall",
"src": "3587:39:7"
},
"nodeType": "YulExpressionStatement",
"src": "3587:39:7"
}
]
},
"condition": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "3526:5:7"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3533:3:7"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "3523:2:7"
},
"nodeType": "YulFunctionCall",
"src": "3523:14:7"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "3538:26:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3540:22:7",
"value": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "3553:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3560:1:7",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3549:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3549:13:7"
},
"variableNames": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "3540:5:7"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "3520:2:7",
"statements": []
},
"src": "3516:120:7"
}
]
},
"name": "clear_storage_range_t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "start",
"nodeType": "YulTypedName",
"src": "3494:5:7",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3501:3:7",
"type": ""
}
],
"src": "3456:186:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3727:464:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3753:431:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3767:54:7",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "3815:5:7"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "3783:31:7"
},
"nodeType": "YulFunctionCall",
"src": "3783:38:7"
},
"variables": [
{
"name": "dataArea",
"nodeType": "YulTypedName",
"src": "3771:8:7",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3834:63:7",
"value": {
"arguments": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "3857:8:7"
},
{
"arguments": [
{
"name": "startIndex",
"nodeType": "YulIdentifier",
"src": "3885:10:7"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nodeType": "YulIdentifier",
"src": "3867:17:7"
},
"nodeType": "YulFunctionCall",
"src": "3867:29:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3853:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3853:44:7"
},
"variables": [
{
"name": "deleteStart",
"nodeType": "YulTypedName",
"src": "3838:11:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4054:27:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4056:23:7",
"value": {
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "4071:8:7"
},
"variableNames": [
{
"name": "deleteStart",
"nodeType": "YulIdentifier",
"src": "4056:11:7"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "startIndex",
"nodeType": "YulIdentifier",
"src": "4038:10:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4050:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "4035:2:7"
},
"nodeType": "YulFunctionCall",
"src": "4035:18:7"
},
"nodeType": "YulIf",
"src": "4032:49:7"
},
{
"expression": {
"arguments": [
{
"name": "deleteStart",
"nodeType": "YulIdentifier",
"src": "4123:11:7"
},
{
"arguments": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "4140:8:7"
},
{
"arguments": [
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "4168:3:7"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nodeType": "YulIdentifier",
"src": "4150:17:7"
},
"nodeType": "YulFunctionCall",
"src": "4150:22:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4136:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4136:37:7"
}
],
"functionName": {
"name": "clear_storage_range_t_bytes1",
"nodeType": "YulIdentifier",
"src": "4094:28:7"
},
"nodeType": "YulFunctionCall",
"src": "4094:80:7"
},
"nodeType": "YulExpressionStatement",
"src": "4094:80:7"
}
]
},
"condition": {
"arguments": [
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "3744:3:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3749:2:7",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3741:2:7"
},
"nodeType": "YulFunctionCall",
"src": "3741:11:7"
},
"nodeType": "YulIf",
"src": "3738:446:7"
}
]
},
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "3703:5:7",
"type": ""
},
{
"name": "len",
"nodeType": "YulTypedName",
"src": "3710:3:7",
"type": ""
},
{
"name": "startIndex",
"nodeType": "YulTypedName",
"src": "3715:10:7",
"type": ""
}
],
"src": "3648:543:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4260:54:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4270:37:7",
"value": {
"arguments": [
{
"name": "bits",
"nodeType": "YulIdentifier",
"src": "4295:4:7"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4301:5:7"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "4291:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4291:16:7"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "4270:8:7"
}
]
}
]
},
"name": "shift_right_unsigned_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nodeType": "YulTypedName",
"src": "4235:4:7",
"type": ""
},
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4241:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "4251:8:7",
"type": ""
}
],
"src": "4197:117:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4371:118:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4381:68:7",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4430:1:7",
"type": "",
"value": "8"
},
{
"name": "bytes",
"nodeType": "YulIdentifier",
"src": "4433:5:7"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "4426:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4426:13:7"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4445:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "4441:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4441:6:7"
}
],
"functionName": {
"name": "shift_right_unsigned_dynamic",
"nodeType": "YulIdentifier",
"src": "4397:28:7"
},
"nodeType": "YulFunctionCall",
"src": "4397:51:7"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "4393:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4393:56:7"
},
"variables": [
{
"name": "mask",
"nodeType": "YulTypedName",
"src": "4385:4:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4458:25:7",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "4472:4:7"
},
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "4478:4:7"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4468:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4468:15:7"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "4458:6:7"
}
]
}
]
},
"name": "mask_bytes_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "4348:4:7",
"type": ""
},
{
"name": "bytes",
"nodeType": "YulTypedName",
"src": "4354:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "4364:6:7",
"type": ""
}
],
"src": "4320:169:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4575:214:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4708:37:7",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "4735:4:7"
},
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "4741:3:7"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nodeType": "YulIdentifier",
"src": "4716:18:7"
},
"nodeType": "YulFunctionCall",
"src": "4716:29:7"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "4708:4:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "4754:29:7",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "4765:4:7"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4775:1:7",
"type": "",
"value": "2"
},
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "4778:3:7"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "4771:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4771:11:7"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "4762:2:7"
},
"nodeType": "YulFunctionCall",
"src": "4762:21:7"
},
"variableNames": [
{
"name": "used",
"nodeType": "YulIdentifier",
"src": "4754:4:7"
}
]
}
]
},
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "4556:4:7",
"type": ""
},
{
"name": "len",
"nodeType": "YulTypedName",
"src": "4562:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "used",
"nodeType": "YulTypedName",
"src": "4570:4:7",
"type": ""
}
],
"src": "4494:295:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4886:1303:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4897:51:7",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4944:3:7"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "4911:32:7"
},
"nodeType": "YulFunctionCall",
"src": "4911:37:7"
},
"variables": [
{
"name": "newLen",
"nodeType": "YulTypedName",
"src": "4901:6:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5033:22:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "5035:16:7"
},
"nodeType": "YulFunctionCall",
"src": "5035:18:7"
},
"nodeType": "YulExpressionStatement",
"src": "5035:18:7"
}
]
},
"condition": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5005:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5013:18:7",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5002:2:7"
},
"nodeType": "YulFunctionCall",
"src": "5002:30:7"
},
"nodeType": "YulIf",
"src": "4999:56:7"
},
{
"nodeType": "YulVariableDeclaration",
"src": "5065:52:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "5111:4:7"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "5105:5:7"
},
"nodeType": "YulFunctionCall",
"src": "5105:11:7"
}
],
"functionName": {
"name": "extract_byte_array_length",
"nodeType": "YulIdentifier",
"src": "5079:25:7"
},
"nodeType": "YulFunctionCall",
"src": "5079:38:7"
},
"variables": [
{
"name": "oldLen",
"nodeType": "YulTypedName",
"src": "5069:6:7",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "5210:4:7"
},
{
"name": "oldLen",
"nodeType": "YulIdentifier",
"src": "5216:6:7"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5224:6:7"
}
],
"functionName": {
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nodeType": "YulIdentifier",
"src": "5164:45:7"
},
"nodeType": "YulFunctionCall",
"src": "5164:67:7"
},
"nodeType": "YulExpressionStatement",
"src": "5164:67:7"
},
{
"nodeType": "YulVariableDeclaration",
"src": "5241:18:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5258:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "srcOffset",
"nodeType": "YulTypedName",
"src": "5245:9:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5269:17:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5282:4:7",
"type": "",
"value": "0x20"
},
"variableNames": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "5269:9:7"
}
]
},
{
"cases": [
{
"body": {
"nodeType": "YulBlock",
"src": "5333:611:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5347:37:7",
"value": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5366:6:7"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5378:4:7",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "5374:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5374:9:7"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5362:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5362:22:7"
},
"variables": [
{
"name": "loopEnd",
"nodeType": "YulTypedName",
"src": "5351:7:7",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "5398:51:7",
"value": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "5444:4:7"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "5412:31:7"
},
"nodeType": "YulFunctionCall",
"src": "5412:37:7"
},
"variables": [
{
"name": "dstPtr",
"nodeType": "YulTypedName",
"src": "5402:6:7",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "5462:10:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5471:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "5466:1:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5530:163:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "5555:6:7"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "5573:3:7"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "5578:9:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5569:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5569:19:7"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "5563:5:7"
},
"nodeType": "YulFunctionCall",
"src": "5563:26:7"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "5548:6:7"
},
"nodeType": "YulFunctionCall",
"src": "5548:42:7"
},
"nodeType": "YulExpressionStatement",
"src": "5548:42:7"
},
{
"nodeType": "YulAssignment",
"src": "5607:24:7",
"value": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "5621:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5629:1:7",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5617:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5617:14:7"
},
"variableNames": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "5607:6:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "5648:31:7",
"value": {
"arguments": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "5665:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5676:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5661:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5661:18:7"
},
"variableNames": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "5648:9:7"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "5496:1:7"
},
{
"name": "loopEnd",
"nodeType": "YulIdentifier",
"src": "5499:7:7"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "5493:2:7"
},
"nodeType": "YulFunctionCall",
"src": "5493:14:7"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "5508:21:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5510:17:7",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "5519:1:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5522:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5515:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5515:12:7"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "5510:1:7"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "5489:3:7",
"statements": []
},
"src": "5485:208:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5729:156:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5747:43:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "5774:3:7"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "5779:9:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5770:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5770:19:7"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "5764:5:7"
},
"nodeType": "YulFunctionCall",
"src": "5764:26:7"
},
"variables": [
{
"name": "lastValue",
"nodeType": "YulTypedName",
"src": "5751:9:7",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "5814:6:7"
},
{
"arguments": [
{
"name": "lastValue",
"nodeType": "YulIdentifier",
"src": "5841:9:7"
},
{
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5856:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5864:4:7",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5852:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5852:17:7"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nodeType": "YulIdentifier",
"src": "5822:18:7"
},
"nodeType": "YulFunctionCall",
"src": "5822:48:7"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "5807:6:7"
},
"nodeType": "YulFunctionCall",
"src": "5807:64:7"
},
"nodeType": "YulExpressionStatement",
"src": "5807:64:7"
}
]
},
"condition": {
"arguments": [
{
"name": "loopEnd",
"nodeType": "YulIdentifier",
"src": "5712:7:7"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5721:6:7"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "5709:2:7"
},
"nodeType": "YulFunctionCall",
"src": "5709:19:7"
},
"nodeType": "YulIf",
"src": "5706:179:7"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "5905:4:7"
},
{
"arguments": [
{
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5919:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5927:1:7",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "5915:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5915:14:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5931:1:7",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5911:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5911:22:7"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "5898:6:7"
},
"nodeType": "YulFunctionCall",
"src": "5898:36:7"
},
"nodeType": "YulExpressionStatement",
"src": "5898:36:7"
}
]
},
"nodeType": "YulCase",
"src": "5326:618:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5331:1:7",
"type": "",
"value": "1"
}
},
{
"body": {
"nodeType": "YulBlock",
"src": "5961:222:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5975:14:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5988:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5979:5:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6012:67:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6030:35:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "6049:3:7"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "6054:9:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6045:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6045:19:7"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "6039:5:7"
},
"nodeType": "YulFunctionCall",
"src": "6039:26:7"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6030:5:7"
}
]
}
]
},
"condition": {
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "6005:6:7"
},
"nodeType": "YulIf",
"src": "6002:77:7"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "6099:4:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6158:5:7"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "6165:6:7"
}
],
"functionName": {
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nodeType": "YulIdentifier",
"src": "6105:52:7"
},
"nodeType": "YulFunctionCall",
"src": "6105:67:7"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "6092:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6092:81:7"
},
"nodeType": "YulExpressionStatement",
"src": "6092:81:7"
}
]
},
"nodeType": "YulCase",
"src": "5953:230:7",
"value": "default"
}
],
"expression": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5306:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5314:2:7",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5303:2:7"
},
"nodeType": "YulFunctionCall",
"src": "5303:14:7"
},
"nodeType": "YulSwitch",
"src": "5296:887:7"
}
]
},
"name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "4875:4:7",
"type": ""
},
{
"name": "src",
"nodeType": "YulTypedName",
"src": "4881:3:7",
"type": ""
}
],
"src": "4794:1395:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6240:81:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6250:65:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6265:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6272:42:7",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "6261:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6261:54:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "6250:7:7"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6222:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "6232:7:7",
"type": ""
}
],
"src": "6195:126:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6372:51:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6382:35:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6411:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "6393:17:7"
},
"nodeType": "YulFunctionCall",
"src": "6393:24:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "6382:7:7"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6354:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "6364:7:7",
"type": ""
}
],
"src": "6327:96:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6494:53:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6511:3:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6534:5:7"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "6516:17:7"
},
"nodeType": "YulFunctionCall",
"src": "6516:24:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6504:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6504:37:7"
},
"nodeType": "YulExpressionStatement",
"src": "6504:37:7"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6482:5:7",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6489:3:7",
"type": ""
}
],
"src": "6429:118:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6651:124:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6661:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6673:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6684:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6669:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6669:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6661:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6741:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6754:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6765:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6750:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6750:17:7"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "6697:43:7"
},
"nodeType": "YulFunctionCall",
"src": "6697:71:7"
},
"nodeType": "YulExpressionStatement",
"src": "6697:71:7"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6623:9:7",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6635:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6646:4:7",
"type": ""
}
],
"src": "6553:222:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6809:152:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6826:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6829:77:7",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6819:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6819:88:7"
},
"nodeType": "YulExpressionStatement",
"src": "6819:88:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6923:1:7",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6926:4:7",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6916:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6916:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "6916:15:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6947:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6950:4:7",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6940:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6940:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "6940:15:7"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "6781:180:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7011:147:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7021:25:7",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7044:1:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7026:17:7"
},
"nodeType": "YulFunctionCall",
"src": "7026:20:7"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7021:1:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7055:25:7",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7078:1:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7060:17:7"
},
"nodeType": "YulFunctionCall",
"src": "7060:20:7"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7055:1:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7089:16:7",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7100:1:7"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7103:1:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7096:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7096:9:7"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "7089:3:7"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "7129:22:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "7131:16:7"
},
"nodeType": "YulFunctionCall",
"src": "7131:18:7"
},
"nodeType": "YulExpressionStatement",
"src": "7131:18:7"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7121:1:7"
},
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "7124:3:7"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "7118:2:7"
},
"nodeType": "YulFunctionCall",
"src": "7118:10:7"
},
"nodeType": "YulIf",
"src": "7115:36:7"
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "6998:1:7",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "7001:1:7",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "7007:3:7",
"type": ""
}
],
"src": "6967:191:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7229:53:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7246:3:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7269:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7251:17:7"
},
"nodeType": "YulFunctionCall",
"src": "7251:24:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7239:6:7"
},
"nodeType": "YulFunctionCall",
"src": "7239:37:7"
},
"nodeType": "YulExpressionStatement",
"src": "7239:37:7"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7217:5:7",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7224:3:7",
"type": ""
}
],
"src": "7164:118:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7442:288:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7452:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7464:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7475:2:7",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7460:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7460:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7452:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7532:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7545:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7556:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7541:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7541:17:7"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "7488:43:7"
},
"nodeType": "YulFunctionCall",
"src": "7488:71:7"
},
"nodeType": "YulExpressionStatement",
"src": "7488:71:7"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "7613:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7626:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7637:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7622:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7622:18:7"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "7569:43:7"
},
"nodeType": "YulFunctionCall",
"src": "7569:72:7"
},
"nodeType": "YulExpressionStatement",
"src": "7569:72:7"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "7695:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7708:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7719:2:7",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7704:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7704:18:7"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "7651:43:7"
},
"nodeType": "YulFunctionCall",
"src": "7651:72:7"
},
"nodeType": "YulExpressionStatement",
"src": "7651:72:7"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7398:9:7",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "7410:6:7",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "7418:6:7",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7426:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7437:4:7",
"type": ""
}
],
"src": "7288:442:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7834:124:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7844:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7856:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7867:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7852:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7852:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7844:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7924:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7937:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7948:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7933:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7933:17:7"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "7880:43:7"
},
"nodeType": "YulFunctionCall",
"src": "7880:71:7"
},
"nodeType": "YulExpressionStatement",
"src": "7880:71:7"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7806:9:7",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7818:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7829:4:7",
"type": ""
}
],
"src": "7736:222:7"
}
]
},
"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_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_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function 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 array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function 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 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 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_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_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}\n",
"id": 7,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405234801562000010575f80fd5b5060405162001a2738038062001a27833981810160405281019062000036919062000514565b336040518060400160405280600d81526020017f536861646f7750686f656e6978000000000000000000000000000000000000008152506040518060400160405280600481526020017f4441524b000000000000000000000000000000000000000000000000000000008152508160039081620000b491906200079f565b508060049081620000c691906200079f565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013c575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001339190620008c6565b60405180910390fd5b6200014d816200016760201b60201c565b506200016033826200022a60201b60201c565b50620009af565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200029d575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620002949190620008c6565b60405180910390fd5b620002b05f8383620002b460201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000308578060025f828254620002fb91906200090e565b92505081905550620003d9565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000394578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200038b9392919062000959565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000422578060025f82825403925050819055506200046c565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004cb919062000994565b60405180910390a3505050565b5f80fd5b5f819050919050565b620004f081620004dc565b8114620004fb575f80fd5b50565b5f815190506200050e81620004e5565b92915050565b5f602082840312156200052c576200052b620004d8565b5b5f6200053b84828501620004fe565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620005c057607f821691505b602082108103620005d657620005d56200057b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200063a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005fd565b620006468683620005fd565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000687620006816200067b84620004dc565b6200065e565b620004dc565b9050919050565b5f819050919050565b620006a28362000667565b620006ba620006b1826200068e565b84845462000609565b825550505050565b5f90565b620006d0620006c2565b620006dd81848462000697565b505050565b5b818110156200070457620006f85f82620006c6565b600181019050620006e3565b5050565b601f82111562000753576200071d81620005dc565b6200072884620005ee565b8101602085101562000738578190505b620007506200074785620005ee565b830182620006e2565b50505b505050565b5f82821c905092915050565b5f620007755f198460080262000758565b1980831691505092915050565b5f6200078f838362000764565b9150826002028217905092915050565b620007aa8262000544565b67ffffffffffffffff811115620007c657620007c56200054e565b5b620007d28254620005a8565b620007df82828562000708565b5f60209050601f83116001811462000815575f841562000800578287015190505b6200080c858262000782565b8655506200087b565b601f1984166200082586620005dc565b5f5b828110156200084e5784890151825560018201915060208501945060208101905062000827565b868310156200086e57848901516200086a601f89168262000764565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620008ae8262000883565b9050919050565b620008c081620008a2565b82525050565b5f602082019050620008db5f830184620008b5565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200091a82620004dc565b91506200092783620004dc565b9250828201905080821115620009425762000941620008e1565b5b92915050565b6200095381620004dc565b82525050565b5f6060820190506200096e5f830186620008b5565b6200097d602083018562000948565b6200098c604083018462000948565b949350505050565b5f602082019050620009a95f83018462000948565b92915050565b61106a80620009bd5f395ff3fe608060405234801561000f575f80fd5b50600436106100b2575f3560e01c8063715018a61161006f578063715018a6146101a05780638da5cb5b146101aa57806395d89b41146101c8578063a9059cbb146101e6578063dd62ed3e14610216578063f2fde38b14610246576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce5671461015257806370a0823114610170575b5f80fd5b6100be610262565b6040516100cb9190610ce3565b60405180910390f35b6100ee60048036038101906100e99190610d94565b6102f2565b6040516100fb9190610dec565b60405180910390f35b61010c610314565b6040516101199190610e14565b60405180910390f35b61013c60048036038101906101379190610e2d565b61031d565b6040516101499190610dec565b60405180910390f35b61015a61034b565b6040516101679190610e98565b60405180910390f35b61018a60048036038101906101859190610eb1565b610353565b6040516101979190610e14565b60405180910390f35b6101a8610398565b005b6101b26103ab565b6040516101bf9190610eeb565b60405180910390f35b6101d06103d3565b6040516101dd9190610ce3565b60405180910390f35b61020060048036038101906101fb9190610d94565b610463565b60405161020d9190610dec565b60405180910390f35b610230600480360381019061022b9190610f04565b610485565b60405161023d9190610e14565b60405180910390f35b610260600480360381019061025b9190610eb1565b610507565b005b60606003805461027190610f6f565b80601f016020809104026020016040519081016040528092919081815260200182805461029d90610f6f565b80156102e85780601f106102bf576101008083540402835291602001916102e8565b820191905f5260205f20905b8154815290600101906020018083116102cb57829003601f168201915b5050505050905090565b5f806102fc61058b565b9050610309818585610592565b600191505092915050565b5f600254905090565b5f8061032761058b565b90506103348582856105a4565b61033f858585610637565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6103a0610727565b6103a95f6107ae565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546103e290610f6f565b80601f016020809104026020016040519081016040528092919081815260200182805461040e90610f6f565b80156104595780601f1061043057610100808354040283529160200191610459565b820191905f5260205f20905b81548152906001019060200180831161043c57829003601f168201915b5050505050905090565b5f8061046d61058b565b905061047a818585610637565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61050f610727565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361057f575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016105769190610eeb565b60405180910390fd5b610588816107ae565b50565b5f33905090565b61059f8383836001610871565b505050565b5f6105af8484610485565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156106315781811015610622578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161061993929190610f9f565b60405180910390fd5b61063084848484035f610871565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106a7575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161069e9190610eeb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610717575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161070e9190610eeb565b60405180910390fd5b610722838383610a40565b505050565b61072f61058b565b73ffffffffffffffffffffffffffffffffffffffff1661074d6103ab565b73ffffffffffffffffffffffffffffffffffffffff16146107ac5761077061058b565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016107a39190610eeb565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036108e1575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016108d89190610eeb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610951575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016109489190610eeb565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610a3a578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a319190610e14565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a90578060025f828254610a849190611001565b92505081905550610b5e565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610b19578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610b1093929190610f9f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ba5578060025f8282540392505081905550610bef565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c4c9190610e14565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610c90578082015181840152602081019050610c75565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610cb582610c59565b610cbf8185610c63565b9350610ccf818560208601610c73565b610cd881610c9b565b840191505092915050565b5f6020820190508181035f830152610cfb8184610cab565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d3082610d07565b9050919050565b610d4081610d26565b8114610d4a575f80fd5b50565b5f81359050610d5b81610d37565b92915050565b5f819050919050565b610d7381610d61565b8114610d7d575f80fd5b50565b5f81359050610d8e81610d6a565b92915050565b5f8060408385031215610daa57610da9610d03565b5b5f610db785828601610d4d565b9250506020610dc885828601610d80565b9150509250929050565b5f8115159050919050565b610de681610dd2565b82525050565b5f602082019050610dff5f830184610ddd565b92915050565b610e0e81610d61565b82525050565b5f602082019050610e275f830184610e05565b92915050565b5f805f60608486031215610e4457610e43610d03565b5b5f610e5186828701610d4d565b9350506020610e6286828701610d4d565b9250506040610e7386828701610d80565b9150509250925092565b5f60ff82169050919050565b610e9281610e7d565b82525050565b5f602082019050610eab5f830184610e89565b92915050565b5f60208284031215610ec657610ec5610d03565b5b5f610ed384828501610d4d565b91505092915050565b610ee581610d26565b82525050565b5f602082019050610efe5f830184610edc565b92915050565b5f8060408385031215610f1a57610f19610d03565b5b5f610f2785828601610d4d565b9250506020610f3885828601610d4d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610f8657607f821691505b602082108103610f9957610f98610f42565b5b50919050565b5f606082019050610fb25f830186610edc565b610fbf6020830185610e05565b610fcc6040830184610e05565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61100b82610d61565b915061101683610d61565b925082820190508082111561102e5761102d610fd4565b5b9291505056fea26469706673582212203e2e4dadbd7d97c23f659d54dc57d7529c6ef5f4ad2e8e938d2bd8e79bc45c0664736f6c63430008140033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x10 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1A27 CODESIZE SUB DUP1 PUSH3 0x1A27 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x36 SWAP2 SWAP1 PUSH3 0x514 JUMP JUMPDEST CALLER PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xD DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536861646F7750686F656E697800000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4441524B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH3 0xB4 SWAP2 SWAP1 PUSH3 0x79F JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP2 PUSH3 0xC6 SWAP2 SWAP1 PUSH3 0x79F JUMP JUMPDEST POP POP POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x13C JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x133 SWAP2 SWAP1 PUSH3 0x8C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x14D DUP2 PUSH3 0x167 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH3 0x160 CALLER DUP3 PUSH3 0x22A PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH3 0x9AF JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x29D JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x294 SWAP2 SWAP1 PUSH3 0x8C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2B0 PUSH0 DUP4 DUP4 PUSH3 0x2B4 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x308 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH3 0x2FB SWAP2 SWAP1 PUSH3 0x90E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH3 0x3D9 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH3 0x394 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x38B SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x959 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH0 DUP1 DUP7 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 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x422 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH3 0x46C JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP5 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 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH3 0x4CB SWAP2 SWAP1 PUSH3 0x994 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4F0 DUP2 PUSH3 0x4DC JUMP JUMPDEST DUP2 EQ PUSH3 0x4FB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x50E DUP2 PUSH3 0x4E5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x52C JUMPI PUSH3 0x52B PUSH3 0x4D8 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x53B DUP5 DUP3 DUP6 ADD PUSH3 0x4FE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT 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 PUSH3 0x5C0 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x5D6 JUMPI PUSH3 0x5D5 PUSH3 0x57B JUMP JUMPDEST JUMPDEST 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 PUSH3 0x63A PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH3 0x5FD JUMP JUMPDEST PUSH3 0x646 DUP7 DUP4 PUSH3 0x5FD 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 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x687 PUSH3 0x681 PUSH3 0x67B DUP5 PUSH3 0x4DC JUMP JUMPDEST PUSH3 0x65E JUMP JUMPDEST PUSH3 0x4DC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x6A2 DUP4 PUSH3 0x667 JUMP JUMPDEST PUSH3 0x6BA PUSH3 0x6B1 DUP3 PUSH3 0x68E JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH3 0x609 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH3 0x6D0 PUSH3 0x6C2 JUMP JUMPDEST PUSH3 0x6DD DUP2 DUP5 DUP5 PUSH3 0x697 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x704 JUMPI PUSH3 0x6F8 PUSH0 DUP3 PUSH3 0x6C6 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x6E3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x753 JUMPI PUSH3 0x71D DUP2 PUSH3 0x5DC JUMP JUMPDEST PUSH3 0x728 DUP5 PUSH3 0x5EE JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH3 0x738 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH3 0x750 PUSH3 0x747 DUP6 PUSH3 0x5EE JUMP JUMPDEST DUP4 ADD DUP3 PUSH3 0x6E2 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x775 PUSH0 NOT DUP5 PUSH1 0x8 MUL PUSH3 0x758 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x78F DUP4 DUP4 PUSH3 0x764 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x7AA DUP3 PUSH3 0x544 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x7C6 JUMPI PUSH3 0x7C5 PUSH3 0x54E JUMP JUMPDEST JUMPDEST PUSH3 0x7D2 DUP3 SLOAD PUSH3 0x5A8 JUMP JUMPDEST PUSH3 0x7DF DUP3 DUP3 DUP6 PUSH3 0x708 JUMP JUMPDEST PUSH0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x815 JUMPI PUSH0 DUP5 ISZERO PUSH3 0x800 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH3 0x80C DUP6 DUP3 PUSH3 0x782 JUMP JUMPDEST DUP7 SSTORE POP PUSH3 0x87B JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH3 0x825 DUP7 PUSH3 0x5DC JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x84E 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 PUSH3 0x827 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH3 0x86E JUMPI DUP5 DUP10 ADD MLOAD PUSH3 0x86A PUSH1 0x1F DUP10 AND DUP3 PUSH3 0x764 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 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x8AE DUP3 PUSH3 0x883 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x8C0 DUP2 PUSH3 0x8A2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x8DB PUSH0 DUP4 ADD DUP5 PUSH3 0x8B5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x91A DUP3 PUSH3 0x4DC JUMP JUMPDEST SWAP2 POP PUSH3 0x927 DUP4 PUSH3 0x4DC JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH3 0x942 JUMPI PUSH3 0x941 PUSH3 0x8E1 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x953 DUP2 PUSH3 0x4DC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH3 0x96E PUSH0 DUP4 ADD DUP7 PUSH3 0x8B5 JUMP JUMPDEST PUSH3 0x97D PUSH1 0x20 DUP4 ADD DUP6 PUSH3 0x948 JUMP JUMPDEST PUSH3 0x98C PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x948 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x9A9 PUSH0 DUP4 ADD DUP5 PUSH3 0x948 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x106A DUP1 PUSH3 0x9BD PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB2 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x246 JUMPI PUSH2 0xB2 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x170 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0xBE PUSH2 0x262 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCB SWAP2 SWAP1 PUSH2 0xCE3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0xD94 JUMP JUMPDEST PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x314 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x137 SWAP2 SWAP1 PUSH2 0xE2D JUMP JUMPDEST PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15A PUSH2 0x34B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x167 SWAP2 SWAP1 PUSH2 0xE98 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x185 SWAP2 SWAP1 PUSH2 0xEB1 JUMP JUMPDEST PUSH2 0x353 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x197 SWAP2 SWAP1 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A8 PUSH2 0x398 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B2 PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BF SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D0 PUSH2 0x3D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DD SWAP2 SWAP1 PUSH2 0xCE3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x200 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FB SWAP2 SWAP1 PUSH2 0xD94 JUMP JUMPDEST PUSH2 0x463 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20D SWAP2 SWAP1 PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x22B SWAP2 SWAP1 PUSH2 0xF04 JUMP JUMPDEST PUSH2 0x485 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x260 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25B SWAP2 SWAP1 PUSH2 0xEB1 JUMP JUMPDEST PUSH2 0x507 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x271 SWAP1 PUSH2 0xF6F 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 0x29D SWAP1 PUSH2 0xF6F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2E8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2BF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2E8 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 0x2CB JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x2FC PUSH2 0x58B JUMP JUMPDEST SWAP1 POP PUSH2 0x309 DUP2 DUP6 DUP6 PUSH2 0x592 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x327 PUSH2 0x58B JUMP JUMPDEST SWAP1 POP PUSH2 0x334 DUP6 DUP3 DUP6 PUSH2 0x5A4 JUMP JUMPDEST PUSH2 0x33F DUP6 DUP6 DUP6 PUSH2 0x637 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3A0 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x3A9 PUSH0 PUSH2 0x7AE JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x3E2 SWAP1 PUSH2 0xF6F 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 0x40E SWAP1 PUSH2 0xF6F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x459 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x430 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x459 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 0x43C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x46D PUSH2 0x58B JUMP JUMPDEST SWAP1 POP PUSH2 0x47A DUP2 DUP6 DUP6 PUSH2 0x637 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x50F PUSH2 0x727 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x57F JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x588 DUP2 PUSH2 0x7AE JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x59F DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x871 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5AF DUP5 DUP5 PUSH2 0x485 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x631 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x622 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x619 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xF9F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x630 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x871 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x6A7 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69E SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x717 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x70E SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x722 DUP4 DUP4 DUP4 PUSH2 0xA40 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x72F PUSH2 0x58B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x74D PUSH2 0x3AB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7AC JUMPI PUSH2 0x770 PUSH2 0x58B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7A3 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x8E1 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8D8 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x951 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x948 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0xA3A JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0xA31 SWAP2 SWAP1 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xA90 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0xA84 SWAP2 SWAP1 PUSH2 0x1001 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xB5E JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xB19 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB10 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xF9F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH0 DUP1 DUP7 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 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xBA5 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xBEF JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP5 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 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xC4C SWAP2 SWAP1 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP 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 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC90 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xC75 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xCB5 DUP3 PUSH2 0xC59 JUMP JUMPDEST PUSH2 0xCBF DUP2 DUP6 PUSH2 0xC63 JUMP JUMPDEST SWAP4 POP PUSH2 0xCCF DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xC73 JUMP JUMPDEST PUSH2 0xCD8 DUP2 PUSH2 0xC9B 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 0xCFB DUP2 DUP5 PUSH2 0xCAB JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xD30 DUP3 PUSH2 0xD07 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD40 DUP2 PUSH2 0xD26 JUMP JUMPDEST DUP2 EQ PUSH2 0xD4A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD5B DUP2 PUSH2 0xD37 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD73 DUP2 PUSH2 0xD61 JUMP JUMPDEST DUP2 EQ PUSH2 0xD7D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD8E DUP2 PUSH2 0xD6A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDAA JUMPI PUSH2 0xDA9 PUSH2 0xD03 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xDB7 DUP6 DUP3 DUP7 ADD PUSH2 0xD4D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xDC8 DUP6 DUP3 DUP7 ADD PUSH2 0xD80 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xDE6 DUP2 PUSH2 0xDD2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xDFF PUSH0 DUP4 ADD DUP5 PUSH2 0xDDD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE0E DUP2 PUSH2 0xD61 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xE27 PUSH0 DUP4 ADD DUP5 PUSH2 0xE05 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE44 JUMPI PUSH2 0xE43 PUSH2 0xD03 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xE51 DUP7 DUP3 DUP8 ADD PUSH2 0xD4D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xE62 DUP7 DUP3 DUP8 ADD PUSH2 0xD4D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xE73 DUP7 DUP3 DUP8 ADD PUSH2 0xD80 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xE92 DUP2 PUSH2 0xE7D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xEAB PUSH0 DUP4 ADD DUP5 PUSH2 0xE89 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEC6 JUMPI PUSH2 0xEC5 PUSH2 0xD03 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xED3 DUP5 DUP3 DUP6 ADD PUSH2 0xD4D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xEE5 DUP2 PUSH2 0xD26 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xEFE PUSH0 DUP4 ADD DUP5 PUSH2 0xEDC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF1A JUMPI PUSH2 0xF19 PUSH2 0xD03 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xF27 DUP6 DUP3 DUP7 ADD PUSH2 0xD4D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xF38 DUP6 DUP3 DUP7 ADD PUSH2 0xD4D 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 0xF86 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xF99 JUMPI PUSH2 0xF98 PUSH2 0xF42 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xFB2 PUSH0 DUP4 ADD DUP7 PUSH2 0xEDC JUMP JUMPDEST PUSH2 0xFBF PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xE05 JUMP JUMPDEST PUSH2 0xFCC PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xE05 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x100B DUP3 PUSH2 0xD61 JUMP JUMPDEST SWAP2 POP PUSH2 0x1016 DUP4 PUSH2 0xD61 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x102E JUMPI PUSH2 0x102D PUSH2 0xFD4 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY 0x2E 0x4D 0xAD 0xBD PUSH30 0x97C23F659D54DC57D7529C6EF5F4AD2E8E938D2BD8E79BC45C0664736F6C PUSH4 0x43000814 STOP CALLER ",
"sourceMap": "270:204:6:-:0;;;317:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;407:10;1582:113:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1656:5;1648;:13;;;;;;:::i;:::-;;1681:7;1671;:17;;;;;;:::i;:::-;;1582:113;;1297:1:0;1273:26;;:12;:26;;;1269:95;;1350:1;1322:31;;;;;;;;;;;:::i;:::-;;;;;;;;1269:95;1373:32;1392:12;1373:18;;;:32;;:::i;:::-;1225:187;433:32:6::2;439:10;451:13;433:5;;;:32;;:::i;:::-;317:155:::0;270:204;;2912:187:0;2985:16;3004:6;;;;;;;;;;;2985:25;;3029:8;3020:6;;:17;;;;;;;;;;;;;;;;;;3083:8;3052:40;;3073:8;3052:40;;;;;;;;;;;;2975:124;2912:187;:::o;7362:208:2:-;7451:1;7432:21;;:7;:21;;;7428:91;;7505:1;7476:32;;;;;;;;;;;:::i;:::-;;;;;;;;7428:91;7528:35;7544:1;7548:7;7557:5;7528:7;;;:35;;:::i;:::-;7362:208;;:::o;5912:1107::-;6017:1;6001:18;;:4;:18;;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;;;;;5997:540;;;6189:19;6211:9;:15;6221:4;6211:15;;;;;;;;;;;;;;;;6189:37;;6258:5;6244:11;:19;6240:115;;;6315:4;6321:11;6334:5;6290:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6240:115;6507:5;6493:11;:19;6475:9;:15;6485:4;6475:15;;;;;;;;;;;;;;;:37;;;;6175:362;5997:540;6565:1;6551:16;;:2;:16;;;6547:425;;6730:5;6714:12;;:21;;;;;;;;;;;6547:425;;;6942:5;6925:9;:13;6935:2;6925:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6547:425;7002:2;6987:25;;6996:4;6987:25;;;7006:5;6987:25;;;;;;:::i;:::-;;;;;;;;5912:1107;;;:::o;88:117:7:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:143::-;602:5;633:6;627:13;618:22;;649:33;676:5;649:33;:::i;:::-;545:143;;;;:::o;694:351::-;764:6;813:2;801:9;792:7;788:23;784:32;781:119;;;819:79;;:::i;:::-;781:119;939:1;964:64;1020:7;1011:6;1000:9;996:22;964:64;:::i;:::-;954:74;;910:128;694:351;;;;:::o;1051:99::-;1103:6;1137:5;1131:12;1121:22;;1051:99;;;:::o;1156:180::-;1204:77;1201:1;1194:88;1301:4;1298:1;1291:15;1325:4;1322:1;1315:15;1342:180;1390:77;1387:1;1380:88;1487:4;1484:1;1477:15;1511:4;1508:1;1501:15;1528:320;1572:6;1609:1;1603:4;1599:12;1589:22;;1656:1;1650:4;1646:12;1677:18;1667:81;;1733:4;1725:6;1721:17;1711:27;;1667:81;1795:2;1787:6;1784:14;1764:18;1761:38;1758:84;;1814:18;;:::i;:::-;1758:84;1579:269;1528:320;;;:::o;1854:141::-;1903:4;1926:3;1918:11;;1949:3;1946:1;1939:14;1983:4;1980:1;1970:18;1962:26;;1854:141;;;:::o;2001:93::-;2038:6;2085:2;2080;2073:5;2069:14;2065:23;2055:33;;2001:93;;;:::o;2100:107::-;2144:8;2194:5;2188:4;2184:16;2163:37;;2100:107;;;;:::o;2213:393::-;2282:6;2332:1;2320:10;2316:18;2355:97;2385:66;2374:9;2355:97;:::i;:::-;2473:39;2503:8;2492:9;2473:39;:::i;:::-;2461:51;;2545:4;2541:9;2534:5;2530:21;2521:30;;2594:4;2584:8;2580:19;2573:5;2570:30;2560:40;;2289:317;;2213:393;;;;;:::o;2612:60::-;2640:3;2661:5;2654:12;;2612:60;;;:::o;2678:142::-;2728:9;2761:53;2779:34;2788:24;2806:5;2788:24;:::i;:::-;2779:34;:::i;:::-;2761:53;:::i;:::-;2748:66;;2678:142;;;:::o;2826:75::-;2869:3;2890:5;2883:12;;2826:75;;;:::o;2907:269::-;3017:39;3048:7;3017:39;:::i;:::-;3078:91;3127:41;3151:16;3127:41;:::i;:::-;3119:6;3112:4;3106:11;3078:91;:::i;:::-;3072:4;3065:105;2983:193;2907:269;;;:::o;3182:73::-;3227:3;3182:73;:::o;3261:189::-;3338:32;;:::i;:::-;3379:65;3437:6;3429;3423:4;3379:65;:::i;:::-;3314:136;3261:189;;:::o;3456:186::-;3516:120;3533:3;3526:5;3523:14;3516:120;;;3587:39;3624:1;3617:5;3587:39;:::i;:::-;3560:1;3553:5;3549:13;3540:22;;3516:120;;;3456:186;;:::o;3648:543::-;3749:2;3744:3;3741:11;3738:446;;;3783:38;3815:5;3783:38;:::i;:::-;3867:29;3885:10;3867:29;:::i;:::-;3857:8;3853:44;4050:2;4038:10;4035:18;4032:49;;;4071:8;4056:23;;4032:49;4094:80;4150:22;4168:3;4150:22;:::i;:::-;4140:8;4136:37;4123:11;4094:80;:::i;:::-;3753:431;;3738:446;3648:543;;;:::o;4197:117::-;4251:8;4301:5;4295:4;4291:16;4270:37;;4197:117;;;;:::o;4320:169::-;4364:6;4397:51;4445:1;4441:6;4433:5;4430:1;4426:13;4397:51;:::i;:::-;4393:56;4478:4;4472;4468:15;4458:25;;4371:118;4320:169;;;;:::o;4494:295::-;4570:4;4716:29;4741:3;4735:4;4716:29;:::i;:::-;4708:37;;4778:3;4775:1;4771:11;4765:4;4762:21;4754:29;;4494:295;;;;:::o;4794:1395::-;4911:37;4944:3;4911:37;:::i;:::-;5013:18;5005:6;5002:30;4999:56;;;5035:18;;:::i;:::-;4999:56;5079:38;5111:4;5105:11;5079:38;:::i;:::-;5164:67;5224:6;5216;5210:4;5164:67;:::i;:::-;5258:1;5282:4;5269:17;;5314:2;5306:6;5303:14;5331:1;5326:618;;;;5988:1;6005:6;6002:77;;;6054:9;6049:3;6045:19;6039:26;6030:35;;6002:77;6105:67;6165:6;6158:5;6105:67;:::i;:::-;6099:4;6092:81;5961:222;5296:887;;5326:618;5378:4;5374:9;5366:6;5362:22;5412:37;5444:4;5412:37;:::i;:::-;5471:1;5485:208;5499:7;5496:1;5493:14;5485:208;;;5578:9;5573:3;5569:19;5563:26;5555:6;5548:42;5629:1;5621:6;5617:14;5607:24;;5676:2;5665:9;5661:18;5648:31;;5522:4;5519:1;5515:12;5510:17;;5485:208;;;5721:6;5712:7;5709:19;5706:179;;;5779:9;5774:3;5770:19;5764:26;5822:48;5864:4;5856:6;5852:17;5841:9;5822:48;:::i;:::-;5814:6;5807:64;5729:156;5706:179;5931:1;5927;5919:6;5915:14;5911:22;5905:4;5898:36;5333:611;;;5296:887;;4886:1303;;;4794:1395;;:::o;6195:126::-;6232:7;6272:42;6265:5;6261:54;6250:65;;6195:126;;;:::o;6327:96::-;6364:7;6393:24;6411:5;6393:24;:::i;:::-;6382:35;;6327:96;;;:::o;6429:118::-;6516:24;6534:5;6516:24;:::i;:::-;6511:3;6504:37;6429:118;;:::o;6553:222::-;6646:4;6684:2;6673:9;6669:18;6661:26;;6697:71;6765:1;6754:9;6750:17;6741:6;6697:71;:::i;:::-;6553:222;;;;:::o;6781:180::-;6829:77;6826:1;6819:88;6926:4;6923:1;6916:15;6950:4;6947:1;6940:15;6967:191;7007:3;7026:20;7044:1;7026:20;:::i;:::-;7021:25;;7060:20;7078:1;7060:20;:::i;:::-;7055:25;;7103:1;7100;7096:9;7089:16;;7124:3;7121:1;7118:10;7115:36;;;7131:18;;:::i;:::-;7115:36;6967:191;;;;:::o;7164:118::-;7251:24;7269:5;7251:24;:::i;:::-;7246:3;7239:37;7164:118;;:::o;7288:442::-;7437:4;7475:2;7464:9;7460:18;7452:26;;7488:71;7556:1;7545:9;7541:17;7532:6;7488:71;:::i;:::-;7569:72;7637:2;7626:9;7622:18;7613:6;7569:72;:::i;:::-;7651;7719:2;7708:9;7704:18;7695:6;7651:72;:::i;:::-;7288:442;;;;;;:::o;7736:222::-;7829:4;7867:2;7856:9;7852:18;7844:26;;7880:71;7948:1;7937:9;7933:17;7924:6;7880:71;:::i;:::-;7736:222;;;;:::o;270:204:6:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_approve_690": {
"entryPoint": 1426,
"id": 690,
"parameterSlots": 3,
"returnSlots": 0
},
"@_approve_750": {
"entryPoint": 2161,
"id": 750,
"parameterSlots": 4,
"returnSlots": 0
},
"@_checkOwner_84": {
"entryPoint": 1831,
"id": 84,
"parameterSlots": 0,
"returnSlots": 0
},
"@_msgSender_915": {
"entryPoint": 1419,
"id": 915,
"parameterSlots": 0,
"returnSlots": 1
},
"@_spendAllowance_798": {
"entryPoint": 1444,
"id": 798,
"parameterSlots": 3,
"returnSlots": 0
},
"@_transferOwnership_146": {
"entryPoint": 1966,
"id": 146,
"parameterSlots": 1,
"returnSlots": 0
},
"@_transfer_529": {
"entryPoint": 1591,
"id": 529,
"parameterSlots": 3,
"returnSlots": 0
},
"@_update_606": {
"entryPoint": 2624,
"id": 606,
"parameterSlots": 3,
"returnSlots": 0
},
"@allowance_426": {
"entryPoint": 1157,
"id": 426,
"parameterSlots": 2,
"returnSlots": 1
},
"@approve_450": {
"entryPoint": 754,
"id": 450,
"parameterSlots": 2,
"returnSlots": 1
},
"@balanceOf_385": {
"entryPoint": 851,
"id": 385,
"parameterSlots": 1,
"returnSlots": 1
},
"@decimals_363": {
"entryPoint": 843,
"id": 363,
"parameterSlots": 0,
"returnSlots": 1
},
"@name_345": {
"entryPoint": 610,
"id": 345,
"parameterSlots": 0,
"returnSlots": 1
},
"@owner_67": {
"entryPoint": 939,
"id": 67,
"parameterSlots": 0,
"returnSlots": 1
},
"@renounceOwnership_98": {
"entryPoint": 920,
"id": 98,
"parameterSlots": 0,
"returnSlots": 0
},
"@symbol_354": {
"entryPoint": 979,
"id": 354,
"parameterSlots": 0,
"returnSlots": 1
},
"@totalSupply_372": {
"entryPoint": 788,
"id": 372,
"parameterSlots": 0,
"returnSlots": 1
},
"@transferFrom_482": {
"entryPoint": 797,
"id": 482,
"parameterSlots": 3,
"returnSlots": 1
},
"@transferOwnership_126": {
"entryPoint": 1287,
"id": 126,
"parameterSlots": 1,
"returnSlots": 0
},
"@transfer_409": {
"entryPoint": 1123,
"id": 409,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_address": {
"entryPoint": 3405,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 3456,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address": {
"entryPoint": 3761,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_address": {
"entryPoint": 3844,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_addresst_addresst_uint256": {
"entryPoint": 3629,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_addresst_uint256": {
"entryPoint": 3476,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 3804,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_bool_to_t_bool_fromStack": {
"entryPoint": 3549,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 3243,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 3589,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint8_to_t_uint8_fromStack": {
"entryPoint": 3721,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 3819,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": {
"entryPoint": 3999,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": 3564,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 3299,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 3604,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
"entryPoint": 3736,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 3161,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 3171,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 4097,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"cleanup_t_address": {
"entryPoint": 3366,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_bool": {
"entryPoint": 3538,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 3335,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 3425,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint8": {
"entryPoint": 3709,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 3187,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"extract_byte_array_length": {
"entryPoint": 3951,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 4052,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x22": {
"entryPoint": 3906,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 3331,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 3227,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"validator_revert_t_address": {
"entryPoint": 3383,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 3434,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:7360:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "66:40:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "77:22:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "93:5:7"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "87:5:7"
},
"nodeType": "YulFunctionCall",
"src": "87:12:7"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "77:6:7"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "49:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "59:6:7",
"type": ""
}
],
"src": "7:99:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "208:73:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "225:3:7"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "230:6:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "218:6:7"
},
"nodeType": "YulFunctionCall",
"src": "218:19:7"
},
"nodeType": "YulExpressionStatement",
"src": "218:19:7"
},
{
"nodeType": "YulAssignment",
"src": "246:29:7",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "265:3:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "270:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "261:3:7"
},
"nodeType": "YulFunctionCall",
"src": "261:14:7"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "246:11:7"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "180:3:7",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "185:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "196:11:7",
"type": ""
}
],
"src": "112:169:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "349:184:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "359:10:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "368:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "363:1:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "428:63:7",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "453:3:7"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "458:1:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "449:3:7"
},
"nodeType": "YulFunctionCall",
"src": "449:11:7"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "472:3:7"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "477:1:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "468:3:7"
},
"nodeType": "YulFunctionCall",
"src": "468:11:7"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "462:5:7"
},
"nodeType": "YulFunctionCall",
"src": "462:18:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "442:6:7"
},
"nodeType": "YulFunctionCall",
"src": "442:39:7"
},
"nodeType": "YulExpressionStatement",
"src": "442:39:7"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "389:1:7"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "392:6:7"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "386:2:7"
},
"nodeType": "YulFunctionCall",
"src": "386:13:7"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "400:19:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "402:15:7",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "411:1:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "414:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "407:3:7"
},
"nodeType": "YulFunctionCall",
"src": "407:10:7"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "402:1:7"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "382:3:7",
"statements": []
},
"src": "378:113:7"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "511:3:7"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "516:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "507:3:7"
},
"nodeType": "YulFunctionCall",
"src": "507:16:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "525:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "500:6:7"
},
"nodeType": "YulFunctionCall",
"src": "500:27:7"
},
"nodeType": "YulExpressionStatement",
"src": "500:27:7"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "331:3:7",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "336:3:7",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "341:6:7",
"type": ""
}
],
"src": "287:246:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "587:54:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "597:38:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "615:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "622:2:7",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "611:3:7"
},
"nodeType": "YulFunctionCall",
"src": "611:14:7"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "631:2:7",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "627:3:7"
},
"nodeType": "YulFunctionCall",
"src": "627:7:7"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "607:3:7"
},
"nodeType": "YulFunctionCall",
"src": "607:28:7"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "597:6:7"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "570:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "580:6:7",
"type": ""
}
],
"src": "539:102:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "739:285:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "749:53:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "796:5:7"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "763:32:7"
},
"nodeType": "YulFunctionCall",
"src": "763:39:7"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "753:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "811:78:7",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "877:3:7"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "882:6:7"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "818:58:7"
},
"nodeType": "YulFunctionCall",
"src": "818:71:7"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "811:3:7"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "937:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "944:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "933:3:7"
},
"nodeType": "YulFunctionCall",
"src": "933:16:7"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "951:3:7"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "956:6:7"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "898:34:7"
},
"nodeType": "YulFunctionCall",
"src": "898:65:7"
},
"nodeType": "YulExpressionStatement",
"src": "898:65:7"
},
{
"nodeType": "YulAssignment",
"src": "972:46:7",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "983:3:7"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1010:6:7"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "988:21:7"
},
"nodeType": "YulFunctionCall",
"src": "988:29:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "979:3:7"
},
"nodeType": "YulFunctionCall",
"src": "979:39:7"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "972:3:7"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "720:5:7",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "727:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "735:3:7",
"type": ""
}
],
"src": "647:377:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1148:195:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1158:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1170:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1181:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1166:3:7"
},
"nodeType": "YulFunctionCall",
"src": "1166:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1158:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1205:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1216:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1201:3:7"
},
"nodeType": "YulFunctionCall",
"src": "1201:17:7"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1224:4:7"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1230:9:7"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1220:3:7"
},
"nodeType": "YulFunctionCall",
"src": "1220:20:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1194:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1194:47:7"
},
"nodeType": "YulExpressionStatement",
"src": "1194:47:7"
},
{
"nodeType": "YulAssignment",
"src": "1250:86:7",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1322:6:7"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1331:4:7"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "1258:63:7"
},
"nodeType": "YulFunctionCall",
"src": "1258:78:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1250:4:7"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1120:9:7",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1132:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1143:4:7",
"type": ""
}
],
"src": "1030:313:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1389:35:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1399:19:7",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1415:2:7",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1409:5:7"
},
"nodeType": "YulFunctionCall",
"src": "1409:9:7"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1399:6:7"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "1382:6:7",
"type": ""
}
],
"src": "1349:75:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1519:28:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1536:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1539:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1529:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1529:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "1529:12:7"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "1430:117:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1642:28:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1659:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1662:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1652:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1652:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "1652:12:7"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "1553:117:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1721:81:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1731:65:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1746:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1753:42:7",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1742:3:7"
},
"nodeType": "YulFunctionCall",
"src": "1742:54:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1731:7:7"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1703:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1713:7:7",
"type": ""
}
],
"src": "1676:126:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1853:51:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1863:35:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1892:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "1874:17:7"
},
"nodeType": "YulFunctionCall",
"src": "1874:24:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "1863:7:7"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1835:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "1845:7:7",
"type": ""
}
],
"src": "1808:96:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1953:79:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2010:16:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2019:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2022:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2012:6:7"
},
"nodeType": "YulFunctionCall",
"src": "2012:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "2012:12:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1976:5:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2001:5:7"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "1983:17:7"
},
"nodeType": "YulFunctionCall",
"src": "1983:24:7"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1973:2:7"
},
"nodeType": "YulFunctionCall",
"src": "1973:35:7"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1966:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1966:43:7"
},
"nodeType": "YulIf",
"src": "1963:63:7"
}
]
},
"name": "validator_revert_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1946:5:7",
"type": ""
}
],
"src": "1910:122:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2090:87:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2100:29:7",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2122:6:7"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2109:12:7"
},
"nodeType": "YulFunctionCall",
"src": "2109:20:7"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2100:5:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2165:5:7"
}
],
"functionName": {
"name": "validator_revert_t_address",
"nodeType": "YulIdentifier",
"src": "2138:26:7"
},
"nodeType": "YulFunctionCall",
"src": "2138:33:7"
},
"nodeType": "YulExpressionStatement",
"src": "2138:33:7"
}
]
},
"name": "abi_decode_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2068:6:7",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2076:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2084:5:7",
"type": ""
}
],
"src": "2038:139:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2228:32:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2238:16:7",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2249:5:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2238:7:7"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2210:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2220:7:7",
"type": ""
}
],
"src": "2183:77:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2309:79:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2366:16:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2375:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2378:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2368:6:7"
},
"nodeType": "YulFunctionCall",
"src": "2368:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "2368:12:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2332:5:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2357:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2339:17:7"
},
"nodeType": "YulFunctionCall",
"src": "2339:24:7"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2329:2:7"
},
"nodeType": "YulFunctionCall",
"src": "2329:35:7"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2322:6:7"
},
"nodeType": "YulFunctionCall",
"src": "2322:43:7"
},
"nodeType": "YulIf",
"src": "2319:63:7"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2302:5:7",
"type": ""
}
],
"src": "2266:122:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2446:87:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2456:29:7",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2478:6:7"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2465:12:7"
},
"nodeType": "YulFunctionCall",
"src": "2465:20:7"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2456:5:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2521:5:7"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "2494:26:7"
},
"nodeType": "YulFunctionCall",
"src": "2494:33:7"
},
"nodeType": "YulExpressionStatement",
"src": "2494:33:7"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2424:6:7",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2432:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2440:5:7",
"type": ""
}
],
"src": "2394:139:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2622:391:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2668:83:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "2670:77:7"
},
"nodeType": "YulFunctionCall",
"src": "2670:79:7"
},
"nodeType": "YulExpressionStatement",
"src": "2670:79:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2643:7:7"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2652:9:7"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2639:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2639:23:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2664:2:7",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2635:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2635:32:7"
},
"nodeType": "YulIf",
"src": "2632:119:7"
},
{
"nodeType": "YulBlock",
"src": "2761:117:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2776:15:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2790:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2780:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2805:63:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2840:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2851:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2836:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2836:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2860:7:7"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "2815:20:7"
},
"nodeType": "YulFunctionCall",
"src": "2815:53:7"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2805:6:7"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "2888:118:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2903:16:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2917:2:7",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2907:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2933:63:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2968:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "2979:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2964:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2964:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2988:7:7"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "2943:20:7"
},
"nodeType": "YulFunctionCall",
"src": "2943:53:7"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2933:6:7"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2584:9:7",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2595:7:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2607:6:7",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2615:6:7",
"type": ""
}
],
"src": "2539:474:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3061:48:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3071:32:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3096:5:7"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3089:6:7"
},
"nodeType": "YulFunctionCall",
"src": "3089:13:7"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3082:6:7"
},
"nodeType": "YulFunctionCall",
"src": "3082:21:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "3071:7:7"
}
]
}
]
},
"name": "cleanup_t_bool",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3043:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "3053:7:7",
"type": ""
}
],
"src": "3019:90:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3174:50:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3191:3:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3211:5:7"
}
],
"functionName": {
"name": "cleanup_t_bool",
"nodeType": "YulIdentifier",
"src": "3196:14:7"
},
"nodeType": "YulFunctionCall",
"src": "3196:21:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3184:6:7"
},
"nodeType": "YulFunctionCall",
"src": "3184:34:7"
},
"nodeType": "YulExpressionStatement",
"src": "3184:34:7"
}
]
},
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3162:5:7",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3169:3:7",
"type": ""
}
],
"src": "3115:109:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3322:118:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3332:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3344:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3355:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3340:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3340:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3332:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3406:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3419:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3430:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3415:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3415:17:7"
}
],
"functionName": {
"name": "abi_encode_t_bool_to_t_bool_fromStack",
"nodeType": "YulIdentifier",
"src": "3368:37:7"
},
"nodeType": "YulFunctionCall",
"src": "3368:65:7"
},
"nodeType": "YulExpressionStatement",
"src": "3368:65:7"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3294:9:7",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3306:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3317:4:7",
"type": ""
}
],
"src": "3230:210:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3511:53:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3528:3:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3551:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "3533:17:7"
},
"nodeType": "YulFunctionCall",
"src": "3533:24:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3521:6:7"
},
"nodeType": "YulFunctionCall",
"src": "3521:37:7"
},
"nodeType": "YulExpressionStatement",
"src": "3521:37:7"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3499:5:7",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "3506:3:7",
"type": ""
}
],
"src": "3446:118:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3668:124:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3678:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3690:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3701:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3686:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3686:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3678:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3758:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3771:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3782:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3767:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3767:17:7"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "3714:43:7"
},
"nodeType": "YulFunctionCall",
"src": "3714:71:7"
},
"nodeType": "YulExpressionStatement",
"src": "3714:71:7"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3640:9:7",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3652:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3663:4:7",
"type": ""
}
],
"src": "3570:222:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3898:519:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3944:83:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "3946:77:7"
},
"nodeType": "YulFunctionCall",
"src": "3946:79:7"
},
"nodeType": "YulExpressionStatement",
"src": "3946:79:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3919:7:7"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3928:9:7"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3915:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3915:23:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3940:2:7",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3911:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3911:32:7"
},
"nodeType": "YulIf",
"src": "3908:119:7"
},
{
"nodeType": "YulBlock",
"src": "4037:117:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4052:15:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4066:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4056:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4081:63:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4116:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4127:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4112:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4112:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4136:7:7"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "4091:20:7"
},
"nodeType": "YulFunctionCall",
"src": "4091:53:7"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4081:6:7"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "4164:118:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4179:16:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4193:2:7",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4183:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4209:63:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4244:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4255:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4240:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4240:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4264:7:7"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "4219:20:7"
},
"nodeType": "YulFunctionCall",
"src": "4219:53:7"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "4209:6:7"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "4292:118:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4307:16:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "4321:2:7",
"type": "",
"value": "64"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4311:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4337:63:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4372:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4383:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4368:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4368:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4392:7:7"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "4347:20:7"
},
"nodeType": "YulFunctionCall",
"src": "4347:53:7"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "4337:6:7"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3852:9:7",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "3863:7:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3875:6:7",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3883:6:7",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "3891:6:7",
"type": ""
}
],
"src": "3798:619:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4466:43:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4476:27:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4491:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4498:4:7",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4487:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4487:16:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "4476:7:7"
}
]
}
]
},
"name": "cleanup_t_uint8",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4448:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "4458:7:7",
"type": ""
}
],
"src": "4423:86:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4576:51:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "4593:3:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4614:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint8",
"nodeType": "YulIdentifier",
"src": "4598:15:7"
},
"nodeType": "YulFunctionCall",
"src": "4598:22:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4586:6:7"
},
"nodeType": "YulFunctionCall",
"src": "4586:35:7"
},
"nodeType": "YulExpressionStatement",
"src": "4586:35:7"
}
]
},
"name": "abi_encode_t_uint8_to_t_uint8_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4564:5:7",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "4571:3:7",
"type": ""
}
],
"src": "4515:112:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4727:120:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4737:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4749:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4760:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4745:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4745:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4737:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4813:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4826:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4837:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4822:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4822:17:7"
}
],
"functionName": {
"name": "abi_encode_t_uint8_to_t_uint8_fromStack",
"nodeType": "YulIdentifier",
"src": "4773:39:7"
},
"nodeType": "YulFunctionCall",
"src": "4773:67:7"
},
"nodeType": "YulExpressionStatement",
"src": "4773:67:7"
}
]
},
"name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4699:9:7",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4711:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4722:4:7",
"type": ""
}
],
"src": "4633:214:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4919:263:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4965:83:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "4967:77:7"
},
"nodeType": "YulFunctionCall",
"src": "4967:79:7"
},
"nodeType": "YulExpressionStatement",
"src": "4967:79:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "4940:7:7"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4949:9:7"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "4936:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4936:23:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4961:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "4932:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4932:32:7"
},
"nodeType": "YulIf",
"src": "4929:119:7"
},
{
"nodeType": "YulBlock",
"src": "5058:117:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5073:15:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5087:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5077:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5102:63:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5137:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5148:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5133:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5133:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5157:7:7"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "5112:20:7"
},
"nodeType": "YulFunctionCall",
"src": "5112:53:7"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5102:6:7"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4889:9:7",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "4900:7:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "4912:6:7",
"type": ""
}
],
"src": "4853:329:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5253:53:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "5270:3:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "5293:5:7"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "5275:17:7"
},
"nodeType": "YulFunctionCall",
"src": "5275:24:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5263:6:7"
},
"nodeType": "YulFunctionCall",
"src": "5263:37:7"
},
"nodeType": "YulExpressionStatement",
"src": "5263:37:7"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5241:5:7",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "5248:3:7",
"type": ""
}
],
"src": "5188:118:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5410:124:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5420:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5432:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5443:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5428:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5428:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5420:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5500:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5513:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5524:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5509:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5509:17:7"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "5456:43:7"
},
"nodeType": "YulFunctionCall",
"src": "5456:71:7"
},
"nodeType": "YulExpressionStatement",
"src": "5456:71:7"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5382:9:7",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5394:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5405:4:7",
"type": ""
}
],
"src": "5312:222:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5623:391:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5669:83:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "5671:77:7"
},
"nodeType": "YulFunctionCall",
"src": "5671:79:7"
},
"nodeType": "YulExpressionStatement",
"src": "5671:79:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5644:7:7"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5653:9:7"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5640:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5640:23:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5665:2:7",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5636:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5636:32:7"
},
"nodeType": "YulIf",
"src": "5633:119:7"
},
{
"nodeType": "YulBlock",
"src": "5762:117:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5777:15:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5791:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5781:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5806:63:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5841:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5852:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5837:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5837:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5861:7:7"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "5816:20:7"
},
"nodeType": "YulFunctionCall",
"src": "5816:53:7"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5806:6:7"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "5889:118:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5904:16:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5918:2:7",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5908:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5934:63:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5969:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5980:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5965:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5965:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5989:7:7"
}
],
"functionName": {
"name": "abi_decode_t_address",
"nodeType": "YulIdentifier",
"src": "5944:20:7"
},
"nodeType": "YulFunctionCall",
"src": "5944:53:7"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "5934:6:7"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5585:9:7",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5596:7:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5608:6:7",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "5616:6:7",
"type": ""
}
],
"src": "5540:474:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6048:152:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6065:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6068:77:7",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6058:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6058:88:7"
},
"nodeType": "YulExpressionStatement",
"src": "6058:88:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6162:1:7",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6165:4:7",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6155:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6155:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "6155:15:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6186:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6189:4:7",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6179:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6179:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "6179:15:7"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "6020:180:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6257:269:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6267:22:7",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6281:4:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6287:1:7",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "6277:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6277:12:7"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6267:6:7"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "6298:38:7",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6328:4:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6334:1:7",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "6324:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6324:12:7"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "6302:18:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6375:51:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6389:27:7",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6403:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6411:4:7",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "6399:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6399:17:7"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6389:6:7"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "6355:18:7"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "6348:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6348:26:7"
},
"nodeType": "YulIf",
"src": "6345:81:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6478:42:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "6492:16:7"
},
"nodeType": "YulFunctionCall",
"src": "6492:18:7"
},
"nodeType": "YulExpressionStatement",
"src": "6492:18:7"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "6442:18:7"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6465:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6473:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "6462:2:7"
},
"nodeType": "YulFunctionCall",
"src": "6462:14:7"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "6439:2:7"
},
"nodeType": "YulFunctionCall",
"src": "6439:38:7"
},
"nodeType": "YulIf",
"src": "6436:84:7"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "6241:4:7",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "6250:6:7",
"type": ""
}
],
"src": "6206:320:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6686:288:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6696:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6708:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6719:2:7",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6704:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6704:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6696:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6776:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6789:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6800:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6785:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6785:17:7"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "6732:43:7"
},
"nodeType": "YulFunctionCall",
"src": "6732:71:7"
},
"nodeType": "YulExpressionStatement",
"src": "6732:71:7"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "6857:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6870:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6881:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6866:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6866:18:7"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "6813:43:7"
},
"nodeType": "YulFunctionCall",
"src": "6813:72:7"
},
"nodeType": "YulExpressionStatement",
"src": "6813:72:7"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "6939:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6952:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6963:2:7",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6948:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6948:18:7"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "6895:43:7"
},
"nodeType": "YulFunctionCall",
"src": "6895:72:7"
},
"nodeType": "YulExpressionStatement",
"src": "6895:72:7"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6642:9:7",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "6654:6:7",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "6662:6:7",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6670:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6681:4:7",
"type": ""
}
],
"src": "6532:442:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7008:152:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7025:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7028:77:7",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7018:6:7"
},
"nodeType": "YulFunctionCall",
"src": "7018:88:7"
},
"nodeType": "YulExpressionStatement",
"src": "7018:88:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7122:1:7",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7125:4:7",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7115:6:7"
},
"nodeType": "YulFunctionCall",
"src": "7115:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "7115:15:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7146:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7149:4:7",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "7139:6:7"
},
"nodeType": "YulFunctionCall",
"src": "7139:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "7139:15:7"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "6980:180:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7210:147:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7220:25:7",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7243:1:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7225:17:7"
},
"nodeType": "YulFunctionCall",
"src": "7225:20:7"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7220:1:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7254:25:7",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7277:1:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7259:17:7"
},
"nodeType": "YulFunctionCall",
"src": "7259:20:7"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7254:1:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7288:16:7",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7299:1:7"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7302:1:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7295:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7295:9:7"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "7288:3:7"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "7328:22:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "7330:16:7"
},
"nodeType": "YulFunctionCall",
"src": "7330:18:7"
},
"nodeType": "YulExpressionStatement",
"src": "7330:18:7"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7320:1:7"
},
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "7323:3:7"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "7317:2:7"
},
"nodeType": "YulFunctionCall",
"src": "7317:10:7"
},
"nodeType": "YulIf",
"src": "7314:36:7"
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "7197:1:7",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "7200:1:7",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "7206:3:7",
"type": ""
}
],
"src": "7166:191:7"
}
]
},
"contents": "{\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_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 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_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 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 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_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_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_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_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 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 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}\n",
"id": 7,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561000f575f80fd5b50600436106100b2575f3560e01c8063715018a61161006f578063715018a6146101a05780638da5cb5b146101aa57806395d89b41146101c8578063a9059cbb146101e6578063dd62ed3e14610216578063f2fde38b14610246576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce5671461015257806370a0823114610170575b5f80fd5b6100be610262565b6040516100cb9190610ce3565b60405180910390f35b6100ee60048036038101906100e99190610d94565b6102f2565b6040516100fb9190610dec565b60405180910390f35b61010c610314565b6040516101199190610e14565b60405180910390f35b61013c60048036038101906101379190610e2d565b61031d565b6040516101499190610dec565b60405180910390f35b61015a61034b565b6040516101679190610e98565b60405180910390f35b61018a60048036038101906101859190610eb1565b610353565b6040516101979190610e14565b60405180910390f35b6101a8610398565b005b6101b26103ab565b6040516101bf9190610eeb565b60405180910390f35b6101d06103d3565b6040516101dd9190610ce3565b60405180910390f35b61020060048036038101906101fb9190610d94565b610463565b60405161020d9190610dec565b60405180910390f35b610230600480360381019061022b9190610f04565b610485565b60405161023d9190610e14565b60405180910390f35b610260600480360381019061025b9190610eb1565b610507565b005b60606003805461027190610f6f565b80601f016020809104026020016040519081016040528092919081815260200182805461029d90610f6f565b80156102e85780601f106102bf576101008083540402835291602001916102e8565b820191905f5260205f20905b8154815290600101906020018083116102cb57829003601f168201915b5050505050905090565b5f806102fc61058b565b9050610309818585610592565b600191505092915050565b5f600254905090565b5f8061032761058b565b90506103348582856105a4565b61033f858585610637565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6103a0610727565b6103a95f6107ae565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546103e290610f6f565b80601f016020809104026020016040519081016040528092919081815260200182805461040e90610f6f565b80156104595780601f1061043057610100808354040283529160200191610459565b820191905f5260205f20905b81548152906001019060200180831161043c57829003601f168201915b5050505050905090565b5f8061046d61058b565b905061047a818585610637565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61050f610727565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361057f575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016105769190610eeb565b60405180910390fd5b610588816107ae565b50565b5f33905090565b61059f8383836001610871565b505050565b5f6105af8484610485565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156106315781811015610622578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161061993929190610f9f565b60405180910390fd5b61063084848484035f610871565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106a7575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161069e9190610eeb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610717575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161070e9190610eeb565b60405180910390fd5b610722838383610a40565b505050565b61072f61058b565b73ffffffffffffffffffffffffffffffffffffffff1661074d6103ab565b73ffffffffffffffffffffffffffffffffffffffff16146107ac5761077061058b565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016107a39190610eeb565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036108e1575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016108d89190610eeb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610951575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016109489190610eeb565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610a3a578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a319190610e14565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a90578060025f828254610a849190611001565b92505081905550610b5e565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610b19578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610b1093929190610f9f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ba5578060025f8282540392505081905550610bef565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c4c9190610e14565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610c90578082015181840152602081019050610c75565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610cb582610c59565b610cbf8185610c63565b9350610ccf818560208601610c73565b610cd881610c9b565b840191505092915050565b5f6020820190508181035f830152610cfb8184610cab565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d3082610d07565b9050919050565b610d4081610d26565b8114610d4a575f80fd5b50565b5f81359050610d5b81610d37565b92915050565b5f819050919050565b610d7381610d61565b8114610d7d575f80fd5b50565b5f81359050610d8e81610d6a565b92915050565b5f8060408385031215610daa57610da9610d03565b5b5f610db785828601610d4d565b9250506020610dc885828601610d80565b9150509250929050565b5f8115159050919050565b610de681610dd2565b82525050565b5f602082019050610dff5f830184610ddd565b92915050565b610e0e81610d61565b82525050565b5f602082019050610e275f830184610e05565b92915050565b5f805f60608486031215610e4457610e43610d03565b5b5f610e5186828701610d4d565b9350506020610e6286828701610d4d565b9250506040610e7386828701610d80565b9150509250925092565b5f60ff82169050919050565b610e9281610e7d565b82525050565b5f602082019050610eab5f830184610e89565b92915050565b5f60208284031215610ec657610ec5610d03565b5b5f610ed384828501610d4d565b91505092915050565b610ee581610d26565b82525050565b5f602082019050610efe5f830184610edc565b92915050565b5f8060408385031215610f1a57610f19610d03565b5b5f610f2785828601610d4d565b9250506020610f3885828601610d4d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610f8657607f821691505b602082108103610f9957610f98610f42565b5b50919050565b5f606082019050610fb25f830186610edc565b610fbf6020830185610e05565b610fcc6040830184610e05565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61100b82610d61565b915061101683610d61565b925082820190508082111561102e5761102d610fd4565b5b9291505056fea26469706673582212203e2e4dadbd7d97c23f659d54dc57d7529c6ef5f4ad2e8e938d2bd8e79bc45c0664736f6c63430008140033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB2 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x246 JUMPI PUSH2 0xB2 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x170 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0xBE PUSH2 0x262 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCB SWAP2 SWAP1 PUSH2 0xCE3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0xD94 JUMP JUMPDEST PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x314 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x137 SWAP2 SWAP1 PUSH2 0xE2D JUMP JUMPDEST PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15A PUSH2 0x34B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x167 SWAP2 SWAP1 PUSH2 0xE98 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x185 SWAP2 SWAP1 PUSH2 0xEB1 JUMP JUMPDEST PUSH2 0x353 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x197 SWAP2 SWAP1 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A8 PUSH2 0x398 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B2 PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BF SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D0 PUSH2 0x3D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DD SWAP2 SWAP1 PUSH2 0xCE3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x200 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FB SWAP2 SWAP1 PUSH2 0xD94 JUMP JUMPDEST PUSH2 0x463 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20D SWAP2 SWAP1 PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x22B SWAP2 SWAP1 PUSH2 0xF04 JUMP JUMPDEST PUSH2 0x485 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x260 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25B SWAP2 SWAP1 PUSH2 0xEB1 JUMP JUMPDEST PUSH2 0x507 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x271 SWAP1 PUSH2 0xF6F 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 0x29D SWAP1 PUSH2 0xF6F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2E8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2BF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2E8 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 0x2CB JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x2FC PUSH2 0x58B JUMP JUMPDEST SWAP1 POP PUSH2 0x309 DUP2 DUP6 DUP6 PUSH2 0x592 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x327 PUSH2 0x58B JUMP JUMPDEST SWAP1 POP PUSH2 0x334 DUP6 DUP3 DUP6 PUSH2 0x5A4 JUMP JUMPDEST PUSH2 0x33F DUP6 DUP6 DUP6 PUSH2 0x637 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3A0 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x3A9 PUSH0 PUSH2 0x7AE JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x3E2 SWAP1 PUSH2 0xF6F 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 0x40E SWAP1 PUSH2 0xF6F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x459 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x430 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x459 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 0x43C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x46D PUSH2 0x58B JUMP JUMPDEST SWAP1 POP PUSH2 0x47A DUP2 DUP6 DUP6 PUSH2 0x637 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x50F PUSH2 0x727 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x57F JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x588 DUP2 PUSH2 0x7AE JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x59F DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x871 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5AF DUP5 DUP5 PUSH2 0x485 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x631 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x622 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x619 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xF9F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x630 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x871 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x6A7 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69E SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x717 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x70E SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x722 DUP4 DUP4 DUP4 PUSH2 0xA40 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x72F PUSH2 0x58B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x74D PUSH2 0x3AB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7AC JUMPI PUSH2 0x770 PUSH2 0x58B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7A3 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x8E1 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8D8 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x951 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x948 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0xA3A JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0xA31 SWAP2 SWAP1 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xA90 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0xA84 SWAP2 SWAP1 PUSH2 0x1001 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xB5E JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xB19 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB10 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xF9F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH0 DUP1 DUP7 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 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xBA5 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xBEF JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP5 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 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xC4C SWAP2 SWAP1 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP 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 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC90 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xC75 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xCB5 DUP3 PUSH2 0xC59 JUMP JUMPDEST PUSH2 0xCBF DUP2 DUP6 PUSH2 0xC63 JUMP JUMPDEST SWAP4 POP PUSH2 0xCCF DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xC73 JUMP JUMPDEST PUSH2 0xCD8 DUP2 PUSH2 0xC9B 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 0xCFB DUP2 DUP5 PUSH2 0xCAB JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xD30 DUP3 PUSH2 0xD07 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD40 DUP2 PUSH2 0xD26 JUMP JUMPDEST DUP2 EQ PUSH2 0xD4A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD5B DUP2 PUSH2 0xD37 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD73 DUP2 PUSH2 0xD61 JUMP JUMPDEST DUP2 EQ PUSH2 0xD7D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD8E DUP2 PUSH2 0xD6A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDAA JUMPI PUSH2 0xDA9 PUSH2 0xD03 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xDB7 DUP6 DUP3 DUP7 ADD PUSH2 0xD4D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xDC8 DUP6 DUP3 DUP7 ADD PUSH2 0xD80 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xDE6 DUP2 PUSH2 0xDD2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xDFF PUSH0 DUP4 ADD DUP5 PUSH2 0xDDD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE0E DUP2 PUSH2 0xD61 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xE27 PUSH0 DUP4 ADD DUP5 PUSH2 0xE05 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE44 JUMPI PUSH2 0xE43 PUSH2 0xD03 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xE51 DUP7 DUP3 DUP8 ADD PUSH2 0xD4D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xE62 DUP7 DUP3 DUP8 ADD PUSH2 0xD4D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xE73 DUP7 DUP3 DUP8 ADD PUSH2 0xD80 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xE92 DUP2 PUSH2 0xE7D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xEAB PUSH0 DUP4 ADD DUP5 PUSH2 0xE89 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEC6 JUMPI PUSH2 0xEC5 PUSH2 0xD03 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xED3 DUP5 DUP3 DUP6 ADD PUSH2 0xD4D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xEE5 DUP2 PUSH2 0xD26 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xEFE PUSH0 DUP4 ADD DUP5 PUSH2 0xEDC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF1A JUMPI PUSH2 0xF19 PUSH2 0xD03 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xF27 DUP6 DUP3 DUP7 ADD PUSH2 0xD4D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xF38 DUP6 DUP3 DUP7 ADD PUSH2 0xD4D 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 0xF86 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xF99 JUMPI PUSH2 0xF98 PUSH2 0xF42 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xFB2 PUSH0 DUP4 ADD DUP7 PUSH2 0xEDC JUMP JUMPDEST PUSH2 0xFBF PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xE05 JUMP JUMPDEST PUSH2 0xFCC PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xE05 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x100B DUP3 PUSH2 0xD61 JUMP JUMPDEST SWAP2 POP PUSH2 0x1016 DUP4 PUSH2 0xD61 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x102E JUMPI PUSH2 0x102D PUSH2 0xFD4 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY 0x2E 0x4D 0xAD 0xBD PUSH30 0x97C23F659D54DC57D7529C6EF5F4AD2E8E938D2BD8E79BC45C0664736F6C PUSH4 0x43000814 STOP CALLER ",
"sourceMap": "270:204:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3902:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2803:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4680:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2688:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2933:116;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2293:101:0;;;:::i;:::-;;1638:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1962:93:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3244:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3455:140;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2543:215:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1760:89:2;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3902:186::-;3975:4;3991:13;4007:12;:10;:12::i;:::-;3991:28;;4029:31;4038:5;4045:7;4054:5;4029:8;:31::i;:::-;4077:4;4070:11;;;3902:186;;;;:::o;2803:97::-;2855:7;2881:12;;2874:19;;2803:97;:::o;4680:244::-;4767:4;4783:15;4801:12;:10;:12::i;:::-;4783:30;;4823:37;4839:4;4845:7;4854:5;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;4913:4;4906:11;;;4680:244;;;;;:::o;2688:82::-;2737:5;2761:2;2754:9;;2688:82;:::o;2933:116::-;2998:7;3024:9;:18;3034:7;3024:18;;;;;;;;;;;;;;;;3017:25;;2933:116;;;:::o;2293:101:0:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;1638:85::-;1684:7;1710:6;;;;;;;;;;;1703:13;;1638:85;:::o;1962:93:2:-;2009:13;2041:7;2034:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:93;:::o;3244:178::-;3313:4;3329:13;3345:12;:10;:12::i;:::-;3329:28;;3367:27;3377:5;3384:2;3388:5;3367:9;:27::i;:::-;3411:4;3404:11;;;3244:178;;;;:::o;3455:140::-;3535:7;3561:11;:18;3573:5;3561:18;;;;;;;;;;;;;;;:27;3580:7;3561:27;;;;;;;;;;;;;;;;3554:34;;3455:140;;;;:::o;2543:215:0:-;1531:13;:11;:13::i;:::-;2647:1:::1;2627:22;;:8;:22;;::::0;2623:91:::1;;2700:1;2672:31;;;;;;;;;;;:::i;:::-;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;656:96:5:-;709:7;735:10;728:17;;656:96;:::o;8630:128:2:-;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10319:476::-;10418:24;10445:25;10455:5;10462:7;10445:9;:25::i;:::-;10418:52;;10503:17;10484:16;:36;10480:309;;;10559:5;10540:16;:24;10536:130;;;10618:7;10627:16;10645:5;10591:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;10536:130;10707:57;10716:5;10723:7;10751:5;10732:16;:24;10758:5;10707:8;:57::i;:::-;10480:309;10408:387;10319:476;;;:::o;5297:300::-;5396:1;5380:18;;:4;:18;;;5376:86;;5448:1;5421:30;;;;;;;;;;;:::i;:::-;;;;;;;;5376:86;5489:1;5475:16;;:2;:16;;;5471:86;;5543:1;5514:32;;;;;;;;;;;:::i;:::-;;;;;;;;5471:86;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;:::-;5297:300;;;:::o;1796:162:0:-;1866:12;:10;:12::i;:::-;1855:23;;:7;:5;:7::i;:::-;:23;;;1851:101;;1928:12;:10;:12::i;:::-;1901:40;;;;;;;;;;;:::i;:::-;;;;;;;;1851:101;1796:162::o;2912:187::-;2985:16;3004:6;;;;;;;;;;;2985:25;;3029:8;3020:6;;:17;;;;;;;;;;;;;;;;;;3083:8;3052:40;;3073:8;3052:40;;;;;;;;;;;;2975:124;2912:187;:::o;9605:432:2:-;9734:1;9717:19;;:5;:19;;;9713:89;;9788:1;9759:32;;;;;;;;;;;:::i;:::-;;;;;;;;9713:89;9834:1;9815:21;;:7;:21;;;9811:90;;9887:1;9859:31;;;;;;;;;;;:::i;:::-;;;;;;;;9811:90;9940:5;9910:11;:18;9922:5;9910:18;;;;;;;;;;;;;;;:27;9929:7;9910:27;;;;;;;;;;;;;;;:35;;;;9959:9;9955:76;;;10005:7;9989:31;;9998:5;9989:31;;;10014:5;9989:31;;;;;;:::i;:::-;;;;;;;;9955:76;9605:432;;;;:::o;5912:1107::-;6017:1;6001:18;;:4;:18;;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;;;;;5997:540;;;6189:19;6211:9;:15;6221:4;6211:15;;;;;;;;;;;;;;;;6189:37;;6258:5;6244:11;:19;6240:115;;;6315:4;6321:11;6334:5;6290:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6240:115;6507:5;6493:11;:19;6475:9;:15;6485:4;6475:15;;;;;;;;;;;;;;;:37;;;;6175:362;5997:540;6565:1;6551:16;;:2;:16;;;6547:425;;6730:5;6714:12;;:21;;;;;;;;;;;6547:425;;;6942:5;6925:9;:13;6935:2;6925:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6547:425;7002:2;6987:25;;6996:4;6987:25;;;7006:5;6987:25;;;;;;:::i;:::-;;;;;;;;5912:1107;;;:::o;7:99:7:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:180::-;6068:77;6065:1;6058:88;6165:4;6162:1;6155:15;6189:4;6186:1;6179:15;6206:320;6250:6;6287:1;6281:4;6277:12;6267:22;;6334:1;6328:4;6324:12;6355:18;6345:81;;6411:4;6403:6;6399:17;6389:27;;6345:81;6473:2;6465:6;6462:14;6442:18;6439:38;6436:84;;6492:18;;:::i;:::-;6436:84;6257:269;6206:320;;;:::o;6532:442::-;6681:4;6719:2;6708:9;6704:18;6696:26;;6732:71;6800:1;6789:9;6785:17;6776:6;6732:71;:::i;:::-;6813:72;6881:2;6870:9;6866:18;6857:6;6813:72;:::i;:::-;6895;6963:2;6952:9;6948:18;6939:6;6895:72;:::i;:::-;6532:442;;;;;;:::o;6980:180::-;7028:77;7025:1;7018:88;7125:4;7122:1;7115:15;7149:4;7146:1;7139:15;7166:191;7206:3;7225:20;7243:1;7225:20;:::i;:::-;7220:25;;7259:20;7277:1;7259:20;:::i;:::-;7254:25;;7302:1;7299;7295:9;7288:16;;7323:3;7320:1;7317:10;7314:36;;;7330:18;;:::i;:::-;7314:36;7166:191;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "840400",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"allowance(address,address)": "infinite",
"approve(address,uint256)": "infinite",
"balanceOf(address)": "2940",
"decimals()": "427",
"name()": "infinite",
"owner()": "2537",
"renounceOwnership()": "infinite",
"symbol()": "infinite",
"totalSupply()": "2477",
"transfer(address,uint256)": "infinite",
"transferFrom(address,address,uint256)": "infinite",
"transferOwnership(address)": "infinite"
}
},
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"decimals()": "313ce567",
"name()": "06fdde03",
"owner()": "8da5cb5b",
"renounceOwnership()": "715018a6",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd",
"transferOwnership(address)": "f2fde38b"
}
},
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "initialSupply",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.20+commit.a1b79de6"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "initialSupply",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"errors": {
"ERC20InsufficientAllowance(address,uint256,uint256)": [
{
"details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.",
"params": {
"allowance": "Amount of tokens a `spender` is allowed to operate with.",
"needed": "Minimum amount required to perform a transfer.",
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"ERC20InsufficientBalance(address,uint256,uint256)": [
{
"details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.",
"params": {
"balance": "Current balance for the interacting account.",
"needed": "Minimum amount required to perform a transfer.",
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidApprover(address)": [
{
"details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.",
"params": {
"approver": "Address initiating an approval operation."
}
}
],
"ERC20InvalidReceiver(address)": [
{
"details": "Indicates a failure with the token `receiver`. Used in transfers.",
"params": {
"receiver": "Address to which tokens are being transferred."
}
}
],
"ERC20InvalidSender(address)": [
{
"details": "Indicates a failure with the token `sender`. Used in transfers.",
"params": {
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidSpender(address)": [
{
"details": "Indicates a failure with the `spender` to be approved. Used in approvals.",
"params": {
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"OwnableInvalidOwner(address)": [
{
"details": "The owner is not a valid owner account. (eg. `address(0)`)"
}
],
"OwnableUnauthorizedAccount(address)": [
{
"details": "The caller account is not authorized to perform an operation."
}
]
},
"events": {
"Approval(address,address,uint256)": {
"details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
},
"Transfer(address,address,uint256)": {
"details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
},
"approve(address,uint256)": {
"details": "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."
},
"balanceOf(address)": {
"details": "Returns the value of tokens owned by `account`."
},
"decimals()": {
"details": "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}."
},
"name()": {
"details": "Returns the name of the token."
},
"owner()": {
"details": "Returns the address of the current owner."
},
"renounceOwnership()": {
"details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. 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."
},
"symbol()": {
"details": "Returns the symbol of the token, usually a shorter version of the name."
},
"totalSupply()": {
"details": "Returns the value of tokens in existence."
},
"transfer(address,uint256)": {
"details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."
},
"transferFrom(address,address,uint256)": {
"details": "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`."
},
"transferOwnership(address)": {
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
}
},
"title": "ShadowPhoenix (DARK) - Fixed Supply ERC20 Token",
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"notice": "Total Supply: 420,000,000 DARK",
"version": 1
}
},
"settings": {
"compilationTarget": {
"ShadowPhoenix.sol": "ShadowPhoenix"
},
"evmVersion": "shanghai",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"@openzeppelin/contracts/access/Ownable.sol": {
"keccak256": "0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb",
"license": "MIT",
"urls": [
"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6",
"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"
]
},
"@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
"keccak256": "0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e",
"license": "MIT",
"urls": [
"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23",
"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR"
]
},
"@openzeppelin/contracts/token/ERC20/ERC20.sol": {
"keccak256": "0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994",
"license": "MIT",
"urls": [
"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c",
"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu"
]
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"keccak256": "0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2",
"license": "MIT",
"urls": [
"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303",
"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"
]
},
"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
"keccak256": "0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f",
"license": "MIT",
"urls": [
"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e",
"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"
]
},
"@openzeppelin/contracts/utils/Context.sol": {
"keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2",
"license": "MIT",
"urls": [
"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12",
"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"
]
},
"ShadowPhoenix.sol": {
"keccak256": "0x251239a92cf7e211f1b73bbb8e06cde440c192438954d28b31a082c67aa2701a",
"license": "MIT",
"urls": [
"bzz-raw://dfcfcea202ff5a541bf6e63bf2b993fa3a23d3e16caab35a7e446fd4e4fbe104",
"dweb:/ipfs/QmfW2GMx5oLAb9YUYqjSSB3QjH4UoqmZNHV6D8wchdkEHC"
]
}
},
"version": 1
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
/// @title ShadowPhoenix (DARK) - Fixed Supply ERC20 Token
/// @notice Total Supply: 420,000,000 DARK
contract ShadowPhoenix is ERC20, Ownable {
constructor(uint256 initialSupply)
ERC20("ShadowPhoenix", "DARK")
Ownable(msg.sender)
{
_mint(msg.sender, initialSupply);
}
}
This file has been truncated, but you can view the full file.
{
"id": "355beecfbcf2c662d7245062df3ab5a9",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.20",
"solcLongVersion": "0.8.20+commit.a1b79de6",
"input": {
"language": "Solidity",
"sources": {
"ShadowPhoenix.sol": {
"content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\n/// @title ShadowPhoenix (DARK) - Fixed Supply ERC20 Token\n/// @notice Total Supply: 420,000,000 DARK\ncontract ShadowPhoenix is ERC20, Ownable {\n constructor(uint256 initialSupply)\n ERC20(\"ShadowPhoenix\", \"DARK\")\n Ownable(msg.sender)\n {\n _mint(msg.sender, initialSupply);\n }\n}\n"
},
"@openzeppelin/contracts/access/Ownable.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n /**\n * @dev The caller account is not authorized to perform an operation.\n */\n error OwnableUnauthorizedAccount(address account);\n\n /**\n * @dev The owner is not a valid owner account. (eg. `address(0)`)\n */\n error OwnableInvalidOwner(address owner);\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n */\n constructor(address initialOwner) {\n if (initialOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(initialOwner);\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n if (owner() != _msgSender()) {\n revert OwnableUnauthorizedAccount(_msgSender());\n }\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n if (newOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"
},
"@openzeppelin/contracts/token/ERC20/ERC20.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n mapping(address account => uint256) private _balances;\n\n mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * Both values are immutable: they can only be set once during construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual returns (uint8) {\n return 18;\n }\n\n /// @inheritdoc IERC20\n function totalSupply() public view virtual returns (uint256) {\n return _totalSupply;\n }\n\n /// @inheritdoc IERC20\n function balanceOf(address account) public view virtual returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `value`.\n */\n function transfer(address to, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, value);\n return true;\n }\n\n /// @inheritdoc IERC20\n function allowance(address owner, address spender) public view virtual returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Skips emitting an {Approval} event indicating an allowance update. This is not\n * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `value`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `value`.\n */\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, value);\n _transfer(from, to, value);\n return true;\n }\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _transfer(address from, address to, uint256 value) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n if (to == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(from, to, value);\n }\n\n /**\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n * this function.\n *\n * Emits a {Transfer} event.\n */\n function _update(address from, address to, uint256 value) internal virtual {\n if (from == address(0)) {\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\n _totalSupply += value;\n } else {\n uint256 fromBalance = _balances[from];\n if (fromBalance < value) {\n revert ERC20InsufficientBalance(from, fromBalance, value);\n }\n unchecked {\n // Overflow not possible: value <= fromBalance <= totalSupply.\n _balances[from] = fromBalance - value;\n }\n }\n\n if (to == address(0)) {\n unchecked {\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n _totalSupply -= value;\n }\n } else {\n unchecked {\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n _balances[to] += value;\n }\n }\n\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n * Relies on the `_update` mechanism\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _mint(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(address(0), account, value);\n }\n\n /**\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n * Relies on the `_update` mechanism.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead\n */\n function _burn(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n _update(account, address(0), value);\n }\n\n /**\n * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n _approve(owner, spender, value, true);\n }\n\n /**\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n *\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n * `Approval` event during `transferFrom` operations.\n *\n * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n * true using the following override:\n *\n * ```solidity\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n * super._approve(owner, spender, value, true);\n * }\n * ```\n *\n * Requirements are the same as {_approve}.\n */\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n if (owner == address(0)) {\n revert ERC20InvalidApprover(address(0));\n }\n if (spender == address(0)) {\n revert ERC20InvalidSpender(address(0));\n }\n _allowances[owner][spender] = value;\n if (emitEvent) {\n emit Approval(owner, spender, value);\n }\n }\n\n /**\n * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n *\n * Does not update the allowance value in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Does not emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance < type(uint256).max) {\n if (currentAllowance < value) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n }\n unchecked {\n _approve(owner, spender, currentAllowance - value, false);\n }\n }\n }\n}\n"
},
"@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC6093.sol)\npragma solidity >=0.8.4;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"
},
"@openzeppelin/contracts/utils/Context.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n"
},
"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity >=0.6.2;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n"
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)\n\npragma solidity >=0.4.16;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
},
"remappings": []
}
},
"output": {
"contracts": {
"@openzeppelin/contracts/access/Ownable.sol": {
"Ownable": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. 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.",
"errors": {
"OwnableInvalidOwner(address)": [
{
"details": "The owner is not a valid owner account. (eg. `address(0)`)"
}
],
"OwnableUnauthorizedAccount(address)": [
{
"details": "The caller account is not authorized to perform an operation."
}
]
},
"kind": "dev",
"methods": {
"constructor": {
"details": "Initializes the contract setting the address provided by the deployer as the initial owner."
},
"owner()": {
"details": "Returns the address of the current owner."
},
"renounceOwnership()": {
"details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. 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."
},
"transferOwnership(address)": {
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"owner()": "8da5cb5b",
"renounceOwnership()": "715018a6",
"transferOwnership(address)": "f2fde38b"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. 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.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. 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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}",
"storageLayout": {
"storage": [
{
"astId": 8,
"contract": "@openzeppelin/contracts/access/Ownable.sol:Ownable",
"label": "_owner",
"offset": 0,
"slot": "0",
"type": "t_address"
}
],
"types": {
"t_address": {
"encoding": "inplace",
"label": "address",
"numberOfBytes": "20"
}
}
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
"IERC1155Errors": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ERC1155InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC1155InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "idsLength",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "valuesLength",
"type": "uint256"
}
],
"name": "ERC1155InvalidArrayLength",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "ERC1155InvalidOperator",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC1155InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC1155InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "ERC1155MissingApprovalForAll",
"type": "error"
}
],
"devdoc": {
"details": "Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.",
"errors": {
"ERC1155InsufficientBalance(address,uint256,uint256,uint256)": [
{
"details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.",
"params": {
"balance": "Current balance for the interacting account.",
"needed": "Minimum amount required to perform a transfer.",
"sender": "Address whose tokens are being transferred.",
"tokenId": "Identifier number of a token."
}
}
],
"ERC1155InvalidApprover(address)": [
{
"details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.",
"params": {
"approver": "Address initiating an approval operation."
}
}
],
"ERC1155InvalidArrayLength(uint256,uint256)": [
{
"details": "Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.",
"params": {
"idsLength": "Length of the array of token identifiers",
"valuesLength": "Length of the array of token amounts"
}
}
],
"ERC1155InvalidOperator(address)": [
{
"details": "Indicates a failure with the `operator` to be approved. Used in approvals.",
"params": {
"operator": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"ERC1155InvalidReceiver(address)": [
{
"details": "Indicates a failure with the token `receiver`. Used in transfers.",
"params": {
"receiver": "Address to which tokens are being transferred."
}
}
],
"ERC1155InvalidSender(address)": [
{
"details": "Indicates a failure with the token `sender`. Used in transfers.",
"params": {
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC1155MissingApprovalForAll(address,address)": [
{
"details": "Indicates a failure with the `operator`’s approval. Used in transfers.",
"params": {
"operator": "Address that may be allowed to operate on tokens without being their owner.",
"owner": "Address of the current owner of a token."
}
}
]
},
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"IERC20Errors": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
}
],
"devdoc": {
"details": "Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.",
"errors": {
"ERC20InsufficientAllowance(address,uint256,uint256)": [
{
"details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.",
"params": {
"allowance": "Amount of tokens a `spender` is allowed to operate with.",
"needed": "Minimum amount required to perform a transfer.",
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"ERC20InsufficientBalance(address,uint256,uint256)": [
{
"details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.",
"params": {
"balance": "Current balance for the interacting account.",
"needed": "Minimum amount required to perform a transfer.",
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidApprover(address)": [
{
"details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.",
"params": {
"approver": "Address initiating an approval operation."
}
}
],
"ERC20InvalidReceiver(address)": [
{
"details": "Indicates a failure with the token `receiver`. Used in transfers.",
"params": {
"receiver": "Address to which tokens are being transferred."
}
}
],
"ERC20InvalidSender(address)": [
{
"details": "Indicates a failure with the token `sender`. Used in transfers.",
"params": {
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidSpender(address)": [
{
"details": "Indicates a failure with the `spender` to be approved. Used in approvals.",
"params": {
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
]
},
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"IERC721Errors": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "ERC721IncorrectOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ERC721InsufficientApproval",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC721InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "ERC721InvalidOperator",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "ERC721InvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC721InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC721InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ERC721NonexistentToken",
"type": "error"
}
],
"devdoc": {
"details": "Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.",
"errors": {
"ERC721IncorrectOwner(address,uint256,address)": [
{
"details": "Indicates an error related to the ownership over a particular token. Used in transfers.",
"params": {
"owner": "Address of the current owner of a token.",
"sender": "Address whose tokens are being transferred.",
"tokenId": "Identifier number of a token."
}
}
],
"ERC721InsufficientApproval(address,uint256)": [
{
"details": "Indicates a failure with the `operator`’s approval. Used in transfers.",
"params": {
"operator": "Address that may be allowed to operate on tokens without being their owner.",
"tokenId": "Identifier number of a token."
}
}
],
"ERC721InvalidApprover(address)": [
{
"details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.",
"params": {
"approver": "Address initiating an approval operation."
}
}
],
"ERC721InvalidOperator(address)": [
{
"details": "Indicates a failure with the `operator` to be approved. Used in approvals.",
"params": {
"operator": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"ERC721InvalidOwner(address)": [
{
"details": "Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.",
"params": {
"owner": "Address of the current owner of a token."
}
}
],
"ERC721InvalidReceiver(address)": [
{
"details": "Indicates a failure with the token `receiver`. Used in transfers.",
"params": {
"receiver": "Address to which tokens are being transferred."
}
}
],
"ERC721InvalidSender(address)": [
{
"details": "Indicates a failure with the token `sender`. Used in transfers.",
"params": {
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC721NonexistentToken(uint256)": [
{
"details": "Indicates a `tokenId` whose `owner` is the zero address.",
"params": {
"tokenId": "Identifier number of a token."
}
}
]
},
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/token/ERC20/ERC20.sol": {
"ERC20": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "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.",
"errors": {
"ERC20InsufficientAllowance(address,uint256,uint256)": [
{
"details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.",
"params": {
"allowance": "Amount of tokens a `spender` is allowed to operate with.",
"needed": "Minimum amount required to perform a transfer.",
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"ERC20InsufficientBalance(address,uint256,uint256)": [
{
"details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.",
"params": {
"balance": "Current balance for the interacting account.",
"needed": "Minimum amount required to perform a transfer.",
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidApprover(address)": [
{
"details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.",
"params": {
"approver": "Address initiating an approval operation."
}
}
],
"ERC20InvalidReceiver(address)": [
{
"details": "Indicates a failure with the token `receiver`. Used in transfers.",
"params": {
"receiver": "Address to which tokens are being transferred."
}
}
],
"ERC20InvalidSender(address)": [
{
"details": "Indicates a failure with the token `sender`. Used in transfers.",
"params": {
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidSpender(address)": [
{
"details": "Indicates a failure with the `spender` to be approved. Used in approvals.",
"params": {
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
]
},
"events": {
"Approval(address,address,uint256)": {
"details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
},
"Transfer(address,address,uint256)": {
"details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
},
"approve(address,uint256)": {
"details": "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."
},
"balanceOf(address)": {
"details": "Returns the value of tokens owned by `account`."
},
"constructor": {
"details": "Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction."
},
"decimals()": {
"details": "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}."
},
"name()": {
"details": "Returns the name of the token."
},
"symbol()": {
"details": "Returns the symbol of the token, usually a shorter version of the name."
},
"totalSupply()": {
"details": "Returns the value of tokens in existence."
},
"transfer(address,uint256)": {
"details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."
},
"transferFrom(address,address,uint256)": {
"details": "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`."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"decimals()": "313ce567",
"name()": "06fdde03",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"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.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"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.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"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}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"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`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x86b7b71a6aedefdad89b607378eeab1dcc5389b9ea7d17346d08af01d7190994\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc2db8d94a21eac8efe03adf574c419b08536409b416057a2b5b95cb772c43c\",\"dweb:/ipfs/QmZfqJCKVU1ScuX2A7s8WZdQEaikwJbDH5JBrBdKTUT4Gu\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}",
"storageLayout": {
"storage": [
{
"astId": 307,
"contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
"label": "_balances",
"offset": 0,
"slot": "0",
"type": "t_mapping(t_address,t_uint256)"
},
{
"astId": 313,
"contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
"label": "_allowances",
"offset": 0,
"slot": "1",
"type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
},
{
"astId": 315,
"contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
"label": "_totalSupply",
"offset": 0,
"slot": "2",
"type": "t_uint256"
},
{
"astId": 317,
"contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
"label": "_name",
"offset": 0,
"slot": "3",
"type": "t_string_storage"
},
{
"astId": 319,
"contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
"label": "_symbol",
"offset": 0,
"slot": "4",
"type": "t_string_storage"
}
],
"types": {
"t_address": {
"encoding": "inplace",
"label": "address",
"numberOfBytes": "20"
},
"t_mapping(t_address,t_mapping(t_address,t_uint256))": {
"encoding": "mapping",
"key": "t_address",
"label": "mapping(address => mapping(address => uint256))",
"numberOfBytes": "32",
"value": "t_mapping(t_address,t_uint256)"
},
"t_mapping(t_address,t_uint256)": {
"encoding": "mapping",
"key": "t_address",
"label": "mapping(address => uint256)",
"numberOfBytes": "32",
"value": "t_uint256"
},
"t_string_storage": {
"encoding": "bytes",
"label": "string",
"numberOfBytes": "32"
},
"t_uint256": {
"encoding": "inplace",
"label": "uint256",
"numberOfBytes": "32"
}
}
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/token/ERC20/IERC20.sol": {
"IERC20": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Interface of the ERC-20 standard as defined in the ERC.",
"events": {
"Approval(address,address,uint256)": {
"details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
},
"Transfer(address,address,uint256)": {
"details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
},
"approve(address,uint256)": {
"details": "Sets 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."
},
"balanceOf(address)": {
"details": "Returns the value of tokens owned by `account`."
},
"totalSupply()": {
"details": "Returns the value of tokens in existence."
},
"transfer(address,uint256)": {
"details": "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."
},
"transferFrom(address,address,uint256)": {
"details": "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."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets 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.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"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.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
"IERC20Metadata": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Interface for the optional metadata functions from the ERC-20 standard.",
"events": {
"Approval(address,address,uint256)": {
"details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
},
"Transfer(address,address,uint256)": {
"details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
},
"approve(address,uint256)": {
"details": "Sets 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."
},
"balanceOf(address)": {
"details": "Returns the value of tokens owned by `account`."
},
"decimals()": {
"details": "Returns the decimals places of the token."
},
"name()": {
"details": "Returns the name of the token."
},
"symbol()": {
"details": "Returns the symbol of the token."
},
"totalSupply()": {
"details": "Returns the value of tokens in existence."
},
"transfer(address,uint256)": {
"details": "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."
},
"transferFrom(address,address,uint256)": {
"details": "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."
}
},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"decimals()": "313ce567",
"name()": "06fdde03",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets 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.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"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.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"@openzeppelin/contracts/utils/Context.sol": {
"Context": {
"abi": [],
"devdoc": {
"details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.",
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": "",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"legacyAssembly": null,
"methodIdentifiers": {}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"ShadowPhoenix.sol": {
"ShadowPhoenix": {
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "initialSupply",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"errors": {
"ERC20InsufficientAllowance(address,uint256,uint256)": [
{
"details": "Indicates a failure with the `spender`’s `allowance`. Used in transfers.",
"params": {
"allowance": "Amount of tokens a `spender` is allowed to operate with.",
"needed": "Minimum amount required to perform a transfer.",
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"ERC20InsufficientBalance(address,uint256,uint256)": [
{
"details": "Indicates an error related to the current `balance` of a `sender`. Used in transfers.",
"params": {
"balance": "Current balance for the interacting account.",
"needed": "Minimum amount required to perform a transfer.",
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidApprover(address)": [
{
"details": "Indicates a failure with the `approver` of a token to be approved. Used in approvals.",
"params": {
"approver": "Address initiating an approval operation."
}
}
],
"ERC20InvalidReceiver(address)": [
{
"details": "Indicates a failure with the token `receiver`. Used in transfers.",
"params": {
"receiver": "Address to which tokens are being transferred."
}
}
],
"ERC20InvalidSender(address)": [
{
"details": "Indicates a failure with the token `sender`. Used in transfers.",
"params": {
"sender": "Address whose tokens are being transferred."
}
}
],
"ERC20InvalidSpender(address)": [
{
"details": "Indicates a failure with the `spender` to be approved. Used in approvals.",
"params": {
"spender": "Address that may be allowed to operate on tokens without being their owner."
}
}
],
"OwnableInvalidOwner(address)": [
{
"details": "The owner is not a valid owner account. (eg. `address(0)`)"
}
],
"OwnableUnauthorizedAccount(address)": [
{
"details": "The caller account is not authorized to perform an operation."
}
]
},
"events": {
"Approval(address,address,uint256)": {
"details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
},
"Transfer(address,address,uint256)": {
"details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
},
"approve(address,uint256)": {
"details": "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."
},
"balanceOf(address)": {
"details": "Returns the value of tokens owned by `account`."
},
"decimals()": {
"details": "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}."
},
"name()": {
"details": "Returns the name of the token."
},
"owner()": {
"details": "Returns the address of the current owner."
},
"renounceOwnership()": {
"details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. 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."
},
"symbol()": {
"details": "Returns the symbol of the token, usually a shorter version of the name."
},
"totalSupply()": {
"details": "Returns the value of tokens in existence."
},
"transfer(address,uint256)": {
"details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."
},
"transferFrom(address,address,uint256)": {
"details": "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`."
},
"transferOwnership(address)": {
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
}
},
"title": "ShadowPhoenix (DARK) - Fixed Supply ERC20 Token",
"version": 1
},
"evm": {
"assembly": " /* \"ShadowPhoenix.sol\":270:474 contract ShadowPhoenix is ERC20, Ownable {... */\n mstore(0x40, 0x80)\n /* \"ShadowPhoenix.sol\":317:472 constructor(uint256 initialSupply)... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n mload(0x40)\n sub(codesize, bytecodeSize)\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n dup2\n add\n 0x40\n mstore\n dup2\n add\n swap1\n tag_2\n swap2\n swap1\n tag_3\n jump\t// in\ntag_2:\n /* \"ShadowPhoenix.sol\":407:417 msg.sender */\n caller\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1582:1695 constructor(string memory name_, string memory symbol_) {... */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x0d\n dup2\n mstore\n 0x20\n add\n 0x536861646f7750686f656e697800000000000000000000000000000000000000\n dup2\n mstore\n pop\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x04\n dup2\n mstore\n 0x20\n add\n 0x4441524b00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1656:1661 name_ */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1648:1653 _name */\n 0x03\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1648:1661 _name = name_ */\n swap1\n dup2\n tag_8\n swap2\n swap1\n tag_9\n jump\t// in\ntag_8:\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1681:1688 symbol_ */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1671:1678 _symbol */\n 0x04\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1671:1688 _symbol = symbol_ */\n swap1\n dup2\n tag_10\n swap2\n swap1\n tag_9\n jump\t// in\ntag_10:\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1582:1695 constructor(string memory name_, string memory symbol_) {... */\n pop\n pop\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1297:1298 0 */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1273:1299 initialOwner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1273:1285 initialOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1273:1299 initialOwner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1269:1364 if (initialOwner == address(0)) {... */\n tag_12\n jumpi\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1350:1351 0 */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1322:1353 OwnableInvalidOwner(address(0)) */\n mload(0x40)\n 0x1e4fbdf700000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_13\n swap2\n swap1\n tag_14\n jump\t// in\ntag_13:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1269:1364 if (initialOwner == address(0)) {... */\ntag_12:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1373:1405 _transferOwnership(initialOwner) */\n tag_15\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1392:1404 initialOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1373:1391 _transferOwnership */\n shl(0x20, tag_16)\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1373:1405 _transferOwnership(initialOwner) */\n 0x20\n shr\n jump\t// in\ntag_15:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1225:1412 constructor(address initialOwner) {... */\n pop\n /* \"ShadowPhoenix.sol\":433:465 _mint(msg.sender, initialSupply) */\n tag_18\n /* \"ShadowPhoenix.sol\":439:449 msg.sender */\n caller\n /* \"ShadowPhoenix.sol\":451:464 initialSupply */\n dup3\n /* \"ShadowPhoenix.sol\":433:438 _mint */\n shl(0x20, tag_19)\n /* \"ShadowPhoenix.sol\":433:465 _mint(msg.sender, initialSupply) */\n 0x20\n shr\n jump\t// in\ntag_18:\n /* \"ShadowPhoenix.sol\":317:472 constructor(uint256 initialSupply)... */\n pop\n /* \"ShadowPhoenix.sol\":270:474 contract ShadowPhoenix is ERC20, Ownable {... */\n jump(tag_20)\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2912:3099 function _transferOwnership(address newOwner) internal virtual {... */\ntag_16:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2985:3001 address oldOwner */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3004:3010 _owner */\n 0x05\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2985:3010 address oldOwner = _owner */\n swap1\n pop\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3029:3037 newOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3020:3026 _owner */\n 0x05\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3020:3037 _owner = newOwner */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3083:3091 newOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3052:3092 OwnershipTransferred(oldOwner, newOwner) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3073:3081 oldOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3052:3092 OwnershipTransferred(oldOwner, newOwner) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2975:3099 {... */\n pop\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2912:3099 function _transferOwnership(address newOwner) internal virtual {... */\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7362:7570 function _mint(address account, uint256 value) internal {... */\ntag_19:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7451:7452 0 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7432:7453 account == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7432:7439 account */\n dup3\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7432:7453 account == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7428:7519 if (account == address(0)) {... */\n tag_23\n jumpi\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7505:7506 0 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7476:7508 ERC20InvalidReceiver(address(0)) */\n mload(0x40)\n 0xec442f0500000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_24\n swap2\n swap1\n tag_14\n jump\t// in\ntag_24:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7428:7519 if (account == address(0)) {... */\ntag_23:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7528:7563 _update(address(0), account, value) */\n tag_25\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7544:7545 0 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7548:7555 account */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7557:7562 value */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7528:7535 _update */\n shl(0x20, tag_26)\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7528:7563 _update(address(0), account, value) */\n 0x20\n shr\n jump\t// in\ntag_25:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7362:7570 function _mint(address account, uint256 value) internal {... */\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5912:7019 function _update(address from, address to, uint256 value) internal virtual {... */\ntag_26:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6017:6018 0 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6001:6019 from == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6001:6005 from */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6001:6019 from == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5997:6537 if (from == address(0)) {... */\n tag_28\n jumpi\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6153:6158 value */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6137:6149 _totalSupply */\n 0x02\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6137:6158 _totalSupply += value */\n dup3\n dup3\n sload\n tag_29\n swap2\n swap1\n tag_30\n jump\t// in\ntag_29:\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5997:6537 if (from == address(0)) {... */\n jump(tag_31)\ntag_28:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6189:6208 uint256 fromBalance */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6211:6220 _balances */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6211:6226 _balances[from] */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6221:6225 from */\n dup6\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6211:6226 _balances[from] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6189:6226 uint256 fromBalance = _balances[from] */\n swap1\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6258:6263 value */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6244:6255 fromBalance */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6244:6263 fromBalance < value */\n lt\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6240:6355 if (fromBalance < value) {... */\n iszero\n tag_32\n jumpi\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6315:6319 from */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6321:6332 fromBalance */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6334:6339 value */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6290:6340 ERC20InsufficientBalance(from, fromBalance, value) */\n mload(0x40)\n 0xe450d38c00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_33\n swap4\n swap3\n swap2\n swap1\n tag_34\n jump\t// in\ntag_33:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6240:6355 if (fromBalance < value) {... */\ntag_32:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6507:6512 value */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6493:6504 fromBalance */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6493:6512 fromBalance - value */\n sub\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6475:6484 _balances */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6475:6490 _balances[from] */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6485:6489 from */\n dup7\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6475:6490 _balances[from] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6475:6512 _balances[from] = fromBalance - value */\n dup2\n swap1\n sstore\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6175:6537 {... */\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5997:6537 if (from == address(0)) {... */\ntag_31:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6565:6566 0 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6551:6567 to == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6551:6553 to */\n dup3\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6551:6567 to == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6547:6972 if (to == address(0)) {... */\n tag_35\n jumpi\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6730:6735 value */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6714:6726 _totalSupply */\n 0x02\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6714:6735 _totalSupply -= value */\n dup3\n dup3\n sload\n sub\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6547:6972 if (to == address(0)) {... */\n jump(tag_36)\ntag_35:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6942:6947 value */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6925:6934 _balances */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6925:6938 _balances[to] */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6935:6937 to */\n dup5\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6925:6938 _balances[to] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6925:6947 _balances[to] += value */\n dup3\n dup3\n sload\n add\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6547:6972 if (to == address(0)) {... */\ntag_36:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7002:7004 to */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6987:7012 Transfer(from, to, value) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6996:7000 from */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6987:7012 Transfer(from, to, value) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7006:7011 value */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6987:7012 Transfer(from, to, value) */\n mload(0x40)\n tag_37\n swap2\n swap1\n tag_38\n jump\t// in\ntag_37:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5912:7019 function _update(address from, address to, uint256 value) internal virtual {... */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":88:205 */\ntag_40:\n /* \"#utility.yul\":197:198 */\n 0x00\n /* \"#utility.yul\":194:195 */\n dup1\n /* \"#utility.yul\":187:199 */\n revert\n /* \"#utility.yul\":334:411 */\ntag_42:\n /* \"#utility.yul\":371:378 */\n 0x00\n /* \"#utility.yul\":400:405 */\n dup2\n /* \"#utility.yul\":389:405 */\n swap1\n pop\n /* \"#utility.yul\":334:411 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":417:539 */\ntag_43:\n /* \"#utility.yul\":490:514 */\n tag_75\n /* \"#utility.yul\":508:513 */\n dup2\n /* \"#utility.yul\":490:514 */\n tag_42\n jump\t// in\ntag_75:\n /* \"#utility.yul\":483:488 */\n dup2\n /* \"#utility.yul\":480:515 */\n eq\n /* \"#utility.yul\":470:533 */\n tag_76\n jumpi\n /* \"#utility.yul\":529:530 */\n 0x00\n /* \"#utility.yul\":526:527 */\n dup1\n /* \"#utility.yul\":519:531 */\n revert\n /* \"#utility.yul\":470:533 */\ntag_76:\n /* \"#utility.yul\":417:539 */\n pop\n jump\t// out\n /* \"#utility.yul\":545:688 */\ntag_44:\n /* \"#utility.yul\":602:607 */\n 0x00\n /* \"#utility.yul\":633:639 */\n dup2\n /* \"#utility.yul\":627:640 */\n mload\n /* \"#utility.yul\":618:640 */\n swap1\n pop\n /* \"#utility.yul\":649:682 */\n tag_78\n /* \"#utility.yul\":676:681 */\n dup2\n /* \"#utility.yul\":649:682 */\n tag_43\n jump\t// in\ntag_78:\n /* \"#utility.yul\":545:688 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":694:1045 */\ntag_3:\n /* \"#utility.yul\":764:770 */\n 0x00\n /* \"#utility.yul\":813:815 */\n 0x20\n /* \"#utility.yul\":801:810 */\n dup3\n /* \"#utility.yul\":792:799 */\n dup5\n /* \"#utility.yul\":788:811 */\n sub\n /* \"#utility.yul\":784:816 */\n slt\n /* \"#utility.yul\":781:900 */\n iszero\n tag_80\n jumpi\n /* \"#utility.yul\":819:898 */\n tag_81\n tag_40\n jump\t// in\ntag_81:\n /* \"#utility.yul\":781:900 */\ntag_80:\n /* \"#utility.yul\":939:940 */\n 0x00\n /* \"#utility.yul\":964:1028 */\n tag_82\n /* \"#utility.yul\":1020:1027 */\n dup5\n /* \"#utility.yul\":1011:1017 */\n dup3\n /* \"#utility.yul\":1000:1009 */\n dup6\n /* \"#utility.yul\":996:1018 */\n add\n /* \"#utility.yul\":964:1028 */\n tag_44\n jump\t// in\ntag_82:\n /* \"#utility.yul\":954:1028 */\n swap2\n pop\n /* \"#utility.yul\":910:1038 */\n pop\n /* \"#utility.yul\":694:1045 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1051:1150 */\ntag_45:\n /* \"#utility.yul\":1103:1109 */\n 0x00\n /* \"#utility.yul\":1137:1142 */\n dup2\n /* \"#utility.yul\":1131:1143 */\n mload\n /* \"#utility.yul\":1121:1143 */\n swap1\n pop\n /* \"#utility.yul\":1051:1150 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1156:1336 */\ntag_46:\n /* \"#utility.yul\":1204:1281 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":1201:1202 */\n 0x00\n /* \"#utility.yul\":1194:1282 */\n mstore\n /* \"#utility.yul\":1301:1305 */\n 0x41\n /* \"#utility.yul\":1298:1299 */\n 0x04\n /* \"#utility.yul\":1291:1306 */\n mstore\n /* \"#utility.yul\":1325:1329 */\n 0x24\n /* \"#utility.yul\":1322:1323 */\n 0x00\n /* \"#utility.yul\":1315:1330 */\n revert\n /* \"#utility.yul\":1342:1522 */\ntag_47:\n /* \"#utility.yul\":1390:1467 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":1387:1388 */\n 0x00\n /* \"#utility.yul\":1380:1468 */\n mstore\n /* \"#utility.yul\":1487:1491 */\n 0x22\n /* \"#utility.yul\":1484:1485 */\n 0x04\n /* \"#utility.yul\":1477:1492 */\n mstore\n /* \"#utility.yul\":1511:1515 */\n 0x24\n /* \"#utility.yul\":1508:1509 */\n 0x00\n /* \"#utility.yul\":1501:1516 */\n revert\n /* \"#utility.yul\":1528:1848 */\ntag_48:\n /* \"#utility.yul\":1572:1578 */\n 0x00\n /* \"#utility.yul\":1609:1610 */\n 0x02\n /* \"#utility.yul\":1603:1607 */\n dup3\n /* \"#utility.yul\":1599:1611 */\n div\n /* \"#utility.yul\":1589:1611 */\n swap1\n pop\n /* \"#utility.yul\":1656:1657 */\n 0x01\n /* \"#utility.yul\":1650:1654 */\n dup3\n /* \"#utility.yul\":1646:1658 */\n and\n /* \"#utility.yul\":1677:1695 */\n dup1\n /* \"#utility.yul\":1667:1748 */\n tag_87\n jumpi\n /* \"#utility.yul\":1733:1737 */\n 0x7f\n /* \"#utility.yul\":1725:1731 */\n dup3\n /* \"#utility.yul\":1721:1738 */\n and\n /* \"#utility.yul\":1711:1738 */\n swap2\n pop\n /* \"#utility.yul\":1667:1748 */\ntag_87:\n /* \"#utility.yul\":1795:1797 */\n 0x20\n /* \"#utility.yul\":1787:1793 */\n dup3\n /* \"#utility.yul\":1784:1798 */\n lt\n /* \"#utility.yul\":1764:1782 */\n dup2\n /* \"#utility.yul\":1761:1799 */\n sub\n /* \"#utility.yul\":1758:1842 */\n tag_88\n jumpi\n /* \"#utility.yul\":1814:1832 */\n tag_89\n tag_47\n jump\t// in\ntag_89:\n /* \"#utility.yul\":1758:1842 */\ntag_88:\n /* \"#utility.yul\":1579:1848 */\n pop\n /* \"#utility.yul\":1528:1848 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1854:1995 */\ntag_49:\n /* \"#utility.yul\":1903:1907 */\n 0x00\n /* \"#utility.yul\":1926:1929 */\n dup2\n /* \"#utility.yul\":1918:1929 */\n swap1\n pop\n /* \"#utility.yul\":1949:1952 */\n dup2\n /* \"#utility.yul\":1946:1947 */\n 0x00\n /* \"#utility.yul\":1939:1953 */\n mstore\n /* \"#utility.yul\":1983:1987 */\n 0x20\n /* \"#utility.yul\":1980:1981 */\n 0x00\n /* \"#utility.yul\":1970:1988 */\n keccak256\n /* \"#utility.yul\":1962:1988 */\n swap1\n pop\n /* \"#utility.yul\":1854:1995 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2001:2094 */\ntag_50:\n /* \"#utility.yul\":2038:2044 */\n 0x00\n /* \"#utility.yul\":2085:2087 */\n 0x20\n /* \"#utility.yul\":2080:2082 */\n 0x1f\n /* \"#utility.yul\":2073:2078 */\n dup4\n /* \"#utility.yul\":2069:2083 */\n add\n /* \"#utility.yul\":2065:2088 */\n div\n /* \"#utility.yul\":2055:2088 */\n swap1\n pop\n /* \"#utility.yul\":2001:2094 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2100:2207 */\ntag_51:\n /* \"#utility.yul\":2144:2152 */\n 0x00\n /* \"#utility.yul\":2194:2199 */\n dup3\n /* \"#utility.yul\":2188:2192 */\n dup3\n /* \"#utility.yul\":2184:2200 */\n shl\n /* \"#utility.yul\":2163:2200 */\n swap1\n pop\n /* \"#utility.yul\":2100:2207 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2213:2606 */\ntag_52:\n /* \"#utility.yul\":2282:2288 */\n 0x00\n /* \"#utility.yul\":2332:2333 */\n 0x08\n /* \"#utility.yul\":2320:2330 */\n dup4\n /* \"#utility.yul\":2316:2334 */\n mul\n /* \"#utility.yul\":2355:2452 */\n tag_94\n /* \"#utility.yul\":2385:2451 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":2374:2383 */\n dup3\n /* \"#utility.yul\":2355:2452 */\n tag_51\n jump\t// in\ntag_94:\n /* \"#utility.yul\":2473:2512 */\n tag_95\n /* \"#utility.yul\":2503:2511 */\n dup7\n /* \"#utility.yul\":2492:2501 */\n dup4\n /* \"#utility.yul\":2473:2512 */\n tag_51\n jump\t// in\ntag_95:\n /* \"#utility.yul\":2461:2512 */\n swap6\n pop\n /* \"#utility.yul\":2545:2549 */\n dup1\n /* \"#utility.yul\":2541:2550 */\n not\n /* \"#utility.yul\":2534:2539 */\n dup5\n /* \"#utility.yul\":2530:2551 */\n and\n /* \"#utility.yul\":2521:2551 */\n swap4\n pop\n /* \"#utility.yul\":2594:2598 */\n dup1\n /* \"#utility.yul\":2584:2592 */\n dup7\n /* \"#utility.yul\":2580:2599 */\n and\n /* \"#utility.yul\":2573:2578 */\n dup5\n /* \"#utility.yul\":2570:2600 */\n or\n /* \"#utility.yul\":2560:2600 */\n swap3\n pop\n /* \"#utility.yul\":2289:2606 */\n pop\n pop\n /* \"#utility.yul\":2213:2606 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2612:2672 */\ntag_53:\n /* \"#utility.yul\":2640:2643 */\n 0x00\n /* \"#utility.yul\":2661:2666 */\n dup2\n /* \"#utility.yul\":2654:2666 */\n swap1\n pop\n /* \"#utility.yul\":2612:2672 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2678:2820 */\ntag_54:\n /* \"#utility.yul\":2728:2737 */\n 0x00\n /* \"#utility.yul\":2761:2814 */\n tag_98\n /* \"#utility.yul\":2779:2813 */\n tag_99\n /* \"#utility.yul\":2788:2812 */\n tag_100\n /* \"#utility.yul\":2806:2811 */\n dup5\n /* \"#utility.yul\":2788:2812 */\n tag_42\n jump\t// in\ntag_100:\n /* \"#utility.yul\":2779:2813 */\n tag_53\n jump\t// in\ntag_99:\n /* \"#utility.yul\":2761:2814 */\n tag_42\n jump\t// in\ntag_98:\n /* \"#utility.yul\":2748:2814 */\n swap1\n pop\n /* \"#utility.yul\":2678:2820 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2826:2901 */\ntag_55:\n /* \"#utility.yul\":2869:2872 */\n 0x00\n /* \"#utility.yul\":2890:2895 */\n dup2\n /* \"#utility.yul\":2883:2895 */\n swap1\n pop\n /* \"#utility.yul\":2826:2901 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2907:3176 */\ntag_56:\n /* \"#utility.yul\":3017:3056 */\n tag_103\n /* \"#utility.yul\":3048:3055 */\n dup4\n /* \"#utility.yul\":3017:3056 */\n tag_54\n jump\t// in\ntag_103:\n /* \"#utility.yul\":3078:3169 */\n tag_104\n /* \"#utility.yul\":3127:3168 */\n tag_105\n /* \"#utility.yul\":3151:3167 */\n dup3\n /* \"#utility.yul\":3127:3168 */\n tag_55\n jump\t// in\ntag_105:\n /* \"#utility.yul\":3119:3125 */\n dup5\n /* \"#utility.yul\":3112:3116 */\n dup5\n /* \"#utility.yul\":3106:3117 */\n sload\n /* \"#utility.yul\":3078:3169 */\n tag_52\n jump\t// in\ntag_104:\n /* \"#utility.yul\":3072:3076 */\n dup3\n /* \"#utility.yul\":3065:3170 */\n sstore\n /* \"#utility.yul\":2983:3176 */\n pop\n /* \"#utility.yul\":2907:3176 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3182:3255 */\ntag_57:\n /* \"#utility.yul\":3227:3230 */\n 0x00\n /* \"#utility.yul\":3182:3255 */\n swap1\n jump\t// out\n /* \"#utility.yul\":3261:3450 */\ntag_58:\n /* \"#utility.yul\":3338:3370 */\n tag_108\n tag_57\n jump\t// in\ntag_108:\n /* \"#utility.yul\":3379:3444 */\n tag_109\n /* \"#utility.yul\":3437:3443 */\n dup2\n /* \"#utility.yul\":3429:3435 */\n dup5\n /* \"#utility.yul\":3423:3427 */\n dup5\n /* \"#utility.yul\":3379:3444 */\n tag_56\n jump\t// in\ntag_109:\n /* \"#utility.yul\":3314:3450 */\n pop\n /* \"#utility.yul\":3261:3450 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3456:3642 */\ntag_59:\n /* \"#utility.yul\":3516:3636 */\ntag_111:\n /* \"#utility.yul\":3533:3536 */\n dup2\n /* \"#utility.yul\":3526:3531 */\n dup2\n /* \"#utility.yul\":3523:3537 */\n lt\n /* \"#utility.yul\":3516:3636 */\n iszero\n tag_113\n jumpi\n /* \"#utility.yul\":3587:3626 */\n tag_114\n /* \"#utility.yul\":3624:3625 */\n 0x00\n /* \"#utility.yul\":3617:3622 */\n dup3\n /* \"#utility.yul\":3587:3626 */\n tag_58\n jump\t// in\ntag_114:\n /* \"#utility.yul\":3560:3561 */\n 0x01\n /* \"#utility.yul\":3553:3558 */\n dup2\n /* \"#utility.yul\":3549:3562 */\n add\n /* \"#utility.yul\":3540:3562 */\n swap1\n pop\n /* \"#utility.yul\":3516:3636 */\n jump(tag_111)\ntag_113:\n /* \"#utility.yul\":3456:3642 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3648:4191 */\ntag_60:\n /* \"#utility.yul\":3749:3751 */\n 0x1f\n /* \"#utility.yul\":3744:3747 */\n dup3\n /* \"#utility.yul\":3741:3752 */\n gt\n /* \"#utility.yul\":3738:4184 */\n iszero\n tag_116\n jumpi\n /* \"#utility.yul\":3783:3821 */\n tag_117\n /* \"#utility.yul\":3815:3820 */\n dup2\n /* \"#utility.yul\":3783:3821 */\n tag_49\n jump\t// in\ntag_117:\n /* \"#utility.yul\":3867:3896 */\n tag_118\n /* \"#utility.yul\":3885:3895 */\n dup5\n /* \"#utility.yul\":3867:3896 */\n tag_50\n jump\t// in\ntag_118:\n /* \"#utility.yul\":3857:3865 */\n dup2\n /* \"#utility.yul\":3853:3897 */\n add\n /* \"#utility.yul\":4050:4052 */\n 0x20\n /* \"#utility.yul\":4038:4048 */\n dup6\n /* \"#utility.yul\":4035:4053 */\n lt\n /* \"#utility.yul\":4032:4081 */\n iszero\n tag_119\n jumpi\n /* \"#utility.yul\":4071:4079 */\n dup2\n /* \"#utility.yul\":4056:4079 */\n swap1\n pop\n /* \"#utility.yul\":4032:4081 */\ntag_119:\n /* \"#utility.yul\":4094:4174 */\n tag_120\n /* \"#utility.yul\":4150:4172 */\n tag_121\n /* \"#utility.yul\":4168:4171 */\n dup6\n /* \"#utility.yul\":4150:4172 */\n tag_50\n jump\t// in\ntag_121:\n /* \"#utility.yul\":4140:4148 */\n dup4\n /* \"#utility.yul\":4136:4173 */\n add\n /* \"#utility.yul\":4123:4134 */\n dup3\n /* \"#utility.yul\":4094:4174 */\n tag_59\n jump\t// in\ntag_120:\n /* \"#utility.yul\":3753:4184 */\n pop\n pop\n /* \"#utility.yul\":3738:4184 */\ntag_116:\n /* \"#utility.yul\":3648:4191 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4197:4314 */\ntag_61:\n /* \"#utility.yul\":4251:4259 */\n 0x00\n /* \"#utility.yul\":4301:4306 */\n dup3\n /* \"#utility.yul\":4295:4299 */\n dup3\n /* \"#utility.yul\":4291:4307 */\n shr\n /* \"#utility.yul\":4270:4307 */\n swap1\n pop\n /* \"#utility.yul\":4197:4314 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4320:4489 */\ntag_62:\n /* \"#utility.yul\":4364:4370 */\n 0x00\n /* \"#utility.yul\":4397:4448 */\n tag_124\n /* \"#utility.yul\":4445:4446 */\n 0x00\n /* \"#utility.yul\":4441:4447 */\n not\n /* \"#utility.yul\":4433:4438 */\n dup5\n /* \"#utility.yul\":4430:4431 */\n 0x08\n /* \"#utility.yul\":4426:4439 */\n mul\n /* \"#utility.yul\":4397:4448 */\n tag_61\n jump\t// in\ntag_124:\n /* \"#utility.yul\":4393:4449 */\n not\n /* \"#utility.yul\":4478:4482 */\n dup1\n /* \"#utility.yul\":4472:4476 */\n dup4\n /* \"#utility.yul\":4468:4483 */\n and\n /* \"#utility.yul\":4458:4483 */\n swap2\n pop\n /* \"#utility.yul\":4371:4489 */\n pop\n /* \"#utility.yul\":4320:4489 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4494:4789 */\ntag_63:\n /* \"#utility.yul\":4570:4574 */\n 0x00\n /* \"#utility.yul\":4716:4745 */\n tag_126\n /* \"#utility.yul\":4741:4744 */\n dup4\n /* \"#utility.yul\":4735:4739 */\n dup4\n /* \"#utility.yul\":4716:4745 */\n tag_62\n jump\t// in\ntag_126:\n /* \"#utility.yul\":4708:4745 */\n swap2\n pop\n /* \"#utility.yul\":4778:4781 */\n dup3\n /* \"#utility.yul\":4775:4776 */\n 0x02\n /* \"#utility.yul\":4771:4782 */\n mul\n /* \"#utility.yul\":4765:4769 */\n dup3\n /* \"#utility.yul\":4762:4783 */\n or\n /* \"#utility.yul\":4754:4783 */\n swap1\n pop\n /* \"#utility.yul\":4494:4789 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4794:6189 */\ntag_9:\n /* \"#utility.yul\":4911:4948 */\n tag_128\n /* \"#utility.yul\":4944:4947 */\n dup3\n /* \"#utility.yul\":4911:4948 */\n tag_45\n jump\t// in\ntag_128:\n /* \"#utility.yul\":5013:5031 */\n 0xffffffffffffffff\n /* \"#utility.yul\":5005:5011 */\n dup2\n /* \"#utility.yul\":5002:5032 */\n gt\n /* \"#utility.yul\":4999:5055 */\n iszero\n tag_129\n jumpi\n /* \"#utility.yul\":5035:5053 */\n tag_130\n tag_46\n jump\t// in\ntag_130:\n /* \"#utility.yul\":4999:5055 */\ntag_129:\n /* \"#utility.yul\":5079:5117 */\n tag_131\n /* \"#utility.yul\":5111:5115 */\n dup3\n /* \"#utility.yul\":5105:5116 */\n sload\n /* \"#utility.yul\":5079:5117 */\n tag_48\n jump\t// in\ntag_131:\n /* \"#utility.yul\":5164:5231 */\n tag_132\n /* \"#utility.yul\":5224:5230 */\n dup3\n /* \"#utility.yul\":5216:5222 */\n dup3\n /* \"#utility.yul\":5210:5214 */\n dup6\n /* \"#utility.yul\":5164:5231 */\n tag_60\n jump\t// in\ntag_132:\n /* \"#utility.yul\":5258:5259 */\n 0x00\n /* \"#utility.yul\":5282:5286 */\n 0x20\n /* \"#utility.yul\":5269:5286 */\n swap1\n pop\n /* \"#utility.yul\":5314:5316 */\n 0x1f\n /* \"#utility.yul\":5306:5312 */\n dup4\n /* \"#utility.yul\":5303:5317 */\n gt\n /* \"#utility.yul\":5331:5332 */\n 0x01\n /* \"#utility.yul\":5326:5944 */\n dup2\n eq\n tag_134\n jumpi\n /* \"#utility.yul\":5988:5989 */\n 0x00\n /* \"#utility.yul\":6005:6011 */\n dup5\n /* \"#utility.yul\":6002:6079 */\n iszero\n tag_135\n jumpi\n /* \"#utility.yul\":6054:6063 */\n dup3\n /* \"#utility.yul\":6049:6052 */\n dup8\n /* \"#utility.yul\":6045:6064 */\n add\n /* \"#utility.yul\":6039:6065 */\n mload\n /* \"#utility.yul\":6030:6065 */\n swap1\n pop\n /* \"#utility.yul\":6002:6079 */\ntag_135:\n /* \"#utility.yul\":6105:6172 */\n tag_136\n /* \"#utility.yul\":6165:6171 */\n dup6\n /* \"#utility.yul\":6158:6163 */\n dup3\n /* \"#utility.yul\":6105:6172 */\n tag_63\n jump\t// in\ntag_136:\n /* \"#utility.yul\":6099:6103 */\n dup7\n /* \"#utility.yul\":6092:6173 */\n sstore\n /* \"#utility.yul\":5961:6183 */\n pop\n /* \"#utility.yul\":5296:6183 */\n jump(tag_133)\n /* \"#utility.yul\":5326:5944 */\ntag_134:\n /* \"#utility.yul\":5378:5382 */\n 0x1f\n /* \"#utility.yul\":5374:5383 */\n not\n /* \"#utility.yul\":5366:5372 */\n dup5\n /* \"#utility.yul\":5362:5384 */\n and\n /* \"#utility.yul\":5412:5449 */\n tag_137\n /* \"#utility.yul\":5444:5448 */\n dup7\n /* \"#utility.yul\":5412:5449 */\n tag_49\n jump\t// in\ntag_137:\n /* \"#utility.yul\":5471:5472 */\n 0x00\n /* \"#utility.yul\":5485:5693 */\ntag_138:\n /* \"#utility.yul\":5499:5506 */\n dup3\n /* \"#utility.yul\":5496:5497 */\n dup2\n /* \"#utility.yul\":5493:5507 */\n lt\n /* \"#utility.yul\":5485:5693 */\n iszero\n tag_140\n jumpi\n /* \"#utility.yul\":5578:5587 */\n dup5\n /* \"#utility.yul\":5573:5576 */\n dup10\n /* \"#utility.yul\":5569:5588 */\n add\n /* \"#utility.yul\":5563:5589 */\n mload\n /* \"#utility.yul\":5555:5561 */\n dup3\n /* \"#utility.yul\":5548:5590 */\n sstore\n /* \"#utility.yul\":5629:5630 */\n 0x01\n /* \"#utility.yul\":5621:5627 */\n dup3\n /* \"#utility.yul\":5617:5631 */\n add\n /* \"#utility.yul\":5607:5631 */\n swap2\n pop\n /* \"#utility.yul\":5676:5678 */\n 0x20\n /* \"#utility.yul\":5665:5674 */\n dup6\n /* \"#utility.yul\":5661:5679 */\n add\n /* \"#utility.yul\":5648:5679 */\n swap5\n pop\n /* \"#utility.yul\":5522:5526 */\n 0x20\n /* \"#utility.yul\":5519:5520 */\n dup2\n /* \"#utility.yul\":5515:5527 */\n add\n /* \"#utility.yul\":5510:5527 */\n swap1\n pop\n /* \"#utility.yul\":5485:5693 */\n jump(tag_138)\ntag_140:\n /* \"#utility.yul\":5721:5727 */\n dup7\n /* \"#utility.yul\":5712:5719 */\n dup4\n /* \"#utility.yul\":5709:5728 */\n lt\n /* \"#utility.yul\":5706:5885 */\n iszero\n tag_141\n jumpi\n /* \"#utility.yul\":5779:5788 */\n dup5\n /* \"#utility.yul\":5774:5777 */\n dup10\n /* \"#utility.yul\":5770:5789 */\n add\n /* \"#utility.yul\":5764:5790 */\n mload\n /* \"#utility.yul\":5822:5870 */\n tag_142\n /* \"#utility.yul\":5864:5868 */\n 0x1f\n /* \"#utility.yul\":5856:5862 */\n dup10\n /* \"#utility.yul\":5852:5869 */\n and\n /* \"#utility.yul\":5841:5850 */\n dup3\n /* \"#utility.yul\":5822:5870 */\n tag_62\n jump\t// in\ntag_142:\n /* \"#utility.yul\":5814:5820 */\n dup4\n /* \"#utility.yul\":5807:5871 */\n sstore\n /* \"#utility.yul\":5729:5885 */\n pop\n /* \"#utility.yul\":5706:5885 */\ntag_141:\n /* \"#utility.yul\":5931:5932 */\n 0x01\n /* \"#utility.yul\":5927:5928 */\n 0x02\n /* \"#utility.yul\":5919:5925 */\n dup9\n /* \"#utility.yul\":5915:5929 */\n mul\n /* \"#utility.yul\":5911:5933 */\n add\n /* \"#utility.yul\":5905:5909 */\n dup9\n /* \"#utility.yul\":5898:5934 */\n sstore\n /* \"#utility.yul\":5333:5944 */\n pop\n pop\n pop\n /* \"#utility.yul\":5296:6183 */\ntag_133:\n pop\n /* \"#utility.yul\":4886:6189 */\n pop\n pop\n pop\n /* \"#utility.yul\":4794:6189 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6195:6321 */\ntag_64:\n /* \"#utility.yul\":6232:6239 */\n 0x00\n /* \"#utility.yul\":6272:6314 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":6265:6270 */\n dup3\n /* \"#utility.yul\":6261:6315 */\n and\n /* \"#utility.yul\":6250:6315 */\n swap1\n pop\n /* \"#utility.yul\":6195:6321 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":6327:6423 */\ntag_65:\n /* \"#utility.yul\":6364:6371 */\n 0x00\n /* \"#utility.yul\":6393:6417 */\n tag_145\n /* \"#utility.yul\":6411:6416 */\n dup3\n /* \"#utility.yul\":6393:6417 */\n tag_64\n jump\t// in\ntag_145:\n /* \"#utility.yul\":6382:6417 */\n swap1\n pop\n /* \"#utility.yul\":6327:6423 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":6429:6547 */\ntag_66:\n /* \"#utility.yul\":6516:6540 */\n tag_147\n /* \"#utility.yul\":6534:6539 */\n dup2\n /* \"#utility.yul\":6516:6540 */\n tag_65\n jump\t// in\ntag_147:\n /* \"#utility.yul\":6511:6514 */\n dup3\n /* \"#utility.yul\":6504:6541 */\n mstore\n /* \"#utility.yul\":6429:6547 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6553:6775 */\ntag_14:\n /* \"#utility.yul\":6646:6650 */\n 0x00\n /* \"#utility.yul\":6684:6686 */\n 0x20\n /* \"#utility.yul\":6673:6682 */\n dup3\n /* \"#utility.yul\":6669:6687 */\n add\n /* \"#utility.yul\":6661:6687 */\n swap1\n pop\n /* \"#utility.yul\":6697:6768 */\n tag_149\n /* \"#utility.yul\":6765:6766 */\n 0x00\n /* \"#utility.yul\":6754:6763 */\n dup4\n /* \"#utility.yul\":6750:6767 */\n add\n /* \"#utility.yul\":6741:6747 */\n dup5\n /* \"#utility.yul\":6697:6768 */\n tag_66\n jump\t// in\ntag_149:\n /* \"#utility.yul\":6553:6775 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6781:6961 */\ntag_67:\n /* \"#utility.yul\":6829:6906 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":6826:6827 */\n 0x00\n /* \"#utility.yul\":6819:6907 */\n mstore\n /* \"#utility.yul\":6926:6930 */\n 0x11\n /* \"#utility.yul\":6923:6924 */\n 0x04\n /* \"#utility.yul\":6916:6931 */\n mstore\n /* \"#utility.yul\":6950:6954 */\n 0x24\n /* \"#utility.yul\":6947:6948 */\n 0x00\n /* \"#utility.yul\":6940:6955 */\n revert\n /* \"#utility.yul\":6967:7158 */\ntag_30:\n /* \"#utility.yul\":7007:7010 */\n 0x00\n /* \"#utility.yul\":7026:7046 */\n tag_152\n /* \"#utility.yul\":7044:7045 */\n dup3\n /* \"#utility.yul\":7026:7046 */\n tag_42\n jump\t// in\ntag_152:\n /* \"#utility.yul\":7021:7046 */\n swap2\n pop\n /* \"#utility.yul\":7060:7080 */\n tag_153\n /* \"#utility.yul\":7078:7079 */\n dup4\n /* \"#utility.yul\":7060:7080 */\n tag_42\n jump\t// in\ntag_153:\n /* \"#utility.yul\":7055:7080 */\n swap3\n pop\n /* \"#utility.yul\":7103:7104 */\n dup3\n /* \"#utility.yul\":7100:7101 */\n dup3\n /* \"#utility.yul\":7096:7105 */\n add\n /* \"#utility.yul\":7089:7105 */\n swap1\n pop\n /* \"#utility.yul\":7124:7127 */\n dup1\n /* \"#utility.yul\":7121:7122 */\n dup3\n /* \"#utility.yul\":7118:7128 */\n gt\n /* \"#utility.yul\":7115:7151 */\n iszero\n tag_154\n jumpi\n /* \"#utility.yul\":7131:7149 */\n tag_155\n tag_67\n jump\t// in\ntag_155:\n /* \"#utility.yul\":7115:7151 */\ntag_154:\n /* \"#utility.yul\":6967:7158 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7164:7282 */\ntag_68:\n /* \"#utility.yul\":7251:7275 */\n tag_157\n /* \"#utility.yul\":7269:7274 */\n dup2\n /* \"#utility.yul\":7251:7275 */\n tag_42\n jump\t// in\ntag_157:\n /* \"#utility.yul\":7246:7249 */\n dup3\n /* \"#utility.yul\":7239:7276 */\n mstore\n /* \"#utility.yul\":7164:7282 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7288:7730 */\ntag_34:\n /* \"#utility.yul\":7437:7441 */\n 0x00\n /* \"#utility.yul\":7475:7477 */\n 0x60\n /* \"#utility.yul\":7464:7473 */\n dup3\n /* \"#utility.yul\":7460:7478 */\n add\n /* \"#utility.yul\":7452:7478 */\n swap1\n pop\n /* \"#utility.yul\":7488:7559 */\n tag_159\n /* \"#utility.yul\":7556:7557 */\n 0x00\n /* \"#utility.yul\":7545:7554 */\n dup4\n /* \"#utility.yul\":7541:7558 */\n add\n /* \"#utility.yul\":7532:7538 */\n dup7\n /* \"#utility.yul\":7488:7559 */\n tag_66\n jump\t// in\ntag_159:\n /* \"#utility.yul\":7569:7641 */\n tag_160\n /* \"#utility.yul\":7637:7639 */\n 0x20\n /* \"#utility.yul\":7626:7635 */\n dup4\n /* \"#utility.yul\":7622:7640 */\n add\n /* \"#utility.yul\":7613:7619 */\n dup6\n /* \"#utility.yul\":7569:7641 */\n tag_68\n jump\t// in\ntag_160:\n /* \"#utility.yul\":7651:7723 */\n tag_161\n /* \"#utility.yul\":7719:7721 */\n 0x40\n /* \"#utility.yul\":7708:7717 */\n dup4\n /* \"#utility.yul\":7704:7722 */\n add\n /* \"#utility.yul\":7695:7701 */\n dup5\n /* \"#utility.yul\":7651:7723 */\n tag_68\n jump\t// in\ntag_161:\n /* \"#utility.yul\":7288:7730 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7736:7958 */\ntag_38:\n /* \"#utility.yul\":7829:7833 */\n 0x00\n /* \"#utility.yul\":7867:7869 */\n 0x20\n /* \"#utility.yul\":7856:7865 */\n dup3\n /* \"#utility.yul\":7852:7870 */\n add\n /* \"#utility.yul\":7844:7870 */\n swap1\n pop\n /* \"#utility.yul\":7880:7951 */\n tag_163\n /* \"#utility.yul\":7948:7949 */\n 0x00\n /* \"#utility.yul\":7937:7946 */\n dup4\n /* \"#utility.yul\":7933:7950 */\n add\n /* \"#utility.yul\":7924:7930 */\n dup5\n /* \"#utility.yul\":7880:7951 */\n tag_68\n jump\t// in\ntag_163:\n /* \"#utility.yul\":7736:7958 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"ShadowPhoenix.sol\":270:474 contract ShadowPhoenix is ERC20, Ownable {... */\ntag_20:\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"ShadowPhoenix.sol\":270:474 contract ShadowPhoenix is ERC20, Ownable {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x715018a6\n gt\n tag_15\n jumpi\n dup1\n 0x715018a6\n eq\n tag_9\n jumpi\n dup1\n 0x8da5cb5b\n eq\n tag_10\n jumpi\n dup1\n 0x95d89b41\n eq\n tag_11\n jumpi\n dup1\n 0xa9059cbb\n eq\n tag_12\n jumpi\n dup1\n 0xdd62ed3e\n eq\n tag_13\n jumpi\n dup1\n 0xf2fde38b\n eq\n tag_14\n jumpi\n jump(tag_2)\n tag_15:\n dup1\n 0x06fdde03\n eq\n tag_3\n jumpi\n dup1\n 0x095ea7b3\n eq\n tag_4\n jumpi\n dup1\n 0x18160ddd\n eq\n tag_5\n jumpi\n dup1\n 0x23b872dd\n eq\n tag_6\n jumpi\n dup1\n 0x313ce567\n eq\n tag_7\n jumpi\n dup1\n 0x70a08231\n eq\n tag_8\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1760:1849 function name() public view virtual returns (string memory) {... */\n tag_3:\n tag_16\n tag_17\n jump\t// in\n tag_16:\n mload(0x40)\n tag_18\n swap2\n swap1\n tag_19\n jump\t// in\n tag_18:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3902:4088 function approve(address spender, uint256 value) public virtual returns (bool) {... */\n tag_4:\n tag_20\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_21\n swap2\n swap1\n tag_22\n jump\t// in\n tag_21:\n tag_23\n jump\t// in\n tag_20:\n mload(0x40)\n tag_24\n swap2\n swap1\n tag_25\n jump\t// in\n tag_24:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2803:2900 function totalSupply() public view virtual returns (uint256) {... */\n tag_5:\n tag_26\n tag_27\n jump\t// in\n tag_26:\n mload(0x40)\n tag_28\n swap2\n swap1\n tag_29\n jump\t// in\n tag_28:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4680:4924 function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {... */\n tag_6:\n tag_30\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_31\n swap2\n swap1\n tag_32\n jump\t// in\n tag_31:\n tag_33\n jump\t// in\n tag_30:\n mload(0x40)\n tag_34\n swap2\n swap1\n tag_25\n jump\t// in\n tag_34:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2688:2770 function decimals() public view virtual returns (uint8) {... */\n tag_7:\n tag_35\n tag_36\n jump\t// in\n tag_35:\n mload(0x40)\n tag_37\n swap2\n swap1\n tag_38\n jump\t// in\n tag_37:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2933:3049 function balanceOf(address account) public view virtual returns (uint256) {... */\n tag_8:\n tag_39\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_40\n swap2\n swap1\n tag_41\n jump\t// in\n tag_40:\n tag_42\n jump\t// in\n tag_39:\n mload(0x40)\n tag_43\n swap2\n swap1\n tag_29\n jump\t// in\n tag_43:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2293:2394 function renounceOwnership() public virtual onlyOwner {... */\n tag_9:\n tag_44\n tag_45\n jump\t// in\n tag_44:\n stop\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1638:1723 function owner() public view virtual returns (address) {... */\n tag_10:\n tag_46\n tag_47\n jump\t// in\n tag_46:\n mload(0x40)\n tag_48\n swap2\n swap1\n tag_49\n jump\t// in\n tag_48:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1962:2055 function symbol() public view virtual returns (string memory) {... */\n tag_11:\n tag_50\n tag_51\n jump\t// in\n tag_50:\n mload(0x40)\n tag_52\n swap2\n swap1\n tag_19\n jump\t// in\n tag_52:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3244:3422 function transfer(address to, uint256 value) public virtual returns (bool) {... */\n tag_12:\n tag_53\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_54\n swap2\n swap1\n tag_22\n jump\t// in\n tag_54:\n tag_55\n jump\t// in\n tag_53:\n mload(0x40)\n tag_56\n swap2\n swap1\n tag_25\n jump\t// in\n tag_56:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3455:3595 function allowance(address owner, address spender) public view virtual returns (uint256) {... */\n tag_13:\n tag_57\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_58\n swap2\n swap1\n tag_59\n jump\t// in\n tag_58:\n tag_60\n jump\t// in\n tag_57:\n mload(0x40)\n tag_61\n swap2\n swap1\n tag_29\n jump\t// in\n tag_61:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2543:2758 function transferOwnership(address newOwner) public virtual onlyOwner {... */\n tag_14:\n tag_62\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_63\n swap2\n swap1\n tag_41\n jump\t// in\n tag_63:\n tag_64\n jump\t// in\n tag_62:\n stop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1760:1849 function name() public view virtual returns (string memory) {... */\n tag_17:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1805:1818 string memory */\n 0x60\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1837:1842 _name */\n 0x03\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1830:1842 return _name */\n dup1\n sload\n tag_66\n swap1\n tag_67\n jump\t// in\n tag_66:\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n tag_68\n swap1\n tag_67\n jump\t// in\n tag_68:\n dup1\n iszero\n tag_69\n jumpi\n dup1\n 0x1f\n lt\n tag_70\n jumpi\n 0x0100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_69)\n tag_70:\n dup3\n add\n swap2\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n tag_71:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x01\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_71\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_69:\n pop\n pop\n pop\n pop\n pop\n swap1\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1760:1849 function name() public view virtual returns (string memory) {... */\n swap1\n jump\t// out\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3902:4088 function approve(address spender, uint256 value) public virtual returns (bool) {... */\n tag_23:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3975:3979 bool */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3991:4004 address owner */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4007:4019 _msgSender() */\n tag_73\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4007:4017 _msgSender */\n tag_74\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4007:4019 _msgSender() */\n jump\t// in\n tag_73:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3991:4019 address owner = _msgSender() */\n swap1\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4029:4060 _approve(owner, spender, value) */\n tag_75\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4038:4043 owner */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4045:4052 spender */\n dup6\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4054:4059 value */\n dup6\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4029:4037 _approve */\n tag_76\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4029:4060 _approve(owner, spender, value) */\n jump\t// in\n tag_75:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4077:4081 true */\n 0x01\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4070:4081 return true */\n swap2\n pop\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3902:4088 function approve(address spender, uint256 value) public virtual returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2803:2900 function totalSupply() public view virtual returns (uint256) {... */\n tag_27:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2855:2862 uint256 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2881:2893 _totalSupply */\n sload(0x02)\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2874:2893 return _totalSupply */\n swap1\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2803:2900 function totalSupply() public view virtual returns (uint256) {... */\n swap1\n jump\t// out\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4680:4924 function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {... */\n tag_33:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4767:4771 bool */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4783:4798 address spender */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4801:4813 _msgSender() */\n tag_79\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4801:4811 _msgSender */\n tag_74\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4801:4813 _msgSender() */\n jump\t// in\n tag_79:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4783:4813 address spender = _msgSender() */\n swap1\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4823:4860 _spendAllowance(from, spender, value) */\n tag_80\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4839:4843 from */\n dup6\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4845:4852 spender */\n dup3\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4854:4859 value */\n dup6\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4823:4838 _spendAllowance */\n tag_81\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4823:4860 _spendAllowance(from, spender, value) */\n jump\t// in\n tag_80:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4870:4896 _transfer(from, to, value) */\n tag_82\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4880:4884 from */\n dup6\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4886:4888 to */\n dup6\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4890:4895 value */\n dup6\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4870:4879 _transfer */\n tag_83\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4870:4896 _transfer(from, to, value) */\n jump\t// in\n tag_82:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4913:4917 true */\n 0x01\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4906:4917 return true */\n swap2\n pop\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":4680:4924 function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {... */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2688:2770 function decimals() public view virtual returns (uint8) {... */\n tag_36:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2737:2742 uint8 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2761:2763 18 */\n 0x12\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2754:2763 return 18 */\n swap1\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2688:2770 function decimals() public view virtual returns (uint8) {... */\n swap1\n jump\t// out\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2933:3049 function balanceOf(address account) public view virtual returns (uint256) {... */\n tag_42:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2998:3005 uint256 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3024:3033 _balances */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3024:3042 _balances[account] */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3034:3041 account */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3024:3042 _balances[account] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3017:3042 return _balances[account] */\n swap1\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2933:3049 function balanceOf(address account) public view virtual returns (uint256) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2293:2394 function renounceOwnership() public virtual onlyOwner {... */\n tag_45:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1531:1544 _checkOwner() */\n tag_87\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1531:1542 _checkOwner */\n tag_88\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1531:1544 _checkOwner() */\n jump\t// in\n tag_87:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2357:2387 _transferOwnership(address(0)) */\n tag_90\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2384:2385 0 */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2357:2375 _transferOwnership */\n tag_91\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2357:2387 _transferOwnership(address(0)) */\n jump\t// in\n tag_90:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2293:2394 function renounceOwnership() public virtual onlyOwner {... */\n jump\t// out\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1638:1723 function owner() public view virtual returns (address) {... */\n tag_47:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1684:1691 address */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1710:1716 _owner */\n 0x05\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1703:1716 return _owner */\n swap1\n pop\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1638:1723 function owner() public view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1962:2055 function symbol() public view virtual returns (string memory) {... */\n tag_51:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2009:2022 string memory */\n 0x60\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2041:2048 _symbol */\n 0x04\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":2034:2048 return _symbol */\n dup1\n sload\n tag_94\n swap1\n tag_67\n jump\t// in\n tag_94:\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n tag_95\n swap1\n tag_67\n jump\t// in\n tag_95:\n dup1\n iszero\n tag_96\n jumpi\n dup1\n 0x1f\n lt\n tag_97\n jumpi\n 0x0100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_96)\n tag_97:\n dup3\n add\n swap2\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n tag_98:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x01\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_98\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_96:\n pop\n pop\n pop\n pop\n pop\n swap1\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":1962:2055 function symbol() public view virtual returns (string memory) {... */\n swap1\n jump\t// out\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3244:3422 function transfer(address to, uint256 value) public virtual returns (bool) {... */\n tag_55:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3313:3317 bool */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3329:3342 address owner */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3345:3357 _msgSender() */\n tag_100\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3345:3355 _msgSender */\n tag_74\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3345:3357 _msgSender() */\n jump\t// in\n tag_100:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3329:3357 address owner = _msgSender() */\n swap1\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3367:3394 _transfer(owner, to, value) */\n tag_101\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3377:3382 owner */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3384:3386 to */\n dup6\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3388:3393 value */\n dup6\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3367:3376 _transfer */\n tag_83\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3367:3394 _transfer(owner, to, value) */\n jump\t// in\n tag_101:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3411:3415 true */\n 0x01\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3404:3415 return true */\n swap2\n pop\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3244:3422 function transfer(address to, uint256 value) public virtual returns (bool) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3455:3595 function allowance(address owner, address spender) public view virtual returns (uint256) {... */\n tag_60:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3535:3542 uint256 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3561:3572 _allowances */\n 0x01\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3561:3579 _allowances[owner] */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3573:3578 owner */\n dup5\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3561:3579 _allowances[owner] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3561:3588 _allowances[owner][spender] */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3580:3587 spender */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3561:3588 _allowances[owner][spender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3554:3588 return _allowances[owner][spender] */\n swap1\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":3455:3595 function allowance(address owner, address spender) public view virtual returns (uint256) {... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2543:2758 function transferOwnership(address newOwner) public virtual onlyOwner {... */\n tag_64:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1531:1544 _checkOwner() */\n tag_104\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1531:1542 _checkOwner */\n tag_88\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1531:1544 _checkOwner() */\n jump\t// in\n tag_104:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2647:2648 0 */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2627:2649 newOwner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2627:2635 newOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2627:2649 newOwner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2623:2714 if (newOwner == address(0)) {... */\n tag_106\n jumpi\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2700:2701 0 */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2672:2703 OwnableInvalidOwner(address(0)) */\n mload(0x40)\n 0x1e4fbdf700000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_107\n swap2\n swap1\n tag_49\n jump\t// in\n tag_107:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2623:2714 if (newOwner == address(0)) {... */\n tag_106:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2723:2751 _transferOwnership(newOwner) */\n tag_108\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2742:2750 newOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2723:2741 _transferOwnership */\n tag_91\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2723:2751 _transferOwnership(newOwner) */\n jump\t// in\n tag_108:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2543:2758 function transferOwnership(address newOwner) public virtual onlyOwner {... */\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/utils/Context.sol\":656:752 function _msgSender() internal view virtual returns (address) {... */\n tag_74:\n /* \"@openzeppelin/contracts/utils/Context.sol\":709:716 address */\n 0x00\n /* \"@openzeppelin/contracts/utils/Context.sol\":735:745 msg.sender */\n caller\n /* \"@openzeppelin/contracts/utils/Context.sol\":728:745 return msg.sender */\n swap1\n pop\n /* \"@openzeppelin/contracts/utils/Context.sol\":656:752 function _msgSender() internal view virtual returns (address) {... */\n swap1\n jump\t// out\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":8630:8758 function _approve(address owner, address spender, uint256 value) internal {... */\n tag_76:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":8714:8751 _approve(owner, spender, value, true) */\n tag_111\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":8723:8728 owner */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":8730:8737 spender */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":8739:8744 value */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":8746:8750 true */\n 0x01\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":8714:8722 _approve */\n tag_112\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":8714:8751 _approve(owner, spender, value, true) */\n jump\t// in\n tag_111:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":8630:8758 function _approve(address owner, address spender, uint256 value) internal {... */\n pop\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10319:10795 function _spendAllowance(address owner, address spender, uint256 value) internal virtual {... */\n tag_81:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10418:10442 uint256 currentAllowance */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10445:10470 allowance(owner, spender) */\n tag_114\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10455:10460 owner */\n dup5\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10462:10469 spender */\n dup5\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10445:10454 allowance */\n tag_60\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10445:10470 allowance(owner, spender) */\n jump\t// in\n tag_114:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10418:10470 uint256 currentAllowance = allowance(owner, spender) */\n swap1\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10503:10520 type(uint256).max */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10484:10500 currentAllowance */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10484:10520 currentAllowance < type(uint256).max */\n lt\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10480:10789 if (currentAllowance < type(uint256).max) {... */\n iszero\n tag_115\n jumpi\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10559:10564 value */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10540:10556 currentAllowance */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10540:10564 currentAllowance < value */\n lt\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10536:10666 if (currentAllowance < value) {... */\n iszero\n tag_116\n jumpi\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10618:10625 spender */\n dup3\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10627:10643 currentAllowance */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10645:10650 value */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10591:10651 ERC20InsufficientAllowance(spender, currentAllowance, value) */\n mload(0x40)\n 0xfb8f41b200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_117\n swap4\n swap3\n swap2\n swap1\n tag_118\n jump\t// in\n tag_117:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10536:10666 if (currentAllowance < value) {... */\n tag_116:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10707:10764 _approve(owner, spender, currentAllowance - value, false) */\n tag_119\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10716:10721 owner */\n dup5\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10723:10730 spender */\n dup5\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10751:10756 value */\n dup5\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10732:10748 currentAllowance */\n dup5\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10732:10756 currentAllowance - value */\n sub\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10758:10763 false */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10707:10715 _approve */\n tag_112\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10707:10764 _approve(owner, spender, currentAllowance - value, false) */\n jump\t// in\n tag_119:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10480:10789 if (currentAllowance < type(uint256).max) {... */\n tag_115:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10408:10795 {... */\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10319:10795 function _spendAllowance(address owner, address spender, uint256 value) internal virtual {... */\n pop\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5297:5597 function _transfer(address from, address to, uint256 value) internal {... */\n tag_83:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5396:5397 0 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5380:5398 from == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5380:5384 from */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5380:5398 from == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5376:5462 if (from == address(0)) {... */\n tag_121\n jumpi\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5448:5449 0 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5421:5451 ERC20InvalidSender(address(0)) */\n mload(0x40)\n 0x96c6fd1e00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_122\n swap2\n swap1\n tag_49\n jump\t// in\n tag_122:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5376:5462 if (from == address(0)) {... */\n tag_121:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5489:5490 0 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5475:5491 to == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5475:5477 to */\n dup3\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5475:5491 to == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5471:5557 if (to == address(0)) {... */\n tag_123\n jumpi\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5543:5544 0 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5514:5546 ERC20InvalidReceiver(address(0)) */\n mload(0x40)\n 0xec442f0500000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_124\n swap2\n swap1\n tag_49\n jump\t// in\n tag_124:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5471:5557 if (to == address(0)) {... */\n tag_123:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5566:5590 _update(from, to, value) */\n tag_125\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5574:5578 from */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5580:5582 to */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5584:5589 value */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5566:5573 _update */\n tag_126\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5566:5590 _update(from, to, value) */\n jump\t// in\n tag_125:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5297:5597 function _transfer(address from, address to, uint256 value) internal {... */\n pop\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1796:1958 function _checkOwner() internal view virtual {... */\n tag_88:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1866:1878 _msgSender() */\n tag_128\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1866:1876 _msgSender */\n tag_74\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1866:1878 _msgSender() */\n jump\t// in\n tag_128:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1855:1878 owner() != _msgSender() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1855:1862 owner() */\n tag_129\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1855:1860 owner */\n tag_47\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1855:1862 owner() */\n jump\t// in\n tag_129:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1855:1878 owner() != _msgSender() */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1851:1952 if (owner() != _msgSender()) {... */\n tag_130\n jumpi\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1928:1940 _msgSender() */\n tag_131\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1928:1938 _msgSender */\n tag_74\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1928:1940 _msgSender() */\n jump\t// in\n tag_131:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1901:1941 OwnableUnauthorizedAccount(_msgSender()) */\n mload(0x40)\n 0x118cdaa700000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_132\n swap2\n swap1\n tag_49\n jump\t// in\n tag_132:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1851:1952 if (owner() != _msgSender()) {... */\n tag_130:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":1796:1958 function _checkOwner() internal view virtual {... */\n jump\t// out\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2912:3099 function _transferOwnership(address newOwner) internal virtual {... */\n tag_91:\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2985:3001 address oldOwner */\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3004:3010 _owner */\n 0x05\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2985:3010 address oldOwner = _owner */\n swap1\n pop\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3029:3037 newOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3020:3026 _owner */\n 0x05\n 0x00\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3020:3037 _owner = newOwner */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3083:3091 newOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3052:3092 OwnershipTransferred(oldOwner, newOwner) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3073:3081 oldOwner */\n dup2\n /* \"@openzeppelin/contracts/access/Ownable.sol\":3052:3092 OwnershipTransferred(oldOwner, newOwner) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0\n mload(0x40)\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2975:3099 {... */\n pop\n /* \"@openzeppelin/contracts/access/Ownable.sol\":2912:3099 function _transferOwnership(address newOwner) internal virtual {... */\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9605:10037 function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {... */\n tag_112:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9734:9735 0 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9717:9736 owner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9717:9722 owner */\n dup5\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9717:9736 owner == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9713:9802 if (owner == address(0)) {... */\n tag_135\n jumpi\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9788:9789 0 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9759:9791 ERC20InvalidApprover(address(0)) */\n mload(0x40)\n 0xe602df0500000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_136\n swap2\n swap1\n tag_49\n jump\t// in\n tag_136:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9713:9802 if (owner == address(0)) {... */\n tag_135:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9834:9835 0 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9815:9836 spender == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9815:9822 spender */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9815:9836 spender == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9811:9901 if (spender == address(0)) {... */\n tag_137\n jumpi\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9887:9888 0 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9859:9890 ERC20InvalidSpender(address(0)) */\n mload(0x40)\n 0x94280d6200000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_138\n swap2\n swap1\n tag_49\n jump\t// in\n tag_138:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9811:9901 if (spender == address(0)) {... */\n tag_137:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9940:9945 value */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9910:9921 _allowances */\n 0x01\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9910:9928 _allowances[owner] */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9922:9927 owner */\n dup7\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9910:9928 _allowances[owner] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9910:9937 _allowances[owner][spender] */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9929:9936 spender */\n dup6\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9910:9937 _allowances[owner][spender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9910:9945 _allowances[owner][spender] = value */\n dup2\n swap1\n sstore\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9959:9968 emitEvent */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9955:10031 if (emitEvent) {... */\n iszero\n tag_139\n jumpi\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10005:10012 spender */\n dup3\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9989:10020 Approval(owner, spender, value) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9998:10003 owner */\n dup5\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9989:10020 Approval(owner, spender, value) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":10014:10019 value */\n dup5\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9989:10020 Approval(owner, spender, value) */\n mload(0x40)\n tag_140\n swap2\n swap1\n tag_29\n jump\t// in\n tag_140:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9955:10031 if (emitEvent) {... */\n tag_139:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":9605:10037 function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {... */\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5912:7019 function _update(address from, address to, uint256 value) internal virtual {... */\n tag_126:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6017:6018 0 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6001:6019 from == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6001:6005 from */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6001:6019 from == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5997:6537 if (from == address(0)) {... */\n tag_142\n jumpi\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6153:6158 value */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6137:6149 _totalSupply */\n 0x02\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6137:6158 _totalSupply += value */\n dup3\n dup3\n sload\n tag_143\n swap2\n swap1\n tag_144\n jump\t// in\n tag_143:\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5997:6537 if (from == address(0)) {... */\n jump(tag_145)\n tag_142:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6189:6208 uint256 fromBalance */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6211:6220 _balances */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6211:6226 _balances[from] */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6221:6225 from */\n dup6\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6211:6226 _balances[from] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n sload\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6189:6226 uint256 fromBalance = _balances[from] */\n swap1\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6258:6263 value */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6244:6255 fromBalance */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6244:6263 fromBalance < value */\n lt\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6240:6355 if (fromBalance < value) {... */\n iszero\n tag_146\n jumpi\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6315:6319 from */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6321:6332 fromBalance */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6334:6339 value */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6290:6340 ERC20InsufficientBalance(from, fromBalance, value) */\n mload(0x40)\n 0xe450d38c00000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_147\n swap4\n swap3\n swap2\n swap1\n tag_118\n jump\t// in\n tag_147:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6240:6355 if (fromBalance < value) {... */\n tag_146:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6507:6512 value */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6493:6504 fromBalance */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6493:6512 fromBalance - value */\n sub\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6475:6484 _balances */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6475:6490 _balances[from] */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6485:6489 from */\n dup7\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6475:6490 _balances[from] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6475:6512 _balances[from] = fromBalance - value */\n dup2\n swap1\n sstore\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6175:6537 {... */\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5997:6537 if (from == address(0)) {... */\n tag_145:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6565:6566 0 */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6551:6567 to == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6551:6553 to */\n dup3\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6551:6567 to == address(0) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n sub\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6547:6972 if (to == address(0)) {... */\n tag_148\n jumpi\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6730:6735 value */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6714:6726 _totalSupply */\n 0x02\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6714:6735 _totalSupply -= value */\n dup3\n dup3\n sload\n sub\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6547:6972 if (to == address(0)) {... */\n jump(tag_149)\n tag_148:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6942:6947 value */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6925:6934 _balances */\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6925:6938 _balances[to] */\n dup1\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6935:6937 to */\n dup5\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6925:6938 _balances[to] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6925:6947 _balances[to] += value */\n dup3\n dup3\n sload\n add\n swap3\n pop\n pop\n dup2\n swap1\n sstore\n pop\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6547:6972 if (to == address(0)) {... */\n tag_149:\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7002:7004 to */\n dup2\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6987:7012 Transfer(from, to, value) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6996:7000 from */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6987:7012 Transfer(from, to, value) */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":7006:7011 value */\n dup4\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":6987:7012 Transfer(from, to, value) */\n mload(0x40)\n tag_150\n swap2\n swap1\n tag_29\n jump\t// in\n tag_150:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"@openzeppelin/contracts/token/ERC20/ERC20.sol\":5912:7019 function _update(address from, address to, uint256 value) internal virtual {... */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7:106 */\n tag_151:\n /* \"#utility.yul\":59:65 */\n 0x00\n /* \"#utility.yul\":93:98 */\n dup2\n /* \"#utility.yul\":87:99 */\n mload\n /* \"#utility.yul\":77:99 */\n swap1\n pop\n /* \"#utility.yul\":7:106 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":112:281 */\n tag_152:\n /* \"#utility.yul\":196:207 */\n 0x00\n /* \"#utility.yul\":230:236 */\n dup3\n /* \"#utility.yul\":225:228 */\n dup3\n /* \"#utility.yul\":218:237 */\n mstore\n /* \"#utility.yul\":270:274 */\n 0x20\n /* \"#utility.yul\":265:268 */\n dup3\n /* \"#utility.yul\":261:275 */\n add\n /* \"#utility.yul\":246:275 */\n swap1\n pop\n /* \"#utility.yul\":112:281 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":287:533 */\n tag_153:\n /* \"#utility.yul\":368:369 */\n 0x00\n /* \"#utility.yul\":378:491 */\n tag_178:\n /* \"#utility.yul\":392:398 */\n dup4\n /* \"#utility.yul\":389:390 */\n dup2\n /* \"#utility.yul\":386:399 */\n lt\n /* \"#utility.yul\":378:491 */\n iszero\n tag_180\n jumpi\n /* \"#utility.yul\":477:478 */\n dup1\n /* \"#utility.yul\":472:475 */\n dup3\n /* \"#utility.yul\":468:479 */\n add\n /* \"#utility.yul\":462:480 */\n mload\n /* \"#utility.yul\":458:459 */\n dup2\n /* \"#utility.yul\":453:456 */\n dup5\n /* \"#utility.yul\":449:460 */\n add\n /* \"#utility.yul\":442:481 */\n mstore\n /* \"#utility.yul\":414:416 */\n 0x20\n /* \"#utility.yul\":411:412 */\n dup2\n /* \"#utility.yul\":407:417 */\n add\n /* \"#utility.yul\":402:417 */\n swap1\n pop\n /* \"#utility.yul\":378:491 */\n jump(tag_178)\n tag_180:\n /* \"#utility.yul\":525:526 */\n 0x00\n /* \"#utility.yul\":516:522 */\n dup5\n /* \"#utility.yul\":511:514 */\n dup5\n /* \"#utility.yul\":507:523 */\n add\n /* \"#utility.yul\":500:527 */\n mstore\n /* \"#utility.yul\":349:533 */\n pop\n /* \"#utility.yul\":287:533 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":539:641 */\n tag_154:\n /* \"#utility.yul\":580:586 */\n 0x00\n /* \"#utility.yul\":631:633 */\n 0x1f\n /* \"#utility.yul\":627:634 */\n not\n /* \"#utility.yul\":622:624 */\n 0x1f\n /* \"#utility.yul\":615:620 */\n dup4\n /* \"#utility.yul\":611:625 */\n add\n /* \"#utility.yul\":607:635 */\n and\n /* \"#utility.yul\":597:635 */\n swap1\n pop\n /* \"#utility.yul\":539:641 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":647:1024 */\n tag_155:\n /* \"#utility.yul\":735:738 */\n 0x00\n /* \"#utility.yul\":763:802 */\n tag_183\n /* \"#utility.yul\":796:801 */\n dup3\n /* \"#utility.yul\":763:802 */\n tag_151\n jump\t// in\n tag_183:\n /* \"#utility.yul\":818:889 */\n tag_184\n /* \"#utility.yul\":882:888 */\n dup2\n /* \"#utility.yul\":877:880 */\n dup6\n /* \"#utility.yul\":818:889 */\n tag_152\n jump\t// in\n tag_184:\n /* \"#utility.yul\":811:889 */\n swap4\n pop\n /* \"#utility.yul\":898:963 */\n tag_185\n /* \"#utility.yul\":956:962 */\n dup2\n /* \"#utility.yul\":951:954 */\n dup6\n /* \"#utility.yul\":944:948 */\n 0x20\n /* \"#utility.yul\":937:942 */\n dup7\n /* \"#utility.yul\":933:949 */\n add\n /* \"#utility.yul\":898:963 */\n tag_153\n jump\t// in\n tag_185:\n /* \"#utility.yul\":988:1017 */\n tag_186\n /* \"#utility.yul\":1010:1016 */\n dup2\n /* \"#utility.yul\":988:1017 */\n tag_154\n jump\t// in\n tag_186:\n /* \"#utility.yul\":983:986 */\n dup5\n /* \"#utility.yul\":979:1018 */\n add\n /* \"#utility.yul\":972:1018 */\n swap2\n pop\n /* \"#utility.yul\":739:1024 */\n pop\n /* \"#utility.yul\":647:1024 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1030:1343 */\n tag_19:\n /* \"#utility.yul\":1143:1147 */\n 0x00\n /* \"#utility.yul\":1181:1183 */\n 0x20\n /* \"#utility.yul\":1170:1179 */\n dup3\n /* \"#utility.yul\":1166:1184 */\n add\n /* \"#utility.yul\":1158:1184 */\n swap1\n pop\n /* \"#utility.yul\":1230:1239 */\n dup2\n /* \"#utility.yul\":1224:1228 */\n dup2\n /* \"#utility.yul\":1220:1240 */\n sub\n /* \"#utility.yul\":1216:1217 */\n 0x00\n /* \"#utility.yul\":1205:1214 */\n dup4\n /* \"#utility.yul\":1201:1218 */\n add\n /* \"#utility.yul\":1194:1241 */\n mstore\n /* \"#utility.yul\":1258:1336 */\n tag_188\n /* \"#utility.yul\":1331:1335 */\n dup2\n /* \"#utility.yul\":1322:1328 */\n dup5\n /* \"#utility.yul\":1258:1336 */\n tag_155\n jump\t// in\n tag_188:\n /* \"#utility.yul\":1250:1336 */\n swap1\n pop\n /* \"#utility.yul\":1030:1343 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1430:1547 */\n tag_157:\n /* \"#utility.yul\":1539:1540 */\n 0x00\n /* \"#utility.yul\":1536:1537 */\n dup1\n /* \"#utility.yul\":1529:1541 */\n revert\n /* \"#utility.yul\":1676:1802 */\n tag_159:\n /* \"#utility.yul\":1713:1720 */\n 0x00\n /* \"#utility.yul\":1753:1795 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":1746:1751 */\n dup3\n /* \"#utility.yul\":1742:1796 */\n and\n /* \"#utility.yul\":1731:1796 */\n swap1\n pop\n /* \"#utility.yul\":1676:1802 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1808:1904 */\n tag_160:\n /* \"#utility.yul\":1845:1852 */\n 0x00\n /* \"#utility.yul\":1874:1898 */\n tag_194\n /* \"#utility.yul\":1892:1897 */\n dup3\n /* \"#utility.yul\":1874:1898 */\n tag_159\n jump\t// in\n tag_194:\n /* \"#utility.yul\":1863:1898 */\n swap1\n pop\n /* \"#utility.yul\":1808:1904 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1910:2032 */\n tag_161:\n /* \"#utility.yul\":1983:2007 */\n tag_196\n /* \"#utility.yul\":2001:2006 */\n dup2\n /* \"#utility.yul\":1983:2007 */\n tag_160\n jump\t// in\n tag_196:\n /* \"#utility.yul\":1976:1981 */\n dup2\n /* \"#utility.yul\":1973:2008 */\n eq\n /* \"#utility.yul\":1963:2026 */\n tag_197\n jumpi\n /* \"#utility.yul\":2022:2023 */\n 0x00\n /* \"#utility.yul\":2019:2020 */\n dup1\n /* \"#utility.yul\":2012:2024 */\n revert\n /* \"#utility.yul\":1963:2026 */\n tag_197:\n /* \"#utility.yul\":1910:2032 */\n pop\n jump\t// out\n /* \"#utility.yul\":2038:2177 */\n tag_162:\n /* \"#utility.yul\":2084:2089 */\n 0x00\n /* \"#utility.yul\":2122:2128 */\n dup2\n /* \"#utility.yul\":2109:2129 */\n calldataload\n /* \"#utility.yul\":2100:2129 */\n swap1\n pop\n /* \"#utility.yul\":2138:2171 */\n tag_199\n /* \"#utility.yul\":2165:2170 */\n dup2\n /* \"#utility.yul\":2138:2171 */\n tag_161\n jump\t// in\n tag_199:\n /* \"#utility.yul\":2038:2177 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2183:2260 */\n tag_163:\n /* \"#utility.yul\":2220:2227 */\n 0x00\n /* \"#utility.yul\":2249:2254 */\n dup2\n /* \"#utility.yul\":2238:2254 */\n swap1\n pop\n /* \"#utility.yul\":2183:2260 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2266:2388 */\n tag_164:\n /* \"#utility.yul\":2339:2363 */\n tag_202\n /* \"#utility.yul\":2357:2362 */\n dup2\n /* \"#utility.yul\":2339:2363 */\n tag_163\n jump\t// in\n tag_202:\n /* \"#utility.yul\":2332:2337 */\n dup2\n /* \"#utility.yul\":2329:2364 */\n eq\n /* \"#utility.yul\":2319:2382 */\n tag_203\n jumpi\n /* \"#utility.yul\":2378:2379 */\n 0x00\n /* \"#utility.yul\":2375:2376 */\n dup1\n /* \"#utility.yul\":2368:2380 */\n revert\n /* \"#utility.yul\":2319:2382 */\n tag_203:\n /* \"#utility.yul\":2266:2388 */\n pop\n jump\t// out\n /* \"#utility.yul\":2394:2533 */\n tag_165:\n /* \"#utility.yul\":2440:2445 */\n 0x00\n /* \"#utility.yul\":2478:2484 */\n dup2\n /* \"#utility.yul\":2465:2485 */\n calldataload\n /* \"#utility.yul\":2456:2485 */\n swap1\n pop\n /* \"#utility.yul\":2494:2527 */\n tag_205\n /* \"#utility.yul\":2521:2526 */\n dup2\n /* \"#utility.yul\":2494:2527 */\n tag_164\n jump\t// in\n tag_205:\n /* \"#utility.yul\":2394:2533 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2539:3013 */\n tag_22:\n /* \"#utility.yul\":2607:2613 */\n 0x00\n /* \"#utility.yul\":2615:2621 */\n dup1\n /* \"#utility.yul\":2664:2666 */\n 0x40\n /* \"#utility.yul\":2652:2661 */\n dup4\n /* \"#utility.yul\":2643:2650 */\n dup6\n /* \"#utility.yul\":2639:2662 */\n sub\n /* \"#utility.yul\":2635:2667 */\n slt\n /* \"#utility.yul\":2632:2751 */\n iszero\n tag_207\n jumpi\n /* \"#utility.yul\":2670:2749 */\n tag_208\n tag_157\n jump\t// in\n tag_208:\n /* \"#utility.yul\":2632:2751 */\n tag_207:\n /* \"#utility.yul\":2790:2791 */\n 0x00\n /* \"#utility.yul\":2815:2868 */\n tag_209\n /* \"#utility.yul\":2860:2867 */\n dup6\n /* \"#utility.yul\":2851:2857 */\n dup3\n /* \"#utility.yul\":2840:2849 */\n dup7\n /* \"#utility.yul\":2836:2858 */\n add\n /* \"#utility.yul\":2815:2868 */\n tag_162\n jump\t// in\n tag_209:\n /* \"#utility.yul\":2805:2868 */\n swap3\n pop\n /* \"#utility.yul\":2761:2878 */\n pop\n /* \"#utility.yul\":2917:2919 */\n 0x20\n /* \"#utility.yul\":2943:2996 */\n tag_210\n /* \"#utility.yul\":2988:2995 */\n dup6\n /* \"#utility.yul\":2979:2985 */\n dup3\n /* \"#utility.yul\":2968:2977 */\n dup7\n /* \"#utility.yul\":2964:2986 */\n add\n /* \"#utility.yul\":2943:2996 */\n tag_165\n jump\t// in\n tag_210:\n /* \"#utility.yul\":2933:2996 */\n swap2\n pop\n /* \"#utility.yul\":2888:3006 */\n pop\n /* \"#utility.yul\":2539:3013 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3019:3109 */\n tag_166:\n /* \"#utility.yul\":3053:3060 */\n 0x00\n /* \"#utility.yul\":3096:3101 */\n dup2\n /* \"#utility.yul\":3089:3102 */\n iszero\n /* \"#utility.yul\":3082:3103 */\n iszero\n /* \"#utility.yul\":3071:3103 */\n swap1\n pop\n /* \"#utility.yul\":3019:3109 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3115:3224 */\n tag_167:\n /* \"#utility.yul\":3196:3217 */\n tag_213\n /* \"#utility.yul\":3211:3216 */\n dup2\n /* \"#utility.yul\":3196:3217 */\n tag_166\n jump\t// in\n tag_213:\n /* \"#utility.yul\":3191:3194 */\n dup3\n /* \"#utility.yul\":3184:3218 */\n mstore\n /* \"#utility.yul\":3115:3224 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3230:3440 */\n tag_25:\n /* \"#utility.yul\":3317:3321 */\n 0x00\n /* \"#utility.yul\":3355:3357 */\n 0x20\n /* \"#utility.yul\":3344:3353 */\n dup3\n /* \"#utility.yul\":3340:3358 */\n add\n /* \"#utility.yul\":3332:3358 */\n swap1\n pop\n /* \"#utility.yul\":3368:3433 */\n tag_215\n /* \"#utility.yul\":3430:3431 */\n 0x00\n /* \"#utility.yul\":3419:3428 */\n dup4\n /* \"#utility.yul\":3415:3432 */\n add\n /* \"#utility.yul\":3406:3412 */\n dup5\n /* \"#utility.yul\":3368:3433 */\n tag_167\n jump\t// in\n tag_215:\n /* \"#utility.yul\":3230:3440 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3446:3564 */\n tag_168:\n /* \"#utility.yul\":3533:3557 */\n tag_217\n /* \"#utility.yul\":3551:3556 */\n dup2\n /* \"#utility.yul\":3533:3557 */\n tag_163\n jump\t// in\n tag_217:\n /* \"#utility.yul\":3528:3531 */\n dup3\n /* \"#utility.yul\":3521:3558 */\n mstore\n /* \"#utility.yul\":3446:3564 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3570:3792 */\n tag_29:\n /* \"#utility.yul\":3663:3667 */\n 0x00\n /* \"#utility.yul\":3701:3703 */\n 0x20\n /* \"#utility.yul\":3690:3699 */\n dup3\n /* \"#utility.yul\":3686:3704 */\n add\n /* \"#utility.yul\":3678:3704 */\n swap1\n pop\n /* \"#utility.yul\":3714:3785 */\n tag_219\n /* \"#utility.yul\":3782:3783 */\n 0x00\n /* \"#utility.yul\":3771:3780 */\n dup4\n /* \"#utility.yul\":3767:3784 */\n add\n /* \"#utility.yul\":3758:3764 */\n dup5\n /* \"#utility.yul\":3714:3785 */\n tag_168\n jump\t// in\n tag_219:\n /* \"#utility.yul\":3570:3792 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3798:4417 */\n tag_32:\n /* \"#utility.yul\":3875:3881 */\n 0x00\n /* \"#utility.yul\":3883:3889 */\n dup1\n /* \"#utility.yul\":3891:3897 */\n 0x00\n /* \"#utility.yul\":3940:3942 */\n 0x60\n /* \"#utility.yul\":3928:3937 */\n dup5\n /* \"#utility.yul\":3919:3926 */\n dup7\n /* \"#utility.yul\":3915:3938 */\n sub\n /* \"#utility.yul\":3911:3943 */\n slt\n /* \"#utility.yul\":3908:4027 */\n iszero\n tag_221\n jumpi\n /* \"#utility.yul\":3946:4025 */\n tag_222\n tag_157\n jump\t// in\n tag_222:\n /* \"#utility.yul\":3908:4027 */\n tag_221:\n /* \"#utility.yul\":4066:4067 */\n 0x00\n /* \"#utility.yul\":4091:4144 */\n tag_223\n /* \"#utility.yul\":4136:4143 */\n dup7\n /* \"#utility.yul\":4127:4133 */\n dup3\n /* \"#utility.yul\":4116:4125 */\n dup8\n /* \"#utility.yul\":4112:4134 */\n add\n /* \"#utility.yul\":4091:4144 */\n tag_162\n jump\t// in\n tag_223:\n /* \"#utility.yul\":4081:4144 */\n swap4\n pop\n /* \"#utility.yul\":4037:4154 */\n pop\n /* \"#utility.yul\":4193:4195 */\n 0x20\n /* \"#utility.yul\":4219:4272 */\n tag_224\n /* \"#utility.yul\":4264:4271 */\n dup7\n /* \"#utility.yul\":4255:4261 */\n dup3\n /* \"#utility.yul\":4244:4253 */\n dup8\n /* \"#utility.yul\":4240:4262 */\n add\n /* \"#utility.yul\":4219:4272 */\n tag_162\n jump\t// in\n tag_224:\n /* \"#utility.yul\":4209:4272 */\n swap3\n pop\n /* \"#utility.yul\":4164:4282 */\n pop\n /* \"#utility.yul\":4321:4323 */\n 0x40\n /* \"#utility.yul\":4347:4400 */\n tag_225\n /* \"#utility.yul\":4392:4399 */\n dup7\n /* \"#utility.yul\":4383:4389 */\n dup3\n /* \"#utility.yul\":4372:4381 */\n dup8\n /* \"#utility.yul\":4368:4390 */\n add\n /* \"#utility.yul\":4347:4400 */\n tag_165\n jump\t// in\n tag_225:\n /* \"#utility.yul\":4337:4400 */\n swap2\n pop\n /* \"#utility.yul\":4292:4410 */\n pop\n /* \"#utility.yul\":3798:4417 */\n swap3\n pop\n swap3\n pop\n swap3\n jump\t// out\n /* \"#utility.yul\":4423:4509 */\n tag_169:\n /* \"#utility.yul\":4458:4465 */\n 0x00\n /* \"#utility.yul\":4498:4502 */\n 0xff\n /* \"#utility.yul\":4491:4496 */\n dup3\n /* \"#utility.yul\":4487:4503 */\n and\n /* \"#utility.yul\":4476:4503 */\n swap1\n pop\n /* \"#utility.yul\":4423:4509 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":4515:4627 */\n tag_170:\n /* \"#utility.yul\":4598:4620 */\n tag_228\n /* \"#utility.yul\":4614:4619 */\n dup2\n /* \"#utility.yul\":4598:4620 */\n tag_169\n jump\t// in\n tag_228:\n /* \"#utility.yul\":4593:4596 */\n dup3\n /* \"#utility.yul\":4586:4621 */\n mstore\n /* \"#utility.yul\":4515:4627 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4633:4847 */\n tag_38:\n /* \"#utility.yul\":4722:4726 */\n 0x00\n /* \"#utility.yul\":4760:4762 */\n 0x20\n /* \"#utility.yul\":4749:4758 */\n dup3\n /* \"#utility.yul\":4745:4763 */\n add\n /* \"#utility.yul\":4737:4763 */\n swap1\n pop\n /* \"#utility.yul\":4773:4840 */\n tag_230\n /* \"#utility.yul\":4837:4838 */\n 0x00\n /* \"#utility.yul\":4826:4835 */\n dup4\n /* \"#utility.yul\":4822:4839 */\n add\n /* \"#utility.yul\":4813:4819 */\n dup5\n /* \"#utility.yul\":4773:4840 */\n tag_170\n jump\t// in\n tag_230:\n /* \"#utility.yul\":4633:4847 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4853:5182 */\n tag_41:\n /* \"#utility.yul\":4912:4918 */\n 0x00\n /* \"#utility.yul\":4961:4963 */\n 0x20\n /* \"#utility.yul\":4949:4958 */\n dup3\n /* \"#utility.yul\":4940:4947 */\n dup5\n /* \"#utility.yul\":4936:4959 */\n sub\n /* \"#utility.yul\":4932:4964 */\n slt\n /* \"#utility.yul\":4929:5048 */\n iszero\n tag_232\n jumpi\n /* \"#utility.yul\":4967:5046 */\n tag_233\n tag_157\n jump\t// in\n tag_233:\n /* \"#utility.yul\":4929:5048 */\n tag_232:\n /* \"#utility.yul\":5087:5088 */\n 0x00\n /* \"#utility.yul\":5112:5165 */\n tag_234\n /* \"#utility.yul\":5157:5164 */\n dup5\n /* \"#utility.yul\":5148:5154 */\n dup3\n /* \"#utility.yul\":5137:5146 */\n dup6\n /* \"#utility.yul\":5133:5155 */\n add\n /* \"#utility.yul\":5112:5165 */\n tag_162\n jump\t// in\n tag_234:\n /* \"#utility.yul\":5102:5165 */\n swap2\n pop\n /* \"#utility.yul\":5058:5175 */\n pop\n /* \"#utility.yul\":4853:5182 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5188:5306 */\n tag_171:\n /* \"#utility.yul\":5275:5299 */\n tag_236\n /* \"#utility.yul\":5293:5298 */\n dup2\n /* \"#utility.yul\":5275:5299 */\n tag_160\n jump\t// in\n tag_236:\n /* \"#utility.yul\":5270:5273 */\n dup3\n /* \"#utility.yul\":5263:5300 */\n mstore\n /* \"#utility.yul\":5188:5306 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5312:5534 */\n tag_49:\n /* \"#utility.yul\":5405:5409 */\n 0x00\n /* \"#utility.yul\":5443:5445 */\n 0x20\n /* \"#utility.yul\":5432:5441 */\n dup3\n /* \"#utility.yul\":5428:5446 */\n add\n /* \"#utility.yul\":5420:5446 */\n swap1\n pop\n /* \"#utility.yul\":5456:5527 */\n tag_238\n /* \"#utility.yul\":5524:5525 */\n 0x00\n /* \"#utility.yul\":5513:5522 */\n dup4\n /* \"#utility.yul\":5509:5526 */\n add\n /* \"#utility.yul\":5500:5506 */\n dup5\n /* \"#utility.yul\":5456:5527 */\n tag_171\n jump\t// in\n tag_238:\n /* \"#utility.yul\":5312:5534 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":5540:6014 */\n tag_59:\n /* \"#utility.yul\":5608:5614 */\n 0x00\n /* \"#utility.yul\":5616:5622 */\n dup1\n /* \"#utility.yul\":5665:5667 */\n 0x40\n /* \"#utility.yul\":5653:5662 */\n dup4\n /* \"#utility.yul\":5644:5651 */\n dup6\n /* \"#utility.yul\":5640:5663 */\n sub\n /* \"#utility.yul\":5636:5668 */\n slt\n /* \"#utility.yul\":5633:5752 */\n iszero\n tag_240\n jumpi\n /* \"#utility.yul\":5671:5750 */\n tag_241\n tag_157\n jump\t// in\n tag_241:\n /* \"#utility.yul\":5633:5752 */\n tag_240:\n /* \"#utility.yul\":5791:5792 */\n 0x00\n /* \"#utility.yul\":5816:5869 */\n tag_242\n /* \"#utility.yul\":5861:5868 */\n dup6\n /* \"#utility.yul\":5852:5858 */\n dup3\n /* \"#utility.yul\":5841:5850 */\n dup7\n /* \"#utility.yul\":5837:5859 */\n add\n /* \"#utility.yul\":5816:5869 */\n tag_162\n jump\t// in\n tag_242:\n /* \"#utility.yul\":5806:5869 */\n swap3\n pop\n /* \"#utility.yul\":5762:5879 */\n pop\n /* \"#utility.yul\":5918:5920 */\n 0x20\n /* \"#utility.yul\":5944:5997 */\n tag_243\n /* \"#utility.yul\":5989:5996 */\n dup6\n /* \"#utility.yul\":5980:5986 */\n dup3\n /* \"#utility.yul\":5969:5978 */\n dup7\n /* \"#utility.yul\":5965:5987 */\n add\n /* \"#utility.yul\":5944:5997 */\n tag_162\n jump\t// in\n tag_243:\n /* \"#utility.yul\":5934:5997 */\n swap2\n pop\n /* \"#utility.yul\":5889:6007 */\n pop\n /* \"#utility.yul\":5540:6014 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":6020:6200 */\n tag_172:\n /* \"#utility.yul\":6068:6145 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":6065:6066 */\n 0x00\n /* \"#utility.yul\":6058:6146 */\n mstore\n /* \"#utility.yul\":6165:6169 */\n 0x22\n /* \"#utility.yul\":6162:6163 */\n 0x04\n /* \"#utility.yul\":6155:6170 */\n mstore\n /* \"#utility.yul\":6189:6193 */\n 0x24\n /* \"#utility.yul\":6186:6187 */\n 0x00\n /* \"#utility.yul\":6179:6194 */\n revert\n /* \"#utility.yul\":6206:6526 */\n tag_67:\n /* \"#utility.yul\":6250:6256 */\n 0x00\n /* \"#utility.yul\":6287:6288 */\n 0x02\n /* \"#utility.yul\":6281:6285 */\n dup3\n /* \"#utility.yul\":6277:6289 */\n div\n /* \"#utility.yul\":6267:6289 */\n swap1\n pop\n /* \"#utility.yul\":6334:6335 */\n 0x01\n /* \"#utility.yul\":6328:6332 */\n dup3\n /* \"#utility.yul\":6324:6336 */\n and\n /* \"#utility.yul\":6355:6373 */\n dup1\n /* \"#utility.yul\":6345:6426 */\n tag_246\n jumpi\n /* \"#utility.yul\":6411:6415 */\n 0x7f\n /* \"#utility.yul\":6403:6409 */\n dup3\n /* \"#utility.yul\":6399:6416 */\n and\n /* \"#utility.yul\":6389:6416 */\n swap2\n pop\n /* \"#utility.yul\":6345:6426 */\n tag_246:\n /* \"#utility.yul\":6473:6475 */\n 0x20\n /* \"#utility.yul\":6465:6471 */\n dup3\n /* \"#utility.yul\":6462:6476 */\n lt\n /* \"#utility.yul\":6442:6460 */\n dup2\n /* \"#utility.yul\":6439:6477 */\n sub\n /* \"#utility.yul\":6436:6520 */\n tag_247\n jumpi\n /* \"#utility.yul\":6492:6510 */\n tag_248\n tag_172\n jump\t// in\n tag_248:\n /* \"#utility.yul\":6436:6520 */\n tag_247:\n /* \"#utility.yul\":6257:6526 */\n pop\n /* \"#utility.yul\":6206:6526 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":6532:6974 */\n tag_118:\n /* \"#utility.yul\":6681:6685 */\n 0x00\n /* \"#utility.yul\":6719:6721 */\n 0x60\n /* \"#utility.yul\":6708:6717 */\n dup3\n /* \"#utility.yul\":6704:6722 */\n add\n /* \"#utility.yul\":6696:6722 */\n swap1\n pop\n /* \"#utility.yul\":6732:6803 */\n tag_250\n /* \"#utility.yul\":6800:6801 */\n 0x00\n /* \"#utility.yul\":6789:6798 */\n dup4\n /* \"#utility.yul\":6785:6802 */\n add\n /* \"#utility.yul\":6776:6782 */\n dup7\n /* \"#utility.yul\":6732:6803 */\n tag_171\n jump\t// in\n tag_250:\n /* \"#utility.yul\":6813:6885 */\n tag_251\n /* \"#utility.yul\":6881:6883 */\n 0x20\n /* \"#utility.yul\":6870:6879 */\n dup4\n /* \"#utility.yul\":6866:6884 */\n add\n /* \"#utility.yul\":6857:6863 */\n dup6\n /* \"#utility.yul\":6813:6885 */\n tag_168\n jump\t// in\n tag_251:\n /* \"#utility.yul\":6895:6967 */\n tag_252\n /* \"#utility.yul\":6963:6965 */\n 0x40\n /* \"#utility.yul\":6952:6961 */\n dup4\n /* \"#utility.yul\":6948:6966 */\n add\n /* \"#utility.yul\":6939:6945 */\n dup5\n /* \"#utility.yul\":6895:6967 */\n tag_168\n jump\t// in\n tag_252:\n /* \"#utility.yul\":6532:6974 */\n swap5\n swap4\n pop\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6980:7160 */\n tag_173:\n /* \"#utility.yul\":7028:7105 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":7025:7026 */\n 0x00\n /* \"#utility.yul\":7018:7106 */\n mstore\n /* \"#utility.yul\":7125:7129 */\n 0x11\n /* \"#utility.yul\":7122:7123 */\n 0x04\n /* \"#utility.yul\":7115:7130 */\n mstore\n /* \"#utility.yul\":7149:7153 */\n 0x24\n /* \"#utility.yul\":7146:7147 */\n 0x00\n /* \"#utility.yul\":7139:7154 */\n revert\n /* \"#utility.yul\":7166:7357 */\n tag_144:\n /* \"#utility.yul\":7206:7209 */\n 0x00\n /* \"#utility.yul\":7225:7245 */\n tag_255\n /* \"#utility.yul\":7243:7244 */\n dup3\n /* \"#utility.yul\":7225:7245 */\n tag_163\n jump\t// in\n tag_255:\n /* \"#utility.yul\":7220:7245 */\n swap2\n pop\n /* \"#utility.yul\":7259:7279 */\n tag_256\n /* \"#utility.yul\":7277:7278 */\n dup4\n /* \"#utility.yul\":7259:7279 */\n tag_163\n jump\t// in\n tag_256:\n /* \"#utility.yul\":7254:7279 */\n swap3\n pop\n /* \"#utility.yul\":7302:7303 */\n dup3\n /* \"#utility.yul\":7299:7300 */\n dup3\n /* \"#utility.yul\":7295:7304 */\n add\n /* \"#utility.yul\":7288:7304 */\n swap1\n pop\n /* \"#utility.yul\":7323:7326 */\n dup1\n /* \"#utility.yul\":7320:7321 */\n dup3\n /* \"#utility.yul\":7317:7327 */\n gt\n /* \"#utility.yul\":7314:7350 */\n iszero\n tag_257\n jumpi\n /* \"#utility.yul\":7330:7348 */\n tag_258\n tag_173\n jump\t// in\n tag_258:\n /* \"#utility.yul\":7314:7350 */\n tag_257:\n /* \"#utility.yul\":7166:7357 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n\n auxdata: 0xa26469706673582212203e2e4dadbd7d97c23f659d54dc57d7529c6ef5f4ad2e8e938d2bd8e79bc45c0664736f6c63430008140033\n}\n",
"bytecode": {
"functionDebugData": {
"@_336": {
"entryPoint": null,
"id": 336,
"parameterSlots": 2,
"returnSlots": 0
},
"@_50": {
"entryPoint": null,
"id": 50,
"parameterSlots": 1,
"returnSlots": 0
},
"@_962": {
"entryPoint": null,
"id": 962,
"parameterSlots": 1,
"returnSlots": 0
},
"@_mint_639": {
"entryPoint": 554,
"id": 639,
"parameterSlots": 2,
"returnSlots": 0
},
"@_transferOwnership_146": {
"entryPoint": 359,
"id": 146,
"parameterSlots": 1,
"returnSlots": 0
},
"@_update_606": {
"entryPoint": 692,
"id": 606,
"parameterSlots": 3,
"returnSlots": 0
},
"abi_decode_t_uint256_fromMemory": {
"entryPoint": 1278,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256_fromMemory": {
"entryPoint": 1300,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_address_to_t_address_fromStack": {
"entryPoint": 2229,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 2376,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": 2246,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": {
"entryPoint": 2393,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 2452,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_dataslot_t_string_storage": {
"entryPoint": 1500,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 1348,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 2318,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"clean_up_bytearray_end_slots_t_string_storage": {
"entryPoint": 1800,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"cleanup_t_address": {
"entryPoint": 2210,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint160": {
"entryPoint": 2179,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"cleanup_t_uint256": {
"entryPoint": 1244,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"clear_storage_range_t_bytes1": {
"entryPoint": 1762,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"convert_t_uint256_to_t_uint256": {
"entryPoint": 1639,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
"entryPoint": 1951,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"divide_by_32_ceil": {
"entryPoint": 1518,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_byte_array_length": {
"entryPoint": 1448,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_used_part_and_set_length_of_short_byte_array": {
"entryPoint": 1922,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"identity": {
"entryPoint": 1630,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"mask_bytes_dynamic": {
"entryPoint": 1892,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 2273,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x22": {
"entryPoint": 1403,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 1358,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"prepare_store_t_uint256": {
"entryPoint": 1678,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": null,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 1240,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"shift_left_dynamic": {
"entryPoint": 1533,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"shift_right_unsigned_dynamic": {
"entryPoint": 1880,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"storage_set_to_zero_t_uint256": {
"entryPoint": 1734,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"update_byte_slice_dynamic32": {
"entryPoint": 1545,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"update_storage_value_t_uint256_to_t_uint256": {
"entryPoint": 1687,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 1253,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"zero_value_for_split_t_uint256": {
"entryPoint": 1730,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:7961:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "47:35:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "57:19:7",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "73:2:7",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "67:5:7"
},
"nodeType": "YulFunctionCall",
"src": "67:9:7"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "57:6:7"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "40:6:7",
"type": ""
}
],
"src": "7:75:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "177:28:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "194:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "197:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "187:6:7"
},
"nodeType": "YulFunctionCall",
"src": "187:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "187:12:7"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "88:117:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "300:28:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "317:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "320:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "310:6:7"
},
"nodeType": "YulFunctionCall",
"src": "310:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "310:12:7"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "211:117:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "379:32:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "389:16:7",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "400:5:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "389:7:7"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "361:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "371:7:7",
"type": ""
}
],
"src": "334:77:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "460:79:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "517:16:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "526:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "529:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "519:6:7"
},
"nodeType": "YulFunctionCall",
"src": "519:12:7"
},
"nodeType": "YulExpressionStatement",
"src": "519:12:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "483:5:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "508:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "490:17:7"
},
"nodeType": "YulFunctionCall",
"src": "490:24:7"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "480:2:7"
},
"nodeType": "YulFunctionCall",
"src": "480:35:7"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "473:6:7"
},
"nodeType": "YulFunctionCall",
"src": "473:43:7"
},
"nodeType": "YulIf",
"src": "470:63:7"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "453:5:7",
"type": ""
}
],
"src": "417:122:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "608:80:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "618:22:7",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "633:6:7"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "627:5:7"
},
"nodeType": "YulFunctionCall",
"src": "627:13:7"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "618:5:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "676:5:7"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "649:26:7"
},
"nodeType": "YulFunctionCall",
"src": "649:33:7"
},
"nodeType": "YulExpressionStatement",
"src": "649:33:7"
}
]
},
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "586:6:7",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "594:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "602:5:7",
"type": ""
}
],
"src": "545:143:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "771:274:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "817:83:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "819:77:7"
},
"nodeType": "YulFunctionCall",
"src": "819:79:7"
},
"nodeType": "YulExpressionStatement",
"src": "819:79:7"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "792:7:7"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "801:9:7"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "788:3:7"
},
"nodeType": "YulFunctionCall",
"src": "788:23:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "813:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "784:3:7"
},
"nodeType": "YulFunctionCall",
"src": "784:32:7"
},
"nodeType": "YulIf",
"src": "781:119:7"
},
{
"nodeType": "YulBlock",
"src": "910:128:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "925:15:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "939:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "929:6:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "954:74:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1000:9:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1011:6:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "996:3:7"
},
"nodeType": "YulFunctionCall",
"src": "996:22:7"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1020:7:7"
}
],
"functionName": {
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulIdentifier",
"src": "964:31:7"
},
"nodeType": "YulFunctionCall",
"src": "964:64:7"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "954:6:7"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "741:9:7",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "752:7:7",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "764:6:7",
"type": ""
}
],
"src": "694:351:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1110:40:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1121:22:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1137:5:7"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1131:5:7"
},
"nodeType": "YulFunctionCall",
"src": "1131:12:7"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1121:6:7"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1093:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1103:6:7",
"type": ""
}
],
"src": "1051:99:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1184:152:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1201:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1204:77:7",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1194:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1194:88:7"
},
"nodeType": "YulExpressionStatement",
"src": "1194:88:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1298:1:7",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1301:4:7",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1291:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1291:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "1291:15:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1322:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1325:4:7",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1315:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1315:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "1315:15:7"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "1156:180:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1370:152:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1387:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1390:77:7",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1380:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1380:88:7"
},
"nodeType": "YulExpressionStatement",
"src": "1380:88:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1484:1:7",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1487:4:7",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1477:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1477:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "1477:15:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1508:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1511:4:7",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1501:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1501:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "1501:15:7"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "1342:180:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1579:269:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1589:22:7",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1603:4:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1609:1:7",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "1599:3:7"
},
"nodeType": "YulFunctionCall",
"src": "1599:12:7"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1589:6:7"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1620:38:7",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1650:4:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1656:1:7",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1646:3:7"
},
"nodeType": "YulFunctionCall",
"src": "1646:12:7"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "1624:18:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1697:51:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1711:27:7",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1725:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1733:4:7",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1721:3:7"
},
"nodeType": "YulFunctionCall",
"src": "1721:17:7"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1711:6:7"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "1677:18:7"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1670:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1670:26:7"
},
"nodeType": "YulIf",
"src": "1667:81:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1800:42:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "1814:16:7"
},
"nodeType": "YulFunctionCall",
"src": "1814:18:7"
},
"nodeType": "YulExpressionStatement",
"src": "1814:18:7"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "1764:18:7"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1787:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1795:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1784:2:7"
},
"nodeType": "YulFunctionCall",
"src": "1784:14:7"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1761:2:7"
},
"nodeType": "YulFunctionCall",
"src": "1761:38:7"
},
"nodeType": "YulIf",
"src": "1758:84:7"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "1563:4:7",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1572:6:7",
"type": ""
}
],
"src": "1528:320:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1908:87:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1918:11:7",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "1926:3:7"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1918:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1946:1:7",
"type": "",
"value": "0"
},
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "1949:3:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1939:6:7"
},
"nodeType": "YulFunctionCall",
"src": "1939:14:7"
},
"nodeType": "YulExpressionStatement",
"src": "1939:14:7"
},
{
"nodeType": "YulAssignment",
"src": "1962:26:7",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1980:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1983:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "keccak256",
"nodeType": "YulIdentifier",
"src": "1970:9:7"
},
"nodeType": "YulFunctionCall",
"src": "1970:18:7"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1962:4:7"
}
]
}
]
},
"name": "array_dataslot_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "1895:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "1903:4:7",
"type": ""
}
],
"src": "1854:141:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2045:49:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2055:33:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2073:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2080:2:7",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2069:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2069:14:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2085:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "2065:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2065:23:7"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "2055:6:7"
}
]
}
]
},
"name": "divide_by_32_ceil",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2028:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "2038:6:7",
"type": ""
}
],
"src": "2001:93:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2153:54:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2163:37:7",
"value": {
"arguments": [
{
"name": "bits",
"nodeType": "YulIdentifier",
"src": "2188:4:7"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2194:5:7"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "2184:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2184:16:7"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "2163:8:7"
}
]
}
]
},
"name": "shift_left_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nodeType": "YulTypedName",
"src": "2128:4:7",
"type": ""
},
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2134:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "2144:8:7",
"type": ""
}
],
"src": "2100:107:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2289:317:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2299:35:7",
"value": {
"arguments": [
{
"name": "shiftBytes",
"nodeType": "YulIdentifier",
"src": "2320:10:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2332:1:7",
"type": "",
"value": "8"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "2316:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2316:18:7"
},
"variables": [
{
"name": "shiftBits",
"nodeType": "YulTypedName",
"src": "2303:9:7",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2343:109:7",
"value": {
"arguments": [
{
"name": "shiftBits",
"nodeType": "YulIdentifier",
"src": "2374:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2385:66:7",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
"src": "2355:18:7"
},
"nodeType": "YulFunctionCall",
"src": "2355:97:7"
},
"variables": [
{
"name": "mask",
"nodeType": "YulTypedName",
"src": "2347:4:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2461:51:7",
"value": {
"arguments": [
{
"name": "shiftBits",
"nodeType": "YulIdentifier",
"src": "2492:9:7"
},
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "2503:8:7"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
"src": "2473:18:7"
},
"nodeType": "YulFunctionCall",
"src": "2473:39:7"
},
"variableNames": [
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "2461:8:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2521:30:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2534:5:7"
},
{
"arguments": [
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "2545:4:7"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "2541:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2541:9:7"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2530:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2530:21:7"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2521:5:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2560:40:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2573:5:7"
},
{
"arguments": [
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "2584:8:7"
},
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "2594:4:7"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2580:3:7"
},
"nodeType": "YulFunctionCall",
"src": "2580:19:7"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "2570:2:7"
},
"nodeType": "YulFunctionCall",
"src": "2570:30:7"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "2560:6:7"
}
]
}
]
},
"name": "update_byte_slice_dynamic32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2250:5:7",
"type": ""
},
{
"name": "shiftBytes",
"nodeType": "YulTypedName",
"src": "2257:10:7",
"type": ""
},
{
"name": "toInsert",
"nodeType": "YulTypedName",
"src": "2269:8:7",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "2282:6:7",
"type": ""
}
],
"src": "2213:393:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2644:28:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2654:12:7",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2661:5:7"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "2654:3:7"
}
]
}
]
},
"name": "identity",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2630:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "2640:3:7",
"type": ""
}
],
"src": "2612:60:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2738:82:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2748:66:7",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2806:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2788:17:7"
},
"nodeType": "YulFunctionCall",
"src": "2788:24:7"
}
],
"functionName": {
"name": "identity",
"nodeType": "YulIdentifier",
"src": "2779:8:7"
},
"nodeType": "YulFunctionCall",
"src": "2779:34:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "2761:17:7"
},
"nodeType": "YulFunctionCall",
"src": "2761:53:7"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "2748:9:7"
}
]
}
]
},
"name": "convert_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2718:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "2728:9:7",
"type": ""
}
],
"src": "2678:142:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2873:28:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2883:12:7",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2890:5:7"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "2883:3:7"
}
]
}
]
},
"name": "prepare_store_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2859:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "2869:3:7",
"type": ""
}
],
"src": "2826:75:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2983:193:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2993:63:7",
"value": {
"arguments": [
{
"name": "value_0",
"nodeType": "YulIdentifier",
"src": "3048:7:7"
}
],
"functionName": {
"name": "convert_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "3017:30:7"
},
"nodeType": "YulFunctionCall",
"src": "3017:39:7"
},
"variables": [
{
"name": "convertedValue_0",
"nodeType": "YulTypedName",
"src": "2997:16:7",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "3072:4:7"
},
{
"arguments": [
{
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "3112:4:7"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "3106:5:7"
},
"nodeType": "YulFunctionCall",
"src": "3106:11:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3119:6:7"
},
{
"arguments": [
{
"name": "convertedValue_0",
"nodeType": "YulIdentifier",
"src": "3151:16:7"
}
],
"functionName": {
"name": "prepare_store_t_uint256",
"nodeType": "YulIdentifier",
"src": "3127:23:7"
},
"nodeType": "YulFunctionCall",
"src": "3127:41:7"
}
],
"functionName": {
"name": "update_byte_slice_dynamic32",
"nodeType": "YulIdentifier",
"src": "3078:27:7"
},
"nodeType": "YulFunctionCall",
"src": "3078:91:7"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "3065:6:7"
},
"nodeType": "YulFunctionCall",
"src": "3065:105:7"
},
"nodeType": "YulExpressionStatement",
"src": "3065:105:7"
}
]
},
"name": "update_storage_value_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "2960:4:7",
"type": ""
},
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "2966:6:7",
"type": ""
},
{
"name": "value_0",
"nodeType": "YulTypedName",
"src": "2974:7:7",
"type": ""
}
],
"src": "2907:269:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3231:24:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3241:8:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3248:1:7",
"type": "",
"value": "0"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "3241:3:7"
}
]
}
]
},
"name": "zero_value_for_split_t_uint256",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "3227:3:7",
"type": ""
}
],
"src": "3182:73:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3314:136:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3324:46:7",
"value": {
"arguments": [],
"functionName": {
"name": "zero_value_for_split_t_uint256",
"nodeType": "YulIdentifier",
"src": "3338:30:7"
},
"nodeType": "YulFunctionCall",
"src": "3338:32:7"
},
"variables": [
{
"name": "zero_0",
"nodeType": "YulTypedName",
"src": "3328:6:7",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "3423:4:7"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "3429:6:7"
},
{
"name": "zero_0",
"nodeType": "YulIdentifier",
"src": "3437:6:7"
}
],
"functionName": {
"name": "update_storage_value_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "3379:43:7"
},
"nodeType": "YulFunctionCall",
"src": "3379:65:7"
},
"nodeType": "YulExpressionStatement",
"src": "3379:65:7"
}
]
},
"name": "storage_set_to_zero_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "3300:4:7",
"type": ""
},
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "3306:6:7",
"type": ""
}
],
"src": "3261:189:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3506:136:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3573:63:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "3617:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3624:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "storage_set_to_zero_t_uint256",
"nodeType": "YulIdentifier",
"src": "3587:29:7"
},
"nodeType": "YulFunctionCall",
"src": "3587:39:7"
},
"nodeType": "YulExpressionStatement",
"src": "3587:39:7"
}
]
},
"condition": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "3526:5:7"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3533:3:7"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "3523:2:7"
},
"nodeType": "YulFunctionCall",
"src": "3523:14:7"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "3538:26:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3540:22:7",
"value": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "3553:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3560:1:7",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3549:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3549:13:7"
},
"variableNames": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "3540:5:7"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "3520:2:7",
"statements": []
},
"src": "3516:120:7"
}
]
},
"name": "clear_storage_range_t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "start",
"nodeType": "YulTypedName",
"src": "3494:5:7",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "3501:3:7",
"type": ""
}
],
"src": "3456:186:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3727:464:7",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3753:431:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3767:54:7",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "3815:5:7"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "3783:31:7"
},
"nodeType": "YulFunctionCall",
"src": "3783:38:7"
},
"variables": [
{
"name": "dataArea",
"nodeType": "YulTypedName",
"src": "3771:8:7",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3834:63:7",
"value": {
"arguments": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "3857:8:7"
},
{
"arguments": [
{
"name": "startIndex",
"nodeType": "YulIdentifier",
"src": "3885:10:7"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nodeType": "YulIdentifier",
"src": "3867:17:7"
},
"nodeType": "YulFunctionCall",
"src": "3867:29:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3853:3:7"
},
"nodeType": "YulFunctionCall",
"src": "3853:44:7"
},
"variables": [
{
"name": "deleteStart",
"nodeType": "YulTypedName",
"src": "3838:11:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4054:27:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4056:23:7",
"value": {
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "4071:8:7"
},
"variableNames": [
{
"name": "deleteStart",
"nodeType": "YulIdentifier",
"src": "4056:11:7"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "startIndex",
"nodeType": "YulIdentifier",
"src": "4038:10:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4050:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "4035:2:7"
},
"nodeType": "YulFunctionCall",
"src": "4035:18:7"
},
"nodeType": "YulIf",
"src": "4032:49:7"
},
{
"expression": {
"arguments": [
{
"name": "deleteStart",
"nodeType": "YulIdentifier",
"src": "4123:11:7"
},
{
"arguments": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "4140:8:7"
},
{
"arguments": [
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "4168:3:7"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nodeType": "YulIdentifier",
"src": "4150:17:7"
},
"nodeType": "YulFunctionCall",
"src": "4150:22:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4136:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4136:37:7"
}
],
"functionName": {
"name": "clear_storage_range_t_bytes1",
"nodeType": "YulIdentifier",
"src": "4094:28:7"
},
"nodeType": "YulFunctionCall",
"src": "4094:80:7"
},
"nodeType": "YulExpressionStatement",
"src": "4094:80:7"
}
]
},
"condition": {
"arguments": [
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "3744:3:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3749:2:7",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3741:2:7"
},
"nodeType": "YulFunctionCall",
"src": "3741:11:7"
},
"nodeType": "YulIf",
"src": "3738:446:7"
}
]
},
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "3703:5:7",
"type": ""
},
{
"name": "len",
"nodeType": "YulTypedName",
"src": "3710:3:7",
"type": ""
},
{
"name": "startIndex",
"nodeType": "YulTypedName",
"src": "3715:10:7",
"type": ""
}
],
"src": "3648:543:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4260:54:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4270:37:7",
"value": {
"arguments": [
{
"name": "bits",
"nodeType": "YulIdentifier",
"src": "4295:4:7"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4301:5:7"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "4291:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4291:16:7"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "4270:8:7"
}
]
}
]
},
"name": "shift_right_unsigned_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nodeType": "YulTypedName",
"src": "4235:4:7",
"type": ""
},
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4241:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "4251:8:7",
"type": ""
}
],
"src": "4197:117:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4371:118:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4381:68:7",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4430:1:7",
"type": "",
"value": "8"
},
{
"name": "bytes",
"nodeType": "YulIdentifier",
"src": "4433:5:7"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "4426:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4426:13:7"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4445:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "4441:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4441:6:7"
}
],
"functionName": {
"name": "shift_right_unsigned_dynamic",
"nodeType": "YulIdentifier",
"src": "4397:28:7"
},
"nodeType": "YulFunctionCall",
"src": "4397:51:7"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "4393:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4393:56:7"
},
"variables": [
{
"name": "mask",
"nodeType": "YulTypedName",
"src": "4385:4:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4458:25:7",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "4472:4:7"
},
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "4478:4:7"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "4468:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4468:15:7"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "4458:6:7"
}
]
}
]
},
"name": "mask_bytes_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "4348:4:7",
"type": ""
},
{
"name": "bytes",
"nodeType": "YulTypedName",
"src": "4354:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "4364:6:7",
"type": ""
}
],
"src": "4320:169:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4575:214:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4708:37:7",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "4735:4:7"
},
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "4741:3:7"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nodeType": "YulIdentifier",
"src": "4716:18:7"
},
"nodeType": "YulFunctionCall",
"src": "4716:29:7"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "4708:4:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "4754:29:7",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "4765:4:7"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4775:1:7",
"type": "",
"value": "2"
},
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "4778:3:7"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "4771:3:7"
},
"nodeType": "YulFunctionCall",
"src": "4771:11:7"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "4762:2:7"
},
"nodeType": "YulFunctionCall",
"src": "4762:21:7"
},
"variableNames": [
{
"name": "used",
"nodeType": "YulIdentifier",
"src": "4754:4:7"
}
]
}
]
},
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "4556:4:7",
"type": ""
},
{
"name": "len",
"nodeType": "YulTypedName",
"src": "4562:3:7",
"type": ""
}
],
"returnVariables": [
{
"name": "used",
"nodeType": "YulTypedName",
"src": "4570:4:7",
"type": ""
}
],
"src": "4494:295:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4886:1303:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "4897:51:7",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4944:3:7"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "4911:32:7"
},
"nodeType": "YulFunctionCall",
"src": "4911:37:7"
},
"variables": [
{
"name": "newLen",
"nodeType": "YulTypedName",
"src": "4901:6:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5033:22:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "5035:16:7"
},
"nodeType": "YulFunctionCall",
"src": "5035:18:7"
},
"nodeType": "YulExpressionStatement",
"src": "5035:18:7"
}
]
},
"condition": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5005:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5013:18:7",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5002:2:7"
},
"nodeType": "YulFunctionCall",
"src": "5002:30:7"
},
"nodeType": "YulIf",
"src": "4999:56:7"
},
{
"nodeType": "YulVariableDeclaration",
"src": "5065:52:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "5111:4:7"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "5105:5:7"
},
"nodeType": "YulFunctionCall",
"src": "5105:11:7"
}
],
"functionName": {
"name": "extract_byte_array_length",
"nodeType": "YulIdentifier",
"src": "5079:25:7"
},
"nodeType": "YulFunctionCall",
"src": "5079:38:7"
},
"variables": [
{
"name": "oldLen",
"nodeType": "YulTypedName",
"src": "5069:6:7",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "5210:4:7"
},
{
"name": "oldLen",
"nodeType": "YulIdentifier",
"src": "5216:6:7"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5224:6:7"
}
],
"functionName": {
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nodeType": "YulIdentifier",
"src": "5164:45:7"
},
"nodeType": "YulFunctionCall",
"src": "5164:67:7"
},
"nodeType": "YulExpressionStatement",
"src": "5164:67:7"
},
{
"nodeType": "YulVariableDeclaration",
"src": "5241:18:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5258:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "srcOffset",
"nodeType": "YulTypedName",
"src": "5245:9:7",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5269:17:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5282:4:7",
"type": "",
"value": "0x20"
},
"variableNames": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "5269:9:7"
}
]
},
{
"cases": [
{
"body": {
"nodeType": "YulBlock",
"src": "5333:611:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5347:37:7",
"value": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5366:6:7"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5378:4:7",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "5374:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5374:9:7"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5362:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5362:22:7"
},
"variables": [
{
"name": "loopEnd",
"nodeType": "YulTypedName",
"src": "5351:7:7",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "5398:51:7",
"value": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "5444:4:7"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "5412:31:7"
},
"nodeType": "YulFunctionCall",
"src": "5412:37:7"
},
"variables": [
{
"name": "dstPtr",
"nodeType": "YulTypedName",
"src": "5402:6:7",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "5462:10:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5471:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "5466:1:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5530:163:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "5555:6:7"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "5573:3:7"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "5578:9:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5569:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5569:19:7"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "5563:5:7"
},
"nodeType": "YulFunctionCall",
"src": "5563:26:7"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "5548:6:7"
},
"nodeType": "YulFunctionCall",
"src": "5548:42:7"
},
"nodeType": "YulExpressionStatement",
"src": "5548:42:7"
},
{
"nodeType": "YulAssignment",
"src": "5607:24:7",
"value": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "5621:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5629:1:7",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5617:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5617:14:7"
},
"variableNames": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "5607:6:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "5648:31:7",
"value": {
"arguments": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "5665:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5676:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5661:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5661:18:7"
},
"variableNames": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "5648:9:7"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "5496:1:7"
},
{
"name": "loopEnd",
"nodeType": "YulIdentifier",
"src": "5499:7:7"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "5493:2:7"
},
"nodeType": "YulFunctionCall",
"src": "5493:14:7"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "5508:21:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5510:17:7",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "5519:1:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5522:4:7",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5515:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5515:12:7"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "5510:1:7"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "5489:3:7",
"statements": []
},
"src": "5485:208:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5729:156:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5747:43:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "5774:3:7"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "5779:9:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5770:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5770:19:7"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "5764:5:7"
},
"nodeType": "YulFunctionCall",
"src": "5764:26:7"
},
"variables": [
{
"name": "lastValue",
"nodeType": "YulTypedName",
"src": "5751:9:7",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "5814:6:7"
},
{
"arguments": [
{
"name": "lastValue",
"nodeType": "YulIdentifier",
"src": "5841:9:7"
},
{
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5856:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5864:4:7",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5852:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5852:17:7"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nodeType": "YulIdentifier",
"src": "5822:18:7"
},
"nodeType": "YulFunctionCall",
"src": "5822:48:7"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "5807:6:7"
},
"nodeType": "YulFunctionCall",
"src": "5807:64:7"
},
"nodeType": "YulExpressionStatement",
"src": "5807:64:7"
}
]
},
"condition": {
"arguments": [
{
"name": "loopEnd",
"nodeType": "YulIdentifier",
"src": "5712:7:7"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5721:6:7"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "5709:2:7"
},
"nodeType": "YulFunctionCall",
"src": "5709:19:7"
},
"nodeType": "YulIf",
"src": "5706:179:7"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "5905:4:7"
},
{
"arguments": [
{
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5919:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5927:1:7",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "5915:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5915:14:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5931:1:7",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5911:3:7"
},
"nodeType": "YulFunctionCall",
"src": "5911:22:7"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "5898:6:7"
},
"nodeType": "YulFunctionCall",
"src": "5898:36:7"
},
"nodeType": "YulExpressionStatement",
"src": "5898:36:7"
}
]
},
"nodeType": "YulCase",
"src": "5326:618:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5331:1:7",
"type": "",
"value": "1"
}
},
{
"body": {
"nodeType": "YulBlock",
"src": "5961:222:7",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5975:14:7",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5988:1:7",
"type": "",
"value": "0"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "5979:5:7",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6012:67:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6030:35:7",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "6049:3:7"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "6054:9:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6045:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6045:19:7"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "6039:5:7"
},
"nodeType": "YulFunctionCall",
"src": "6039:26:7"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6030:5:7"
}
]
}
]
},
"condition": {
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "6005:6:7"
},
"nodeType": "YulIf",
"src": "6002:77:7"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "6099:4:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6158:5:7"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "6165:6:7"
}
],
"functionName": {
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nodeType": "YulIdentifier",
"src": "6105:52:7"
},
"nodeType": "YulFunctionCall",
"src": "6105:67:7"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "6092:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6092:81:7"
},
"nodeType": "YulExpressionStatement",
"src": "6092:81:7"
}
]
},
"nodeType": "YulCase",
"src": "5953:230:7",
"value": "default"
}
],
"expression": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "5306:6:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5314:2:7",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5303:2:7"
},
"nodeType": "YulFunctionCall",
"src": "5303:14:7"
},
"nodeType": "YulSwitch",
"src": "5296:887:7"
}
]
},
"name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "4875:4:7",
"type": ""
},
{
"name": "src",
"nodeType": "YulTypedName",
"src": "4881:3:7",
"type": ""
}
],
"src": "4794:1395:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6240:81:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6250:65:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6265:5:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6272:42:7",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "6261:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6261:54:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "6250:7:7"
}
]
}
]
},
"name": "cleanup_t_uint160",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6222:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "6232:7:7",
"type": ""
}
],
"src": "6195:126:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6372:51:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6382:35:7",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6411:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint160",
"nodeType": "YulIdentifier",
"src": "6393:17:7"
},
"nodeType": "YulFunctionCall",
"src": "6393:24:7"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "6382:7:7"
}
]
}
]
},
"name": "cleanup_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6354:5:7",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "6364:7:7",
"type": ""
}
],
"src": "6327:96:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6494:53:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "6511:3:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6534:5:7"
}
],
"functionName": {
"name": "cleanup_t_address",
"nodeType": "YulIdentifier",
"src": "6516:17:7"
},
"nodeType": "YulFunctionCall",
"src": "6516:24:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6504:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6504:37:7"
},
"nodeType": "YulExpressionStatement",
"src": "6504:37:7"
}
]
},
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6482:5:7",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "6489:3:7",
"type": ""
}
],
"src": "6429:118:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6651:124:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6661:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6673:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6684:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6669:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6669:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6661:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6741:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6754:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6765:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6750:3:7"
},
"nodeType": "YulFunctionCall",
"src": "6750:17:7"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "6697:43:7"
},
"nodeType": "YulFunctionCall",
"src": "6697:71:7"
},
"nodeType": "YulExpressionStatement",
"src": "6697:71:7"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6623:9:7",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "6635:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6646:4:7",
"type": ""
}
],
"src": "6553:222:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6809:152:7",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6826:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6829:77:7",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6819:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6819:88:7"
},
"nodeType": "YulExpressionStatement",
"src": "6819:88:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6923:1:7",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6926:4:7",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6916:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6916:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "6916:15:7"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6947:1:7",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6950:4:7",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6940:6:7"
},
"nodeType": "YulFunctionCall",
"src": "6940:15:7"
},
"nodeType": "YulExpressionStatement",
"src": "6940:15:7"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "6781:180:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7011:147:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7021:25:7",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7044:1:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7026:17:7"
},
"nodeType": "YulFunctionCall",
"src": "7026:20:7"
},
"variableNames": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7021:1:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7055:25:7",
"value": {
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7078:1:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7060:17:7"
},
"nodeType": "YulFunctionCall",
"src": "7060:20:7"
},
"variableNames": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7055:1:7"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7089:16:7",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7100:1:7"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7103:1:7"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7096:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7096:9:7"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "7089:3:7"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "7129:22:7",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "7131:16:7"
},
"nodeType": "YulFunctionCall",
"src": "7131:18:7"
},
"nodeType": "YulExpressionStatement",
"src": "7131:18:7"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7121:1:7"
},
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "7124:3:7"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "7118:2:7"
},
"nodeType": "YulFunctionCall",
"src": "7118:10:7"
},
"nodeType": "YulIf",
"src": "7115:36:7"
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "6998:1:7",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "7001:1:7",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "7007:3:7",
"type": ""
}
],
"src": "6967:191:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7229:53:7",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "7246:3:7"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7269:5:7"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7251:17:7"
},
"nodeType": "YulFunctionCall",
"src": "7251:24:7"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7239:6:7"
},
"nodeType": "YulFunctionCall",
"src": "7239:37:7"
},
"nodeType": "YulExpressionStatement",
"src": "7239:37:7"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7217:5:7",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "7224:3:7",
"type": ""
}
],
"src": "7164:118:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7442:288:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7452:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7464:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7475:2:7",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7460:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7460:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7452:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7532:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7545:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7556:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7541:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7541:17:7"
}
],
"functionName": {
"name": "abi_encode_t_address_to_t_address_fromStack",
"nodeType": "YulIdentifier",
"src": "7488:43:7"
},
"nodeType": "YulFunctionCall",
"src": "7488:71:7"
},
"nodeType": "YulExpressionStatement",
"src": "7488:71:7"
},
{
"expression": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "7613:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7626:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7637:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7622:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7622:18:7"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "7569:43:7"
},
"nodeType": "YulFunctionCall",
"src": "7569:72:7"
},
"nodeType": "YulExpressionStatement",
"src": "7569:72:7"
},
{
"expression": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "7695:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7708:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7719:2:7",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7704:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7704:18:7"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "7651:43:7"
},
"nodeType": "YulFunctionCall",
"src": "7651:72:7"
},
"nodeType": "YulExpressionStatement",
"src": "7651:72:7"
}
]
},
"name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7398:9:7",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "7410:6:7",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "7418:6:7",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7426:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7437:4:7",
"type": ""
}
],
"src": "7288:442:7"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7834:124:7",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7844:26:7",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7856:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7867:2:7",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7852:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7852:18:7"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7844:4:7"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "7924:6:7"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7937:9:7"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7948:1:7",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7933:3:7"
},
"nodeType": "YulFunctionCall",
"src": "7933:17:7"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "7880:43:7"
},
"nodeType": "YulFunctionCall",
"src": "7880:71:7"
},
"nodeType": "YulExpressionStatement",
"src": "7880:71:7"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7806:9:7",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "7818:6:7",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7829:4:7",
"type": ""
}
],
"src": "7736:222:7"
}
]
},
"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_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_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function 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 array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function 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 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 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_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_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}\n",
"id": 7,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405234801562000010575f80fd5b5060405162001a2738038062001a27833981810160405281019062000036919062000514565b336040518060400160405280600d81526020017f536861646f7750686f656e6978000000000000000000000000000000000000008152506040518060400160405280600481526020017f4441524b000000000000000000000000000000000000000000000000000000008152508160039081620000b491906200079f565b508060049081620000c691906200079f565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013c575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001339190620008c6565b60405180910390fd5b6200014d816200016760201b60201c565b506200016033826200022a60201b60201c565b50620009af565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200029d575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620002949190620008c6565b60405180910390fd5b620002b05f8383620002b460201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000308578060025f828254620002fb91906200090e565b92505081905550620003d9565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000394578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200038b9392919062000959565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000422578060025f82825403925050819055506200046c565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004cb919062000994565b60405180910390a3505050565b5f80fd5b5f819050919050565b620004f081620004dc565b8114620004fb575f80fd5b50565b5f815190506200050e81620004e5565b92915050565b5f602082840312156200052c576200052b620004d8565b5b5f6200053b84828501620004fe565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620005c057607f821691505b602082108103620005d657620005d56200057b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200063a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005fd565b620006468683620005fd565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000687620006816200067b84620004dc565b6200065e565b620004dc565b9050919050565b5f819050919050565b620006a28362000667565b620006ba620006b1826200068e565b84845462000609565b825550505050565b5f90565b620006d0620006c2565b620006dd81848462000697565b505050565b5b818110156200070457620006f85f82620006c6565b600181019050620006e3565b5050565b601f82111562000753576200071d81620005dc565b6200072884620005ee565b8101602085101562000738578190505b620007506200074785620005ee565b830182620006e2565b50505b505050565b5f82821c905092915050565b5f620007755f198460080262000758565b1980831691505092915050565b5f6200078f838362000764565b9150826002028217905092915050565b620007aa8262000544565b67ffffffffffffffff811115620007c657620007c56200054e565b5b620007d28254620005a8565b620007df82828562000708565b5f60209050601f83116001811462000815575f841562000800578287015190505b6200080c858262000782565b8655506200087b565b601f1984166200082586620005dc565b5f5b828110156200084e5784890151825560018201915060208501945060208101905062000827565b868310156200086e57848901516200086a601f89168262000764565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620008ae8262000883565b9050919050565b620008c081620008a2565b82525050565b5f602082019050620008db5f830184620008b5565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200091a82620004dc565b91506200092783620004dc565b9250828201905080821115620009425762000941620008e1565b5b92915050565b6200095381620004dc565b82525050565b5f6060820190506200096e5f830186620008b5565b6200097d602083018562000948565b6200098c604083018462000948565b949350505050565b5f602082019050620009a95f83018462000948565b92915050565b61106a80620009bd5f395ff3fe608060405234801561000f575f80fd5b50600436106100b2575f3560e01c8063715018a61161006f578063715018a6146101a05780638da5cb5b146101aa57806395d89b41146101c8578063a9059cbb146101e6578063dd62ed3e14610216578063f2fde38b14610246576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce5671461015257806370a0823114610170575b5f80fd5b6100be610262565b6040516100cb9190610ce3565b60405180910390f35b6100ee60048036038101906100e99190610d94565b6102f2565b6040516100fb9190610dec565b60405180910390f35b61010c610314565b6040516101199190610e14565b60405180910390f35b61013c60048036038101906101379190610e2d565b61031d565b6040516101499190610dec565b60405180910390f35b61015a61034b565b6040516101679190610e98565b60405180910390f35b61018a60048036038101906101859190610eb1565b610353565b6040516101979190610e14565b60405180910390f35b6101a8610398565b005b6101b26103ab565b6040516101bf9190610eeb565b60405180910390f35b6101d06103d3565b6040516101dd9190610ce3565b60405180910390f35b61020060048036038101906101fb9190610d94565b610463565b60405161020d9190610dec565b60405180910390f35b610230600480360381019061022b9190610f04565b610485565b60405161023d9190610e14565b60405180910390f35b610260600480360381019061025b9190610eb1565b610507565b005b60606003805461027190610f6f565b80601f016020809104026020016040519081016040528092919081815260200182805461029d90610f6f565b80156102e85780601f106102bf576101008083540402835291602001916102e8565b820191905f5260205f20905b8154815290600101906020018083116102cb57829003601f168201915b5050505050905090565b5f806102fc61058b565b9050610309818585610592565b600191505092915050565b5f600254905090565b5f8061032761058b565b90506103348582856105a4565b61033f858585610637565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6103a0610727565b6103a95f6107ae565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546103e290610f6f565b80601f016020809104026020016040519081016040528092919081815260200182805461040e90610f6f565b80156104595780601f1061043057610100808354040283529160200191610459565b820191905f5260205f20905b81548152906001019060200180831161043c57829003601f168201915b5050505050905090565b5f8061046d61058b565b905061047a818585610637565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61050f610727565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361057f575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016105769190610eeb565b60405180910390fd5b610588816107ae565b50565b5f33905090565b61059f8383836001610871565b505050565b5f6105af8484610485565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156106315781811015610622578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161061993929190610f9f565b60405180910390fd5b61063084848484035f610871565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106a7575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161069e9190610eeb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610717575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161070e9190610eeb565b60405180910390fd5b610722838383610a40565b505050565b61072f61058b565b73ffffffffffffffffffffffffffffffffffffffff1661074d6103ab565b73ffffffffffffffffffffffffffffffffffffffff16146107ac5761077061058b565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016107a39190610eeb565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036108e1575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016108d89190610eeb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610951575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016109489190610eeb565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610a3a578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a319190610e14565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a90578060025f828254610a849190611001565b92505081905550610b5e565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610b19578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610b1093929190610f9f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ba5578060025f8282540392505081905550610bef565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c4c9190610e14565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610c90578082015181840152602081019050610c75565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610cb582610c59565b610cbf8185610c63565b9350610ccf818560208601610c73565b610cd881610c9b565b840191505092915050565b5f6020820190508181035f830152610cfb8184610cab565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d3082610d07565b9050919050565b610d4081610d26565b8114610d4a575f80fd5b50565b5f81359050610d5b81610d37565b92915050565b5f819050919050565b610d7381610d61565b8114610d7d575f80fd5b50565b5f81359050610d8e81610d6a565b92915050565b5f8060408385031215610daa57610da9610d03565b5b5f610db785828601610d4d565b9250506020610dc885828601610d80565b9150509250929050565b5f8115159050919050565b610de681610dd2565b82525050565b5f602082019050610dff5f830184610ddd565b92915050565b610e0e81610d61565b82525050565b5f602082019050610e275f830184610e05565b92915050565b5f805f60608486031215610e4457610e43610d03565b5b5f610e5186828701610d4d565b9350506020610e6286828701610d4d565b9250506040610e7386828701610d80565b9150509250925092565b5f60ff82169050919050565b610e9281610e7d565b82525050565b5f602082019050610eab5f830184610e89565b92915050565b5f60208284031215610ec657610ec5610d03565b5b5f610ed384828501610d4d565b91505092915050565b610ee581610d26565b82525050565b5f602082019050610efe5f830184610edc565b92915050565b5f8060408385031215610f1a57610f19610d03565b5b5f610f2785828601610d4d565b9250506020610f3885828601610d4d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610f8657607f821691505b602082108103610f9957610f98610f42565b5b50919050565b5f606082019050610fb25f830186610edc565b610fbf6020830185610e05565b610fcc6040830184610e05565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61100b82610d61565b915061101683610d61565b925082820190508082111561102e5761102d610fd4565b5b9291505056fea26469706673582212203e2e4dadbd7d97c23f659d54dc57d7529c6ef5f4ad2e8e938d2bd8e79bc45c0664736f6c63430008140033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x10 JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1A27 CODESIZE SUB DUP1 PUSH3 0x1A27 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x36 SWAP2 SWAP1 PUSH3 0x514 JUMP JUMPDEST CALLER PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xD DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536861646F7750686F656E697800000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4441524B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH3 0xB4 SWAP2 SWAP1 PUSH3 0x79F JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP2 PUSH3 0xC6 SWAP2 SWAP1 PUSH3 0x79F JUMP JUMPDEST POP POP POP PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x13C JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x133 SWAP2 SWAP1 PUSH3 0x8C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x14D DUP2 PUSH3 0x167 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH3 0x160 CALLER DUP3 PUSH3 0x22A PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH3 0x9AF JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x29D JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x294 SWAP2 SWAP1 PUSH3 0x8C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2B0 PUSH0 DUP4 DUP4 PUSH3 0x2B4 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x308 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH3 0x2FB SWAP2 SWAP1 PUSH3 0x90E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH3 0x3D9 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH3 0x394 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x38B SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x959 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH0 DUP1 DUP7 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 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x422 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH3 0x46C JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP5 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 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH3 0x4CB SWAP2 SWAP1 PUSH3 0x994 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x4F0 DUP2 PUSH3 0x4DC JUMP JUMPDEST DUP2 EQ PUSH3 0x4FB JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP PUSH3 0x50E DUP2 PUSH3 0x4E5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x52C JUMPI PUSH3 0x52B PUSH3 0x4D8 JUMP JUMPDEST JUMPDEST PUSH0 PUSH3 0x53B DUP5 DUP3 DUP6 ADD PUSH3 0x4FE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT 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 PUSH3 0x5C0 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x5D6 JUMPI PUSH3 0x5D5 PUSH3 0x57B JUMP JUMPDEST JUMPDEST 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 PUSH3 0x63A PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH3 0x5FD JUMP JUMPDEST PUSH3 0x646 DUP7 DUP4 PUSH3 0x5FD 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 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x687 PUSH3 0x681 PUSH3 0x67B DUP5 PUSH3 0x4DC JUMP JUMPDEST PUSH3 0x65E JUMP JUMPDEST PUSH3 0x4DC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x6A2 DUP4 PUSH3 0x667 JUMP JUMPDEST PUSH3 0x6BA PUSH3 0x6B1 DUP3 PUSH3 0x68E JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH3 0x609 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH3 0x6D0 PUSH3 0x6C2 JUMP JUMPDEST PUSH3 0x6DD DUP2 DUP5 DUP5 PUSH3 0x697 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x704 JUMPI PUSH3 0x6F8 PUSH0 DUP3 PUSH3 0x6C6 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x6E3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x753 JUMPI PUSH3 0x71D DUP2 PUSH3 0x5DC JUMP JUMPDEST PUSH3 0x728 DUP5 PUSH3 0x5EE JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH3 0x738 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH3 0x750 PUSH3 0x747 DUP6 PUSH3 0x5EE JUMP JUMPDEST DUP4 ADD DUP3 PUSH3 0x6E2 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x775 PUSH0 NOT DUP5 PUSH1 0x8 MUL PUSH3 0x758 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH3 0x78F DUP4 DUP4 PUSH3 0x764 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x7AA DUP3 PUSH3 0x544 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x7C6 JUMPI PUSH3 0x7C5 PUSH3 0x54E JUMP JUMPDEST JUMPDEST PUSH3 0x7D2 DUP3 SLOAD PUSH3 0x5A8 JUMP JUMPDEST PUSH3 0x7DF DUP3 DUP3 DUP6 PUSH3 0x708 JUMP JUMPDEST PUSH0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x815 JUMPI PUSH0 DUP5 ISZERO PUSH3 0x800 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH3 0x80C DUP6 DUP3 PUSH3 0x782 JUMP JUMPDEST DUP7 SSTORE POP PUSH3 0x87B JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH3 0x825 DUP7 PUSH3 0x5DC JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x84E 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 PUSH3 0x827 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH3 0x86E JUMPI DUP5 DUP10 ADD MLOAD PUSH3 0x86A PUSH1 0x1F DUP10 AND DUP3 PUSH3 0x764 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 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH3 0x8AE DUP3 PUSH3 0x883 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x8C0 DUP2 PUSH3 0x8A2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x8DB PUSH0 DUP4 ADD DUP5 PUSH3 0x8B5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH3 0x91A DUP3 PUSH3 0x4DC JUMP JUMPDEST SWAP2 POP PUSH3 0x927 DUP4 PUSH3 0x4DC JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH3 0x942 JUMPI PUSH3 0x941 PUSH3 0x8E1 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x953 DUP2 PUSH3 0x4DC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH3 0x96E PUSH0 DUP4 ADD DUP7 PUSH3 0x8B5 JUMP JUMPDEST PUSH3 0x97D PUSH1 0x20 DUP4 ADD DUP6 PUSH3 0x948 JUMP JUMPDEST PUSH3 0x98C PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0x948 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH3 0x9A9 PUSH0 DUP4 ADD DUP5 PUSH3 0x948 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x106A DUP1 PUSH3 0x9BD PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB2 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x246 JUMPI PUSH2 0xB2 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x170 JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0xBE PUSH2 0x262 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCB SWAP2 SWAP1 PUSH2 0xCE3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0xD94 JUMP JUMPDEST PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x314 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x137 SWAP2 SWAP1 PUSH2 0xE2D JUMP JUMPDEST PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15A PUSH2 0x34B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x167 SWAP2 SWAP1 PUSH2 0xE98 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x185 SWAP2 SWAP1 PUSH2 0xEB1 JUMP JUMPDEST PUSH2 0x353 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x197 SWAP2 SWAP1 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A8 PUSH2 0x398 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B2 PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1BF SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D0 PUSH2 0x3D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1DD SWAP2 SWAP1 PUSH2 0xCE3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x200 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FB SWAP2 SWAP1 PUSH2 0xD94 JUMP JUMPDEST PUSH2 0x463 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x20D SWAP2 SWAP1 PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x230 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x22B SWAP2 SWAP1 PUSH2 0xF04 JUMP JUMPDEST PUSH2 0x485 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x260 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25B SWAP2 SWAP1 PUSH2 0xEB1 JUMP JUMPDEST PUSH2 0x507 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x271 SWAP1 PUSH2 0xF6F 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 0x29D SWAP1 PUSH2 0xF6F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2E8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2BF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2E8 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 0x2CB JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x2FC PUSH2 0x58B JUMP JUMPDEST SWAP1 POP PUSH2 0x309 DUP2 DUP6 DUP6 PUSH2 0x592 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x327 PUSH2 0x58B JUMP JUMPDEST SWAP1 POP PUSH2 0x334 DUP6 DUP3 DUP6 PUSH2 0x5A4 JUMP JUMPDEST PUSH2 0x33F DUP6 DUP6 DUP6 PUSH2 0x637 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x12 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3A0 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x3A9 PUSH0 PUSH2 0x7AE JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x3E2 SWAP1 PUSH2 0xF6F 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 0x40E SWAP1 PUSH2 0xF6F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x459 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x430 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x459 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 0x43C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x46D PUSH2 0x58B JUMP JUMPDEST SWAP1 POP PUSH2 0x47A DUP2 DUP6 DUP6 PUSH2 0x637 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x50F PUSH2 0x727 JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x57F JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x1E4FBDF700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x576 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x588 DUP2 PUSH2 0x7AE JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x59F DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x871 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x5AF DUP5 DUP5 PUSH2 0x485 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x631 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x622 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xFB8F41B200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x619 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xF9F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x630 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x871 JUMP JUMPDEST JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x6A7 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x96C6FD1E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69E SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x717 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xEC442F0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x70E SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x722 DUP4 DUP4 DUP4 PUSH2 0xA40 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x72F PUSH2 0x58B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x74D PUSH2 0x3AB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7AC JUMPI PUSH2 0x770 PUSH2 0x58B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x118CDAA700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7A3 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x5 PUSH0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x5 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x8E1 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0xE602DF0500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8D8 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x951 JUMPI PUSH0 PUSH1 0x40 MLOAD PUSH32 0x94280D6200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x948 SWAP2 SWAP1 PUSH2 0xEEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 ISZERO PUSH2 0xA3A JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0xA31 SWAP2 SWAP1 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xA90 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0xA84 SWAP2 SWAP1 PUSH2 0x1001 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xB5E JUMP JUMPDEST PUSH0 DUP1 PUSH0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xB19 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH32 0xE450D38C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB10 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xF9F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 SUB PUSH0 DUP1 DUP7 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 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xBA5 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH2 0xBEF JUMP JUMPDEST DUP1 PUSH0 DUP1 DUP5 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 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xC4C SWAP2 SWAP1 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP 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 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC90 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xC75 JUMP JUMPDEST PUSH0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xCB5 DUP3 PUSH2 0xC59 JUMP JUMPDEST PUSH2 0xCBF DUP2 DUP6 PUSH2 0xC63 JUMP JUMPDEST SWAP4 POP PUSH2 0xCCF DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xC73 JUMP JUMPDEST PUSH2 0xCD8 DUP2 PUSH2 0xC9B 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 0xCFB DUP2 DUP5 PUSH2 0xCAB JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xD30 DUP3 PUSH2 0xD07 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD40 DUP2 PUSH2 0xD26 JUMP JUMPDEST DUP2 EQ PUSH2 0xD4A JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD5B DUP2 PUSH2 0xD37 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD73 DUP2 PUSH2 0xD61 JUMP JUMPDEST DUP2 EQ PUSH2 0xD7D JUMPI PUSH0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xD8E DUP2 PUSH2 0xD6A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDAA JUMPI PUSH2 0xDA9 PUSH2 0xD03 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xDB7 DUP6 DUP3 DUP7 ADD PUSH2 0xD4D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xDC8 DUP6 DUP3 DUP7 ADD PUSH2 0xD80 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xDE6 DUP2 PUSH2 0xDD2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xDFF PUSH0 DUP4 ADD DUP5 PUSH2 0xDDD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE0E DUP2 PUSH2 0xD61 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xE27 PUSH0 DUP4 ADD DUP5 PUSH2 0xE05 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE44 JUMPI PUSH2 0xE43 PUSH2 0xD03 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xE51 DUP7 DUP3 DUP8 ADD PUSH2 0xD4D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0xE62 DUP7 DUP3 DUP8 ADD PUSH2 0xD4D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0xE73 DUP7 DUP3 DUP8 ADD PUSH2 0xD80 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xE92 DUP2 PUSH2 0xE7D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xEAB PUSH0 DUP4 ADD DUP5 PUSH2 0xE89 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEC6 JUMPI PUSH2 0xEC5 PUSH2 0xD03 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xED3 DUP5 DUP3 DUP6 ADD PUSH2 0xD4D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xEE5 DUP2 PUSH2 0xD26 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xEFE PUSH0 DUP4 ADD DUP5 PUSH2 0xEDC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF1A JUMPI PUSH2 0xF19 PUSH2 0xD03 JUMP JUMPDEST JUMPDEST PUSH0 PUSH2 0xF27 DUP6 DUP3 DUP7 ADD PUSH2 0xD4D JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0xF38 DUP6 DUP3 DUP7 ADD PUSH2 0xD4D 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 0xF86 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xF99 JUMPI PUSH2 0xF98 PUSH2 0xF42 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xFB2 PUSH0 DUP4 ADD DUP7 PUSH2 0xEDC JUMP JUMPDEST PUSH2 0xFBF PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xE05 JUMP JUMPDEST PUSH2 0xFCC PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xE05 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x100B DUP3 PUSH2 0xD61 JUMP JUMPDEST SWAP2 POP PUSH2 0x1016 DUP4 PUSH2 0xD61 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x102E JUMPI PUSH2 0x102D PUSH2 0xFD4 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY 0x2E 0x4D 0xAD 0xBD PUSH30 0x97C23F659D54DC57D7529C6EF5F4AD2E8E938D2BD8E79BC45C0664736F6C PUSH4 0x43000814 STOP CALLER ",
"sourceMap": "270:204:6:-:0;;;317:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;407:10;1582:113:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1656:5;1648;:13;;;;;;:::i;:::-;;1681:7;1671;:17;;;;;;:::i;:::-;;1582:113;;1297:1:0;1273:26;;:12;:26;;;1269:95;;1350:1;1322:31;;;;;;;;;;;:::i;:::-;;;;;;;;1269:95;1373:32;1392:12;1373:18;;;:32;;:::i;:::-;1225:187;433:32:6::2;439:10;451:13;433:5;;;:32;;:::i;:::-;317:155:::0;270:204;;2912:187:0;2985:16;3004:6;;;;;;;;;;;2985:25;;3029:8;3020:6;;:17;;;;;;;;;;;;;;;;;;3083:8;3052:40;;3073:8;3052:40;;;;;;;;;;;;2975:124;2912:187;:::o;7362:208:2:-;7451:1;7432:21;;:7;:21;;;7428:91;;7505:1;7476:32;;;;;;;;;;;:::i;:::-;;;;;;;;7428:91;7528:35;7544:1;7548:7;7557:5;7528:7;;;:35;;:::i;:::-;7362:208;;:::o;5912:1107::-;6017:1;6001:18;;:4;:18;;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;;;;;5997:540;;;6189:19;6211:9;:15;6221:4;6211:15;;;;;;;;;;;;;;;;6189:37;;6258:5;6244:11;:19;6240:115;;;6315:4;6321:11;6334:5;6290:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6240:115;6507:5;6493:11;:19;6475:9;:15;6485:4;6475:15;;;;;;;;;;;;;;;:37;;;;6175:362;5997:540;6565:1;6551:16;;:2;:16;;;6547:425;;6730:5;6714:12;;:21;;;;;;;;;;;6547:425;;;6942:5;6925:9;:13;6935:2;6925:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6547:425;7002:2;6987:25;;6996:4;6987:25;;;7006:5;6987:25;;;;;;:::i;:::-;;;;;;;;5912:1107;;;:::o;88:117:7:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:143::-;602:5;633:6;627:13;618:22;;649:33;676:5;649:33;:::i;:::-;545:143;;;;:::o;694:351::-;764:6;813:2;801:9;792:7;788:23;784:32;781:119;;;819:79;;:::i;:::-;781:119;939:1;964:64;1020:7;1011:6;1000:9;996:22;964:64;:::i;:::-;954:74;;910:128;694:351;;;;:::o;1051:99::-;1103:6;1137:5;1131:12;1121:22;;1051:99;;;:::o;1156:180::-;1204:77;1201:1;1194:88;1301:4;1298:1;1291:15;1325:4;1322:1;1315:15;1342:180;1390:77;1387:1;1380:88;1487:4;1484:1;1477:15;1511:4;1508:1;1501:15;1528:320;1572:6;1609:1;1603:4;1599:12;1589:22;;1656:1;1650:4;1646:12;1677:18;1667:81;;1733:4;1725:6;1721:17;1711:27;;1667:81;1795:2;1787:6;1784:14;1764:18;1761:38;1758:84;;1814:18;;:::i;:::-;1758:84;1579:269;1528:320;;;:::o;1854:141::-;1903:4;1926:3;1918:11;;1949:3;1946:1;1939:14;1983:4;1980:1;1970:18;1962:26;;1854:141;;;:::o;2001:93::-;2038:6;2085:2;2080;2073:5;2069:14;2065:23;2055:33;;2001:93;;;:::o;2100:107::-;2144:8;2194:5;2188:4;2184:16;2163:37;;2100:107;;;;:::o;2213:393::-;2282:6;2332:1;2320:10;2316:18;2355:97;2385:66;2374:9;2355:97;:::i;:::-;2473:39;2503:8;2492:9;2473:39;:::i;:::-;2461:51;;2545:4;2541:9;2534:5;2530:21;2521:30;;2594:4;2584:8;2580:19;2573:5;2570:30;2560:40;;2289:317;;2213:393;;;;;:::o;2612:60::-;2640:3;2661:5;2654:12;;2612:60;;;:::o;2678:142::-;2728:9;2761:53;2779:34;2788:24;2806:5;2788:24;:::i;:::-;2779:34;:::i;:::-;2761:53;:::i;:::-;2748:66;;2678:142;;;:::o;2826:75::-;2869:3;2890:5;2883:12;;2826:75;;;:::o;2907:269::-;3017:39;3048:7;3017:39;:::i;:::-;3078:91;3127:41;3151:16;3127:41;:::i;:::-;3119:6;3112:4;3106:11;3078:91;:::i;:::-;3072:4;3065:105;2983:193;2907:269;;;:::o;3182:73::-;3227:3;3182:73;:::o;3261:189::-;3338:32;;:::i;:::-;3379:65;3437:6;3429;3423:4;3379:65;:::i;:::-;3314:136;3261:189;;:::o;3456:186::-;3516:120;3533:3;3526:5;3523:14;3516:120;;;3587:39;3624:1;3617:5;3587:39;:::i;:::-;3560:1;3553:5;3549:13;3540:22;;3516:120;;;3456:186;;:::o;3648:543::-;3749:2;3744:3;3741:11;3738:446;;;3783:38;3815:5;3783:38;:::i;:::-;3867:29;3885:10;3867:29;:::i;:::-;3857:8;3853:44;4050:2;4038:10;4035:18;4032:49;;;4071:8;4056:23;;4032:49;4094:80;4150:22;4168:3;4150:22;:::i;:::-;4140:8;4136:37;4123:11;4094:80;:::i;:::-;3753:431;;3738:446;3648:543;;;:::o;4197:117::-;4251:8;4301:5;4295:4;4291:16;4270:37;;4197:117;;;;:::o;4320:169::-;4364:6;4397:51;4445:1;4441:6;4433:5;4430:1;4426:13;4397:51;:::i;:::-;4393:56;4478:4;4472;4468:15;4458:25;;4371:118;4320:169;;;;:::o;4494:295::-;4570:4;4716:29;4741:3;4735:4;4716:29;:::i;:::-;4708:37;;4778:3;4775:1;4771:11;4765:4;4762:21;4754:29;;4494:295;;;;:::o;4794:1395::-;4911:37;4944:3;4911:37;:::i;:::-;5013:18;5005:6;5002:30;4999:56;;;5035:18;;:::i;:::-;4999:56;5079:38;5111:4;5105:11;5079:38;:::i;:::-;5164:67;5224:6;5216;5210:4;5164:67;:::i;:::-;5258:1;5282:4;5269:17;;5314:2;5306:6;5303:14;5331:1;5326:618;;;;5988:1;6005:6;6002:77;;;6054:9;6049:3;6045:19;6039:26;6030:35;;6002:77;6105:67;6165:6;6158:5;6105:67;:::i;:::-;6099:4;6092:81;5961:222;5296:887;;5326:618;5378:4;5374:9;5366:6;5362:22;5412:37;5444:4;5412:37;:::i;:::-;5471:1;5485:208;5499:7;5496:1;5493:14;5485:208;;;5578:9;5573:3;5569:19;5563:26;5555:6;5548:42;5629:1;5621:6;5617:14;5607:24;;5676:2;5665:9;5661:18;5648:31;;5522:4;5519:1;5515:12;5510:17;;5485:208;;;5721:6;5712:7;5709:19;5706:179;;;5779:9;5774:3;5770:19;5764:26;5822:48;5864:4;5856:6;5852:17;5841:9;5822:48;:::i;:::-;5814:6;5807:64;5729:156;5706:179;5931:1;5927;5919:6;5915:14;5911:22;5905:4;5898:36;5333:611;;;5296:887;;4886:1303;;;4794:1395;;:::o;6195:126::-;6232:7;6272:42;6265:5;6261:54;6250:65;;6195:126;;;:::o;6327:96::-;6364:7;6393:24;6411:5;6393:24;:::i;:::-;6382:35;;6327:96;;;:::o;6429:118::-;6516:24;6534:5;6516:24;:::i;:::-;6511:3;6504:37;6429:118;;:::o;6553:222::-;6646:4;6684:2;6673:9;6669:18;6661:26;;6697:71;6765:1;6754:9;6750:17;6741:6;6697:71;:::i;:::-;6553:222;;;;:::o;6781:180::-;6829:77;6826:1;6819:88;6926:4;6923:1;6916:15;6950:4;6947:1;6940:15;6967:191;7007:3;7026:20;7044:1;7026:20;:::i;:::-;7021:25;;7060:20;7078:1;7060:20;:::i;:::-;7055:25;;7103:1;7100;7096:9;7089:16;;7124:3;7121:1;7118:10;7115:36;;;7131:18;;:::i;:::-;7115:36;6967:191;;;;:::o;7164:118::-;7251:24;7269:5;7251:24;:::i;:::-;7246:3;7239:37;7164:118;;:::o;7288:442::-;7437:4;7475:2;7464:9;7460:18;7452:26;;7488:71;7556:1;7545:9;7541:17;7532:6;7488:71;:::i;:::-;7569:72;7637:2;7626:9;7622:18;7613:6;7569:72;:::i;:::-;7651;7719:2;7708:9;7704:18;7695:6;7651:72;:::i;:::-;7288:442;;;;;;:::o;7736:222::-;7829:4;7867:2;7856:9;7852:18;7844:26;;7880:71;7948:1;7937:9;7933:17;7924:6;7880:71;:::i;:::-;7736:222;;;;:::o;270:204:6:-;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_approve_690": {
"entryPoint": 1426,
"id": 690,
"parameterSlots": 3,
"returnSlots": 0
},
"@_approve_750": {
"entryPoint": 2161,
"id": 750,
"parameterSlots": 4,
"returnSlots": 0
},
"@_checkOwner_84": {
"entryPoint": 1831,
"id": 84,
"parameterSlots": 0,
"returnSlots": 0
},
"@_msgSender_915": {
"entryPoint": 1419,
"id": 915,
"parameterSlots": 0,
"returnSlots": 1
},
"@_spendAllowance_798": {
"entryPoint": 1444,
"id": 798,
"parameterSlots": 3,
"returnSlots": 0
},
"@_transferOwnership_146": {
"entryPoint": 1966,
"id": 146,
"parameterSlots": 1,
"returnSlots": 0
},
"@_transfer_529": {
"entryPoint": 1591,
"id": 529,
"parameterSlots": 3,
"returnSlots": 0
},
"@_update_606": {
"entryPoint": 2624,
"id": 606,
"parameterSlots": 3,
"returnSlots": 0
},
"@allowance_426": {
"entryPoint": 1157,
"id": 426,
"parameterSlots": 2,
"returnSlots": 1
},
"@approve_450": {
"entryPoint": 754,
"id": 450,
"parameterSlots": 2,
"returnSlots": 1
},
"@balanceOf_385": {
"entryPoint": 851,
"id": 385,
"parameterSlots": 1,
"returnSlots": 1
},
"@decimals_363": {
"entryPoint": 843,
"id": 363,
"parameterSlots": 0,
"returnSlots": 1
},
"@name_345": {
"entryPoint": 610,
"id": 345,
"parameterSlots": 0,
"returnSlots": 1
},
"@owner_67": {
"entryPoint": 939,
"id": 67,
"parameterSlots": 0,
"returnSlots": 1
},
"@renounceOwnership_98": {
"entryPoint": 920,
"id": 98,
"parameterSlots": 0,
"returnSlots": 0
},
"@symbol_354": {
"entryPoint": 979,
"id": 354,
"parameterSlots": 0,
"returnSlots": 1
},
"@totalSupply_372": {
"entryPoint": 788,
"id": 372,
"parameterSlots": 0,
"returnSlots": 1
},
"@transferFrom_482": {
"entryPoint": 797,
"id": 482,
"parameterSlots": 3,
"returnSlots": 1
},
"@
View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

View raw

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

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